├── .clang-format ├── .cmake-format.yaml ├── .github └── workflows │ ├── cmake.yml │ └── python.yml ├── .gitignore ├── .pre-commit-config.yaml ├── .vscode └── tasks.json ├── CMakeLists.txt ├── COPYRIGHT.txt ├── LICENSE ├── MANIFEST.in ├── README.md ├── bin ├── c │ └── .gitignore └── f90 │ └── .gitignore ├── cmake ├── FindFFTW3.cmake ├── conan_provider.cmake ├── exporting.cmake ├── fetch_cmocka.cmake └── sshtConfig.in.cmake ├── conanfile.txt ├── docs ├── c │ └── html │ │ ├── annotated.html │ │ ├── bc_s.png │ │ ├── bdwn.png │ │ ├── classes.html │ │ ├── closed.png │ │ ├── dir_000003_000000.html │ │ ├── dir_000004_000000.html │ │ ├── dir_3b19ecf29356981f494745fbef7e56bf.html │ │ ├── dir_3b19ecf29356981f494745fbef7e56bf_dep.map │ │ ├── dir_3b19ecf29356981f494745fbef7e56bf_dep.md5 │ │ ├── dir_3b19ecf29356981f494745fbef7e56bf_dep.png │ │ ├── dir_59425e443f801f1f2fd8bbe4959a3ccf.html │ │ ├── dir_59425e443f801f1f2fd8bbe4959a3ccf_dep.map │ │ ├── dir_59425e443f801f1f2fd8bbe4959a3ccf_dep.md5 │ │ ├── dir_59425e443f801f1f2fd8bbe4959a3ccf_dep.png │ │ ├── dir_5e24471a41a25819080aca8774e51356.html │ │ ├── dir_68267d1309a1af8e8297ef4c3efbcdba.html │ │ ├── dir_68267d1309a1af8e8297ef4c3efbcdba_dep.map │ │ ├── dir_68267d1309a1af8e8297ef4c3efbcdba_dep.md5 │ │ ├── dir_68267d1309a1af8e8297ef4c3efbcdba_dep.png │ │ ├── dir_d44c64559bbebec7f509842c48db8b23.html │ │ ├── doc.png │ │ ├── doxygen.css │ │ ├── doxygen.svg │ │ ├── dynsections.js │ │ ├── files.html │ │ ├── folderclosed.png │ │ ├── folderopen.png │ │ ├── functions.html │ │ ├── functions_vars.html │ │ ├── globals.html │ │ ├── globals_d.html │ │ ├── globals_defs.html │ │ ├── globals_enum.html │ │ ├── globals_eval.html │ │ ├── globals_func.html │ │ ├── globals_func_g.html │ │ ├── globals_func_h.html │ │ ├── globals_func_l.html │ │ ├── globals_func_m.html │ │ ├── globals_func_n.html │ │ ├── globals_func_p.html │ │ ├── globals_func_r.html │ │ ├── globals_func_s.html │ │ ├── globals_g.html │ │ ├── globals_h.html │ │ ├── globals_l.html │ │ ├── globals_m.html │ │ ├── globals_n.html │ │ ├── globals_p.html │ │ ├── globals_r.html │ │ ├── globals_s.html │ │ ├── globals_type.html │ │ ├── graph_legend.html │ │ ├── graph_legend.md5 │ │ ├── graph_legend.png │ │ ├── index.html │ │ ├── interface_8c.html │ │ ├── interface_8c__incl.map │ │ ├── interface_8c__incl.md5 │ │ ├── interface_8c__incl.png │ │ ├── interface_8h.html │ │ ├── interface_8h__dep__incl.map │ │ ├── interface_8h__dep__incl.md5 │ │ ├── interface_8h__dep__incl.png │ │ ├── interface_8h__incl.map │ │ ├── interface_8h__incl.md5 │ │ ├── interface_8h__incl.png │ │ ├── interface_8h_source.html │ │ ├── jquery.js │ │ ├── menu.js │ │ ├── menudata.js │ │ ├── nav_f.png │ │ ├── nav_g.png │ │ ├── nav_h.png │ │ ├── open.png │ │ ├── search │ │ ├── all_0.html │ │ ├── all_0.js │ │ ├── all_1.html │ │ ├── all_1.js │ │ ├── all_2.html │ │ ├── all_2.js │ │ ├── all_3.html │ │ ├── all_3.js │ │ ├── all_4.html │ │ ├── all_4.js │ │ ├── all_5.html │ │ ├── all_5.js │ │ ├── all_6.html │ │ ├── all_6.js │ │ ├── all_7.html │ │ ├── all_7.js │ │ ├── all_8.html │ │ ├── all_8.js │ │ ├── all_9.html │ │ ├── all_9.js │ │ ├── all_a.html │ │ ├── all_a.js │ │ ├── all_b.html │ │ ├── all_b.js │ │ ├── all_c.html │ │ ├── all_c.js │ │ ├── all_d.html │ │ ├── all_d.js │ │ ├── classes_0.html │ │ ├── classes_0.js │ │ ├── close.svg │ │ ├── defines_0.html │ │ ├── defines_0.js │ │ ├── defines_1.html │ │ ├── defines_1.js │ │ ├── defines_2.html │ │ ├── defines_2.js │ │ ├── defines_3.html │ │ ├── defines_3.js │ │ ├── enums_0.html │ │ ├── enums_0.js │ │ ├── enumvalues_0.html │ │ ├── enumvalues_0.js │ │ ├── enumvalues_1.html │ │ ├── enumvalues_1.js │ │ ├── enumvalues_2.html │ │ ├── enumvalues_2.js │ │ ├── enumvalues_3.html │ │ ├── enumvalues_3.js │ │ ├── files_0.html │ │ ├── files_0.js │ │ ├── files_1.html │ │ ├── files_1.js │ │ ├── files_2.html │ │ ├── files_2.js │ │ ├── files_3.html │ │ ├── files_3.js │ │ ├── functions_0.html │ │ ├── functions_0.js │ │ ├── functions_1.html │ │ ├── functions_1.js │ │ ├── functions_2.html │ │ ├── functions_2.js │ │ ├── functions_3.html │ │ ├── functions_3.js │ │ ├── functions_4.html │ │ ├── functions_4.js │ │ ├── functions_5.html │ │ ├── functions_5.js │ │ ├── functions_6.html │ │ ├── functions_6.js │ │ ├── functions_7.html │ │ ├── functions_7.js │ │ ├── functions_8.html │ │ ├── functions_8.js │ │ ├── mag_sel.svg │ │ ├── nomatches.html │ │ ├── pages_0.html │ │ ├── pages_0.js │ │ ├── search.css │ │ ├── search.js │ │ ├── search_l.png │ │ ├── search_m.png │ │ ├── search_r.png │ │ ├── searchdata.js │ │ ├── typedefs_0.html │ │ ├── typedefs_0.js │ │ ├── variables_0.html │ │ ├── variables_0.js │ │ ├── variables_1.html │ │ ├── variables_1.js │ │ ├── variables_2.html │ │ ├── variables_2.js │ │ ├── variables_3.html │ │ ├── variables_3.js │ │ ├── variables_4.html │ │ ├── variables_4.js │ │ ├── variables_5.html │ │ └── variables_5.js │ │ ├── splitbar.png │ │ ├── ssht_8h.html │ │ ├── ssht_8h__dep__incl.map │ │ ├── ssht_8h__dep__incl.md5 │ │ ├── ssht_8h__dep__incl.png │ │ ├── ssht_8h__incl.map │ │ ├── ssht_8h__incl.md5 │ │ ├── ssht_8h__incl.png │ │ ├── ssht_8h_source.html │ │ ├── ssht__about_8c.html │ │ ├── ssht__about_8c__incl.map │ │ ├── ssht__about_8c__incl.md5 │ │ ├── ssht__about_8c__incl.png │ │ ├── ssht__adjoint_8c.html │ │ ├── ssht__adjoint_8c__incl.map │ │ ├── ssht__adjoint_8c__incl.md5 │ │ ├── ssht__adjoint_8c__incl.png │ │ ├── ssht__adjoint_8h.html │ │ ├── ssht__adjoint_8h__dep__incl.map │ │ ├── ssht__adjoint_8h__dep__incl.md5 │ │ ├── ssht__adjoint_8h__dep__incl.png │ │ ├── ssht__adjoint_8h__incl.map │ │ ├── ssht__adjoint_8h__incl.md5 │ │ ├── ssht__adjoint_8h__incl.png │ │ ├── ssht__adjoint_8h_source.html │ │ ├── ssht__core_8c.html │ │ ├── ssht__core_8c__incl.map │ │ ├── ssht__core_8c__incl.md5 │ │ ├── ssht__core_8c__incl.png │ │ ├── ssht__core_8h.html │ │ ├── ssht__core_8h__dep__incl.map │ │ ├── ssht__core_8h__dep__incl.md5 │ │ ├── ssht__core_8h__dep__incl.png │ │ ├── ssht__core_8h__incl.map │ │ ├── ssht__core_8h__incl.md5 │ │ ├── ssht__core_8h__incl.png │ │ ├── ssht__core_8h_source.html │ │ ├── ssht__dl_8c.html │ │ ├── ssht__dl_8c__incl.map │ │ ├── ssht__dl_8c__incl.md5 │ │ ├── ssht__dl_8c__incl.png │ │ ├── ssht__dl_8h.html │ │ ├── ssht__dl_8h__dep__incl.map │ │ ├── ssht__dl_8h__dep__incl.md5 │ │ ├── ssht__dl_8h__dep__incl.png │ │ ├── ssht__dl_8h_source.html │ │ ├── ssht__error_8h.html │ │ ├── ssht__error_8h__dep__incl.map │ │ ├── ssht__error_8h__dep__incl.md5 │ │ ├── ssht__error_8h__dep__incl.png │ │ ├── ssht__error_8h__incl.map │ │ ├── ssht__error_8h__incl.md5 │ │ ├── ssht__error_8h__incl.png │ │ ├── ssht__error_8h_source.html │ │ ├── ssht__sampling_8c.html │ │ ├── ssht__sampling_8c__incl.map │ │ ├── ssht__sampling_8c__incl.md5 │ │ ├── ssht__sampling_8c__incl.png │ │ ├── ssht__sampling_8h.html │ │ ├── ssht__sampling_8h__dep__incl.map │ │ ├── ssht__sampling_8h__dep__incl.md5 │ │ ├── ssht__sampling_8h__dep__incl.png │ │ ├── ssht__sampling_8h__incl.map │ │ ├── ssht__sampling_8h__incl.md5 │ │ ├── ssht__sampling_8h__incl.png │ │ ├── ssht__sampling_8h_source.html │ │ ├── ssht__test_8c.html │ │ ├── ssht__test_8c__incl.map │ │ ├── ssht__test_8c__incl.md5 │ │ ├── ssht__test_8c__incl.png │ │ ├── ssht__types_8h.html │ │ ├── ssht__types_8h__dep__incl.map │ │ ├── ssht__types_8h__dep__incl.md5 │ │ ├── ssht__types_8h__dep__incl.png │ │ ├── ssht__types_8h__incl.map │ │ ├── ssht__types_8h__incl.md5 │ │ ├── ssht__types_8h__incl.png │ │ ├── ssht__types_8h_source.html │ │ ├── ssht__version_8in_8h.html │ │ ├── ssht__version_8in_8h_source.html │ │ ├── struct_state.html │ │ ├── struct_state__coll__graph.map │ │ ├── struct_state__coll__graph.md5 │ │ ├── struct_state__coll__graph.png │ │ ├── structssht___interface_parameters.html │ │ ├── sync_off.png │ │ ├── sync_on.png │ │ ├── tab_a.png │ │ ├── tab_b.png │ │ ├── tab_h.png │ │ ├── tab_s.png │ │ ├── tabs.css │ │ ├── test__ssht_8c.html │ │ ├── test__ssht_8c__incl.map │ │ ├── test__ssht_8c__incl.md5 │ │ ├── test__ssht_8c__incl.png │ │ ├── utilities_8c.html │ │ ├── utilities_8c__incl.map │ │ ├── utilities_8c__incl.md5 │ │ ├── utilities_8c__incl.png │ │ ├── utilities_8h.html │ │ ├── utilities_8h__dep__incl.map │ │ ├── utilities_8h__dep__incl.md5 │ │ ├── utilities_8h__dep__incl.png │ │ ├── utilities_8h__incl.map │ │ ├── utilities_8h__incl.md5 │ │ ├── utilities_8h__incl.png │ │ └── utilities_8h_source.html ├── f90 │ └── html │ │ ├── annotated.html │ │ ├── classes.html │ │ ├── dir_1cc8a4d7e33e509ae1c3f8c327bb93e9.html │ │ ├── dir_c7a17dbb9c7301c0cf24a41ffb6eb7fb.html │ │ ├── dir_d8ecbefe5f4c5fc7165aeaa37f1b40b6.html │ │ ├── dir_db907d8db6555ecba9db2c0f0c3a4d2a.html │ │ ├── dirs.html │ │ ├── doxygen.css │ │ ├── doxygen.png │ │ ├── files.html │ │ ├── functions.html │ │ ├── functions_func.html │ │ ├── globals.html │ │ ├── globals_func.html │ │ ├── index.html │ │ ├── interfacessht__core__mod_1_1ssht__core__dh__forward-members.html │ │ ├── interfacessht__core__mod_1_1ssht__core__dh__forward.html │ │ ├── interfacessht__core__mod_1_1ssht__core__dh__forward__real-members.html │ │ ├── interfacessht__core__mod_1_1ssht__core__dh__forward__real.html │ │ ├── interfacessht__core__mod_1_1ssht__core__dh__inverse-members.html │ │ ├── interfacessht__core__mod_1_1ssht__core__dh__inverse.html │ │ ├── interfacessht__core__mod_1_1ssht__core__dh__inverse__real-members.html │ │ ├── interfacessht__core__mod_1_1ssht__core__dh__inverse__real.html │ │ ├── interfacessht__core__mod_1_1ssht__core__gl__forward-members.html │ │ ├── interfacessht__core__mod_1_1ssht__core__gl__forward.html │ │ ├── interfacessht__core__mod_1_1ssht__core__gl__forward__real-members.html │ │ ├── interfacessht__core__mod_1_1ssht__core__gl__forward__real.html │ │ ├── interfacessht__core__mod_1_1ssht__core__gl__inverse-members.html │ │ ├── interfacessht__core__mod_1_1ssht__core__gl__inverse.html │ │ ├── interfacessht__core__mod_1_1ssht__core__gl__inverse__real-members.html │ │ ├── interfacessht__core__mod_1_1ssht__core__gl__inverse__real.html │ │ ├── interfacessht__core__mod_1_1ssht__core__mw__forward-members.html │ │ ├── interfacessht__core__mod_1_1ssht__core__mw__forward.html │ │ ├── interfacessht__core__mod_1_1ssht__core__mw__forward__real-members.html │ │ ├── interfacessht__core__mod_1_1ssht__core__mw__forward__real.html │ │ ├── interfacessht__core__mod_1_1ssht__core__mw__forward__real__rsp-members.html │ │ ├── interfacessht__core__mod_1_1ssht__core__mw__forward__real__rsp.html │ │ ├── interfacessht__core__mod_1_1ssht__core__mw__forward__rsp-members.html │ │ ├── interfacessht__core__mod_1_1ssht__core__mw__forward__rsp.html │ │ ├── interfacessht__core__mod_1_1ssht__core__mw__inverse-members.html │ │ ├── interfacessht__core__mod_1_1ssht__core__mw__inverse.html │ │ ├── interfacessht__core__mod_1_1ssht__core__mw__inverse__real-members.html │ │ ├── interfacessht__core__mod_1_1ssht__core__mw__inverse__real.html │ │ ├── interfacessht__core__mod_1_1ssht__core__mw__inverse__real__rsp-members.html │ │ ├── interfacessht__core__mod_1_1ssht__core__mw__inverse__real__rsp.html │ │ ├── interfacessht__core__mod_1_1ssht__core__mw__inverse__rsp-members.html │ │ ├── interfacessht__core__mod_1_1ssht__core__mw__inverse__rsp.html │ │ ├── interfacessht__core__mod_1_1ssht__core__mweo__forward-members.html │ │ ├── interfacessht__core__mod_1_1ssht__core__mweo__forward.html │ │ ├── interfacessht__core__mod_1_1ssht__core__mweo__forward__real-members.html │ │ ├── interfacessht__core__mod_1_1ssht__core__mweo__forward__real.html │ │ ├── interfacessht__core__mod_1_1ssht__core__mweo__forward__real__rsp-members.html │ │ ├── interfacessht__core__mod_1_1ssht__core__mweo__forward__real__rsp.html │ │ ├── interfacessht__core__mod_1_1ssht__core__mweo__forward__rsp-members.html │ │ ├── interfacessht__core__mod_1_1ssht__core__mweo__forward__rsp.html │ │ ├── interfacessht__core__mod_1_1ssht__core__mweo__inverse-members.html │ │ ├── interfacessht__core__mod_1_1ssht__core__mweo__inverse.html │ │ ├── interfacessht__core__mod_1_1ssht__core__mweo__inverse__real-members.html │ │ ├── interfacessht__core__mod_1_1ssht__core__mweo__inverse__real.html │ │ ├── interfacessht__core__mod_1_1ssht__core__mweo__inverse__real__rsp-members.html │ │ ├── interfacessht__core__mod_1_1ssht__core__mweo__inverse__real__rsp.html │ │ ├── interfacessht__core__mod_1_1ssht__core__mweo__inverse__rsp-members.html │ │ ├── interfacessht__core__mod_1_1ssht__core__mweo__inverse__rsp.html │ │ ├── interfacessht__test____interface-members.html │ │ ├── interfacessht__test____interface.html │ │ ├── interfacessht__test__gen__flm__complex____interface-members.html │ │ ├── interfacessht__test__gen__flm__complex____interface.html │ │ ├── interfacessht__test__gen__flm__real____interface-members.html │ │ ├── interfacessht__test__gen__flm__real____interface.html │ │ ├── namespacemembers.html │ │ ├── namespacemembers_func.html │ │ ├── namespacemembers_vars.html │ │ ├── namespaces.html │ │ ├── namespacessht__core__mod.html │ │ ├── namespacessht__dl__mod.html │ │ ├── namespacessht__error__mod.html │ │ ├── namespacessht__sampling__mod.html │ │ ├── namespacessht__types__mod.html │ │ ├── ssht__about_8f90.html │ │ ├── ssht__about_8f90_source.html │ │ ├── ssht__core__mod_8f90.html │ │ ├── ssht__core__mod_8f90_source.html │ │ ├── ssht__dl__mod_8f90.html │ │ ├── ssht__dl__mod_8f90_source.html │ │ ├── ssht__error__mod_8f90.html │ │ ├── ssht__error__mod_8f90_source.html │ │ ├── ssht__sampling__mod_8f90.html │ │ ├── ssht__sampling__mod_8f90_source.html │ │ ├── ssht__test_8f90.html │ │ ├── ssht__test_8f90_source.html │ │ ├── ssht__types__mod_8f90.html │ │ ├── ssht__types__mod_8f90_source.html │ │ ├── tab_b.gif │ │ ├── tab_l.gif │ │ ├── tab_r.gif │ │ └── tabs.css ├── images │ ├── background_ignore.gif │ ├── download_icon.gif │ ├── logo.png │ ├── logo_old.jpg │ ├── photo_jason.jpg │ └── photo_yves.jpg ├── index.html ├── matlab │ └── html │ │ └── index.html └── style.css ├── include └── ssht │ ├── ssht.h │ ├── ssht_adjoint.h │ ├── ssht_core.h │ ├── ssht_dl.h │ ├── ssht_error.h │ ├── ssht_sampling.h │ ├── ssht_types.h │ └── ssht_version.in.h ├── lib ├── c │ └── .gitignore └── f90 │ └── .gitignore ├── makefile ├── makefile_f90 ├── pyproject.toml ├── setup.cfg ├── src ├── c │ ├── .gitignore │ ├── CMakeLists.txt │ ├── doxygen.config │ ├── ssht_about.c │ ├── ssht_adjoint.c │ ├── ssht_core.c │ ├── ssht_dl.c │ ├── ssht_sampling.c │ └── ssht_test.c ├── f90 │ ├── doxygen.config │ ├── mod │ │ ├── ssht_core_mod.f90 │ │ ├── ssht_dl_mod.f90 │ │ ├── ssht_error_mod.f90 │ │ ├── ssht_sampling_mod.f90 │ │ └── ssht_types_mod.f90 │ └── prog │ │ ├── ssht_about.f90 │ │ └── ssht_test.f90 ├── matlab │ ├── .gitignore │ ├── data │ │ ├── EGM2008_Topography_flms_L0128.mat │ │ ├── wmap_lcdm_pl_model_wmap7baoh0.mat │ │ ├── wmap_lcdm_pl_model_yr1_v1.mat │ │ └── wmap_tt_spectrum_7yr_v4p1.mat │ ├── ssht_c2s.m │ ├── ssht_demo0.m │ ├── ssht_demo1.m │ ├── ssht_demo2.m │ ├── ssht_demo3.m │ ├── ssht_demo4.m │ ├── ssht_demo5.m │ ├── ssht_demo6.m │ ├── ssht_demo7.m │ ├── ssht_demo8.m │ ├── ssht_demo_rotation.m │ ├── ssht_dl.m │ ├── ssht_dl_mex.c │ ├── ssht_dln.m │ ├── ssht_dln_mex.c │ ├── ssht_elm2ind.m │ ├── ssht_forward.m │ ├── ssht_forward_adjoint.m │ ├── ssht_forward_adjoint_mex.c │ ├── ssht_forward_mex.c │ ├── ssht_ind2elm.m │ ├── ssht_inverse.m │ ├── ssht_inverse_adjoint.m │ ├── ssht_inverse_adjoint_mex.c │ ├── ssht_inverse_mex.c │ ├── ssht_mex.h │ ├── ssht_plot_harmonic.m │ ├── ssht_plot_mollweide.m │ ├── ssht_plot_sphere.m │ ├── ssht_rotate.m │ ├── ssht_rotate_flm.m │ ├── ssht_rotate_flm_dl.m │ ├── ssht_s2c.m │ ├── ssht_sampling.m │ ├── ssht_sampling_mex.c │ └── ssht_ylm.m └── pyssht │ ├── CMakeLists.txt │ ├── SSHT_Python_Documentation.md │ ├── __init__.py │ ├── cpyssht.pyx │ ├── ducc_demo.py │ ├── ducc_interface.pyx │ ├── exceptions.py │ ├── parameters.py │ ├── pyssht_demo_0.py │ ├── pyssht_demo_1.py │ ├── pyssht_demo_2.py │ ├── pyssht_demo_3.py │ ├── pyssht_demo_4.py │ ├── pyssht_demo_5.py │ ├── pyssht_demo_6.py │ └── pyssht_demo_7.py ├── tests ├── CMakeLists.txt ├── interface.c ├── interface.h ├── test_ducc0.py ├── test_pyssht.py ├── test_ssht.c ├── utilities.c └── utilities.h ├── typings └── pyssht │ └── __init__.pyi └── uv.lock /.clang-format: -------------------------------------------------------------------------------- 1 | --- 2 | BasedOnStyle: LLVM 3 | AlignAfterOpenBracket: AlwaysBreak 4 | AllowAllArgumentsOnNextLine: true 5 | BinPackArguments: false 6 | BinPackParameters: false 7 | ColumnLimit: 88 8 | CompactNamespaces: true 9 | IncludeBlocks: Regroup 10 | IndentWidth: 2 11 | Language: Cpp 12 | ReflowComments: true 13 | SortIncludes: true 14 | UseTab: Never 15 | IncludeCategories: 16 | - Regex: '^' 17 | Priority: 10 18 | - Regex: '^".*\.h"' 19 | Priority: 9 20 | - Regex: '^<.*\.h>' 21 | Priority: 8 22 | ... 23 | -------------------------------------------------------------------------------- /.github/workflows/cmake.yml: -------------------------------------------------------------------------------- 1 | name: CMake Build 2 | 3 | on: 4 | push: 5 | branches: ["main"] 6 | pull_request: 7 | 8 | env: 9 | BUILD_TYPE: Debug 10 | 11 | jobs: 12 | build: 13 | name: CMake build on ${{ matrix.os }} 14 | runs-on: ${{ matrix.os }} 15 | strategy: 16 | fail-fast: false 17 | matrix: 18 | os: [ubuntu-latest, macos-latest] 19 | python-version: [3.8] 20 | 21 | steps: 22 | - uses: actions/checkout@v4 23 | 24 | - name: Set up Python ${{ matrix.python-version }} 25 | uses: actions/setup-python@v2 26 | with: 27 | python-version: ${{ matrix.python-version }} 28 | 29 | - name: Create Build Environment 30 | shell: bash 31 | run: | 32 | python -m pip install wheel 33 | python -m pip install --upgrade pip "conan" 34 | cmake -E make_directory ${{runner.workspace}}/build 35 | 36 | - name: Configure CMake 37 | working-directory: ${{runner.workspace}}/build 38 | run: >- 39 | cmake $GITHUB_WORKSPACE 40 | -DCMAKE_C_COMPILER=gcc 41 | -DCMAKE_BUILD_TYPE=$BUILD_TYPE 42 | -Dpython=False 43 | -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=./cmake/conan_provider.cmake 44 | 45 | - name: Build 46 | working-directory: ${{runner.workspace}}/build 47 | run: cmake --build . --config $BUILD_TYPE 48 | 49 | - name: Test 50 | working-directory: ${{runner.workspace}}/build 51 | run: ctest -C $BUILD_TYPE 52 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | SSHT.sublime-project 3 | SSHT.sublime-workspace 4 | 5 | build/ 6 | *.DS_Store 7 | *.idea/ 8 | src/pyssht/*.c 9 | src/pyssht/*.so 10 | 11 | CMakeCache.txt 12 | CMakeFiles/ 13 | 14 | pip-wheel-metadata/ 15 | src/pyssht.egg-info/ 16 | src/pyssht/pyssht*so 17 | __pycache__ 18 | MANIFEST 19 | dist/ 20 | compile_commands.json 21 | .clangd/ 22 | # Devenv 23 | .devenv* 24 | devenv.local.nix 25 | 26 | # direnv 27 | .direnv 28 | devenv.nix 29 | .envrc 30 | devenv.yaml 31 | devenv.lock 32 | 33 | # pre-commit 34 | .pre-commit-config.yaml 35 | -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- 1 | default_language_version: 2 | python: python3.8 3 | repos: 4 | - repo: https://github.com/pre-commit/pre-commit-hooks 5 | rev: v3.1.0 6 | hooks: 7 | - id: check-merge-conflict 8 | - id: debug-statements 9 | - id: no-commit-to-branch 10 | args: ["--branch", "master"] 11 | - repo: https://github.com/prettier/prettier 12 | rev: 2.1.2 13 | hooks: 14 | - id: prettier 15 | files: '.+\.yaml' 16 | - repo: https://github.com/cheshirekow/cmake-format-precommit 17 | rev: v0.6.10 18 | hooks: 19 | - id: cmake-format 20 | - id: cmake-lint 21 | -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | // See https://go.microsoft.com/fwlink/?LinkId=733558 3 | // for the documentation about the tasks.json format 4 | "version": "2.0.0", 5 | "tasks": [ 6 | { 7 | "label": "Python Build", 8 | "type": "shell", 9 | "command": "direnv exec ${workspaceFolder} python setup.py develop", 10 | "problemMatcher": [], 11 | "group": { 12 | "kind": "build", 13 | "isDefault": true 14 | } 15 | } 16 | ] 17 | } -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.24) 2 | if(NOT SKBUILD_PROJECT_NAME) 3 | set(project_name Ssht) 4 | else() 5 | set(project_name ${SKBUILD_PROJECT_NAME}) 6 | endif() 7 | project( 8 | ${project_name} 9 | VERSION "1.5.3" 10 | DESCRIPTION "Fast and exact spin spherical harmonic transforms" 11 | HOMEPAGE_URL "http://astro-informatics.github.io/ssht/" 12 | LANGUAGES C) 13 | 14 | if(NOT CMAKE_BUILD_TYPE) 15 | set(CMAKE_BUILD_TYPE Debug) 16 | endif() 17 | include(CTest) 18 | 19 | if(EXISTS "${PROJECT_BINARY_DIR}/FindFFTW3.cmake") 20 | list(APPEND CMAKE_MODULE_PATH "${PROJECT_BINARY_DIR}") 21 | else() 22 | list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake") 23 | endif() 24 | find_package(FFTW3 REQUIRED) 25 | find_library(MATH_LIBRARY m) 26 | 27 | add_subdirectory(src/c) 28 | if(BUILD_TESTING) 29 | include("${PROJECT_SOURCE_DIR}/cmake/fetch_cmocka.cmake") 30 | add_subdirectory(tests) 31 | endif() 32 | 33 | if(SKBUILD) 34 | find_package( 35 | Python 36 | COMPONENTS Interpreter Development.Module NumPy 37 | REQUIRED) 38 | add_subdirectory(src/pyssht) 39 | else() 40 | include("${PROJECT_SOURCE_DIR}/cmake/exporting.cmake") 41 | endif() 42 | 43 | # only run documentation if this is not a sub-project 44 | if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR AND NOT SKBUILD) 45 | find_package(Doxygen) 46 | if(DOXYGEN_FOUND) 47 | set(DOXYGEN_OPTIMIZE_OUTPUT_FOR_C "YES") 48 | set(DOXYGEN_EXTRACT_ALL "YES") 49 | set(DOXYGEN_FILE_PATTERNS *.h *.c) 50 | doxygen_add_docs(docs src/c include tests) 51 | endif() 52 | endif() 53 | -------------------------------------------------------------------------------- /COPYRIGHT.txt: -------------------------------------------------------------------------------- 1 | SSHT package to perform spin spherical harmonic transforms 2 | Copyright (C) 2011 Jason McEwen 3 | 4 | This program is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with this program. If not, see . 16 | -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | include CMakeLists.txt 2 | include setup.py setup.cfg pyproject.toml 3 | include COPYRIGHT.txt LICENSE.md README.md 4 | include cmake/*.cmake 5 | include conanfile.txt 6 | recursive-include src/c *.c CMakeLists.txt 7 | recursive-include include/ssht *.h CMakeLists.txt 8 | recursive-include src/pyssht *.py *.pyx *.md CMakeLists.txt 9 | -------------------------------------------------------------------------------- /bin/c/.gitignore: -------------------------------------------------------------------------------- 1 | ssht_about 2 | ssht_test 3 | -------------------------------------------------------------------------------- /bin/f90/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/bin/f90/.gitignore -------------------------------------------------------------------------------- /cmake/exporting.cmake: -------------------------------------------------------------------------------- 1 | # Exports ssht so other packages can access it 2 | export( 3 | TARGETS ssht 4 | FILE "${PROJECT_BINARY_DIR}/sshtTargets.cmake" 5 | NAMESPACE ssht::) 6 | 7 | # Avoids creating an entry in the cmake registry. 8 | if(NOT NOEXPORT) 9 | export(PACKAGE ssht) 10 | endif() 11 | 12 | set(INCLUDE_INSTALL_DIR include/) 13 | include(CMakePackageConfigHelpers) 14 | configure_package_config_file( 15 | cmake/sshtConfig.in.cmake "${PROJECT_BINARY_DIR}/sshtConfig.cmake" 16 | INSTALL_DESTINATION lib/cmake/ssht 17 | PATH_VARS INCLUDE_INSTALL_DIR) 18 | write_basic_package_version_file( 19 | sshtConfigVersion.cmake 20 | VERSION ${PROJECT_VERSION} 21 | COMPATIBILITY SameMajorVersion) 22 | 23 | if(NOT CONAN_EXPORTED) 24 | install(FILES "${PROJECT_BINARY_DIR}/sshtConfig.cmake" 25 | "${PROJECT_BINARY_DIR}/sshtConfigVersion.cmake" 26 | DESTINATION lib/cmake/ssht) 27 | endif() 28 | 29 | install( 30 | EXPORT sshtTargets 31 | NAMESPACE ssht:: 32 | DESTINATION lib/cmake/ssht) 33 | -------------------------------------------------------------------------------- /cmake/fetch_cmocka.cmake: -------------------------------------------------------------------------------- 1 | include(FetchContent) 2 | 3 | FetchContent_Declare( 4 | CMocka 5 | GIT_REPOSITORY https://gitlab.com/cmocka/cmocka.git 6 | GIT_TAG cmocka-1.1.5) 7 | 8 | set(WITH_STATIC_LIB 9 | ON 10 | CACHE BOOL "CMocka: Build with a static library" FORCE) 11 | set(WITH_CMOCKERY_SUPPORT 12 | OFF 13 | CACHE BOOL "CMocka: Install a cmockery header" FORCE) 14 | set(PICKY_DEVELOPER 15 | OFF 16 | CACHE BOOL "CMocka: Build with picky developer flags" FORCE) 17 | FetchContent_MakeAvailable("cmocka") 18 | -------------------------------------------------------------------------------- /cmake/sshtConfig.in.cmake: -------------------------------------------------------------------------------- 1 | set(SSHT_VERSION "@PROJECT_VERSION@") 2 | 3 | @PACKAGE_INIT@ 4 | 5 | include(CMakeFindDependencyMacro) 6 | find_dependency(FFTW3 REQUIRED) 7 | 8 | include("${CMAKE_CURRENT_LIST_DIR}/sshtTargets.cmake") 9 | set(SSHT_LIBRARIES ssht::ssht) 10 | 11 | check_required_components(SSHT) 12 | -------------------------------------------------------------------------------- /conanfile.txt: -------------------------------------------------------------------------------- 1 | [requires] 2 | fftw/[>=3.3] 3 | [layout] 4 | cmake_layout 5 | [generators] 6 | CMakeDeps 7 | [options] 8 | fftw/*:shared=False 9 | fftw/*:precision=double 10 | -------------------------------------------------------------------------------- /docs/c/html/bc_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/bc_s.png -------------------------------------------------------------------------------- /docs/c/html/bdwn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/bdwn.png -------------------------------------------------------------------------------- /docs/c/html/closed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/closed.png -------------------------------------------------------------------------------- /docs/c/html/dir_3b19ecf29356981f494745fbef7e56bf_dep.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /docs/c/html/dir_3b19ecf29356981f494745fbef7e56bf_dep.md5: -------------------------------------------------------------------------------- 1 | 71a878154097211317938262635a4716 -------------------------------------------------------------------------------- /docs/c/html/dir_3b19ecf29356981f494745fbef7e56bf_dep.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/dir_3b19ecf29356981f494745fbef7e56bf_dep.png -------------------------------------------------------------------------------- /docs/c/html/dir_59425e443f801f1f2fd8bbe4959a3ccf_dep.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /docs/c/html/dir_59425e443f801f1f2fd8bbe4959a3ccf_dep.md5: -------------------------------------------------------------------------------- 1 | fd83c89b96c47082eab9af4c5aba2aa1 -------------------------------------------------------------------------------- /docs/c/html/dir_59425e443f801f1f2fd8bbe4959a3ccf_dep.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/dir_59425e443f801f1f2fd8bbe4959a3ccf_dep.png -------------------------------------------------------------------------------- /docs/c/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /docs/c/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.md5: -------------------------------------------------------------------------------- 1 | 0b9654f439a3d101c41b36f3a8af147f -------------------------------------------------------------------------------- /docs/c/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.png -------------------------------------------------------------------------------- /docs/c/html/doc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/doc.png -------------------------------------------------------------------------------- /docs/c/html/folderclosed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/folderclosed.png -------------------------------------------------------------------------------- /docs/c/html/folderopen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/folderopen.png -------------------------------------------------------------------------------- /docs/c/html/graph_legend.md5: -------------------------------------------------------------------------------- 1 | f51bf6e9a10430aafef59831b08dcbfe -------------------------------------------------------------------------------- /docs/c/html/graph_legend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/graph_legend.png -------------------------------------------------------------------------------- /docs/c/html/interface_8c__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /docs/c/html/interface_8c__incl.md5: -------------------------------------------------------------------------------- 1 | 64d518d0ac3d95ba4ecb5a450f03850e -------------------------------------------------------------------------------- /docs/c/html/interface_8c__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/interface_8c__incl.png -------------------------------------------------------------------------------- /docs/c/html/interface_8h__dep__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /docs/c/html/interface_8h__dep__incl.md5: -------------------------------------------------------------------------------- 1 | 44d1404ca06b93f1474c307c1232935b -------------------------------------------------------------------------------- /docs/c/html/interface_8h__dep__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/interface_8h__dep__incl.png -------------------------------------------------------------------------------- /docs/c/html/interface_8h__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /docs/c/html/interface_8h__incl.md5: -------------------------------------------------------------------------------- 1 | d982531eedcc70cbf7dfa215b9b84ca8 -------------------------------------------------------------------------------- /docs/c/html/interface_8h__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/interface_8h__incl.png -------------------------------------------------------------------------------- /docs/c/html/nav_f.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/nav_f.png -------------------------------------------------------------------------------- /docs/c/html/nav_g.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/nav_g.png -------------------------------------------------------------------------------- /docs/c/html/nav_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/nav_h.png -------------------------------------------------------------------------------- /docs/c/html/open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/open.png -------------------------------------------------------------------------------- /docs/c/html/search/all_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/all_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['abs_0',['ABS',['../ssht__sampling_8c.html#a996f7be338ccb40d1a2a5abc1ad61759',1,'ssht_sampling.c']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/c/html/search/all_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/all_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['delete_5fparametrization_1',['delete_parametrization',['../test__ssht_8c.html#a5196e2ed12f12381b043142a4cbf67ce',1,'test_ssht.c']]], 4 | ['dh_5fsov_2',['DH_SOV',['../interface_8h.html#a798d8f677144d00ec8e30fdb564d7289a32e165e09bd7b85c85d4807939e1ff5c',1,'interface.h']]], 5 | ['dl_5fmethod_3',['dl_method',['../structssht___interface_parameters.html#ac17f8b4abc4ba7783b00223cffaf9791',1,'ssht_InterfaceParameters']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /docs/c/html/search/all_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/all_3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/all_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['harmonic_5fspace_5fsize_12',['harmonic_space_size',['../interface_8c.html#a959734979f12b02ec352a5753dd42a94',1,'harmonic_space_size(const struct ssht_InterfaceParameters params): interface.c'],['../interface_8h.html#a959734979f12b02ec352a5753dd42a94',1,'harmonic_space_size(const struct ssht_InterfaceParameters params): interface.c']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/c/html/search/all_4.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/all_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['interface_2ec_13',['interface.c',['../interface_8c.html',1,'']]], 4 | ['interface_2eh_14',['interface.h',['../interface_8h.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/c/html/search/all_5.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/all_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['l_15',['L',['../structssht___interface_parameters.html#a097b57172b4a3d17ae71bbce07cc7288',1,'ssht_InterfaceParameters']]], 4 | ['l0_16',['L0',['../structssht___interface_parameters.html#abbd675fe9a2867b58db51f2ab5844dce',1,'ssht_InterfaceParameters']]], 5 | ['logfact_17',['logfact',['../ssht__dl_8c.html#a8255d221d0e8f6c44b2fd5e813874083',1,'ssht_dl.c']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /docs/c/html/search/all_6.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/all_7.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/all_7.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['nan_5ftest_28',['nan_test',['../ssht__test_8c.html#aa31a9aac12505ff7d2d3f1954f74921e',1,'nan_test(const complex double *X, int n): ssht_test.c'],['../utilities_8c.html#aa31a9aac12505ff7d2d3f1954f74921e',1,'nan_test(const complex double *X, int n): utilities.c']]], 4 | ['nrepeat_29',['NREPEAT',['../ssht__test_8c.html#a9fa6466347dd349266768c7f7f0b0e4e',1,'ssht_test.c']]], 5 | ['null_5ftest_30',['null_test',['../ssht__test_8c.html#a78db311490c4bfb851d913888dae3649',1,'null_test(const complex double *X, int n): ssht_test.c'],['../utilities_8c.html#a78db311490c4bfb851d913888dae3649',1,'null_test(const complex double *X, int n): utilities.c']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /docs/c/html/search/all_8.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/all_8.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['parametrization_31',['parametrization',['../test__ssht_8c.html#a6d749a0b066b97ec848d95892b6c37ca',1,'test_ssht.c']]], 4 | ['params_32',['params',['../struct_state.html#af0c7f7b9de5c271887f15d94a0b8b365',1,'State']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/c/html/search/all_9.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/all_9.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['ran2_5fdp_33',['ran2_dp',['../ssht__test_8c.html#a8f1de4509d2d559e1cf392353eae7afa',1,'ran2_dp(int idum): ssht_test.c'],['../utilities_8c.html#a8f1de4509d2d559e1cf392353eae7afa',1,'ran2_dp(int idum): utilities.c'],['../utilities_8h.html#a8f1de4509d2d559e1cf392353eae7afa',1,'ran2_dp(int idum): ssht_test.c']]], 4 | ['real_5fimage_5fspace_5fsize_34',['real_image_space_size',['../interface_8c.html#a0f0da647e6940f0d10b3d3e8e56022e9',1,'real_image_space_size(const struct ssht_InterfaceParameters params): interface.c'],['../interface_8h.html#a0f0da647e6940f0d10b3d3e8e56022e9',1,'real_image_space_size(const struct ssht_InterfaceParameters params): interface.c']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/c/html/search/all_a.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/all_b.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/all_b.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['test_5fssht_2ec_171',['test_ssht.c',['../test__ssht_8c.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/c/html/search/all_c.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/all_c.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['utilities_2ec_172',['utilities.c',['../utilities_8c.html',1,'']]], 4 | ['utilities_2eh_173',['utilities.h',['../utilities_8h.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/c/html/search/all_d.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/all_d.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['verbosity_174',['verbosity',['../structssht___interface_parameters.html#ae5101deb96888e35214c47aba8f11650',1,'ssht_InterfaceParameters']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/c/html/search/classes_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/classes_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['ssht_5finterfaceparameters_175',['ssht_InterfaceParameters',['../structssht___interface_parameters.html',1,'']]], 4 | ['state_176',['State',['../struct_state.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/c/html/search/close.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 15 | 16 | 18 | image/svg+xml 19 | 21 | 22 | 23 | 24 | 25 | 27 | 31 | 32 | -------------------------------------------------------------------------------- /docs/c/html/search/defines_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/defines_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['abs_341',['ABS',['../ssht__sampling_8c.html#a996f7be338ccb40d1a2a5abc1ad61759',1,'ssht_sampling.c']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/c/html/search/defines_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/defines_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['max_342',['MAX',['../ssht__core_8c.html#afa99ec4acc4ecb2dc3c2d05da15d0e3f',1,'MAX(): ssht_core.c'],['../ssht__test_8c.html#afa99ec4acc4ecb2dc3c2d05da15d0e3f',1,'MAX(): ssht_test.c']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/c/html/search/defines_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/defines_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['nrepeat_343',['NREPEAT',['../ssht__test_8c.html#a9fa6466347dd349266768c7f7f0b0e4e',1,'ssht_test.c']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/c/html/search/defines_3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/defines_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['ssht_5ferror_5fgeneric_344',['SSHT_ERROR_GENERIC',['../ssht__error_8h.html#a48610fe06ea37f6c97108a0e82a8d150',1,'ssht_error.h']]], 4 | ['ssht_5ferror_5fmem_5falloc_5fcheck_345',['SSHT_ERROR_MEM_ALLOC_CHECK',['../ssht__error_8h.html#a0315bcabb6b9d9c6294a61c7717992cb',1,'ssht_error.h']]], 5 | ['ssht_5fpi_346',['SSHT_PI',['../ssht__types_8h.html#a3d472f5348c2c35c4f9ec9549ed159ec',1,'ssht_types.h']]], 6 | ['ssht_5fpion2_347',['SSHT_PION2',['../ssht__types_8h.html#a4badbe3d49808569b697a239951b9335',1,'ssht_types.h']]], 7 | ['ssht_5fprompt_348',['SSHT_PROMPT',['../ssht__types_8h.html#a0511dc173c6c67872310501ce8bda5e4',1,'ssht_types.h']]], 8 | ['ssht_5fsqrt2_349',['SSHT_SQRT2',['../ssht__types_8h.html#ac73418d1f1be8cfdd9ebdf48d808e8d1',1,'ssht_types.h']]], 9 | ['ssht_5fversion_5fmajor_350',['SSHT_VERSION_MAJOR',['../ssht__version_8in_8h.html#a3a9fee7087a655b2697672a22139db68',1,'ssht_version.in.h']]], 10 | ['ssht_5fversion_5fminor_351',['SSHT_VERSION_MINOR',['../ssht__version_8in_8h.html#a48c5edcdfb149fecded4a41b2fcefa72',1,'ssht_version.in.h']]], 11 | ['ssht_5fversion_5fpatch_352',['SSHT_VERSION_PATCH',['../ssht__version_8in_8h.html#ac9fecf095d0532a60211bb9ef45e33cc',1,'ssht_version.in.h']]] 12 | ]; 13 | -------------------------------------------------------------------------------- /docs/c/html/search/enums_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/enums_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['ssht_5fdl_5fmethod_5ft_324',['ssht_dl_method_t',['../ssht__dl_8h.html#aa18c6bc76acc1088a8c74687b136d1c2',1,'ssht_dl.h']]], 4 | ['ssht_5fdl_5fsize_5ft_325',['ssht_dl_size_t',['../ssht__dl_8h.html#a3816bfa5b3457623e2c0db1dd2c5f84c',1,'ssht_dl.h']]], 5 | ['ssht_5ftransforms_326',['ssht_transforms',['../interface_8h.html#a798d8f677144d00ec8e30fdb564d7289',1,'interface.h']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /docs/c/html/search/enumvalues_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/enumvalues_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['dh_5fsov_327',['DH_SOV',['../interface_8h.html#a798d8f677144d00ec8e30fdb564d7289a32e165e09bd7b85c85d4807939e1ff5c',1,'interface.h']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/c/html/search/enumvalues_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/enumvalues_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['gl_5fsov_328',['GL_SOV',['../interface_8h.html#a798d8f677144d00ec8e30fdb564d7289a82385daae71b514a47f322c4ba4a8b9d',1,'interface.h']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/c/html/search/enumvalues_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/enumvalues_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['mw_5fsov_5fsym_329',['MW_SOV_SYM',['../interface_8h.html#a798d8f677144d00ec8e30fdb564d7289a4df45816949d4f1c8865ac69ad5f04d7',1,'interface.h']]], 4 | ['mw_5fsov_5fsym_5flb_330',['MW_SOV_SYM_LB',['../interface_8h.html#a798d8f677144d00ec8e30fdb564d7289a62c00bfecdda449e7d59b69e0aa302bb',1,'interface.h']]], 5 | ['mw_5fsov_5fsym_5flb_5fss_331',['MW_SOV_SYM_LB_SS',['../interface_8h.html#a798d8f677144d00ec8e30fdb564d7289abddb404d88ecd37b55b6ac66b9b93bf5',1,'interface.h']]], 6 | ['mw_5fsov_5fsym_5fpole_332',['MW_SOV_SYM_POLE',['../interface_8h.html#a798d8f677144d00ec8e30fdb564d7289ae21f27b9686bcca17bd765a13aba2d70',1,'interface.h']]], 7 | ['mw_5fsov_5fsym_5fss_333',['MW_SOV_SYM_SS',['../interface_8h.html#a798d8f677144d00ec8e30fdb564d7289a68e95fe2a4b8babcea81dc414bb9b017',1,'interface.h']]], 8 | ['mw_5fsov_5fsym_5fss_5fpole_334',['MW_SOV_SYM_SS_POLE',['../interface_8h.html#a798d8f677144d00ec8e30fdb564d7289a9c79f37f2aa586f1190ee9d9ab060038',1,'interface.h']]] 9 | ]; 10 | -------------------------------------------------------------------------------- /docs/c/html/search/enumvalues_3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/enumvalues_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['ssht_5fdl_5ffull_335',['SSHT_DL_FULL',['../ssht__dl_8h.html#a3816bfa5b3457623e2c0db1dd2c5f84ca41015d53beabd2054f75ec922adedf1a',1,'ssht_dl.h']]], 4 | ['ssht_5fdl_5fhalf_336',['SSHT_DL_HALF',['../ssht__dl_8h.html#a3816bfa5b3457623e2c0db1dd2c5f84cafebc5db680afc45357261e01493e4ed5',1,'ssht_dl.h']]], 5 | ['ssht_5fdl_5fquarter_337',['SSHT_DL_QUARTER',['../ssht__dl_8h.html#a3816bfa5b3457623e2c0db1dd2c5f84ca88ad8c43935a2e8a24a455c5214cae8a',1,'ssht_dl.h']]], 6 | ['ssht_5fdl_5fquarter_5fextended_338',['SSHT_DL_QUARTER_EXTENDED',['../ssht__dl_8h.html#a3816bfa5b3457623e2c0db1dd2c5f84cac5c0f118b63a76c1cfe32b66cb97c403',1,'ssht_dl.h']]], 7 | ['ssht_5fdl_5frisbo_339',['SSHT_DL_RISBO',['../ssht__dl_8h.html#aa18c6bc76acc1088a8c74687b136d1c2a880e646232d7745cff1fcfcba1822cfc',1,'ssht_dl.h']]], 8 | ['ssht_5fdl_5ftrapani_340',['SSHT_DL_TRAPANI',['../ssht__dl_8h.html#aa18c6bc76acc1088a8c74687b136d1c2a3aca674a2ef5f07f43e12a9190d70f6e',1,'ssht_dl.h']]] 9 | ]; 10 | -------------------------------------------------------------------------------- /docs/c/html/search/files_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/files_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['interface_2ec_177',['interface.c',['../interface_8c.html',1,'']]], 4 | ['interface_2eh_178',['interface.h',['../interface_8h.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/c/html/search/files_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/files_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['ssht_2eh_179',['ssht.h',['../ssht_8h.html',1,'']]], 4 | ['ssht_5fabout_2ec_180',['ssht_about.c',['../ssht__about_8c.html',1,'']]], 5 | ['ssht_5fadjoint_2ec_181',['ssht_adjoint.c',['../ssht__adjoint_8c.html',1,'']]], 6 | ['ssht_5fadjoint_2eh_182',['ssht_adjoint.h',['../ssht__adjoint_8h.html',1,'']]], 7 | ['ssht_5fcore_2ec_183',['ssht_core.c',['../ssht__core_8c.html',1,'']]], 8 | ['ssht_5fcore_2eh_184',['ssht_core.h',['../ssht__core_8h.html',1,'']]], 9 | ['ssht_5fdl_2ec_185',['ssht_dl.c',['../ssht__dl_8c.html',1,'']]], 10 | ['ssht_5fdl_2eh_186',['ssht_dl.h',['../ssht__dl_8h.html',1,'']]], 11 | ['ssht_5ferror_2eh_187',['ssht_error.h',['../ssht__error_8h.html',1,'']]], 12 | ['ssht_5fsampling_2ec_188',['ssht_sampling.c',['../ssht__sampling_8c.html',1,'']]], 13 | ['ssht_5fsampling_2eh_189',['ssht_sampling.h',['../ssht__sampling_8h.html',1,'']]], 14 | ['ssht_5ftest_2ec_190',['ssht_test.c',['../ssht__test_8c.html',1,'']]], 15 | ['ssht_5ftypes_2eh_191',['ssht_types.h',['../ssht__types_8h.html',1,'']]], 16 | ['ssht_5fversion_2ein_2eh_192',['ssht_version.in.h',['../ssht__version_8in_8h.html',1,'']]] 17 | ]; 18 | -------------------------------------------------------------------------------- /docs/c/html/search/files_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/files_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['test_5fssht_2ec_193',['test_ssht.c',['../test__ssht_8c.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/c/html/search/files_3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/files_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['utilities_2ec_194',['utilities.c',['../utilities_8c.html',1,'']]], 4 | ['utilities_2eh_195',['utilities.h',['../utilities_8h.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/c/html/search/functions_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/functions_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['delete_5fparametrization_196',['delete_parametrization',['../test__ssht_8c.html#a5196e2ed12f12381b043142a4cbf67ce',1,'test_ssht.c']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/c/html/search/functions_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/functions_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/functions_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['harmonic_5fspace_5fsize_204',['harmonic_space_size',['../interface_8c.html#a959734979f12b02ec352a5753dd42a94',1,'harmonic_space_size(const struct ssht_InterfaceParameters params): interface.c'],['../interface_8h.html#a959734979f12b02ec352a5753dd42a94',1,'harmonic_space_size(const struct ssht_InterfaceParameters params): interface.c']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/c/html/search/functions_3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/functions_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['logfact_205',['logfact',['../ssht__dl_8c.html#a8255d221d0e8f6c44b2fd5e813874083',1,'ssht_dl.c']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/c/html/search/functions_4.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/functions_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['main_206',['main',['../ssht__about_8c.html#a840291bc02cba5474a4cb46a9b9566fe',1,'main(void): ssht_about.c'],['../ssht__test_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): ssht_test.c'],['../test__ssht_8c.html#a840291bc02cba5474a4cb46a9b9566fe',1,'main(void): test_ssht.c']]], 4 | ['max_207',['max',['../utilities_8c.html#af082905f7eac6d03e92015146bbc1925',1,'max(int a, int b): utilities.c'],['../utilities_8h.html#af082905f7eac6d03e92015146bbc1925',1,'max(int a, int b): utilities.c']]], 5 | ['method_5fname_208',['method_name',['../interface_8c.html#a9c067cc6cee939e37e70254f60861092',1,'method_name(char *result, const struct ssht_InterfaceParameters params): interface.c'],['../interface_8h.html#a9c067cc6cee939e37e70254f60861092',1,'method_name(char *result, const struct ssht_InterfaceParameters params): interface.c']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /docs/c/html/search/functions_5.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/functions_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['nan_5ftest_209',['nan_test',['../ssht__test_8c.html#aa31a9aac12505ff7d2d3f1954f74921e',1,'nan_test(const complex double *X, int n): ssht_test.c'],['../utilities_8c.html#aa31a9aac12505ff7d2d3f1954f74921e',1,'nan_test(const complex double *X, int n): utilities.c']]], 4 | ['null_5ftest_210',['null_test',['../ssht__test_8c.html#a78db311490c4bfb851d913888dae3649',1,'null_test(const complex double *X, int n): ssht_test.c'],['../utilities_8c.html#a78db311490c4bfb851d913888dae3649',1,'null_test(const complex double *X, int n): utilities.c']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/c/html/search/functions_6.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/functions_6.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['parametrization_211',['parametrization',['../test__ssht_8c.html#a6d749a0b066b97ec848d95892b6c37ca',1,'test_ssht.c']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/c/html/search/functions_7.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/functions_7.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['ran2_5fdp_212',['ran2_dp',['../ssht__test_8c.html#a8f1de4509d2d559e1cf392353eae7afa',1,'ran2_dp(int idum): ssht_test.c'],['../utilities_8c.html#a8f1de4509d2d559e1cf392353eae7afa',1,'ran2_dp(int idum): utilities.c'],['../utilities_8h.html#a8f1de4509d2d559e1cf392353eae7afa',1,'ran2_dp(int idum): ssht_test.c']]], 4 | ['real_5fimage_5fspace_5fsize_213',['real_image_space_size',['../interface_8c.html#a0f0da647e6940f0d10b3d3e8e56022e9',1,'real_image_space_size(const struct ssht_InterfaceParameters params): interface.c'],['../interface_8h.html#a0f0da647e6940f0d10b3d3e8e56022e9',1,'real_image_space_size(const struct ssht_InterfaceParameters params): interface.c']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/c/html/search/functions_8.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/nomatches.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 |
No Matches
10 |
11 | 12 | 13 | -------------------------------------------------------------------------------- /docs/c/html/search/pages_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/pages_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['ssht_20c_20documentation_353',['SSHT C documentation',['../index.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/c/html/search/search_l.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/search/search_l.png -------------------------------------------------------------------------------- /docs/c/html/search/search_m.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/search/search_m.png -------------------------------------------------------------------------------- /docs/c/html/search/search_r.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/search/search_r.png -------------------------------------------------------------------------------- /docs/c/html/search/searchdata.js: -------------------------------------------------------------------------------- 1 | var indexSectionsWithContent = 2 | { 3 | 0: "adghilmnprstuv", 4 | 1: "s", 5 | 2: "istu", 6 | 3: "dghlmnprs", 7 | 4: "dlmpsv", 8 | 5: "s", 9 | 6: "s", 10 | 7: "dgms", 11 | 8: "amns", 12 | 9: "s" 13 | }; 14 | 15 | var indexSectionNames = 16 | { 17 | 0: "all", 18 | 1: "classes", 19 | 2: "files", 20 | 3: "functions", 21 | 4: "variables", 22 | 5: "typedefs", 23 | 6: "enums", 24 | 7: "enumvalues", 25 | 8: "defines", 26 | 9: "pages" 27 | }; 28 | 29 | var indexSectionLabels = 30 | { 31 | 0: "All", 32 | 1: "Data Structures", 33 | 2: "Files", 34 | 3: "Functions", 35 | 4: "Variables", 36 | 5: "Typedefs", 37 | 6: "Enumerations", 38 | 7: "Enumerator", 39 | 8: "Macros", 40 | 9: "Pages" 41 | }; 42 | 43 | -------------------------------------------------------------------------------- /docs/c/html/search/typedefs_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/typedefs_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['ssht_5fcomplex_5fdouble_323',['ssht_complex_double',['../ssht__types_8h.html#af06486c8bfaaf223eb76a02adbb5e21d',1,'ssht_types.h']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/c/html/search/variables_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/variables_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['dl_5fmethod_315',['dl_method',['../structssht___interface_parameters.html#ac17f8b4abc4ba7783b00223cffaf9791',1,'ssht_InterfaceParameters']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/c/html/search/variables_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/variables_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['l_316',['L',['../structssht___interface_parameters.html#a097b57172b4a3d17ae71bbce07cc7288',1,'ssht_InterfaceParameters']]], 4 | ['l0_317',['L0',['../structssht___interface_parameters.html#abbd675fe9a2867b58db51f2ab5844dce',1,'ssht_InterfaceParameters']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/c/html/search/variables_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/variables_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['method_318',['method',['../structssht___interface_parameters.html#ac0b558f59f800b7546fca2cbf0317d05',1,'ssht_InterfaceParameters']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/c/html/search/variables_3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/variables_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['params_319',['params',['../struct_state.html#af0c7f7b9de5c271887f15d94a0b8b365',1,'State']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/c/html/search/variables_4.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/variables_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['seed_320',['seed',['../struct_state.html#a7e27b85afadfa6d7d1cbf4f783ca1fcb',1,'State']]], 4 | ['spin_321',['spin',['../structssht___interface_parameters.html#ac81f5ae60dc89b5992da08d9e8db902e',1,'ssht_InterfaceParameters']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/c/html/search/variables_5.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/c/html/search/variables_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['verbosity_322',['verbosity',['../structssht___interface_parameters.html#ae5101deb96888e35214c47aba8f11650',1,'ssht_InterfaceParameters']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/c/html/splitbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/splitbar.png -------------------------------------------------------------------------------- /docs/c/html/ssht_8h__dep__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /docs/c/html/ssht_8h__dep__incl.md5: -------------------------------------------------------------------------------- 1 | 4602b1527fd7a8b6f08d45fd40fc84be -------------------------------------------------------------------------------- /docs/c/html/ssht_8h__dep__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/ssht_8h__dep__incl.png -------------------------------------------------------------------------------- /docs/c/html/ssht_8h__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /docs/c/html/ssht_8h__incl.md5: -------------------------------------------------------------------------------- 1 | 28ef661ce64c7931420634fa8a6d7dda -------------------------------------------------------------------------------- /docs/c/html/ssht_8h__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/ssht_8h__incl.png -------------------------------------------------------------------------------- /docs/c/html/ssht__about_8c__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /docs/c/html/ssht__about_8c__incl.md5: -------------------------------------------------------------------------------- 1 | 62b02c82bca782e26711ef9e2d4bc02f -------------------------------------------------------------------------------- /docs/c/html/ssht__about_8c__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/ssht__about_8c__incl.png -------------------------------------------------------------------------------- /docs/c/html/ssht__adjoint_8c__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /docs/c/html/ssht__adjoint_8c__incl.md5: -------------------------------------------------------------------------------- 1 | 74b0089f7cfb6d4b827db8f47c25148a -------------------------------------------------------------------------------- /docs/c/html/ssht__adjoint_8c__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/ssht__adjoint_8c__incl.png -------------------------------------------------------------------------------- /docs/c/html/ssht__adjoint_8h__dep__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/c/html/ssht__adjoint_8h__dep__incl.md5: -------------------------------------------------------------------------------- 1 | f8062512502ba8a93a446f8a8122af4e -------------------------------------------------------------------------------- /docs/c/html/ssht__adjoint_8h__dep__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/ssht__adjoint_8h__dep__incl.png -------------------------------------------------------------------------------- /docs/c/html/ssht__adjoint_8h__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /docs/c/html/ssht__adjoint_8h__incl.md5: -------------------------------------------------------------------------------- 1 | 2c28a6f19f5c8b7afcd5ec8e8497d680 -------------------------------------------------------------------------------- /docs/c/html/ssht__adjoint_8h__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/ssht__adjoint_8h__incl.png -------------------------------------------------------------------------------- /docs/c/html/ssht__core_8c__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /docs/c/html/ssht__core_8c__incl.md5: -------------------------------------------------------------------------------- 1 | 2173fde72a6cae43b9b902fd1cc66784 -------------------------------------------------------------------------------- /docs/c/html/ssht__core_8c__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/ssht__core_8c__incl.png -------------------------------------------------------------------------------- /docs/c/html/ssht__core_8h__dep__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/c/html/ssht__core_8h__dep__incl.md5: -------------------------------------------------------------------------------- 1 | 9ff1df8f3c5e9217cc371c4f6f223502 -------------------------------------------------------------------------------- /docs/c/html/ssht__core_8h__dep__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/ssht__core_8h__dep__incl.png -------------------------------------------------------------------------------- /docs/c/html/ssht__core_8h__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /docs/c/html/ssht__core_8h__incl.md5: -------------------------------------------------------------------------------- 1 | 40c97661cddd7452a4620eeaddb20794 -------------------------------------------------------------------------------- /docs/c/html/ssht__core_8h__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/ssht__core_8h__incl.png -------------------------------------------------------------------------------- /docs/c/html/ssht__dl_8c__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /docs/c/html/ssht__dl_8c__incl.md5: -------------------------------------------------------------------------------- 1 | 90cec89192c8daf1d319200ef68951c7 -------------------------------------------------------------------------------- /docs/c/html/ssht__dl_8c__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/ssht__dl_8c__incl.png -------------------------------------------------------------------------------- /docs/c/html/ssht__dl_8h__dep__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /docs/c/html/ssht__dl_8h__dep__incl.md5: -------------------------------------------------------------------------------- 1 | 71ff46d8e62fbfd21e519f8d52c9bac5 -------------------------------------------------------------------------------- /docs/c/html/ssht__dl_8h__dep__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/ssht__dl_8h__dep__incl.png -------------------------------------------------------------------------------- /docs/c/html/ssht__error_8h__dep__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /docs/c/html/ssht__error_8h__dep__incl.md5: -------------------------------------------------------------------------------- 1 | 2a317ab83d7b446b8719a3e93adaeab4 -------------------------------------------------------------------------------- /docs/c/html/ssht__error_8h__dep__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/ssht__error_8h__dep__incl.png -------------------------------------------------------------------------------- /docs/c/html/ssht__error_8h__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /docs/c/html/ssht__error_8h__incl.md5: -------------------------------------------------------------------------------- 1 | df1cac018eb31fed71e60bc6daeb02e3 -------------------------------------------------------------------------------- /docs/c/html/ssht__error_8h__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/ssht__error_8h__incl.png -------------------------------------------------------------------------------- /docs/c/html/ssht__sampling_8c__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /docs/c/html/ssht__sampling_8c__incl.md5: -------------------------------------------------------------------------------- 1 | d0f9192e92328a574d61bbdb73489e79 -------------------------------------------------------------------------------- /docs/c/html/ssht__sampling_8c__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/ssht__sampling_8c__incl.png -------------------------------------------------------------------------------- /docs/c/html/ssht__sampling_8h__dep__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /docs/c/html/ssht__sampling_8h__dep__incl.md5: -------------------------------------------------------------------------------- 1 | d6ae4d27c84ea827d84d77128b335675 -------------------------------------------------------------------------------- /docs/c/html/ssht__sampling_8h__dep__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/ssht__sampling_8h__dep__incl.png -------------------------------------------------------------------------------- /docs/c/html/ssht__sampling_8h__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /docs/c/html/ssht__sampling_8h__incl.md5: -------------------------------------------------------------------------------- 1 | b5b010a7b564dd539da25a8dc08f5005 -------------------------------------------------------------------------------- /docs/c/html/ssht__sampling_8h__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/ssht__sampling_8h__incl.png -------------------------------------------------------------------------------- /docs/c/html/ssht__test_8c__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /docs/c/html/ssht__test_8c__incl.md5: -------------------------------------------------------------------------------- 1 | f3de78143c79443d776baa3ead26ac74 -------------------------------------------------------------------------------- /docs/c/html/ssht__test_8c__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/ssht__test_8c__incl.png -------------------------------------------------------------------------------- /docs/c/html/ssht__types_8h__dep__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /docs/c/html/ssht__types_8h__dep__incl.md5: -------------------------------------------------------------------------------- 1 | 2dce9e0aefe392b8470d5a9c726c2f64 -------------------------------------------------------------------------------- /docs/c/html/ssht__types_8h__dep__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/ssht__types_8h__dep__incl.png -------------------------------------------------------------------------------- /docs/c/html/ssht__types_8h__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /docs/c/html/ssht__types_8h__incl.md5: -------------------------------------------------------------------------------- 1 | 1491bc437289e31b9d253cfe40ef3974 -------------------------------------------------------------------------------- /docs/c/html/ssht__types_8h__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/ssht__types_8h__incl.png -------------------------------------------------------------------------------- /docs/c/html/struct_state__coll__graph.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /docs/c/html/struct_state__coll__graph.md5: -------------------------------------------------------------------------------- 1 | 66da2df0ddd5fc46270b9ece91da86a9 -------------------------------------------------------------------------------- /docs/c/html/struct_state__coll__graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/struct_state__coll__graph.png -------------------------------------------------------------------------------- /docs/c/html/sync_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/sync_off.png -------------------------------------------------------------------------------- /docs/c/html/sync_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/sync_on.png -------------------------------------------------------------------------------- /docs/c/html/tab_a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/tab_a.png -------------------------------------------------------------------------------- /docs/c/html/tab_b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/tab_b.png -------------------------------------------------------------------------------- /docs/c/html/tab_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/tab_h.png -------------------------------------------------------------------------------- /docs/c/html/tab_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/tab_s.png -------------------------------------------------------------------------------- /docs/c/html/test__ssht_8c__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /docs/c/html/test__ssht_8c__incl.md5: -------------------------------------------------------------------------------- 1 | d67842585699ed8b88699be90410c5d2 -------------------------------------------------------------------------------- /docs/c/html/test__ssht_8c__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/test__ssht_8c__incl.png -------------------------------------------------------------------------------- /docs/c/html/utilities_8c__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /docs/c/html/utilities_8c__incl.md5: -------------------------------------------------------------------------------- 1 | 2b8ffb0cefb9cfc49d7ce63216810f4d -------------------------------------------------------------------------------- /docs/c/html/utilities_8c__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/utilities_8c__incl.png -------------------------------------------------------------------------------- /docs/c/html/utilities_8h__dep__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /docs/c/html/utilities_8h__dep__incl.md5: -------------------------------------------------------------------------------- 1 | 5e8587825eeb080ec9c8b99989a2a31f -------------------------------------------------------------------------------- /docs/c/html/utilities_8h__dep__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/utilities_8h__dep__incl.png -------------------------------------------------------------------------------- /docs/c/html/utilities_8h__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /docs/c/html/utilities_8h__incl.md5: -------------------------------------------------------------------------------- 1 | 230b76b4a68b0c743ec473fc8c13b2ae -------------------------------------------------------------------------------- /docs/c/html/utilities_8h__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/c/html/utilities_8h__incl.png -------------------------------------------------------------------------------- /docs/f90/html/dir_c7a17dbb9c7301c0cf24a41ffb6eb7fb.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | src/ Directory Reference 6 | 7 | 8 | 9 | 10 | 11 | 24 |
25 |

src Directory Reference

26 | 27 | 28 |

Directories

directory  f90
29 |
30 |
Generated on Mon Oct 31 01:20:06 2011 by  31 | 32 | doxygen 1.6.3
33 | 34 | 35 | -------------------------------------------------------------------------------- /docs/f90/html/dir_d8ecbefe5f4c5fc7165aeaa37f1b40b6.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | src/f90/ Directory Reference 6 | 7 | 8 | 9 | 10 | 11 | 24 |
25 |

f90 Directory Reference

26 | 27 | 28 | 29 |

Directories

directory  mod
directory  prog
30 |
31 |
Generated on Mon Oct 31 01:20:06 2011 by  32 | 33 | doxygen 1.6.3
34 | 35 | 36 | -------------------------------------------------------------------------------- /docs/f90/html/dirs.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Directory Hierarchy 6 | 7 | 8 | 9 | 10 | 11 | 22 |
23 |

Directories

This directory hierarchy is sorted roughly, but not completely, alphabetically: 33 |
34 |
Generated on Mon Oct 31 01:20:06 2011 by  35 | 36 | doxygen 1.6.3
37 | 38 | 39 | -------------------------------------------------------------------------------- /docs/f90/html/doxygen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/f90/html/doxygen.png -------------------------------------------------------------------------------- /docs/f90/html/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SSHT Fortran documentation 6 | 7 | 8 | 9 | 10 | 11 | 22 |
23 |

SSHT Fortran documentation

The SSHT code provides functionality to perform fast and exact spin spherical harmonic transforms based on the sampling theorem on the sphere derived in our paper: A novel sampling theorem on the sphere (ArXiv | DOI).

24 |

We document the Fortran source code here. For an example of usage, see the ssht_test.f90 program. For installation instructions, see the general SSHT documentation available here.

25 |
Author:
Jason McEwen
26 |
27 |
Generated on Mon Oct 31 01:20:05 2011 by  28 | 29 | doxygen 1.6.3
30 | 31 | 32 | -------------------------------------------------------------------------------- /docs/f90/html/interfacessht__test__gen__flm__complex____interface-members.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Member List 6 | 7 | 8 | 9 | 10 | 11 | 28 |
29 |

ssht_test_gen_flm_complex__interface Member List

This is the complete list of members for ssht_test_gen_flm_complex__interface, including all inherited members. 30 | 31 |
ran2_dp(idum)ssht_test_gen_flm_complex__interface
32 |
Generated on Mon Oct 31 01:20:05 2011 by  33 | 34 | doxygen 1.6.3
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/f90/html/interfacessht__test__gen__flm__real____interface-members.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Member List 6 | 7 | 8 | 9 | 10 | 11 | 28 |
29 |

ssht_test_gen_flm_real__interface Member List

This is the complete list of members for ssht_test_gen_flm_real__interface, including all inherited members. 30 | 31 |
ran2_dp(idum)ssht_test_gen_flm_real__interface
32 |
Generated on Mon Oct 31 01:20:05 2011 by  33 | 34 | doxygen 1.6.3
35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/f90/html/tab_b.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/f90/html/tab_b.gif -------------------------------------------------------------------------------- /docs/f90/html/tab_l.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/f90/html/tab_l.gif -------------------------------------------------------------------------------- /docs/f90/html/tab_r.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/f90/html/tab_r.gif -------------------------------------------------------------------------------- /docs/images/background_ignore.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/images/background_ignore.gif -------------------------------------------------------------------------------- /docs/images/download_icon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/images/download_icon.gif -------------------------------------------------------------------------------- /docs/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/images/logo.png -------------------------------------------------------------------------------- /docs/images/logo_old.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/images/logo_old.jpg -------------------------------------------------------------------------------- /docs/images/photo_jason.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/images/photo_jason.jpg -------------------------------------------------------------------------------- /docs/images/photo_yves.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/docs/images/photo_yves.jpg -------------------------------------------------------------------------------- /include/ssht/ssht.h: -------------------------------------------------------------------------------- 1 | 2 | #ifndef SSHT 3 | #define SSHT 4 | #include "ssht_types.h" 5 | 6 | #include "ssht_error.h" 7 | #include "ssht_sampling.h" 8 | 9 | #include "ssht_dl.h" 10 | 11 | #include "ssht_adjoint.h" 12 | #include "ssht_core.h" 13 | 14 | #endif 15 | -------------------------------------------------------------------------------- /include/ssht/ssht_error.h: -------------------------------------------------------------------------------- 1 | // SSHT package to perform spin spherical harmonic transforms 2 | // Copyright (C) 2011 Jason McEwen 3 | // See LICENSE.txt for license details 4 | 5 | /*! \file ssht_error.h 6 | * Error macros used in SSHT package. 7 | * 8 | * \author Jason McEwen 9 | */ 10 | 11 | #ifndef SSHT_ERROR 12 | #define SSHT_ERROR 13 | 14 | #include 15 | #include 16 | 17 | #define SSHT_ERROR_GENERIC(comment) \ 18 | { \ 19 | printf("ERROR: %s.\n", comment); \ 20 | printf( \ 21 | "ERROR: %s <%s> %s %s %s %d.\n", \ 22 | "Occurred in function", \ 23 | __func__, \ 24 | "of file", \ 25 | __FILE__, \ 26 | "on line", \ 27 | __LINE__); \ 28 | exit(1); \ 29 | } 30 | 31 | #define SSHT_ERROR_MEM_ALLOC_CHECK(pointer) \ 32 | if (pointer == NULL) { \ 33 | SSHT_ERROR_GENERIC("Memory allocation failed") \ 34 | } 35 | 36 | #endif 37 | -------------------------------------------------------------------------------- /include/ssht/ssht_types.h: -------------------------------------------------------------------------------- 1 | // SSHT package to perform spin spherical harmonic transforms 2 | // Copyright (C) 2011 Jason McEwen 3 | // See LICENSE.txt for license details 4 | 5 | /*! \mainpage SSHT C documentation 6 | * 7 | * The SSHT code provides functionality to perform fast and exact spin 8 | * spherical harmonic transforms based on the sampling theorem on the 9 | * sphere derived in our paper: A 11 | * novel sampling theorem on the sphere (ArXiv | DOI). 14 | * Functionality is also provided to perform fast and exact adjoint 15 | * transforms based on the fast algorithms derived in our paper: Efficient 17 | * and compressive sampling on the sphere. 18 | * 19 | * We document the C source code here. For an example of usage, 20 | * see the ssht_test.c program. 21 | * For installation instructions, see the general SSHT 22 | * documentation available 23 | * here. 24 | * 25 | * \author Jason McEwen 26 | */ 27 | 28 | 29 | /*! \file ssht_types.h 30 | * Types used in SSHT package. 31 | * 32 | * \author Jason McEwen 33 | */ 34 | 35 | #ifndef SSHT_TYPES 36 | #define SSHT_TYPES 37 | 38 | #define SSHT_PI 3.141592653589793238462643383279502884197 39 | #define SSHT_PION2 1.570796326794896619231321691639751442099 40 | 41 | #define SSHT_SQRT2 1.41421356237309504880168872420969807856967 42 | 43 | 44 | 45 | #define SSHT_PROMPT "[ssht] " 46 | 47 | #ifdef __cplusplus 48 | #include 49 | typedef std::complex ssht_complex_double; 50 | extern "C" { 51 | #else 52 | #include 53 | typedef double complex ssht_complex_double; 54 | #endif 55 | 56 | 57 | #ifdef __cplusplus 58 | } 59 | #endif 60 | 61 | 62 | #endif 63 | -------------------------------------------------------------------------------- /include/ssht/ssht_version.in.h: -------------------------------------------------------------------------------- 1 | #ifndef SSHT_VERSION_H 2 | #define SSHT_VERSION_H 3 | inline const char *ssht_version_string() { return "@PROJECT_VERSION@"; } 4 | inline const char *ssht_info() { 5 | return "package:\n" 6 | " name: SSHT\n" 7 | " description: Fast and accurate spin spherical harmonic transforms\n" 8 | " authors:\n" 9 | " - Jason McEwen\n" 10 | " - Chris Wallis\n" 11 | " - Martin Buttner\n" 12 | " - Boris Leistedt\n" 13 | " - Yves Wiaux\n" 14 | " license: GPL-3\n" 15 | " url: https://astro-informatics.github.io/ssht\n" 16 | " version: @PROJECT_VERSION@\n"; 17 | }; 18 | // clang-format off 19 | inline int ssht_version_major() { return @PROJECT_VERSION_MAJOR@; } 20 | inline int ssht_version_minor() { return @PROJECT_VERSION_MINOR@; } 21 | inline int ssht_version_patch() { return @PROJECT_VERSION_PATCH@; } 22 | #define SSHT_VERSION_MAJOR @PROJECT_VERSION_MAJOR@ 23 | #define SSHT_VERSION_MINOR @PROJECT_VERSION_MINOR@ 24 | #define SSHT_VERSION_PATCH @PROJECT_VERSION_PATCH@ 25 | // clang-format on 26 | #endif 27 | -------------------------------------------------------------------------------- /lib/c/.gitignore: -------------------------------------------------------------------------------- 1 | libssht.a 2 | -------------------------------------------------------------------------------- /lib/f90/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/lib/f90/.gitignore -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- 1 | [project] 2 | name = "pyssht" 3 | version = "1.5.3" 4 | authors = [ 5 | {name="J. D. McEwen"}, 6 | {name="C. R. G. Wallis"}, 7 | {name="M. Buttner"}, 8 | {name="B. Leistedt"}, 9 | {name="Y. Wiaux"} 10 | ] 11 | description = "Fast spin spherical transforms" 12 | readme = "src/pyssht/SSHT_Python_Documentation.md" 13 | license = "GPL-3.0-or-later" 14 | keywords = ["numerical transforms", "signal processing", "science"] 15 | dependencies = [ "numpy", "scipy" ] 16 | requires-python = ">= 3.8" 17 | 18 | [project.urls] 19 | Homepage = "http://astro-informatics.github.io/ssht/" 20 | Repository = "http://github.com/astro-informatics/ssht.git" 21 | Issues = "http://github.com/astro-informatics/ssht/issues" 22 | 23 | [project.optional-dependencies] 24 | ducc0 = ["ducc0>=0.18"] 25 | 26 | [build-system] 27 | requires = ["scikit-build-core", "cython>=3.0.0", "numpy", "conan"] 28 | build-backend = "scikit_build_core.build" 29 | 30 | [tool.isort] 31 | multi_line_output = 3 32 | include_trailing_comma = true 33 | force_grid_wrap = 0 34 | use_parentheses = true 35 | ensure_newline_before_comments = true 36 | line_length = 88 37 | 38 | [tool.pylint.messages_control] 39 | disable = "C0330, C0326" 40 | 41 | [tool.pylint.format] 42 | max-line-length = "88" 43 | 44 | [tool.scikit-build] 45 | cmake.args=[ 46 | "-DBUILD_TESTING:BOOL=OFF", 47 | "-DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=./cmake/conan_provider.cmake", 48 | "-DCMAKE_POSITION_INDEPENDENT_CODE=ON" 49 | ] 50 | ninja.make-fallback = false 51 | build-dir="build" 52 | 53 | [dependency-groups] 54 | dev = [ 55 | "pytest>=8.3.5", 56 | ] 57 | -------------------------------------------------------------------------------- /setup.cfg: -------------------------------------------------------------------------------- 1 | [bumpversion] 2 | current_version = 1.5.3 3 | commit = False 4 | tag = False 5 | parse = (?P\d+)\.(?P\d+)\.(?P\d+)(rc(?P\d+))? 6 | serialize = 7 | {major}.{minor}.{patch}rc{rc} 8 | {major}.{minor}.{patch} 9 | 10 | [bumpversion:file:pyproject.toml] 11 | 12 | [bumpversion:file:makefile] 13 | 14 | [bumpversion:file:CMakeLists.txt] 15 | 16 | [bumpversion:file:.github/workflows/python.yml] 17 | 18 | [flake8] 19 | max-line-length = 88 20 | extend-ignore = E203, W503 21 | exclude = 22 | .tox, 23 | .git, 24 | build, 25 | __pycache__, 26 | docs/, 27 | 28 | [pycodestyle] 29 | max-line-length = 88 30 | ignore = E203 31 | -------------------------------------------------------------------------------- /src/c/.gitignore: -------------------------------------------------------------------------------- 1 | *.o 2 | -------------------------------------------------------------------------------- /src/c/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(ssht STATIC ssht_adjoint.c ssht_core.c ssht_dl.c ssht_sampling.c) 2 | target_link_libraries(ssht PUBLIC fftw::fftw ${MATH_LIBRARY}) 3 | target_include_directories( 4 | ssht 5 | PUBLIC $ 6 | $ 7 | $) 8 | set_target_properties(ssht PROPERTIES ARCHIVE_OUTPUT_DIRECTORY 9 | ${PROJECT_BINARY_DIR}/lib) 10 | target_compile_features(ssht PUBLIC c_std_99) 11 | 12 | configure_file(${PROJECT_SOURCE_DIR}/include/ssht/ssht_version.in.h 13 | ${PROJECT_BINARY_DIR}/include/ssht/ssht_version.h) 14 | 15 | if(NOT SKBUILD) 16 | install( 17 | TARGETS ssht 18 | EXPORT sshtTargets 19 | ARCHIVE DESTINATION lib 20 | PUBLIC_HEADER) 21 | install( 22 | FILES ${PROJECT_SOURCE_DIR}/include/ssht/ssht_adjoint.h 23 | ${PROJECT_SOURCE_DIR}/include/ssht/ssht_dl.h 24 | ${PROJECT_SOURCE_DIR}/include/ssht/ssht_sampling.h 25 | ${PROJECT_SOURCE_DIR}/include/ssht/ssht_core.h 26 | ${PROJECT_SOURCE_DIR}/include/ssht/ssht_error.h 27 | ${PROJECT_SOURCE_DIR}/include/ssht/ssht_types.h 28 | ${PROJECT_BINARY_DIR}/include/ssht/ssht_version.h 29 | ${PROJECT_SOURCE_DIR}/include/ssht/ssht.h 30 | DESTINATION include/ssht) 31 | endif() 32 | -------------------------------------------------------------------------------- /src/c/ssht_about.c: -------------------------------------------------------------------------------- 1 | // SSHT package to perform spin spherical harmonic transforms 2 | // Copyright (C) 2011 Jason McEwen 3 | // See LICENSE.txt for license details 4 | 5 | /*! 6 | * \file ssht_about.c 7 | * Print information about the SSHT package, including version 8 | * and build numbers. 9 | * 10 | * Usage: ssht_about 11 | * 12 | * \author Jason McEwen 13 | */ 14 | 15 | #include 16 | #ifdef BUILT_WITH_CMAKE 17 | #include "ssht/ssht_version.h" 18 | #endif 19 | 20 | int main(void) { 21 | 22 | #ifndef BUILT_WITH_CMAKE 23 | printf("%s\n", "=========================================================="); 24 | printf("%s\n", "SSHT package to perform spin spherical harmonic transforms"); 25 | printf("%s\n", "By Jason McEwen, Chris Wallis, Martin Buttner, "); 26 | printf("%s\n", "Boris Leistedt, and Yves Wiaux"); 27 | 28 | printf("%s\n", "See www.jasonmcewen.org for more information."); 29 | printf("%s\n", "See LICENSE.txt for license details."); 30 | 31 | printf("%s%s\n", "Version: ", SSHT_VERSION); 32 | printf("%s%s\n", "Build: ", SSHT_BUILD); 33 | printf("%s\n", "=========================================================="); 34 | #else 35 | printf("%s", ssht_info()); 36 | #endif 37 | 38 | return 0; 39 | 40 | } 41 | -------------------------------------------------------------------------------- /src/f90/prog/ssht_about.f90: -------------------------------------------------------------------------------- 1 | ! SSHT package to perform spin spherical harmonic transforms 2 | ! Copyright (C) 2011 Jason McEwen 3 | ! See LICENSE.txt for license details 4 | 5 | 6 | !------------------------------------------------------------------------------ 7 | ! ssht_about 8 | ! 9 | !> Prints information about the SSHT package, including version 10 | !! and build numbers. 11 | !! 12 | !! Usage: ssht_about 13 | !! 14 | !! @author Jason McEwen 15 | ! 16 | ! Revisions: 17 | ! October 2011 - Written by Jason McEwen 18 | !------------------------------------------------------------------------------ 19 | 20 | program ssht_about 21 | 22 | implicit none 23 | 24 | write(*,'(a)') "==========================================================" 25 | write(*,'(a)') "SSHT package to perform spin spherical harmonic transforms" 26 | write(*,'(a)') "By Jason McEwen and Yves Wiaux" 27 | 28 | write(*,'(a)') "See www.jasonmcewen.org for more information." 29 | write(*,'(a)') "See LICENSE.txt for license details." 30 | 31 | write(*,'(a,a)') "Version: ", SSHT_VERSION 32 | write(*,'(a,a)') "Build: ", SSHT_BUILD 33 | write(*,'(a)') "==========================================================" 34 | 35 | end program ssht_about 36 | 37 | -------------------------------------------------------------------------------- /src/matlab/.gitignore: -------------------------------------------------------------------------------- 1 | *.mexa64 2 | *.mexmaci64 -------------------------------------------------------------------------------- /src/matlab/data/EGM2008_Topography_flms_L0128.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/src/matlab/data/EGM2008_Topography_flms_L0128.mat -------------------------------------------------------------------------------- /src/matlab/data/wmap_lcdm_pl_model_wmap7baoh0.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/src/matlab/data/wmap_lcdm_pl_model_wmap7baoh0.mat -------------------------------------------------------------------------------- /src/matlab/data/wmap_lcdm_pl_model_yr1_v1.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/src/matlab/data/wmap_lcdm_pl_model_yr1_v1.mat -------------------------------------------------------------------------------- /src/matlab/data/wmap_tt_spectrum_7yr_v4p1.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astro-informatics/ssht/7e9c1f91995ebb02687be5a8d498774ab02dfc1e/src/matlab/data/wmap_tt_spectrum_7yr_v4p1.mat -------------------------------------------------------------------------------- /src/matlab/ssht_c2s.m: -------------------------------------------------------------------------------- 1 | function [theta, phi, r] = ssht_c2s(x, y, z) 2 | % ssht_c2s - Convert cartesian to spherical coordinates 3 | % 4 | % Convert cartesian to spherical coordinates. 5 | % 6 | % Default usage is given by 7 | % 8 | % [theta, phi, r] = ssht_c2s(x, y, z) 9 | % 10 | % Author: Jason McEwen (www.jasonmcewen.org) 11 | 12 | % SSHT package to perform spin spherical harmonic transforms 13 | % Copyright (C) 2011 Jason McEwen 14 | % See LICENSE.txt for license details 15 | 16 | TOL = 1e-10; 17 | 18 | r = sqrt(x.^2 + y.^2 + z.^2); 19 | 20 | % Initialise angles. 21 | theta = 0; 22 | phi = 0; 23 | 24 | % If radius zero, then angles arbitrary. Leave set to zero. 25 | % Otherwise ... 26 | if abs(r - TOL) > 0 27 | 28 | theta = atan2(sqrt(x.^2 + y.^2), z); 29 | 30 | % If theta zero, then phi arbitrary. Leave set to zero. 31 | % Otherwise ... 32 | if abs(theta - TOL) > 0 33 | phi = atan2(y, x); 34 | phi = mod(phi, 2.*pi); 35 | end 36 | 37 | end 38 | -------------------------------------------------------------------------------- /src/matlab/ssht_demo0.m: -------------------------------------------------------------------------------- 1 | % ssht_demo0 - Run demo0 2 | % 3 | % Plot spherical harmonic functions on the sphere. 4 | % 5 | % Default usage is given by 6 | % 7 | % ssht_demo0 8 | % 9 | % Author: Jason McEwen (www.jasonmcewen.org) 10 | 11 | % SSHT package to perform spin spherical harmonic transforms 12 | % Copyright (C) 2011 Jason McEwen 13 | % See LICENSE.txt for license details 14 | 15 | clear all; 16 | close all; 17 | 18 | % Define parameters. 19 | L = 64; 20 | el = 4 21 | m = 2 22 | type = 'colour'; 23 | 24 | % Generate spherical harmonics. 25 | flm = zeros(L^2,1); 26 | ind = ssht_elm2ind(el, m); 27 | flm(ind) = 1.0; 28 | 29 | % Compute function on the sphere. 30 | f = ssht_inverse(complex(real(flm), imag(flm)), L); 31 | 32 | % Compute sampling grids. 33 | [thetas, phis, n, ntheta, nphi] = ssht_sampling(L, 'Grid', true); 34 | 35 | % Plot function on sphere. 36 | figure(1); 37 | subplot(1,2,1) 38 | ssht_plot_sphere(real(f), L, 'Type', type, ... 39 | 'ColourBar', false, 'Lighting', true); 40 | subplot(1,2,2) 41 | ssht_plot_sphere(imag(f), L, 'Type', type, ... 42 | 'ColourBar', false, 'Lighting', true); 43 | -------------------------------------------------------------------------------- /src/matlab/ssht_demo1.m: -------------------------------------------------------------------------------- 1 | % ssht_demo1 - Run demo1 2 | % 3 | % Simple demo to compute inverse and forward transform of complex scalar 4 | % function, using simplest interface with default options. 5 | % 6 | % Default usage is given by 7 | % 8 | % ssht_demo1 9 | % 10 | % Author: Jason McEwen (www.jasonmcewen.org) 11 | 12 | % SSHT package to perform spin spherical harmonic transforms 13 | % Copyright (C) 2011 Jason McEwen 14 | % See LICENSE.txt for license details 15 | 16 | clear all; 17 | 18 | % Define parameters. 19 | L = 64 20 | 21 | % Generate random flms (of complex signal). 22 | flm = zeros(L^2,1); 23 | flm = rand(size(flm)) + sqrt(-1)*rand(size(flm)); 24 | flm = 2.*(flm - (1+sqrt(-1))./2); 25 | 26 | % Compute inverse then forward transform. 27 | f = ssht_inverse(flm, L); 28 | flm_syn = ssht_forward(f, L); 29 | 30 | % Compute max error in harmonic space. 31 | maxerr = max(abs(flm_syn - flm)) 32 | 33 | % Compute sampling grids. 34 | [thetas, phis, n, ntheta, nphi] = ssht_sampling(L, 'Grid', true); 35 | 36 | % Plot function on sphere. 37 | figure; 38 | ssht_plot_sphere(abs(f), L); 39 | 40 | 41 | -------------------------------------------------------------------------------- /src/matlab/ssht_demo2.m: -------------------------------------------------------------------------------- 1 | % ssht_demo2 - Run demo2 2 | % 3 | % Simple demo to compute inverse and forward transform of real scalar 4 | % function, using simplest interface with default options. 5 | % 6 | % Default usage is given by 7 | % 8 | % ssht_demo2 9 | % 10 | % Author: Jason McEwen (www.jasonmcewen.org) 11 | 12 | % SSHT package to perform spin spherical harmonic transforms 13 | % Copyright (C) 2011 Jason McEwen 14 | % See LICENSE.txt for license details 15 | 16 | clear all; 17 | 18 | % Define parameters. 19 | L = 64 20 | 21 | % Generate random flms (of complex signal). 22 | flm = zeros(L^2,1); 23 | flm = rand(size(flm)) + sqrt(-1)*rand(size(flm)); 24 | flm = 2.*(flm - (1+sqrt(-1))./2); 25 | 26 | % Impose reality on flms. 27 | for el = 0:L-1 28 | m = 0; 29 | ind = ssht_elm2ind(el, m); 30 | flm(ind) = real(flm(ind)); 31 | for m = 1:el 32 | ind_pm = ssht_elm2ind(el, m); 33 | ind_nm = ssht_elm2ind(el, -m); 34 | flm(ind_nm) = (-1)^m * conj(flm(ind_pm)); 35 | end 36 | end 37 | 38 | % Compute inverse then forward transform. 39 | f = ssht_inverse(flm, L, 'Reality', true); 40 | flm_syn = ssht_forward(f, L, 'Reality', true); 41 | 42 | % Compute max error in harmonic space. 43 | maxerr = max(abs(flm_syn - flm)) 44 | 45 | % Compute sampling grids. 46 | [thetas, phis, n, ntheta, nphi] = ssht_sampling(L, 'Grid', true); 47 | 48 | % Plot function on sphere. 49 | figure; 50 | ssht_plot_sphere(f, L); 51 | 52 | 53 | -------------------------------------------------------------------------------- /src/matlab/ssht_demo3.m: -------------------------------------------------------------------------------- 1 | % ssht_demo3 - Run demo3 2 | % 3 | % Demo to compute inverse and forward transform of spin function, using 4 | % standard interface with various options. 5 | % 6 | % Default usage is given by 7 | % 8 | % ssht_demo3 9 | % 10 | % Author: Jason McEwen (www.jasonmcewen.org) 11 | 12 | % SSHT package to perform spin spherical harmonic transforms 13 | % Copyright (C) 2011 Jason McEwen 14 | % See LICENSE.txt for license details 15 | 16 | clear all; 17 | 18 | % Define parameters. 19 | L = 64 20 | spin = 2 21 | reality = false 22 | methods = {'MW', 'MWSS', 'GL', 'DH'}; 23 | method = char(methods(1)) 24 | close_plot = true; 25 | plot_samples = false; 26 | 27 | % Generate random flms (of complex signal). 28 | flm = zeros(L^2,1); 29 | flm = rand(size(flm)) + sqrt(-1)*rand(size(flm)); 30 | flm = 2.*(flm - (1+sqrt(-1))./2); 31 | 32 | % Zero harmonic coefficients with el<|spin|. 33 | ind_min = spin^2 + abs(spin); 34 | flm(1:ind_min) = 0; 35 | 36 | % Impose reality on flms. 37 | if reality 38 | for el = 0:L-1 39 | m = 0; 40 | ind = ssht_elm2ind(el, m); 41 | flm(ind) = real(flm(ind)); 42 | for m = 1:el 43 | ind_pm = ssht_elm2ind(el, m); 44 | ind_nm = ssht_elm2ind(el, -m); 45 | flm(ind_nm) = (-1)^m * conj(flm(ind_pm)); 46 | end 47 | end 48 | end 49 | 50 | % Compute inverse then forward transform. 51 | f = ssht_inverse(flm, L, 'Method', method, 'Spin', spin, ... 52 | 'Reality', reality); 53 | flm_syn = ssht_forward(f, L, 'Method', method, 'Spin', spin, ... 54 | 'Reality', reality); 55 | 56 | % Compute max error in harmonic space. 57 | maxerr = max(abs(flm_syn - flm)) 58 | 59 | % Compute sampling grids. 60 | [thetas, phis, n, ntheta, nphi] = ssht_sampling(L, 'Method', method, ... 61 | 'Grid', true); 62 | 63 | % Plot function on sphere. 64 | figure; 65 | ssht_plot_sphere(abs(f), L, 'Method', method, 'Close', close_plot, ... 66 | 'PlotSamples', plot_samples, 'Lighting', true); 67 | -------------------------------------------------------------------------------- /src/matlab/ssht_demo6.m: -------------------------------------------------------------------------------- 1 | % ssht_demo6 - Run demo6 2 | % 3 | % Smooth Earth topography map by applying a Gaussian filter in harmonic 4 | % space. 5 | % 6 | % The official Earth Gravitational Model EGM2008 has been publicly 7 | % released by the U.S. National Geospatial-Intelligence Agency (NGA) (these 8 | % data were downloaded from Frederik Simons' web page: 9 | % http://geoweb.princeton.edu/people/simons). 10 | % 11 | % Default usage is given by 12 | % 13 | % ssht_demo6 14 | % 15 | % Author: Jason McEwen (www.jasonmcewen.org) 16 | 17 | % SSHT package to perform spin spherical harmonic transforms 18 | % Copyright (C) 2011 Jason McEwen 19 | % See LICENSE.txt for license details 20 | 21 | clear all; 22 | 23 | % Define parameters. 24 | methods = {'MW', 'MWSS', 'GL', 'DH'}; 25 | method = char(methods(1)) 26 | close_plot = true; 27 | plot_samples = false; 28 | sigma = 5e-4; 29 | 30 | % Load harmonic coefficients of Earth. 31 | load('data/EGM2008_Topography_flms_L0128'); 32 | 33 | % Smooth harmonic coefficients. 34 | flm_smooth = flm; 35 | for el = 1:L-1 36 | for m = 0:el 37 | ind = ssht_elm2ind(el,m); 38 | flm_smooth(ind) = flm_smooth(ind) ... 39 | .* exp(-el.^2 * sigma); 40 | end 41 | end 42 | 43 | % Compute real space version of Earth. 44 | f = ssht_inverse(flm, L, 'Method', method, 'Reality', true); 45 | f_smooth = ssht_inverse(flm_smooth, L, 'Method', method, 'Reality', true); 46 | f = fliplr(f); f_smooth = fliplr(f_smooth); 47 | 48 | % Plot functions on sphere. 49 | figure; 50 | ssht_plot_sphere(f, L, 'Method', method, 'Close', close_plot, ... 51 | 'PlotSamples', plot_samples, 'Lighting', true); 52 | figure; 53 | ssht_plot_mollweide(f, L, 'Method', method); 54 | figure; 55 | ssht_plot_sphere(f_smooth, L, 'Method', method, 'Close', close_plot, ... 56 | 'PlotSamples', plot_samples, 'Lighting', true); 57 | figure; 58 | ssht_plot_mollweide(f_smooth, L, 'Method', method); 59 | -------------------------------------------------------------------------------- /src/matlab/ssht_demo_rotation.m: -------------------------------------------------------------------------------- 1 | % ssht_demo_rotation - Run rotation demo 2 | % 3 | % Plot spherical harmonic function on the sphere, then 4 | % rotate it and plot the rotation, too. 5 | % 6 | % Default usage is given by 7 | % 8 | % ssht_demo_rotation 9 | % 10 | % Authors: Martin Büttner (m.buettner.d@gmail.com) 11 | % Jason McEwen (www.jasonmcewen.org) 12 | 13 | % SSHT package to perform spin spherical harmonic transforms 14 | % Copyright (C) 2011-2014 Jason McEwen 15 | % See LICENSE.txt for license details 16 | 17 | clear all; 18 | close all; 19 | 20 | % Define parameters. 21 | L = 64; 22 | el = 4 23 | m = 2 24 | gamma = pi/2 25 | beta = pi/4 26 | alpha = -pi/2 27 | type = 'colour'; 28 | 29 | % Generate spherical harmonics. 30 | flm = zeros(L^2,1); 31 | ind = ssht_elm2ind(el, m); 32 | flm(ind) = 1.0; 33 | 34 | % Compute function on the sphere. 35 | f = ssht_inverse(complex(real(flm), imag(flm)), L); 36 | 37 | % Compute sampling grids. 38 | %[thetas, phis, n, ntheta, nphi] = ssht_sampling(L, 'Grid', true); 39 | 40 | % Precompute Wigner small-d functions 41 | d = zeros(L, 2*L-1, 2*L-1); 42 | d(1,:,:) = ssht_dl(squeeze(d(1,:,:)), L, 0, beta); 43 | for el = 1:L-1 44 | d(el+1,:,:) = ssht_dl(squeeze(d(el,:,:)), L, el, beta); 45 | end 46 | 47 | % Rotate spherical harmonic 48 | flm_rot = ssht_rotate_flm_dl(flm, d, alpha, gamma); 49 | 50 | % Compute rotated function on the sphere. 51 | f_rot = ssht_inverse(complex(real(flm_rot), imag(flm_rot)), L); 52 | 53 | % Plot function on sphere. 54 | figure(1); 55 | subplot(2,2,1) 56 | ssht_plot_sphere(real(f), L, 'Type', type, ... 57 | 'ColourBar', false, 'Lighting', true); 58 | subplot(2,2,2) 59 | ssht_plot_sphere(imag(f), L, 'Type', type, ... 60 | 'ColourBar', false, 'Lighting', true); 61 | % Plot rotated function on sphere. 62 | subplot(2,2,3) 63 | ssht_plot_sphere(real(f_rot), L, 'Type', type, ... 64 | 'ColourBar', false, 'Lighting', true); 65 | subplot(2,2,4) 66 | ssht_plot_sphere(imag(f_rot), L, 'Type', type, ... 67 | 'ColourBar', false, 'Lighting', true); 68 | -------------------------------------------------------------------------------- /src/matlab/ssht_dl.m: -------------------------------------------------------------------------------- 1 | function [dl] = ssht_dl(dl, L, el, theta, varargin) 2 | % ssht_dl - Compute Wigner small-d functions 3 | % 4 | % Compute the el-th plane of the Wigner small-d functions 5 | % (from the (el-1)-th plane) using Risbo's method. 6 | % 7 | % Default usage is given by 8 | % 9 | % dl = ssht_dl(dl, L, el, theta, ) 10 | % 11 | % where dl is the Wigner plane for all m and n, indexed dl(m,n) of size 12 | % (2*L-1)*(2*L-1), L is the harmonic band-limit, el is the current 13 | % harmonic degree (i.e. dl input should already be computed for el-1, 14 | % and dl output will be computed for el), and theta is the argument of 15 | % the Wigner small-d functions. 16 | % 17 | % Options consist of parameter type and value pairs. Valid options 18 | % include: 19 | % 'SqrtTable' = { Precomputed square-roots from 0 to 2*(L-1)+1 } 20 | % 'SignTable' = { Precomputed (-1)^m signs from m=0 to L } 21 | % 22 | % Author: Jason McEwen (www.jasonmcewen.org) 23 | 24 | % SSHT package to perform spin spherical harmonic transforms 25 | % Copyright (C) 2013 Jason McEwen 26 | % See LICENSE.txt for license details 27 | 28 | % Parse arguments. 29 | p = inputParser; 30 | p.addRequired('dl', @isnumeric); 31 | p.addRequired('L', @isnumeric); 32 | p.addRequired('el', @isnumeric); 33 | p.addRequired('theta', @isnumeric); 34 | p.addParamValue('SqrtTable', 0, @isnumeric); 35 | p.addParamValue('SignTable', 0, @isnumeric); 36 | p.parse(dl, L, el, theta, varargin{:}); 37 | args = p.Results; 38 | defaults = p.UsingDefaults; 39 | 40 | % Compute sqrt_tbl if not passed as argument. 41 | if (sum(ismember(defaults, 'SqrtTable'))) 42 | sqrt_tbl = sqrt([0:2*(L-1)+1])'; 43 | else 44 | sqrt_tbl = args.SqrtTable; 45 | end 46 | 47 | % Compute signs if not passed as argument. 48 | if (sum(ismember(defaults, 'SqrtTable'))) 49 | signs = ones(L+1,1); 50 | signs(2:2:end) = -1; 51 | else 52 | signs = args.SignTable; 53 | end 54 | 55 | % Compute Wigner small-d functions. 56 | dl = dl.'; 57 | dl = ssht_dl_mex(dl, L, el, theta, sqrt_tbl, signs); 58 | dl = dl.'; 59 | -------------------------------------------------------------------------------- /src/matlab/ssht_dln.m: -------------------------------------------------------------------------------- 1 | function [dlp1] = ssht_dln(dl, dlm1, L, el, n, theta, varargin) 2 | % ssht_dln - Compute Wigner small-d functions for given n 3 | % 4 | % Compute the el-th line of the Wigner small-d functions for given n 5 | % (from the (el-1)-th and (el-2)-th lines) using 3-term recursion of 6 | % Kostelec. 7 | % 8 | % Default usage is given by 9 | % 10 | % dlp1 = ssht_dln(dl, dlm1, L, el, n, theta, ) 11 | % 12 | % where dl is the Wigner line for el for non-negative m and given n of size 13 | % L, dlm1 is the line for el-1 and dlp1 is the line computed for el+1,L is 14 | % the harmonic band-limit, el is the current harmonic degree, and theta is 15 | % the argument of the Wigner small-d functions. 16 | % 17 | % Options consist of parameter type and value pairs. Valid options 18 | % include: 19 | % 'SqrtTable' = { Precomputed square-roots from 0 to 2*(L-1)+1 } 20 | % 'SignTable' = { Precomputed (-1)^m signs from m=0 to L } 21 | % 22 | % Author: Jason McEwen (www.jasonmcewen.org) 23 | 24 | % SSHT package to perform spin spherical harmonic transforms 25 | % Copyright (C) 2013 Jason McEwen 26 | % See LICENSE.txt for license details 27 | 28 | % Parse arguments. 29 | p = inputParser; 30 | p.addRequired('dl', @isnumeric); 31 | p.addRequired('dlm1', @isnumeric); 32 | p.addRequired('L', @isnumeric); 33 | p.addRequired('el', @isnumeric); 34 | p.addRequired('n', @isnumeric); 35 | p.addRequired('theta', @isnumeric); 36 | p.addParamValue('SqrtTable', 0, @isnumeric); 37 | p.addParamValue('SignTable', 0, @isnumeric); 38 | p.parse(dl, dlm1, L, el, n, theta, varargin{:}); 39 | args = p.Results; 40 | defaults = p.UsingDefaults; 41 | 42 | % Compute sqrt_tbl if not passed as argument. 43 | if (sum(ismember(defaults, 'SqrtTable'))) 44 | sqrt_tbl = sqrt([0:2*(L-1)+1])'; 45 | else 46 | sqrt_tbl = args.SqrtTable; 47 | end 48 | 49 | % Compute signs if not passed as argument. 50 | if (sum(ismember(defaults, 'SqrtTable'))) 51 | signs = ones(L+1,1); 52 | signs(2:2:end) = -1; 53 | else 54 | signs = args.SignTable; 55 | end 56 | 57 | % Compute Wigner small-d functions. 58 | dlp1 = ssht_dln_mex(dl, dlm1, L, el, n, theta, sqrt_tbl, signs); 59 | -------------------------------------------------------------------------------- /src/matlab/ssht_elm2ind.m: -------------------------------------------------------------------------------- 1 | function [ind] = ssht_elm2ind(el, m) 2 | % ssht_elm2ind - Convert harmonic indices to vector index 3 | % 4 | % Convert (el,m) spherical harmonic indices to ind index to access vector 5 | % of harmonic coefficients (folllowing the Matlab convention, ind is index 6 | % from 1). 7 | % 8 | % Default usage is given by 9 | % 10 | % [ind] = ssht_elm2ind(el, m) 11 | % 12 | % Author: Jason McEwen (www.jasonmcewen.org) 13 | 14 | % SSHT package to perform spin spherical harmonic transforms 15 | % Copyright (C) 2011 Jason McEwen 16 | % See LICENSE.txt for license details 17 | 18 | ind = el .* el + el + m + 1; 19 | -------------------------------------------------------------------------------- /src/matlab/ssht_ind2elm.m: -------------------------------------------------------------------------------- 1 | function [el, m] = ssht_ind2elm(ind) 2 | % ssht_ind2elm - Convert vector index to harmonic indices 3 | % 4 | % Convert ind index to access vector of harmonic coefficients (folllowing 5 | % the Matlab convention, ind is index from 1) to (el,m) spherical harmonic 6 | % indices. 7 | % 8 | % Default usage is given by 9 | % 10 | % [el, m] = ssht_ind2elmn(ind) 11 | % 12 | % Author: Jason McEwen (www.jasonmcewen.org) 13 | 14 | % SSHT package to perform spin spherical harmonic transforms 15 | % Copyright (C) 2011 Jason McEwen 16 | % See LICENSE.txt for license details 17 | 18 | el = floor(sqrt(ind-1)); 19 | m = ind - 1 - el*el - el; 20 | -------------------------------------------------------------------------------- /src/matlab/ssht_mex.h: -------------------------------------------------------------------------------- 1 | 2 | // SSHT package to perform spin spherical harmonic transforms 3 | // Copyright (C) 2011 Jason McEwen 4 | // See LICENSE.txt for license details 5 | 6 | 7 | #define SSHT_SAMPLING_MW "MW" 8 | #define SSHT_SAMPLING_MWSS "MWSS" 9 | #define SSHT_SAMPLING_GL "GL" 10 | #define SSHT_SAMPLING_DH "DH" 11 | 12 | #define SSHT_RECURSION_TRAPANI "Trapani" 13 | #define SSHT_RECURSION_RISBO "Risbo" 14 | #define SSHT_RECURSION_KOSTELEC "Kostelec" 15 | 16 | #define SSHT_STRING_LEN 128 17 | -------------------------------------------------------------------------------- /src/matlab/ssht_plot_harmonic.m: -------------------------------------------------------------------------------- 1 | function ssht_plot_harmonic(flm, L) 2 | % ssht_plot_harmonic - Plot spherical harmonic coefficients 3 | % 4 | % Plots spherical harmonic coefficients. 5 | % 6 | % Default usage is given by 7 | % 8 | % ssht_plot_harmonic(flm, L) 9 | % 10 | % where flm is the spherical harmonic coefficients of the function and L is 11 | % the harmonic band-limit. 12 | % 13 | % Author: Jason McEwen (www.jasonmcewen.org) 14 | 15 | % SSHT package to perform spin spherical harmonic transforms 16 | % Copyright (C) 2011 Jason McEwen 17 | % See LICENSE.txt for license details 18 | 19 | flm_plot = zeros(2*L-1, L); 20 | 21 | % Impose reality on flms. 22 | for el = 0:L-1 23 | for m = -el:el 24 | ind = ssht_elm2ind(el, m); 25 | flm_plot(m+L+1, el+1) = flm(ind); 26 | end 27 | end 28 | 29 | imagesc(flm_plot); 30 | -------------------------------------------------------------------------------- /src/matlab/ssht_rotate.m: -------------------------------------------------------------------------------- 1 | function [f_rotated] = ssht_rotate(f, L, alpha, beta, gamma, varargin) 2 | % ssht_rotate - Rotate a function defined in real space 3 | % 4 | % Rotates a function on the sphere, where the rotation is specified by a 5 | % point (alpha, beta, gamma) in SO(3). 6 | % 7 | % Default usage is given by 8 | % 9 | % [flm_rotated] = ssht_rotate(f, L, alpha, beta, gamma, ) 10 | % 11 | % where f is the function to be rotated, L is the harmonic band-limit, 12 | % alpha, beta and gamma are the Euler angles specifying the rotation, 13 | % and f_rotated the resulting function after rotation. 14 | % 15 | % Authors: Jason McEwen (www.jasonmcewen.org) 16 | 17 | % SSHT package to perform spin spherical harmonic transforms 18 | % Copyright (C) 2011-2017 Jason McEwen 19 | % See LICENSE.txt for license details 20 | 21 | % Parse arguments. 22 | p = inputParser; 23 | p.addRequired('f', @isnumeric); 24 | p.addRequired('L', @isnumeric); 25 | p.addRequired('alpha', @isnumeric); 26 | p.addRequired('beta', @isnumeric); 27 | p.addRequired('gamma', @isnumeric); 28 | p.addParamValue('Method', 'MW', @ischar); 29 | p.addParamValue('Spin', 0, @isnumeric); 30 | p.addParamValue('Reality', false, @islogical); 31 | p.parse(f, L, alpha, beta, gamma, varargin{:}); 32 | args = p.Results; 33 | 34 | % Compute forward harmonic transform. 35 | flm = ssht_forward(f, L, ... 36 | 'Method', args.Method, 'Spin', args.Spin, 'Reality', args.Reality); 37 | 38 | % Rotate in harmonic space. 39 | flm_rotated = ssht_rotate_flm(flm, alpha, beta, gamma); 40 | 41 | % Compute inverse harmonic transform. 42 | f_rotated = ssht_inverse(flm_rotated, L, ... 43 | 'Method', args.Method, 'Spin', args.Spin, 'Reality', args.Reality); 44 | -------------------------------------------------------------------------------- /src/matlab/ssht_rotate_flm.m: -------------------------------------------------------------------------------- 1 | function [flm_rotated] = ssht_rotate_flm(flm, alpha, beta, gamma) 2 | % ssht_rotate_flm - Rotate a function in harmonic space 3 | % 4 | % Rotates a function on the sphere in harmonic space, where 5 | % the rotation is specified by a point (alpha, beta, gamma) 6 | % in SO(3). 7 | % 8 | % Default usage is given by 9 | % 10 | % [flm_rotated] = ssht_rotate_flm(flm, alpha, beta, gamma) 11 | % 12 | % where flm are the harmonic coefficients of the function to be 13 | % rotated, alpha, beta and gamma are the Euler angles specifying the 14 | % rotation, and flm_rotated are the harmonic coefficients of the resulting 15 | % function after rotation. The band-limit L is implied by the size of the 16 | % flm, which should be L*L. 17 | % 18 | % Authors: Jason McEwen (www.jasonmcewen.org) 19 | 20 | % SSHT package to perform spin spherical harmonic transforms 21 | % Copyright (C) 2011-2017 Jason McEwen 22 | % See LICENSE.txt for license details 23 | 24 | % Parse arguments. 25 | p = inputParser; 26 | p.addRequired('flm', @isnumeric); 27 | p.addRequired('alpha', @isnumeric); 28 | p.addRequired('beta', @isnumeric); 29 | p.addRequired('gamma', @isnumeric); 30 | 31 | L = sqrt(length(flm)); 32 | 33 | % Rotate harmonic coefficients. 34 | flm_rotated = zeros(L^2, 1); 35 | dl = zeros(2*L-1,2*L-1); 36 | for el = 0:L-1 37 | dl = ssht_dl(dl, L, el, beta); 38 | 39 | for m = -el:el 40 | ind_m = ssht_elm2ind(el, m); 41 | 42 | for n = -el:el 43 | 44 | ind_n = ssht_elm2ind(el, n); 45 | flm_rotated(ind_m) = flm_rotated(ind_m) ... 46 | + exp(-1i .* m .* alpha) .* dl(m+L, n+L) ... 47 | .* exp(-1i .* n .* gamma) .* flm(ind_n); 48 | 49 | end 50 | 51 | end 52 | end 53 | -------------------------------------------------------------------------------- /src/matlab/ssht_s2c.m: -------------------------------------------------------------------------------- 1 | function [x, y, z] = ssht_s2c(theta, phi, r) 2 | % ssht_s2c - Convert spherical to cartesian coordinates 3 | % 4 | % Convert cartesian to spherical coordinates. 5 | % 6 | % Default usage is given by 7 | % 8 | % [x, y, z] = ssht_s2c(theta, phi, r) 9 | % 10 | % Author: Jason McEwen (www.jasonmcewen.org) 11 | 12 | % SSHT package to perform spin spherical harmonic transforms 13 | % Copyright (C) 2011 Jason McEwen 14 | % See LICENSE.txt for license details 15 | 16 | x = r .* sin(theta) .* cos(phi); 17 | y = r .* sin(theta) .* sin(phi); 18 | z = r .* cos(theta); -------------------------------------------------------------------------------- /src/matlab/ssht_sampling.m: -------------------------------------------------------------------------------- 1 | function [thetas, phis, varargout] = ssht_sampling(L, varargin) 2 | % ssht_sampling - Compute sample positions 3 | % 4 | % Computes sample positions on sphere for various sampling methods. 5 | % 6 | % Default usage is given by 7 | % 8 | % [thetas, phis] = ssht_sampling(L, ) 9 | % 10 | % where L is the harmonic band-limit and theta and phi specify sample 11 | % positions. 12 | % 13 | % Options consist of parameter type and value pairs. Valid options 14 | % include: 15 | % 'Method' = { 'MW' [McEwen & Wiaux sampling (default)], 16 | % 'MWSS' [McEwen & Wiaux symmetric sampling], 17 | % 'DH' [Driscoll & Healy sampling], 18 | % 'GL' [Gauss-Legendre sampling] } 19 | % 'Grid' = { false [return theta and phi vectors (default)], 20 | % true [return theta and phi grids] } 21 | % 22 | % May optionally return total number of samples n, number of theta 23 | % samples ntheta and number of phi samples nphi through usage 24 | % 25 | % [thetas, phis, n, ntheta, nphi] = ssht_sampling(L, ) 26 | % 27 | % Author: Jason McEwen (www.jasonmcewen.org) 28 | 29 | % SSHT package to perform spin spherical harmonic transforms 30 | % Copyright (C) 2011 Jason McEwen 31 | % See LICENSE.txt for license details 32 | 33 | % Parse arguments. 34 | p = inputParser; 35 | p.addRequired('L', @isnumeric); 36 | p.addParamValue('Method', 'MW', @ischar); 37 | p.addParamValue('Grid', false, @islogical); 38 | p.parse(L, varargin{:}); 39 | args = p.Results; 40 | 41 | % Computing sampling points. 42 | [n, ntheta, nphi, thetas, phis] = ssht_sampling_mex(L, args.Method); 43 | 44 | % Compute grids if requested. 45 | if args.Grid 46 | [thetas, phis] = ndgrid(thetas, phis); 47 | end 48 | 49 | % Set optional outputs. 50 | if nargout >= 3 51 | varargout(1) = {n}; 52 | end 53 | if nargout >= 4 54 | varargout(2) = {ntheta}; 55 | end 56 | if nargout >= 5 57 | varargout(3) = {nphi}; 58 | end 59 | -------------------------------------------------------------------------------- /src/pyssht/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_custom_command( 2 | OUTPUT cpyssht.c 3 | MAIN_DEPENDENCY cpyssht.pyx 4 | VERBATIM 5 | COMMAND Python::Interpreter -m cython "${CMAKE_CURRENT_SOURCE_DIR}/cpyssht.pyx" 6 | --output-file "${CMAKE_CURRENT_BINARY_DIR}/cpyssht.c") 7 | add_custom_command( 8 | OUTPUT ducc_interface.c 9 | MAIN_DEPENDENCY ducc_interface.pyx 10 | VERBATIM 11 | COMMAND 12 | Python::Interpreter -m cython "${CMAKE_CURRENT_SOURCE_DIR}/ducc_interface.pyx" 13 | --output-file "${CMAKE_CURRENT_BINARY_DIR}/ducc_interface.c") 14 | 15 | python_add_library(cpyssht MODULE "${CMAKE_CURRENT_BINARY_DIR}/cpyssht.c" WITH_SOABI) 16 | python_add_library(ducc_interface MODULE "${CMAKE_CURRENT_BINARY_DIR}/ducc_interface.c" 17 | WITH_SOABI) 18 | target_link_libraries(cpyssht PUBLIC ssht) 19 | target_include_directories(cpyssht PUBLIC ${Python3_NumPy_INCLUDE_DIR}) 20 | target_include_directories(ducc_interface PUBLIC ${Python3_NumPy_INCLUDE_DIR}) 21 | if(WIN32) 22 | target_compile_definitions(cpyssht PUBLIC MS_WIN64) 23 | target_compile_definitions(ducc_interface PUBLIC MS_WIN64) 24 | endif() 25 | install(TARGETS cpyssht ducc_interface LIBRARY DESTINATION ${SKBUILD_PROJECT_NAME}) 26 | -------------------------------------------------------------------------------- /src/pyssht/__init__.py: -------------------------------------------------------------------------------- 1 | """SSHT module.""" 2 | 3 | from pathlib import Path 4 | 5 | __doc__ = (Path(__file__).parent / "SSHT_Python_Documentation.md").read_text() 6 | 7 | from pyssht.exceptions import ( 8 | ssht_spin_error as ssht_spin_error, 9 | ssht_input_error as ssht_input_error, 10 | ) 11 | from pyssht.cpyssht import * 12 | -------------------------------------------------------------------------------- /src/pyssht/exceptions.py: -------------------------------------------------------------------------------- 1 | class ssht_input_error(TypeError): 2 | """Raise this when inputs are the wrong type""" 3 | 4 | 5 | class ssht_spin_error(ValueError): 6 | """Raise this when the spin is none zero but Reality is true""" 7 | -------------------------------------------------------------------------------- /src/pyssht/pyssht_demo_0.py: -------------------------------------------------------------------------------- 1 | from __future__ import unicode_literals 2 | import numpy as np 3 | import pyssht as ssht 4 | import matplotlib.pyplot as plt 5 | from pylab import cm 6 | 7 | # % pyssht_demo_0 - Run demo0 8 | # % 9 | # % Plot spherical harmonic functions on the sphere using othographic projection 10 | # % 11 | # % 12 | # % Author: Christopher G R Wallis & Jason McEwen (www.christophergrwallis.org & www.jasonmcewen.org) 13 | # % 14 | # % pyssht python package to perform spin spherical harmonic transforms 15 | 16 | # % Define parameters. 17 | L = 64 18 | el = 4 19 | m = 2 20 | 21 | # Generate spherical harmonics. 22 | flm = np.zeros(L * L, dtype=complex) 23 | ind = ssht.elm2ind(el, m) 24 | flm[ind] = 1.0 25 | 26 | # Compute function on the sphere. 27 | f = ssht.inverse(flm, L) 28 | 29 | # Plot function on sphere. 30 | ( 31 | f_north_real, 32 | mask_north_real, 33 | f_south_real, 34 | mask_south_real, 35 | f_north_imag, 36 | mask_north_imag, 37 | f_south_imag, 38 | mask_south_imag, 39 | ) = ssht.polar_projection( 40 | f, L, resolution=200, Method="MW", Projection="OP", rot=[0.0, np.pi / 2, 0.0] 41 | ) 42 | 43 | plt.figure(1) 44 | plt.subplot(2, 2, 1) 45 | plt.imshow(f_north_real, interpolation="nearest") 46 | plt.imshow(mask_north_real, interpolation="nearest", cmap=cm.gray, vmin=-1.0, vmax=1.0) 47 | plt.axis("off") 48 | plt.title("f East Real") 49 | 50 | plt.subplot(2, 2, 2) 51 | plt.imshow(f_north_imag, interpolation="nearest") 52 | plt.imshow(mask_north_imag, interpolation="nearest", cmap=cm.gray, vmin=-1.0, vmax=1.0) 53 | plt.axis("off") 54 | plt.title("f East Imaginary") 55 | 56 | plt.figure(1) 57 | plt.subplot(2, 2, 3) 58 | plt.imshow(f_south_real, interpolation="nearest") 59 | plt.imshow(mask_south_real, interpolation="nearest", cmap=cm.gray, vmin=-1.0, vmax=1.0) 60 | plt.axis("off") 61 | plt.title("f West Real") 62 | 63 | plt.subplot(2, 2, 4) 64 | plt.imshow(f_south_imag, interpolation="nearest") 65 | plt.imshow(mask_south_imag, interpolation="nearest", cmap=cm.gray, vmin=-1.0, vmax=1.0) 66 | plt.axis("off") 67 | plt.title("f West Imaginary") 68 | 69 | plt.show() 70 | -------------------------------------------------------------------------------- /src/pyssht/pyssht_demo_1.py: -------------------------------------------------------------------------------- 1 | from __future__ import print_function 2 | import numpy as np 3 | import pyssht as ssht 4 | import matplotlib.pyplot as plt 5 | from pylab import cm 6 | 7 | # % pyssht_demo_1 - Run demo1 8 | # % 9 | # % Simple demo to compute inverse and forward transform of complex scalar 10 | # % function, using simplest interface with default options. 11 | # % 12 | # % Author: Christopher G R Wallis & Jason McEwen (www.christophergrwallis.org & www.jasonmcewen.org) 13 | # % 14 | # % pyssht python package to perform spin spherical harmonic transforms 15 | 16 | # Define parameters. 17 | L = 64 18 | 19 | # Generate random flms (of complex signal). 20 | flm = np.random.randn(L * L) + 1j * np.random.randn(L * L) 21 | 22 | # Compute inverse then forward transform. 23 | f = ssht.inverse(flm, L) 24 | flm_syn = ssht.forward(f, L) 25 | 26 | # Compute max error in harmonic space. 27 | maxerr = np.abs(flm_syn - flm).max() 28 | print("Max error:", maxerr) 29 | 30 | # Plot function on sphere using mollweide projection 31 | f_plot, mask_array = ssht.mollweide_projection(np.abs(f), L, resolution=200) 32 | plt.figure() 33 | imgplot = plt.imshow(f_plot, interpolation="nearest") 34 | plt.colorbar(imgplot, fraction=0.025, pad=0.04) 35 | plt.imshow(mask_array, interpolation="nearest", cmap=cm.gray, vmin=-1.0, vmax=1.0) 36 | plt.gca().set_aspect("equal") 37 | plt.title("|f|") 38 | plt.axis("off") 39 | plt.show() 40 | 41 | plt.figure() 42 | -------------------------------------------------------------------------------- /src/pyssht/pyssht_demo_2.py: -------------------------------------------------------------------------------- 1 | from __future__ import print_function 2 | import numpy as np 3 | import pyssht as ssht 4 | import matplotlib.pyplot as plt 5 | from pylab import cm 6 | 7 | # % pyssht_demo_2 - Run demo2 8 | # % 9 | # % Simple demo to compute inverse and forward transform of real scalar 10 | # % function, using simplest interface with default options. 11 | # % 12 | # % Author: Christopher G R Wallis & Jason McEwen (www.christophergrwallis.org & www.jasonmcewen.org) 13 | # % 14 | # % pyssht python package to perform spin spherical harmonic transforms 15 | 16 | # Define parameters. 17 | L = 64 18 | 19 | # Generate random flms (of real signal). 20 | flm = np.zeros((L * L), dtype=complex) 21 | 22 | # Impose reality on flms. 23 | for el in range(L): 24 | m = 0 25 | ind = ssht.elm2ind(el, m) 26 | flm[ind] = np.random.randn() 27 | for m in range(1, el + 1): 28 | ind_pm = ssht.elm2ind(el, m) 29 | ind_nm = ssht.elm2ind(el, -m) 30 | flm[ind_pm] = np.random.randn() + 1j * np.random.randn() 31 | flm[ind_nm] = (-1) ** m * np.conj(flm[ind_pm]) 32 | 33 | # Compute inverse then forward transform. 34 | f = ssht.inverse(flm, L, Reality=True) 35 | flm_syn = ssht.forward(f, L, Reality=True) 36 | 37 | # Compute max error in harmonic space. 38 | maxerr = np.abs(flm_syn - flm).max() 39 | print("Max error:", maxerr) 40 | 41 | # Plot function on sphere using mollweide projection 42 | f_plot, mask_array = ssht.mollweide_projection(np.abs(f), L, resolution=200) 43 | plt.figure() 44 | imgplot = plt.imshow(f_plot, interpolation="nearest") 45 | plt.colorbar(imgplot, fraction=0.025, pad=0.04) 46 | plt.imshow(mask_array, interpolation="nearest", cmap=cm.gray, vmin=-1.0, vmax=1.0) 47 | plt.gca().set_aspect("equal") 48 | plt.title("|f|") 49 | plt.axis("off") 50 | plt.show() 51 | -------------------------------------------------------------------------------- /src/pyssht/pyssht_demo_3.py: -------------------------------------------------------------------------------- 1 | from __future__ import print_function, unicode_literals 2 | import numpy as np 3 | import pyssht as ssht 4 | import matplotlib.pyplot as plt 5 | from pylab import cm 6 | 7 | # % pyssht_demo_3 - Run demo3 8 | # % 9 | # % Demo to compute inverse and forward transform of spin function, using 10 | # % standard interface with various options. 11 | # % 12 | # % Author: Christopher G R Wallis & Jason McEwen (www.christophergrwallis.org & www.jasonmcewen.org) 13 | # % 14 | # % pyssht python package to perform spin spherical harmonic transforms 15 | 16 | # Define parameters. 17 | L = 64 18 | spin = 4 19 | methods = ["MW", "MWSS", "GL", "DH"] 20 | 21 | # Generate random flms (of complex signal). 22 | flm = np.random.randn(L * L) + 1j * np.random.randn(L * L) 23 | 24 | # Zero harmonic coefficients with el<|spin|. 25 | ind_min = np.abs(spin) ** 2 26 | flm[0:ind_min] = 0.0 + 1j * 0.0 27 | 28 | # Compute inverse then forward transform. 29 | for method in methods: 30 | f = ssht.inverse(flm, L, Method=method, Spin=spin, Reality=False) 31 | flm_syn = ssht.forward(f, L, Method=method, Spin=spin, Reality=False) 32 | 33 | # Compute max error in harmonic space. 34 | maxerr = np.abs(flm_syn - flm).max() 35 | print("Method:", method, "\nMax error:", maxerr) 36 | -------------------------------------------------------------------------------- /src/pyssht/pyssht_demo_4.py: -------------------------------------------------------------------------------- 1 | from __future__ import print_function, unicode_literals 2 | import numpy as np 3 | import pyssht as ssht 4 | import matplotlib.pyplot as plt 5 | from pylab import cm 6 | 7 | # % pyssht_demo_4 - Run demo4 8 | # % 9 | # % Demo to compute inverse and forward transform of spin function, using 10 | # % polar interface. 11 | # % 12 | # % Author: Christopher G R Wallis & Jason McEwen (www.christophergrwallis.org & www.jasonmcewen.org) 13 | # % 14 | # % pyssht python package to perform spin spherical harmonic transforms 15 | 16 | # Define parameters. 17 | L = 64 18 | Spin = 0 19 | method = "MW_pole" 20 | 21 | # Generate random flms (of complex signal). 22 | flm = np.random.randn(L * L) + 1j * np.random.randn(L * L) 23 | 24 | # Zero harmonic coefficients with el<|spin|. 25 | ind_min = np.abs(Spin) ** 2 26 | flm[0:ind_min] = 0.0 + 1j * 0.0 27 | 28 | # Compute inverse then forward transform. 29 | f, f_sp, phi_sp = ssht.inverse(flm, L, Spin=Spin, Method="MW_pole") 30 | 31 | flm_syn = ssht.forward((f, f_sp, phi_sp), L, Spin=Spin, Method="MW_pole") 32 | 33 | # Compute max error in harmonic space. 34 | maxerr = np.abs(flm_syn - flm).max() 35 | print("Max error:", maxerr) 36 | -------------------------------------------------------------------------------- /src/pyssht/pyssht_demo_7.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import pyssht as ssht 3 | import matplotlib.pyplot as plt 4 | from pylab import cm 5 | import scipy.io as sio 6 | 7 | # % pyssht_demo_7 - Run demo7 8 | # % 9 | # % Plot spherical harmonic function on the sphere, then 10 | # % rotate it and plot the rotation, too. 11 | # % 12 | # % Author: Christopher G R Wallis & Jason McEwen (www.christophergrwallis.org & www.jasonmcewen.org) 13 | # % 14 | # % pyssht python package to perform spin spherical harmonic transforms 15 | 16 | # Define parameters. 17 | L = 64 18 | el = 4 19 | m = 2 20 | gamma = np.pi / 2 21 | beta = np.pi / 4 22 | alpha = -np.pi / 2 23 | 24 | # Generate spherical harmonics. 25 | flm = np.zeros((L * L), dtype=complex) 26 | ind = ssht.elm2ind(el, m) 27 | flm[ind] = 1.0 28 | 29 | # Compute function on the sphere. 30 | f = ssht.inverse(flm, L) 31 | 32 | # Rotate spherical harmonic 33 | flm_rot = ssht.rotate_flms(flm, alpha, beta, gamma, L) 34 | 35 | # Compute rotated function on the sphere. 36 | f_rot = ssht.inverse(flm_rot, L) 37 | 38 | # Plot 39 | f_plot, mask_array, f_plot_imag, mask_array_imag = ssht.mollweide_projection( 40 | f, L, resolution=200, rot=[0.0, np.pi, np.pi] 41 | ) 42 | plt.figure() 43 | plt.subplot(1, 2, 1) 44 | imgplot = plt.imshow(f_plot, interpolation="nearest") 45 | plt.colorbar(imgplot, fraction=0.025, pad=0.04) 46 | plt.imshow(mask_array, interpolation="nearest", cmap=cm.gray, vmin=-1.0, vmax=1.0) 47 | plt.gca().set_aspect("equal") 48 | plt.title("f") 49 | plt.axis("off") 50 | 51 | f_plot, mask_array, f_plot_imag, mask_array_imag = ssht.mollweide_projection( 52 | f_rot, L, resolution=200, rot=[0.0, np.pi, np.pi] 53 | ) 54 | plt.subplot(1, 2, 2) 55 | imgplot = plt.imshow(f_plot, interpolation="nearest") 56 | plt.colorbar(imgplot, fraction=0.025, pad=0.04) 57 | plt.imshow(mask_array, interpolation="nearest", cmap=cm.gray, vmin=-1.0, vmax=1.0) 58 | plt.gca().set_aspect("equal") 59 | plt.title("f rot") 60 | plt.axis("off") 61 | 62 | plt.show() 63 | -------------------------------------------------------------------------------- /tests/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(test_ssht test_ssht.c utilities.c interface.c) 2 | target_link_libraries(test_ssht ssht cmocka-static) 3 | set_target_properties(test_ssht PROPERTIES RUNTIME_OUTPUT_DIRECTORY 4 | ${PROJECT_BINARY_DIR}/bin C_STANDARD 11) 5 | add_test(NAME test_ssht COMMAND test_ssht) 6 | -------------------------------------------------------------------------------- /tests/utilities.h: -------------------------------------------------------------------------------- 1 | #ifndef SSHT_TEST_UTILITIES 2 | #define SSHT_TEST_UTILITIES 3 | #include 4 | 5 | double ran2_dp(int idum); 6 | void gen_flm_complex(complex double *flm, int L, int spin, int seed); 7 | void gen_flm_real(complex double *flm, int L, int seed); 8 | void gen_lb_flm_complex(complex double *flm, int L_zero, int L, int spin, 9 | int seed); 10 | void gen_lb_flm_real(complex double *flm, int L0, int L, int seed); 11 | int max(int a, int b); 12 | #endif 13 | -------------------------------------------------------------------------------- /typings/pyssht/__init__.pyi: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | from typing import Optional, Tuple 3 | 4 | def forward( 5 | f: np.ndarray, 6 | L: int, 7 | Spin: int = 0, 8 | Method: str = "MW", 9 | Reality: bool = False, 10 | backend: str = "SSHT", 11 | **kwargs, 12 | ) -> np.ndarray: 13 | pass 14 | 15 | def forward_adjoint( 16 | flm: np.ndarray, 17 | L: int, 18 | Spin: int = 0, 19 | Method: str = "MW", 20 | Reality: bool = False, 21 | backend: str = "SSHT", 22 | **kwargs, 23 | ) -> np.ndarray: 24 | pass 25 | 26 | def inverse( 27 | flm: np.ndarray, 28 | L: int, 29 | Spin: int = 0, 30 | Method: str = "MW", 31 | Reality: bool = False, 32 | backend: str = "SSHT", 33 | **kwargs, 34 | ) -> np.ndarray: 35 | pass 36 | 37 | def inverse_adjoint( 38 | f: np.ndarray, 39 | L: int, 40 | Spin: int = 0, 41 | Method: str = "MW", 42 | Reality: bool = False, 43 | backend: str = "SSHT", 44 | **kwargs, 45 | ) -> np.ndarray: 46 | pass 47 | 48 | def elm2ind(el: int, m: int) -> int: 49 | pass 50 | 51 | def ind2elm(ind: int) -> Tuple[int, int]: 52 | pass 53 | 54 | def rotate_image(image, rot_list) -> np.ndarray: 55 | pass 56 | 57 | def rotate_flms( 58 | f_lm: np.ndarray, 59 | alpha: float, 60 | beta: float, 61 | gamma: float, 62 | L: int, 63 | dl_array_in: np.ndarray = None, 64 | M_in: Optional[int] = None, 65 | Axisymmetric: bool = False, 66 | Keep_dl: bool = False, 67 | backend: str = "SSHT", 68 | **kwargs, 69 | ) -> np.ndarray: 70 | pass 71 | 72 | def sample_length(L: int, Method: str = "MW") -> int: 73 | pass 74 | 75 | def sample_shape(L: int, Method: str = "MW") -> Tuple[int, int]: 76 | pass 77 | --------------------------------------------------------------------------------