BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
NumRecipes Class Reference

#include <NumRecipes.h>

Static Public Member Functions

static double gammln (double x)
static double gammq (double a, double x)
static double gammp (double a, double x)
static void gcf (double *gammcf, double a, double x, double *gln)
static void gser (double *gamser, double a, double x, double *gln)
static double gammln (double x)
static double gammq (double a, double x)
static double gammp (double a, double x)
static void gcf (double *gammcf, double a, double x, double *gln)
static void gser (double *gamser, double a, double x, double *gln)
static double gammln (double x)
static double gammq (double a, double x)
static double gammp (double a, double x)
static void gcf (double *gammcf, double a, double x, double *gln)
static void gser (double *gamser, double a, double x, double *gln)
static double gammln (double x)
static double gammq (double a, double x)
static double gammp (double a, double x)
static void gcf (double *gammcf, double a, double x, double *gln)
static void gser (double *gamser, double a, double x, double *gln)
static double gammln (double x)
static double gammq (double a, double x)
static double gammp (double a, double x)
static void gcf (double *gammcf, double a, double x, double *gln)
static void gser (double *gamser, double a, double x, double *gln)
static double gammln (double x)
static double gammq (double a, double x)
static double gammp (double a, double x)
static void gcf (double *gammcf, double a, double x, double *gln)
static void gser (double *gamser, double a, double x, double *gln)

Detailed Description

Member Function Documentation

◆ gammln() [1/6]

double NumRecipes::gammln ( double x)
static

Definition at line 40 of file NumRecipes.cxx.

40 {
41 double x, y, tmp, ser;
42 static double cof[6] = { 76.18009172947146, -86.50532032941677, 24.01409824083091,
43 -1.231739572450155, 0.1208650973866179e-2, -0.5395239384953e-5 };
44 int j;
45
46 y = x = xx;
47 tmp = x + 5.5;
48 tmp -= ( x + 0.5 ) * log( tmp );
49 ser = 1.000000000190015;
50 for ( j = 0; j <= 5; j++ ) ser += cof[j] / ++y;
51 return -tmp + log( 2.5066282746310005 * ser / x );
52}
Double_t x[10]

Referenced by ChisqConsistency::ChisqConsistency(), ChisqConsistency::ChisqConsistency(), gcf(), and gser().

◆ gammln() [2/6]

double NumRecipes::gammln ( double x)
static

◆ gammln() [3/6]

double NumRecipes::gammln ( double x)
static

◆ gammln() [4/6]

double NumRecipes::gammln ( double x)
static

◆ gammln() [5/6]

double NumRecipes::gammln ( double x)
static

◆ gammln() [6/6]

double NumRecipes::gammln ( double x)
static

◆ gammp() [1/6]

double NumRecipes::gammp ( double a,
double x )
static

Definition at line 54 of file NumRecipes.cxx.

54 {
55 double gamser, gammcf, gln;
56
57 if ( x < 0.0 || a <= 0.0 )
58 std::cout << "ErrMsg(error)"
59 << " Invalid arguments in routine gammp x=" << x << " a=" << a << endl;
60 if ( x < ( a + 1.0 ) )
61 {
62 gser( &gamser, a, x, &gln );
63 return gamser;
64 }
65 else
66 {
67 gcf( &gammcf, a, x, &gln );
68 return 1.0 - gammcf;
69 }
70}
static void gser(double *gamser, double a, double x, double *gln)
static void gcf(double *gammcf, double a, double x, double *gln)

◆ gammp() [2/6]

double NumRecipes::gammp ( double a,
double x )
static

◆ gammp() [3/6]

double NumRecipes::gammp ( double a,
double x )
static

◆ gammp() [4/6]

double NumRecipes::gammp ( double a,
double x )
static

◆ gammp() [5/6]

double NumRecipes::gammp ( double a,
double x )
static

◆ gammp() [6/6]

double NumRecipes::gammp ( double a,
double x )
static

◆ gammq() [1/6]

double NumRecipes::gammq ( double a,
double x )
static

Definition at line 72 of file NumRecipes.cxx.

72 {
73 double gamser, gammcf, gln;
74
75 if ( x < 0.0 || a <= 0.0 ) recipesErr( " Invalid arguments in routine GAMMQ" );
76 if ( x < ( a + 1.0 ) )
77 {
78 gser( &gamser, a, x, &gln );
79 return 1.0 - gamser;
80 }
81 else
82 {
83 gcf( &gammcf, a, x, &gln );
84 return gammcf;
85 }
86}

