40 return 3.14159265358979323846;
91 return 1.4142135623730950488016887242097;
99 return 2.71828182845904523536;
106 return 2.30258509299404568402;
113 return 0.43429448190325182765;
191 return 6.62606876e-34;
205 return 0.00000052e-34;
213 return 1.054571596e-34;
220 return 1.0e7 *
Hbar();
227 return 0.000000082e-34;
249 return 1.3806503e-23;
263 return 0.0000024e-23;
285 return 6.02214199e+23;
292 return 0.00000047e+23;
324 return (1000.0 *
R()) /
MWair();
331 return 0.577215664901532860606512090082402431042;
338 return 1.602176462e-19;
345 return 0.000000063e-19;
403 inline static T Min();
404 inline static T Max();
433 template <
typename Iterator> Iterator
LocMin(Iterator
first, Iterator last);
435 template <
typename Iterator> Iterator
LocMax(Iterator
first, Iterator last);
457 template <
typename T>
T *
Cross(
const T v1[3],
const T v2[3],
T out[3]);
509 template <
typename Iterator,
typename WeightIterator>
Double_t Mean(Iterator
first, Iterator last, WeightIterator wfirst);
516 template <
typename Iterator,
typename WeightIterator>
Double_t RMS(Iterator
first, Iterator last, WeightIterator wfirst);
520 template <
typename Iterator,
typename WeightIterator>
Double_t StdDev(Iterator
first, Iterator last, WeightIterator wfirst) {
return RMS<Iterator,WeightIterator>(
first,last,wfirst); }
525 template <
class Element,
typename Size> Element
KOrdStat(
Size n,
const Element *
a,
Size k,
Size *work = 0);
569#if defined(R__WIN32) && !defined(__CINT__)
571# define finite _finite
574#if defined(R__AIX) || defined(R__SOLARIS_CC50) || \
575 defined(R__HPUX11) || defined(R__GLIBC) || \
576 (defined(R__MACOSX) )
579# ifdef R__SOLARIS_CC50
580 extern "C" {
int finite(
double); }
593 extern double sin(
double);
594 extern double cos(
double);
595 extern double tan(
double);
602 extern double atan2(
double,
double);
604 extern double exp(
double);
605 extern double pow(
double,
double);
606 extern double log(
double);
619 _CRTIMP
double ldexp(
double,
int);
620 _CRTIMP
double ceil(
double);
621 _CRTIMP
double floor(
double);
660 if (
x > 1.)
return 0;
671 if (
y == 0)
return 0;
672 if (
y > 0)
return Pi()/2;
708 if ( i & 1 &&
x + 0.5 ==
T(i) ) i--;
711 if ( i & 1 &&
x - 0.5 ==
T(i) ) i++;
738 {
return pow(
x,
y); }
762#if defined(R__FAST_MATH)
765 const unsigned long long mask = 0x7FF0000000000000LL;
766 union {
unsigned long long l;
double d;}
v;
768 return (
v.l&mask)!=mask;
771# if defined(R__HPUX11)
772 {
return isfinite(
x); }
773# elif defined(R__MACOSX)
776 {
return isfinite(
x); }
779 {
return std::isfinite(
x); }
791#if defined(R__FAST_MATH)
794 const unsigned int mask = 0x7f800000;
795 union {
unsigned int l;
float d;}
v;
797 return (
v.l&mask)!=mask;
800{
return std::isfinite(
x); }
808#if defined (R__FAST_MATH)
835 } ieee_double_shape_type;
837#define EXTRACT_WORDS(ix0,ix1,d) \
839 ieee_double_shape_type ew_u; \
841 (ix0) = ew_u.parts.msw; \
842 (ix1) = ew_u.parts.lsw; \
849 EXTRACT_WORDS(hx, lx,
x);
853 return (hx == 0x7ff00000) && (lx != 0);
859 } ieee_float_shape_type;
861#define GET_FLOAT_WORD(i,d) \
863 ieee_float_shape_type gf_u; \
871 GET_FLOAT_WORD (wx,
x);
873 return (
Bool_t)(wx > 0x7f800000);
878#if defined(R__FAST_MATH)
893 return std::numeric_limits<Double_t>::quiet_NaN();
899 return std::numeric_limits<Double_t>::signaling_NaN();
905 return std::numeric_limits<Double_t>::infinity();
912 return (std::numeric_limits<T>::min)();
919 return (std::numeric_limits<T>::max)();
943 return *std::min_element(
a,
a+
n);
950 return *std::max_element(
a,
a+
n);
963 if (
n <= 0 || !
a)
return -1;
978template <
typename Iterator>
981 return std::min_element(
first, last);
991 if (
n <= 0 || !
a)
return -1;
1006template <
typename Iterator>
1010 return std::max_element(
first, last);
1015template <
typename Iterator>
1020 while (
first != last )
1034template <
typename Iterator,
typename WeightIterator>
1041 while (
first != last ) {
1043 ::Error(
"TMath::Mean",
"w[%d] = %.4e < 0 ?!",i,*w);
1046 sum += (*w) * (*first);
1053 ::Error(
"TMath::Mean",
"sum of weights == 0 ?!");
1062template <
typename T>
1075template <
typename Iterator>
1080 while (
first != last ) {
1081 if (*
first == 0)
return 0.;
1094template <
typename T>
1108template <
typename Iterator>
1116 while (
first != last ) {
1118 tot += (
x - mean)*(
x - mean);
1132template <
typename Iterator,
typename WeightIterator>
1139 while (
first != last ) {
1142 sumw2 += (*w) * (*w);
1143 tot += (*w) * (
x - mean)*(
x - mean);
1156template <
typename T>
1167 out[0] =
v1[1] *
v2[2] -
v1[2] *
v2[1];
1168 out[1] =
v1[2] *
v2[0] -
v1[0] *
v2[2];
1169 out[2] =
v1[0] *
v2[1] -
v1[1] *
v2[0];
1183 v1[0] = p2[0] - p1[0];
1184 v1[1] = p2[1] - p1[1];
1185 v1[2] = p2[2] - p1[2];
1187 v2[0] = p3[0] - p1[0];
1188 v2[1] = p3[1] - p1[1];
1189 v2[2] = p3[2] - p1[2];
1204 for (i=0; i<np; i++) {
1205 if ((
y[i]<yp &&
y[j]>=yp) || (
y[j]<yp &&
y[i]>=yp)) {
1206 if (
x[i]+(yp-
y[i])/(
y[j]-
y[i])*(
x[j]-
x[i])<xp) {
1207 oddNodes = !oddNodes;
1240 const Int_t kWorkMax = 100;
1242 if (
n <= 0 || !
a)
return 0;
1253 isAllocated =
kTRUE;
1260 for (
Int_t j = 0; j <
n; j++) {
1262 ::Error(
"TMath::Median",
"w[%d] = %.4e < 0 ?!",j,w[j]);
1263 if (isAllocated)
delete [] ind;
1275 for (jl = 0; jl <
n; jl++) {
1277 if (
sum >= sumTot2)
break;
1282 for (jh =
n-1; jh >= 0; jh--) {
1284 if (
sum <= sumTot2)
break;
1287 median = 0.5*(
a[ind[jl]]+
a[ind[jh]]);
1322template <
class Element,
typename Size>
1326 const Int_t kWorkMax = 100;
1331 Size i, ir, j,
l, mid;
1334 Index workLocal[kWorkMax];
1342 isAllocated =
kTRUE;
1347 for (
Size ii=0; ii<
n; ii++) {
1355 if (ir ==
l+1 &&
a[ind[ir]]<
a[ind[
l]])
1356 {temp = ind[
l]; ind[
l]=ind[ir]; ind[ir]=temp;}
1357 Element tmp =
a[ind[rk]];
1363 {temp = ind[mid]; ind[mid]=ind[
l+1]; ind[
l+1]=temp;}
1364 if (
a[ind[
l]]>
a[ind[ir]])
1365 {temp = ind[
l]; ind[
l]=ind[ir]; ind[ir]=temp;}
1367 if (
a[ind[
l+1]]>
a[ind[ir]])
1368 {temp=ind[
l+1]; ind[
l+1]=ind[ir]; ind[ir]=temp;}
1370 if (
a[ind[
l]]>
a[ind[
l+1]])
1371 {temp = ind[
l]; ind[
l]=ind[
l+1]; ind[
l+1]=temp;}
1377 do i++;
while (
a[ind[i]]<
a[arr]);
1378 do j--;
while (
a[ind[j]]>
a[arr]);
1380 {temp=ind[i]; ind[i]=ind[j]; ind[j]=temp;}
1384 if (j>=rk) ir = j-1;
void Error(const char *location, const char *msgfmt,...)
TGLVector3 Cross(const TGLVector3 &v1, const TGLVector3 &v2)
double atan2(double, double)
double pow(double, double)
double ldexp(double, int)
double beta(double x, double y)
Calculates the beta function.
Namespace for new Math classes and functions.
RooCmdArg Index(RooCategory &icat)
static constexpr double s
Double_t FDistI(Double_t F, Double_t N, Double_t M)
Calculates the cumulative distribution function of F-distribution, this function occurs in the statis...
Double_t GeomMean(Long64_t n, const T *a)
Return the geometric mean of an array a of size n.
Double_t LogNormal(Double_t x, Double_t sigma, Double_t theta=0, Double_t m=1)
Computes the density of LogNormal distribution at point x.
constexpr Double_t G()
Gravitational constant in: .
T * Normal2Plane(const T v1[3], const T v2[3], const T v3[3], T normal[3])
Calculate a normal vector of a plane.
Double_t DiLog(Double_t x)
Modified Struve functions of order 1.
Double_t BetaDist(Double_t x, Double_t p, Double_t q)
Computes the probability density function of the Beta distribution (the distribution function is comp...
Double_t BesselI(Int_t n, Double_t x)
Compute the Integer Order Modified Bessel function I_n(x) for n=0,1,2,... and any real x.
Element KOrdStat(Size n, const Element *a, Size k, Size *work=0)
Returns k_th order statistic of the array a of size n (k_th smallest element out of n elements).
Double_t Gaus(Double_t x, Double_t mean=0, Double_t sigma=1, Bool_t norm=kFALSE)
Calculate a gaussian function with mean and sigma.
constexpr Double_t GUncertainty()
Gravitational constant uncertainty.
constexpr Double_t C()
Velocity of light in .
Double_t Factorial(Int_t i)
Compute factorial(n).
Double_t KolmogorovTest(Int_t na, const Double_t *a, Int_t nb, const Double_t *b, Option_t *option)
Statistical test whether two one-dimensional sets of points are compatible with coming from the same ...
constexpr Double_t GhbarCUncertainty()
uncertainty.
Long64_t LocMin(Long64_t n, const T *a)
Return index of array with the minimum element.
constexpr Double_t Ccgs()
constexpr Double_t SigmaUncertainty()
Stefan-Boltzmann constant uncertainty.
Int_t Nint(T x)
Round to nearest integer. Rounds half integers to the nearest even integer.
Double_t BinomialI(Double_t p, Int_t n, Int_t k)
Suppose an event occurs with probability p per trial Then the probability P of its occurring k or mor...
Double_t Vavilov(Double_t x, Double_t kappa, Double_t beta2)
Returns the value of the Vavilov density function.
Double_t Binomial(Int_t n, Int_t k)
Calculate the binomial coefficient n over k.
Float_t Normalize(Float_t v[3])
Normalize a vector v in place.
constexpr Double_t NaUncertainty()
Avogadro constant (Avogadro's Number) uncertainty.
Double_t Prob(Double_t chi2, Int_t ndf)
Computation of the probability for a certain Chi-squared (chi2) and number of degrees of freedom (ndf...
Bool_t IsInside(T xp, T yp, Int_t np, T *x, T *y)
Function which returns kTRUE if point xp,yp lies inside the polygon defined by the np points in array...
Double_t Log2(Double_t x)
Double_t BesselK1(Double_t x)
modified Bessel function I_1(x)
void BubbleHigh(Int_t Narr, Double_t *arr1, Int_t *arr2)
Bubble sort variant to obtain the order of an array's elements into an index in order to do more usef...
Double_t BesselI1(Double_t x)
modified Bessel function K_0(x)
Double_t Erf(Double_t x)
Computation of the error function erf(x).
Bool_t Permute(Int_t n, Int_t *a)
Simple recursive algorithm to find the permutations of n natural numbers, not necessarily all distinc...
Double_t QuietNaN()
Returns a quiet NaN as defined by IEEE 754
Double_t Floor(Double_t x)
Double_t PoissonI(Double_t x, Double_t par)
Compute the Poisson distribution function for (x,par) This is a non-smooth function.
Double_t CauchyDist(Double_t x, Double_t t=0, Double_t s=1)
Computes the density of Cauchy distribution at point x by default, standard Cauchy distribution is us...
Double_t StruveL1(Double_t x)
Modified Struve functions of order 0.
constexpr Double_t Gn()
Standard acceleration of gravity in .
Double_t LaplaceDistI(Double_t x, Double_t alpha=0, Double_t beta=1)
Computes the distribution function of Laplace distribution at point x, with location parameter alpha ...
ULong_t Hash(const void *txt, Int_t ntxt)
Calculates hash index from any char string.
Double_t Normalize(Double_t v[3])
Normalize a vector v in place.
constexpr Double_t QeUncertainty()
Elementary charge uncertainty.
constexpr Double_t K()
Boltzmann's constant in .
Double_t BreitWigner(Double_t x, Double_t mean=0, Double_t gamma=1)
Calculate a Breit Wigner function with mean and gamma.
constexpr Double_t Sqrt2()
constexpr Double_t KUncertainty()
Boltzmann's constant uncertainty.
constexpr Double_t Hbarcgs()
Double_t Landau(Double_t x, Double_t mpv=0, Double_t sigma=1, Bool_t norm=kFALSE)
The LANDAU function.
Double_t Voigt(Double_t x, Double_t sigma, Double_t lg, Int_t r=4)
Computation of Voigt function (normalised).
Double_t Student(Double_t T, Double_t ndf)
Computes density function for Student's t- distribution (the probability function (integral of densit...
constexpr Double_t CUncertainty()
Speed of light uncertainty.
constexpr Double_t Qe()
Elementary charge in .
Double_t Ceil(Double_t x)
constexpr Double_t PiOver2()
constexpr Double_t HCcgs()
T MinElement(Long64_t n, const T *a)
Return minimum of array a of length n.
Double_t BetaDistI(Double_t x, Double_t p, Double_t q)
Computes the distribution function of the Beta distribution.
T NormCross(const T v1[3], const T v2[3], T out[3])
Calculate the Normalized Cross Product of two vectors.
Int_t Finite(Double_t x)
Check if it is finite with a mask in order to be consistent in presence of fast math.
Int_t FloorNint(Double_t x)
Double_t BesselK0(Double_t x)
modified Bessel function I_0(x)
Double_t BesselY0(Double_t x)
Bessel function J1(x) for any real x.
Double_t ATan2(Double_t y, Double_t x)
constexpr Double_t RUncertainty()
Universal gas constant uncertainty.
Double_t BetaCf(Double_t x, Double_t a, Double_t b)
Continued fraction evaluation by modified Lentz's method used in calculation of incomplete Beta funct...
Long64_t LocMax(Long64_t n, const T *a)
Return index of array with the maximum element.
Double_t ErfInverse(Double_t x)
returns the inverse error function x must be <-1<x<1
Double_t LaplaceDist(Double_t x, Double_t alpha=0, Double_t beta=1)
Computes the probability density function of Laplace distribution at point x, with location parameter...
constexpr Double_t E()
Base of natural log:
constexpr Double_t GnUncertainty()
Standard acceleration of gravity uncertainty.
constexpr Double_t Hcgs()
constexpr Double_t HUncertainty()
Planck's constant uncertainty.
constexpr Double_t DegToRad()
Conversion from degree to radian:
Double_t Mean(Long64_t n, const T *a, const Double_t *w=0)
Return the weighted mean of an array a with length n.
Double_t Erfc(Double_t x)
Compute the complementary error function erfc(x).
Double_t VavilovI(Double_t x, Double_t kappa, Double_t beta2)
Returns the value of the Vavilov distribution function.
constexpr Double_t Sigma()
Stefan-Boltzmann constant in .
Double_t Beta(Double_t p, Double_t q)
Calculates Beta-function Gamma(p)*Gamma(q)/Gamma(p+q).
constexpr Double_t Kcgs()
Double_t Poisson(Double_t x, Double_t par)
Compute the Poisson distribution function for (x,par) The Poisson PDF is implemented by means of Eule...
constexpr Double_t H()
Planck's constant in .
Double_t Sqrt(Double_t x)
LongDouble_t Power(LongDouble_t x, LongDouble_t y)
Int_t CeilNint(Double_t x)
Double_t Ldexp(Double_t x, Int_t exp)
Double_t BesselJ0(Double_t x)
modified Bessel function K_1(x)
constexpr Double_t LogE()
Base-10 log of e (to convert ln to log)
Double_t Gamma(Double_t z)
Computation of gamma(z) for all z.
constexpr Double_t MWair()
Molecular weight of dry air 1976 US Standard Atmosphere in or
constexpr Double_t Gcgs()
Double_t StruveL0(Double_t x)
Struve functions of order 1.
Double_t NormQuantile(Double_t p)
Computes quantiles for standard normal distribution N(0, 1) at probability p.
constexpr Double_t Ln10()
Natural log of 10 (to convert log to ln)
Double_t Hypot(Double_t x, Double_t y)
constexpr Double_t EulerGamma()
Euler-Mascheroni Constant.
constexpr Double_t PiOver4()
Double_t StruveH0(Double_t x)
Bessel function Y1(x) for positive x.
constexpr Double_t R()
Universal gas constant ( ) in
Double_t LnGamma(Double_t z)
Computation of ln[gamma(z)] for all z.
Bool_t AreEqualRel(Double_t af, Double_t bf, Double_t relPrec)
Bool_t AreEqualAbs(Double_t af, Double_t bf, Double_t epsilon)
Double_t KolmogorovProb(Double_t z)
Calculates the Kolmogorov distribution function,.
constexpr Double_t InvPi()
Bool_t RootsCubic(const Double_t coef[4], Double_t &a, Double_t &b, Double_t &c)
Calculates roots of polynomial of 3rd order a*x^3 + b*x^2 + c*x + d, where.
Double_t ChisquareQuantile(Double_t p, Double_t ndf)
Evaluate the quantiles of the chi-squared probability distribution function.
Double_t FDist(Double_t F, Double_t N, Double_t M)
Computes the density function of F-distribution (probability function, integral of density,...
Double_t RMS(Long64_t n, const T *a, const Double_t *w=0)
Return the Standard Deviation of an array a with length n.
Double_t SignalingNaN()
Returns a signaling NaN as defined by IEEE 754](http://en.wikipedia.org/wiki/NaN#Signaling_NaN)
void Sort(Index n, const Element *a, Index *index, Bool_t down=kTRUE)
T * Cross(const T v1[3], const T v2[3], T out[3])
Calculate the Cross Product of two vectors: out = [v1 x v2].
void BubbleLow(Int_t Narr, Double_t *arr1, Int_t *arr2)
Opposite ordering of the array arr2[] to that of BubbleHigh.
Double_t BesselK(Int_t n, Double_t x)
integer order modified Bessel function I_n(x)
constexpr Double_t Na()
Avogadro constant (Avogadro's Number) in .
Double_t Median(Long64_t n, const T *a, const Double_t *w=0, Long64_t *work=0)
Return the median of the array a where each entry i has weight w[i] .
T MaxElement(Long64_t n, const T *a)
Return maximum of array a of length n.
Double_t BesselJ1(Double_t x)
Bessel function J0(x) for any real x.
Double_t BetaIncomplete(Double_t x, Double_t a, Double_t b)
Calculates the incomplete Beta-function.
constexpr Double_t Rgair()
Dry Air Gas Constant (R / MWair) in
constexpr Double_t Hbar()
in
Double_t StruveH1(Double_t x)
Struve functions of order 0.
Double_t Freq(Double_t x)
Computation of the normal frequency function freq(x).
Double_t LandauI(Double_t x)
Returns the value of the Landau distribution function at point x.
void Quantiles(Int_t n, Int_t nprob, Double_t *x, Double_t *quantiles, Double_t *prob, Bool_t isSorted=kTRUE, Int_t *index=0, Int_t type=7)
Computes sample quantiles, corresponding to the given probabilities.
constexpr Double_t RadToDeg()
Conversion from radian to degree:
Double_t BesselI0(Double_t x)
integer order modified Bessel function K_n(x)
Double_t Log10(Double_t x)
Double_t StudentI(Double_t T, Double_t ndf)
Calculates the cumulative distribution function of Student's t-distribution second parameter stands f...
Double_t StudentQuantile(Double_t p, Double_t ndf, Bool_t lower_tail=kTRUE)
Computes quantiles of the Student's t-distribution 1st argument is the probability,...
Double_t BesselY1(Double_t x)
Bessel function Y0(x) for positive x.
Double_t StdDev(Long64_t n, const T *a, const Double_t *w=0)
Double_t GammaDist(Double_t x, Double_t gamma, Double_t mu=0, Double_t beta=1)
Computes the density function of Gamma distribution at point x.
constexpr Double_t GhbarC()
in
constexpr Double_t HC()
in
constexpr Double_t TwoPi()
constexpr Double_t HbarUncertainty()
uncertainty.
Double_t Infinity()
Returns an infinity as defined by the IEEE standard.
Double_t ErfcInverse(Double_t x)
returns the inverse of the complementary error function x must be 0<x<2 implement using the quantile ...
static T Min()
Returns maximum representation for type T.
static T Epsilon()
Returns minimum double representation.
static T Max()
Returns minimum double representation.
static long int sum(long int i)