|
Go to the documentation of this file.
21 #define MODULUS 2147483647
22 #define MULTIPLIER 48271
23 #define CHECK 399268537
26 #define DEFAULT 123456789
103 long i =(long) floor((( double) a)*(1-q)+(( double)b)*q);
121 FD_DS( "Ran_exponential(): empty interval");
125 double lb= -expm1(-(static_cast<double> (tossLB))/ mu);
126 double ub= -expm1(-(static_cast<double> (tossUB))/ mu);
128 double ret=(-mu*(log(1-u)));
137 FD_DS( "Ran_gauss(): empty interval");
142 double ztossLB=( static_cast<double>(tossLB)-mu)/sigma;
143 double ztossUB=( static_cast<double>(tossUB)-mu)/sigma;
153 static const double a[] =
155 -3.969683028665376e+01,
156 2.209460984245205e+02,
157 -2.759285104469687e+02,
158 1.383577518672690e+02,
159 -3.066479806614716e+01,
160 2.506628277459239e+00
163 static const double b[] =
165 -5.447609879822406e+01,
166 1.615858368580409e+02,
167 -1.556989798598866e+02,
168 6.680131188771972e+01,
169 -1.328068155288572e+01
172 static const double c[] =
174 -7.784894002430293e-03,
175 -3.223964580411365e-01,
176 -2.400758277161838e+00,
177 -2.549732539343734e+00,
178 4.374664141464968e+00,
179 2.938163982698783e+00
182 static const double d[] =
184 7.784695709041462e-03,
185 3.224671290700398e-01,
186 2.445134137142996e+00,
187 3.754408661907416e+00
190 if(u<0 || u>1) zret=0.0;
192 FD_DS( "Ran_gauss(): u="<<u<< "ret=HUGE_VAL");
196 FD_DS( "Ran_gauss(): u="<<u<< "ret=-HUGE_VAL");
202 zret=(((((c[0]*q+c[1])*q+c[2])*q+c[3])*q+c[4])*q+c[5]) /
203 ((((d[0]*q+d[1])*q+d[2])*q+d[3])*q+1);
207 q = sqrt(-2*log(1-u));
208 zret= -(((((c[0]*q+c[1])*q+c[2])*q+c[3])*q+c[4])*q+c[5]) /
209 ((((d[0]*q+d[1])*q+d[2])*q+d[3])*q+1);
215 zret=(((((a[0]*r+a[1])*r+a[2])*r+a[3])*r+a[4])*r+a[5])*q /
216 (((((b[0]*r+b[1])*r+b[2])*r+b[3])*r+b[4])*r+1);
219 double ret=(zret*sigma)+mu;
228 const double PI = 3.141592654;
229 const double b1 = 0.319381530;
230 const double b2 = -0.356563782;
231 const double b3 = 1.781477937;
232 const double b4 = -1.821255978;
233 const double b5 = 1.330274429;
234 const double p = 0.2316419;
237 double t = 1.0 / (1.0 + p*x);
238 return (1.0 - (1/sqrt(2*PI))*exp(-x*x/2.0 )*t*
239 (t*(t*(t*(t*b5 + b4) + b3) + b2) + b1));
242 double t = 1.0 / ( 1.0 - p * x );
243 return ( (1/sqrt(2*PI))*exp(-x*x/2.0 )*t*
244 (t*(t*(t*(t*b5 + b4) + b3) + b2) + b1));
libFAUDES 2.26g
--- 2015.08.17
--- c++ api documentaion by doxygen
|