diff --git a/libsharp/sharp.h b/libsharp/sharp.h index fed7361..88c247f 100644 --- a/libsharp/sharp.h +++ b/libsharp/sharp.h @@ -64,6 +64,9 @@ typedef struct unsigned long long opcnt; } sharp_job; +/*! \defgroup jobgroup Functionality for defining and executing SHTs */ +/*! \{ */ + /*! Initializes \a job with the appropriate parameters to perform the required SHT. \param type the type of SHT diff --git a/libsharp/sharp_lowlevel.h b/libsharp/sharp_lowlevel.h index 3899abb..6faf5df 100644 --- a/libsharp/sharp_lowlevel.h +++ b/libsharp/sharp_lowlevel.h @@ -135,7 +135,7 @@ void sharp_destroy_geom_info (sharp_geom_info *info); /*! \} */ -/*! \defgroup jobgroup Functionality for defining and executing SHTs */ +/*! \defgroup lowlevelgroup Low-level libsharp SHT interface */ /*! \{ */ /*! Enumeration of SHARP job types. */ @@ -144,10 +144,32 @@ typedef enum { SHARP_MAP2ALM, /*!< analysis */ SHARP_ALM2MAP_DERIV1 /*!< synthesis of first derivatives */ } sharp_jobtype; +/*! Performs a libsharp SHT job. The interface deliberately does not use + the C99 "complex" data type, in order to be callable from C. + \param type the type of SHT + \param spin the spin of the quantities to be transformed + \param add_output if 0, the output arrays will be overwritten, + else the result will be added to the output arrays. + \param alm contains pointers to the a_lm coefficients. If \a spin==0, + alm[0] points to the a_lm of the first SHT, alm[1] to those of the second + etc. If \a spin>0, alm[0] and alm[1] point to the a_lm of the first SHT, + alm[2] and alm[3] to those of the second, etc. The exact data type of \a alm + depends on the \a dp parameter. + \param map contains pointers to the maps. If \a spin==0, + map[0] points to the map of the first SHT, map[1] to that of the second + etc. If \a spin>0, map[0] and map[1] point to the maps of the first SHT, + map[2] and map[3] to those of the second, etc. The exact data type of \a map + depends on the \a dp parameter. + \param ntrans the number of simultaneous SHTs + \param dp if 0, the \a alm is expected to have the type "complex float **" + and \a map is expected to have the type "float **"; otherwise the expected + types are "complex double **" and "double **", respectively. */ void sharp_execute_ll (sharp_jobtype type, int spin, int add_output, void **alm, void **map, const sharp_geom_info *geom_info, const sharp_alm_info *alm_info, int ntrans, int dp); +/*! \} */ + #ifdef __cplusplus } #endif