ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
erfQ.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file erfQ.cc
1 // -*- C++ -*-
2 //
3 // -----------------------------------------------------------------------
4 // HEP Random
5 // --- erfQ ---
6 // method implementation file
7 // -----------------------------------------------------------------------
8 
9 // Contains methods that do not depend on large tables.
10 //
11 // erfQ (double x)
12 
13 // =======================================================================
14 // M Fischler - Created 1/26/00.
15 //
16 // =======================================================================
17 
18 #include "CLHEP/Random/Stat.h"
19 #include <cmath>
20 
21 namespace CLHEP {
22 
23 double HepStat::erfQ (double x) {
24 //
25 // erfQ is accurate to 7 places.
26 // See Numerical Recipes P 221
27 //
28 
29  double t, z, erfc;
30 
31  z = std::abs(x);
32  t = 1.0/(1.0+.5*z);
33 
34  erfc= t*std::exp(-z*z-1.26551223+t*(1.00002368+t*(0.37409196+t*(0.09678418+
35  t*(-0.18628806+t*(0.27886807+t*(-1.13520398+t*(1.48851587+
36  t*(-0.82215223+t*0.17087277 ))) ))) )));
37 
38  // (The derivation of this formula should be obvious.)
39 
40  if ( x < 0 ) erfc = 2.0 - erfc;
41 
42  return 1 - erfc;
43 
44 }
45 
46 
47 } // namespace CLHEP
48