Referenced by ChisqConsistency::ChisqConsistency().

◆ gammq() [2/6]

double NumRecipes::gammq ( double a,
double x )
static

◆ gammq() [3/6]

double NumRecipes::gammq ( double a,
double x )
static

◆ gammq() [4/6]

double NumRecipes::gammq ( double a,
double x )
static

◆ gammq() [5/6]

double NumRecipes::gammq ( double a,
double x )
static

◆ gammq() [6/6]

double NumRecipes::gammq ( double a,
double x )
static

◆ gcf() [1/6]

void NumRecipes::gcf ( double * gammcf,
double a,
double x,
double * gln )
static

Definition at line 88 of file NumRecipes.cxx.

88 {
89 int n;
90 double gold = 0.0, g, fac = 1.0, b1 = 1.0;
91 double b0 = 0.0, anf, ana, an, a1, a0 = 1.0;
92
93 *gln = gammln( a );
94 a1 = x;
95 for ( n = 1; n <= NUMREC_ITMAX; n++ )
96 {
97 an = (double)n;
98 ana = an - a;
99 a0 = ( a1 + a0 * ana ) * fac;
100 b0 = ( b1 + b0 * ana ) * fac;
101 anf = an * fac;
102 a1 = x * a0 + anf * a1;
103 b1 = x * b0 + anf * b1;
104 if ( a1 )
105 {
106 fac = 1.0 / a1;
107 g = b1 * fac;
108 if ( fabs( ( g - gold ) / g ) < NUMREC_EPS )
109 {
110 *gammcf = exp( -x + a * log( x ) - ( *gln ) ) * g;
111 return;
112 }
113 gold = g;
114 }
115 }
116 recipesErr( " a too large, NUMREC_ITMAX too small in routine GCF" );
117}
const Int_t n
character *LEPTONflag integer iresonances real zeta5 real a0
EvtComplex exp(const EvtComplex &c)
static double gammln(double x)

Referenced by gammp(), and gammq().

◆ gcf() [2/6]

void NumRecipes::gcf ( double * gammcf,
double a,
double x,
double * gln )
static

◆ gcf() [3/6]

void NumRecipes::gcf ( double * gammcf,
double a,
double x,
double * gln )
static

◆ gcf() [4/6]

void NumRecipes::gcf ( double * gammcf,
double a,
double x,
double * gln )
static

◆ gcf() [5/6]

void NumRecipes::gcf ( double * gammcf,
double a,
double x,
double * gln )
static

◆ gcf() [6/6]

void NumRecipes::gcf ( double * gammcf,
double a,
double x,
double * gln )
static

◆ gser() [1/6]

void NumRecipes::gser ( double * gamser,
double a,
double x,
double * gln )
static

Definition at line 119 of file NumRecipes.cxx.

119 {
120 int n;
121 double sum, del, ap;
122
123 *gln = gammln( a );
124 if ( x <= 0.0 )
125 {
126 if ( x < 0.0 ) recipesErr( " x less than 0 in routine GSER" );
127 *gamser = 0.0;
128 return;
129 }
130 else
131 {
132 ap = a;
133 del = sum = 1.0 / a;
134 for ( n = 1; n <= NUMREC_ITMAX; n++ )
135 {
136 ap += 1.0;
137 del *= x / ap;
138 sum += del;
139 if ( fabs( del ) < fabs( sum ) * NUMREC_EPS )
140 {
141 *gamser = sum * exp( -x + a * log( x ) - ( *gln ) );
142 return;
143 }
144 }
145 recipesErr( " a too large, NUMREC_ITMAX too small in routine GSER" );
146 return;
147 }
148}

Referenced by gammp(), and gammq().

◆ gser() [2/6]

void NumRecipes::gser ( double * gamser,
double a,
double x,
double * gln )
static

◆ gser() [3/6]

void NumRecipes::gser ( double * gamser,
double a,
double x,
double * gln )
static

◆ gser() [4/6]

void NumRecipes::gser ( double * gamser,
double a,
double x,
double * gln )
static

◆ gser() [5/6]

void NumRecipes::gser ( double * gamser,
double a,
double x,
double * gln )
static

◆ gser() [6/6]

void NumRecipes::gser ( double * gamser,
double a,
double x,
double * gln )
static

The documentation for this class was generated from the following files: