Geant4 Cross Reference |
1 /* 2 # <<BEGIN-copyright>> 3 # <<END-copyright>> 4 */ 5 6 #ifndef nf_Legendre_h_included 7 #define nf_Legendre_h_included 8 9 #include <nf_utilities.h> 10 #include <ptwXY.h> 11 12 #if defined __cplusplus 13 extern "C" { 14 namespace GIDI { 15 #endif 16 17 #define nf_Legendre_minMaxOrder 4 18 #define nf_Legendre_maxMaxOrder 64 19 #define nf_Legendre_sizeIncrement 8 20 21 typedef struct nf_Legendre_s nf_Legendre; 22 23 struct nf_Legendre_s { 24 int maxOrder; 25 int allocated; /* Will never be less than nf_Legendre_minMaxOrder. */ 26 double *Cls; 27 }; 28 29 typedef nfu_status (*nf_Legendre_GaussianQuadrature_callback)( double x, double *y, void *argList ); 30 31 /* 32 * Methods in nf_Legendre.c 33 */ 34 nf_Legendre *nf_Legendre_new( int initialSize, int maxOrder, double *Cls, nfu_status *status ); 35 nfu_status nf_Legendre_setup( nf_Legendre *nfL, int initialSize, int maxOrder ); 36 nfu_status nf_Legendre_release( nf_Legendre *nfL ); 37 nf_Legendre *nf_Legendre_free( nf_Legendre *nfL ); 38 nf_Legendre *nf_Legendre_clone( nf_Legendre *nfL, nfu_status *status ); 39 nfu_status nf_Legendre_reallocateCls( nf_Legendre *Legendre, int size, int forceSmallerResize ); 40 int nf_Legendre_maxOrder( nf_Legendre *Legendre ); 41 int nf_Legendre_allocated( nf_Legendre *Legendre ); 42 double nf_Legendre_getCl( nf_Legendre *Legendre, int l, nfu_status *status ); 43 nfu_status nf_Legendre_setCl( nf_Legendre *Legendre, int l, double Cl ); 44 nfu_status nf_Legendre_normalize( nf_Legendre *Legendre ); 45 double nf_Legendre_evauluateAtMu( nf_Legendre *nfL, double mu, nfu_status *status ); 46 double nf_Legendre_PofL_atMu( int l, double mu ); 47 ptwXYPoints *nf_Legendre_to_ptwXY( nf_Legendre *nfL, double accuracy, int biSectionMax, int checkForRoots, nfu_status *status ); 48 nf_Legendre *nf_Legendre_from_ptwXY( ptwXYPoints *ptwXY, int maxOrder, nfu_status *status ); 49 50 /* 51 * Methods in nf_Legendre_GaussianQuadrature.c 52 */ 53 nfu_status nf_Legendre_GaussianQuadrature( int degree, double x1, double x2, nf_Legendre_GaussianQuadrature_callback func, void *argList, double *integral ); 54 55 #if defined __cplusplus 56 } 57 } 58 #endif 59 60 #endif /* End of nf_Legendre_h_included. */ 61