00001 #ifndef GAMMA_H
00002 #define GAMMA_H
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef ZMENVIRONMENT_H
00012 #include "ZMutility/ZMenvironment.h"
00013 #endif
00014 #include <utility>
00015 #include <complex>
00016
00017 ZM_BEGIN_NAMESPACE( zmsf )
00018
00019 typedef std::pair<double,double> Dpair;
00020 typedef std::complex<double> Dcomplex;
00021
00026
00027 struct Gamma {
00028
00030 static double lnGammaAbs( const double x );
00031
00033
00037 static Dpair lnGammaAbsErr( const double x );
00038
00040 static Dpair lnGamma( const double x );
00041
00043
00047 static Dpair lnGammaErr( const double x );
00048
00050 static double GammaFunction( const double x );
00051
00053 static Dpair GammaFunctionErr( const double x );
00054
00056 static double GammaStar( const double x );
00057
00059 static Dpair GammaStarErr( const double x );
00060
00062 static double ReciprocalGamma( const double x );
00063
00065 static Dpair ReciprocalGammaErr( const double x );
00066
00068 static Dpair lnGammaZ( const Dcomplex x );
00069
00071 static Dpair lnGammaZErr( const Dcomplex x );
00072
00074 static double TaylorN( const int n, const double x );
00075
00077 static Dpair TaylorNErr( const int n, const double x );
00078
00080 static double Factorial( const unsigned int n );
00081
00083 static Dpair FactorialErr( const unsigned int n );
00084
00086 static double DoubleFactorial( const unsigned int n );
00087
00089 static Dpair DoubleFactorialErr( const unsigned int n );
00090
00092 static double lnFactorial( const unsigned int n );
00093
00095 static Dpair lnFactorialErr( const unsigned int n );
00096
00098 static double lnDoubleFactorial( const unsigned int n );
00099
00101 static Dpair lnDoubleFactorialErr( const unsigned int n );
00102
00104 static double lnBinomialCoefficient( const unsigned int n, const unsigned int m );
00105
00107 static Dpair lnBinomialCoefficientErr( const unsigned int n, const unsigned int m );
00108
00110 static double BinomialCoefficient( const unsigned int n, const unsigned int m );
00111
00113 static Dpair BinomialCoefficientErr( const unsigned int n, const unsigned int m );
00114
00116 static double lnPochammer( const double a, const double x );
00117
00119 static Dpair lnPochammerErr( const double a, const double x );
00120
00122 static Dpair lnPochammerSign( const double a, const double x );
00123
00125 static Dpair lnPochammerSignErr( const double a, const double x );
00126
00128 static double Pochammer( const double a, const double x );
00129
00131 static Dpair PochammerErr( const double a, const double x );
00132
00134 static double RelativePochammer( const double a, const double x );
00135
00137 static Dpair RelativePochammerErr( const double a, const double x );
00138
00140 static double IncompleteGamma( const double a, const double x );
00141
00143 static Dpair IncompleteGammaErr( const double a, const double x );
00144
00146 static double CompIncompleteGamma( const double a, const double x );
00147
00149 static Dpair CompIncompleteGammaErr( const double a, const double x );
00150
00152 static double lnBeta( const double a, const double b );
00153
00155 static Dpair lnBetaErr( const double a, const double b );
00156
00158 static double Beta( const double a, const double b );
00159
00161 static Dpair BetaErr( const double a, const double b );
00162
00164 static double IncompleteBeta( const double a, const double b,
00165 const double x );
00166
00168 static Dpair IncompleteBetaErr( const double a, const double b,
00169 const double x );
00170
00171 };
00172
00173 ZM_END_NAMESPACE( zmsf )
00174
00175 #endif