|
|
9a99763 |
diff -ur root-6.06.02.orig/graf2d/graf/src/TLatex.cxx root-6.06.02/graf2d/graf/src/TLatex.cxx
|
|
|
9a99763 |
--- root-6.06.02.orig/graf2d/graf/src/TLatex.cxx 2016-03-03 10:36:03.000000000 +0100
|
|
|
9a99763 |
+++ root-6.06.02/graf2d/graf/src/TLatex.cxx 2016-03-20 18:30:30.836024753 +0100
|
|
|
9a99763 |
@@ -185,14 +185,19 @@
|
|
|
9a99763 |
## Accents
|
|
|
9a99763 |
Several kind of accents are available:
|
|
|
9a99763 |
|
|
|
9a99763 |
- #hat = Begin_Latex #hat{a} End_Latex
|
|
|
9a99763 |
- #check = Begin_Latex #check{a} End_Latex
|
|
|
9a99763 |
- #acute = Begin_Latex #acute{a} End_Latex
|
|
|
9a99763 |
- #grave = Begin_Latex #grave{a} End_Latex
|
|
|
9a99763 |
- #dot = Begin_Latex #dot{a} End_Latex
|
|
|
9a99763 |
- #ddot = Begin_Latex #ddot{a} End_Latex
|
|
|
9a99763 |
- #tilde = Begin_Latex #tilde{a} End_Latex
|
|
|
9a99763 |
-
|
|
|
9a99763 |
+Begin_Macro(source)
|
|
|
9a99763 |
+{
|
|
|
9a99763 |
+ TCanvas *cl = new TCanvas("cl","cl",10,10,700,350);
|
|
|
9a99763 |
+ TLatex Tl; Tl.SetTextFont(43); Tl.SetTextSize(20);
|
|
|
9a99763 |
+ Tl.DrawText(.1, .8, "#hat{a} :"); Tl.DrawLatex(.5, .8, "#hat{a}");
|
|
|
9a99763 |
+ Tl.DrawText(.1, .7, "#check{a} :"); Tl.DrawLatex(.5, .7, "#check{a}");
|
|
|
9a99763 |
+ Tl.DrawText(.1, .6, "#acure{a} :"); Tl.DrawLatex(.5, .6, "#acute{a}");
|
|
|
9a99763 |
+ Tl.DrawText(.1, .5, "#grave{a} :"); Tl.DrawLatex(.5, .5, "#grave{a}");
|
|
|
9a99763 |
+ Tl.DrawText(.1, .4, "#dot{a} :"); Tl.DrawLatex(.5, .4, "#dot{a}");
|
|
|
9a99763 |
+ Tl.DrawText(.1, .3, "#ddot{a} :"); Tl.DrawLatex(.5, .3, "#ddot{a}");
|
|
|
9a99763 |
+ Tl.DrawText(.1, .2, "#tilde{a} :"); Tl.DrawLatex(.5, .2, "#tilde{a}");
|
|
|
9a99763 |
+}
|
|
|
9a99763 |
+End_Macro
|
|
|
9a99763 |
|
|
|
9a99763 |
The special sign: `#slash` draws a slash on top of the text between brackets:
|
|
|
9a99763 |
|
|
|
9a99763 |
diff -ur root-6.06.02.orig/hist/hist/src/TF1.cxx root-6.06.02/hist/hist/src/TF1.cxx
|
|
|
9a99763 |
--- root-6.06.02.orig/hist/hist/src/TF1.cxx 2016-03-03 10:36:03.000000000 +0100
|
|
|
9a99763 |
+++ root-6.06.02/hist/hist/src/TF1.cxx 2016-03-20 18:30:30.871025101 +0100
|
|
|
9a99763 |
@@ -949,9 +949,9 @@
|
|
|
9a99763 |
/// Getting the error via TF1::DerivativeError:
|
|
|
9a99763 |
/// (total error = roundoff error + interpolation error)
|
|
|
9a99763 |
/// the estimate of the roundoff error is taken as follows:
|
|
|
9a99763 |
-///Begin_Latex
|
|
|
9a99763 |
-/// err = k#sqrt{f(x)^{2} + x^{2}deriv^{2}}#sqrt{#sum ai^{2}},
|
|
|
9a99763 |
-///End_Latex
|
|
|
9a99763 |
+/// \f[
|
|
|
9a99763 |
+/// err = k\sqrt{f(x)^{2} + x^{2}deriv^{2}}\sqrt{\sum ai^{2}},
|
|
|
9a99763 |
+/// \f]
|
|
|
9a99763 |
/// where k is the double precision, ai are coefficients used in
|
|
|
9a99763 |
/// central difference formulas
|
|
|
9a99763 |
/// interpolation error is decreased by making the step size h smaller.
|
|
|
9a99763 |
diff -ur root-6.06.02.orig/hist/hist/src/TGraphAsymmErrors.cxx root-6.06.02/hist/hist/src/TGraphAsymmErrors.cxx
|
|
|
9a99763 |
--- root-6.06.02.orig/hist/hist/src/TGraphAsymmErrors.cxx 2016-03-03 10:36:03.000000000 +0100
|
|
|
9a99763 |
+++ root-6.06.02/hist/hist/src/TGraphAsymmErrors.cxx 2016-03-20 18:30:30.872025110 +0100
|
|
|
9a99763 |
@@ -360,27 +360,33 @@
|
|
|
9a99763 |
///
|
|
|
9a99763 |
/// If the histograms are not filled with unit weights, the number of effective
|
|
|
9a99763 |
/// entries is used to normalise the bin contents which might lead to wrong results.
|
|
|
9a99763 |
-/// Begin_Latex effective entries = #frac{(#sum w_{i})^{2}}{#sum w_{i}^{2}}End_Latex
|
|
|
9a99763 |
-///
|
|
|
9a99763 |
+/// \f[
|
|
|
9a99763 |
+/// \text{effective entries} = \frac{(\sum w_{i})^{2}}{\sum w_{i}^{2}}
|
|
|
9a99763 |
+/// \f]
|
|
|
9a99763 |
/// The points are assigned a x value at the center of each histogram bin.
|
|
|
9a99763 |
-/// The y values are Begin_Latex eff = #frac{pass}{total} End_Latex for all options except for the
|
|
|
9a99763 |
+/// The y values are \f$\text{eff} = \frac{\text{pass}}{\text{total}}\f$
|
|
|
9a99763 |
+/// for all options except for the
|
|
|
9a99763 |
/// bayesian methods where the result depends on the chosen option.
|
|
|
9a99763 |
///
|
|
|
9a99763 |
-/// If the denominator becomes 0 or pass > total, the corresponding bin is
|
|
|
9a99763 |
+/// If the denominator becomes 0 or pass > total, the corresponding bin is
|
|
|
9a99763 |
/// skipped.
|
|
|
9a99763 |
///
|
|
|
9a99763 |
/// 2) calculating ratios of two Poisson means (option 'pois'):
|
|
|
9a99763 |
/// --------------------------------------------------------------
|
|
|
9a99763 |
///
|
|
|
9a99763 |
/// The two histograms are interpreted as independent Poisson processes and the ratio
|
|
|
9a99763 |
-/// Begin_Latex #tau = #frac{n_{1}}{n_{2}} = #frac{#varepsilon}{1 - #varepsilon} with #varepsilon = #frac{n_{1}}{n_{1} + n_{2}} End_Latex
|
|
|
9a99763 |
-/// The histogram 'pass' is interpreted as n_{1} and the total histogram
|
|
|
9a99763 |
-/// is used for n_{2}
|
|
|
9a99763 |
+/// \f[
|
|
|
9a99763 |
+/// \tau = \frac{n_{1}}{n_{2}} = \frac{\varepsilon}{1 - \varepsilon}
|
|
|
9a99763 |
+/// \f]
|
|
|
9a99763 |
+/// with \f$\varepsilon = \frac{n_{1}}{n_{1} + n_{2}}\f$.
|
|
|
9a99763 |
+/// The histogram 'pass' is interpreted as \f$n_{1}\f$ and the total histogram
|
|
|
9a99763 |
+/// is used for \f$n_{2}\f$.
|
|
|
9a99763 |
///
|
|
|
9a99763 |
/// The (asymmetric) uncertainties of the Poisson ratio are linked to the uncertainties
|
|
|
9a99763 |
/// of efficiency by a parameter transformation:
|
|
|
9a99763 |
-/// Begin_Latex #Delta #tau_{low/up} = #frac{1}{(1 - #varepsilon)^{2}} #Delta #varepsilon_{low/up} End_Latex
|
|
|
9a99763 |
-///
|
|
|
9a99763 |
+/// \f[
|
|
|
9a99763 |
+/// \Delta \tau_{low/up} = \frac{1}{(1 - \varepsilon)^{2}} \Delta \varepsilon_{low/up}
|
|
|
9a99763 |
+/// \f]
|
|
|
9a99763 |
/// The x errors span each histogram bin (lowedge ... lowedge+width)
|
|
|
9a99763 |
/// The y errors depend on the chosen statistic methode which can be determined
|
|
|
9a99763 |
/// by the options given below. For a detailed description of the used statistic
|
|
|
9a99763 |
@@ -413,8 +419,7 @@
|
|
|
9a99763 |
/// oscillation on the actual coverage probability a couple of approximations and
|
|
|
9a99763 |
/// methodes has been developped. For a detailed discussion, please have a look at
|
|
|
9a99763 |
/// this statistical paper:
|
|
|
9a99763 |
-///
|
|
|
9a99763 |
-/// > http://www-stat.wharton.upenn.edu/~tcai/paper/Binomial-StatSci.pdf
|
|
|
9a99763 |
+/// http://www-stat.wharton.upenn.edu/~tcai/paper/Binomial-StatSci.pdf
|
|
|
9a99763 |
|
|
|
9a99763 |
void TGraphAsymmErrors::Divide(const TH1* pass, const TH1* total, Option_t *opt)
|
|
|
9a99763 |
{
|
|
|
9a99763 |
diff -ur root-6.06.02.orig/hist/hist/src/THnSparse.cxx root-6.06.02/hist/hist/src/THnSparse.cxx
|
|
|
9a99763 |
--- root-6.06.02.orig/hist/hist/src/THnSparse.cxx 2016-03-03 10:36:03.000000000 +0100
|
|
|
9a99763 |
+++ root-6.06.02/hist/hist/src/THnSparse.cxx 2016-03-20 18:30:30.872025110 +0100
|
|
|
9a99763 |
@@ -764,8 +764,7 @@
|
|
|
9a99763 |
|
|
|
9a99763 |
////////////////////////////////////////////////////////////////////////////////
|
|
|
9a99763 |
/// Get square of the error of bin addressed by linidx as
|
|
|
9a99763 |
-/// BEGIN_LATEX #sum weight^{2}
|
|
|
9a99763 |
-/// END_LATEX
|
|
|
9a99763 |
+/// \f$\sum weight^{2}\f$
|
|
|
9a99763 |
/// If errors are not enabled (via Sumw2() or CalculateErrors())
|
|
|
9a99763 |
/// return contents.
|
|
|
9a99763 |
|
|
|
9a99763 |
diff -ur root-6.06.02.orig/math/mathcore/inc/Math/GaussIntegrator.h root-6.06.02/math/mathcore/inc/Math/GaussIntegrator.h
|
|
|
9a99763 |
--- root-6.06.02.orig/math/mathcore/inc/Math/GaussIntegrator.h 2016-03-03 10:36:03.000000000 +0100
|
|
|
9a99763 |
+++ root-6.06.02/math/mathcore/inc/Math/GaussIntegrator.h 2016-03-20 18:30:30.910025487 +0100
|
|
|
9a99763 |
@@ -92,31 +92,28 @@
|
|
|
9a99763 |
Method:
|
|
|
9a99763 |
For any interval [a,b] we define g8(a,b) and g16(a,b) to be the 8-point
|
|
|
9a99763 |
and 16-point Gaussian quadrature approximations to
|
|
|
9a99763 |
- Begin_Latex
|
|
|
9a99763 |
- I = #int^{b}_{a} f(x)dx
|
|
|
9a99763 |
- End_Latex
|
|
|
9a99763 |
+ \f[
|
|
|
9a99763 |
+ I = \int^{b}_{a} f(x)dx
|
|
|
9a99763 |
+ \f]
|
|
|
9a99763 |
and define
|
|
|
9a99763 |
- Begin_Latex
|
|
|
9a99763 |
- r(a,b) = #frac{#||{g_{16}(a,b)-g_{8}(a,b)}}{1+#||{g_{16}(a,b)}}
|
|
|
9a99763 |
- End_Latex
|
|
|
9a99763 |
+ \f[
|
|
|
9a99763 |
+ r(a,b) = \frac{\left|g_{16}(a,b)-g_{8}(a,b)\right|}{1+\left|g_{16}(a,b)\right|}
|
|
|
9a99763 |
+ \f]
|
|
|
9a99763 |
Then,
|
|
|
9a99763 |
- Begin_Latex
|
|
|
9a99763 |
- G = #sum_{i=1}^{k}g_{16}(x_{i-1},x_{i})
|
|
|
9a99763 |
- End_Latex
|
|
|
9a99763 |
- where, starting with x0 = A and finishing with xk = B,
|
|
|
9a99763 |
- the subdivision points xi(i=1,2,...) are given by
|
|
|
9a99763 |
- Begin_Latex
|
|
|
9a99763 |
- x_{i} = x_{i-1} + #lambda(B-x_{i-1})
|
|
|
9a99763 |
- End_Latex
|
|
|
9a99763 |
- Begin_Latex
|
|
|
9a99763 |
- #lambda
|
|
|
9a99763 |
- End_Latex
|
|
|
9a99763 |
- is equal to the first member of the
|
|
|
9a99763 |
- sequence 1,1/2,1/4,... for which r(xi-1, xi) < EPS.
|
|
|
9a99763 |
+ \f[
|
|
|
9a99763 |
+ G = \sum_{i=1}^{k}g_{16}(x_{i-1},x_{i})
|
|
|
9a99763 |
+ \f]
|
|
|
9a99763 |
+ where, starting with \f$x_{0} = A\f$ and finishing with \f$x_{k} = B\f$,
|
|
|
9a99763 |
+ the subdivision points \f$x_{i}(i=1,2,...)\f$ are given by
|
|
|
9a99763 |
+ \f[
|
|
|
9a99763 |
+ x_{i} = x_{i-1} + \lambda(B-x_{i-1})
|
|
|
9a99763 |
+ \f]
|
|
|
9a99763 |
+ \f$\lambda\f$ is equal to the first member of the
|
|
|
9a99763 |
+ sequence 1,1/2,1/4,... for which \f$r(x_{i-1}, x_{i}) < EPS\f$.
|
|
|
9a99763 |
If, at any stage in the process of subdivision, the ratio
|
|
|
9a99763 |
- Begin_Latex
|
|
|
9a99763 |
- q = #||{#frac{x_{i}-x_{i-1}}{B-A}}
|
|
|
9a99763 |
- End_Latex
|
|
|
9a99763 |
+ \f[
|
|
|
9a99763 |
+ q = \left|\frac{x_{i}-x_{i-1}}{B-A}\right|
|
|
|
9a99763 |
+ \f]
|
|
|
9a99763 |
is so small that 1+0.005q is indistinguishable from 1 to
|
|
|
9a99763 |
machine accuracy, an error exit occurs with the function value
|
|
|
9a99763 |
set equal to zero.
|
|
|
9a99763 |
@@ -131,13 +128,13 @@
|
|
|
9a99763 |
|I|>1, and a bound on the absolute error in the case |I|<1. More
|
|
|
9a99763 |
precisely, if k is the number of sub-intervals contributing to the
|
|
|
9a99763 |
approximation (see Method), and if
|
|
|
9a99763 |
- Begin_Latex
|
|
|
9a99763 |
- I_{abs} = #int^{B}_{A} #||{f(x)}dx
|
|
|
9a99763 |
- End_Latex
|
|
|
9a99763 |
+ \f[
|
|
|
9a99763 |
+ I_{abs} = \int^{B}_{A} \left|f(x)\right|dx
|
|
|
9a99763 |
+ \f]
|
|
|
9a99763 |
then the relation
|
|
|
9a99763 |
- Begin_Latex
|
|
|
9a99763 |
- #frac{#||{G-I}}{I_{abs}+k} < EPS
|
|
|
9a99763 |
- End_Latex
|
|
|
9a99763 |
+ \f[
|
|
|
9a99763 |
+ \frac{\left|G-I\right|}{I_{abs}+k} < EPS
|
|
|
9a99763 |
+ \f]
|
|
|
9a99763 |
will nearly always be true, provided the routine terminates without
|
|
|
9a99763 |
printing an error message. For functions f having no singularities in
|
|
|
9a99763 |
the closed interval [A,B] the accuracy will usually be much higher than
|
|
|
9a99763 |
@@ -156,9 +153,9 @@
|
|
|
9a99763 |
|
|
|
9a99763 |
/** Returns Integral of function on an infinite interval.
|
|
|
9a99763 |
This function computes, to an attempted specified accuracy, the value of the integral:
|
|
|
9a99763 |
- Begin_Latex
|
|
|
9a99763 |
- I = #int^{#infinity}_{-#infinity} f(x)dx
|
|
|
9a99763 |
- End_Latex
|
|
|
9a99763 |
+ \f[
|
|
|
9a99763 |
+ I = \int^{\infty}_{-\infty} f(x)dx
|
|
|
9a99763 |
+ \f]
|
|
|
9a99763 |
Usage:
|
|
|
9a99763 |
In any arithmetic expression, this function has the approximate value
|
|
|
9a99763 |
of the integral I.
|
|
|
9a99763 |
@@ -169,9 +166,9 @@
|
|
|
9a99763 |
|
|
|
9a99763 |
/** Returns Integral of function on an upper semi-infinite interval.
|
|
|
9a99763 |
This function computes, to an attempted specified accuracy, the value of the integral:
|
|
|
9a99763 |
- Begin_Latex
|
|
|
9a99763 |
- I = #int^{#infinity}_{A} f(x)dx
|
|
|
9a99763 |
- End_Latex
|
|
|
9a99763 |
+ \f[
|
|
|
9a99763 |
+ I = \int^{\infty}_{A} f(x)dx
|
|
|
9a99763 |
+ \f]
|
|
|
9a99763 |
Usage:
|
|
|
9a99763 |
In any arithmetic expression, this function has the approximate value
|
|
|
9a99763 |
of the integral I.
|
|
|
9a99763 |
@@ -183,9 +180,9 @@
|
|
|
9a99763 |
|
|
|
9a99763 |
/** Returns Integral of function on a lower semi-infinite interval.
|
|
|
9a99763 |
This function computes, to an attempted specified accuracy, the value of the integral:
|
|
|
9a99763 |
- Begin_Latex
|
|
|
9a99763 |
- I = #int^{B}_{#infinity} f(x)dx
|
|
|
9a99763 |
- End_Latex
|
|
|
9a99763 |
+ \f[
|
|
|
9a99763 |
+ I = \int^{B}_{-\infty} f(x)dx
|
|
|
9a99763 |
+ \f]
|
|
|
9a99763 |
Usage:
|
|
|
9a99763 |
In any arithmetic expression, this function has the approximate value
|
|
|
9a99763 |
of the integral I.
|
|
|
9a99763 |
diff -ur root-6.06.02.orig/math/mathcore/inc/Math/RichardsonDerivator.h root-6.06.02/math/mathcore/inc/Math/RichardsonDerivator.h
|
|
|
9a99763 |
--- root-6.06.02.orig/math/mathcore/inc/Math/RichardsonDerivator.h 2016-03-03 10:36:03.000000000 +0100
|
|
|
9a99763 |
+++ root-6.06.02/math/mathcore/inc/Math/RichardsonDerivator.h 2016-03-20 18:30:30.910025487 +0100
|
|
|
9a99763 |
@@ -88,10 +88,13 @@
|
|
|
9a99763 |
computed by Richardson's extrapolation method (use 2 derivative estimates
|
|
|
9a99763 |
to compute a third, more accurate estimation)
|
|
|
9a99763 |
first, derivatives with steps h and h/2 are computed by central difference formulas
|
|
|
9a99763 |
- Begin_Latex
|
|
|
9a99763 |
- D(h) = #frac{f(x+h) - f(x-h)}{2h}
|
|
|
9a99763 |
- End_Latex
|
|
|
9a99763 |
- the final estimate Begin_Latex D = #frac{4D(h/2) - D(h)}{3} End_Latex
|
|
|
9a99763 |
+ \f[
|
|
|
9a99763 |
+ D(h) = \frac{f(x+h) - f(x-h)}{2h}
|
|
|
9a99763 |
+ \f]
|
|
|
9a99763 |
+ the final estimate
|
|
|
9a99763 |
+ \f[
|
|
|
9a99763 |
+ D = \frac{4D(h/2) - D(h)}{3}
|
|
|
9a99763 |
+ \f]
|
|
|
9a99763 |
"Numerical Methods for Scientists and Engineers", H.M.Antia, 2nd edition"
|
|
|
9a99763 |
|
|
|
9a99763 |
the argument eps may be specified to control the step size (precision).
|
|
|
9a99763 |
@@ -103,9 +106,9 @@
|
|
|
9a99763 |
Getting the error via TF1::DerivativeError:
|
|
|
9a99763 |
(total error = roundoff error + interpolation error)
|
|
|
9a99763 |
the estimate of the roundoff error is taken as follows:
|
|
|
9a99763 |
- Begin_Latex
|
|
|
9a99763 |
- err = k#sqrt{f(x)^{2} + x^{2}deriv^{2}}#sqrt{#sum ai^{2}},
|
|
|
9a99763 |
- End_Latex
|
|
|
9a99763 |
+ \f[
|
|
|
9a99763 |
+ err = k\sqrt{f(x)^{2} + x^{2}deriv^{2}}\sqrt{\sum ai^{2}},
|
|
|
9a99763 |
+ \f]
|
|
|
9a99763 |
where k is the double precision, ai are coefficients used in
|
|
|
9a99763 |
central difference formulas
|
|
|
9a99763 |
interpolation error is decreased by making the step size h smaller.
|
|
|
9a99763 |
@@ -141,10 +144,13 @@
|
|
|
9a99763 |
computed by Richardson's extrapolation method (use 2 derivative estimates
|
|
|
9a99763 |
to compute a third, more accurate estimation)
|
|
|
9a99763 |
first, derivatives with steps h and h/2 are computed by central difference formulas
|
|
|
9a99763 |
- Begin_Latex
|
|
|
9a99763 |
- D(h) = #frac{f(x+h) - 2f(x) + f(x-h)}{h^{2}}
|
|
|
9a99763 |
- End_Latex
|
|
|
9a99763 |
- the final estimate Begin_Latex D = #frac{4D(h/2) - D(h)}{3} End_Latex
|
|
|
9a99763 |
+ \f[
|
|
|
9a99763 |
+ D(h) = \frac{f(x+h) - 2f(x) + f(x-h)}{h^{2}}
|
|
|
9a99763 |
+ \f]
|
|
|
9a99763 |
+ the final estimate
|
|
|
9a99763 |
+ \f[
|
|
|
9a99763 |
+ D = \frac{4D(h/2) - D(h)}{3}
|
|
|
9a99763 |
+ \f]
|
|
|
9a99763 |
"Numerical Methods for Scientists and Engineers", H.M.Antia, 2nd edition"
|
|
|
9a99763 |
|
|
|
9a99763 |
the argument eps may be specified to control the step size (precision).
|
|
|
9a99763 |
@@ -156,9 +162,9 @@
|
|
|
9a99763 |
Getting the error via TF1::DerivativeError:
|
|
|
9a99763 |
(total error = roundoff error + interpolation error)
|
|
|
9a99763 |
the estimate of the roundoff error is taken as follows:
|
|
|
9a99763 |
- Begin_Latex
|
|
|
9a99763 |
- err = k#sqrt{f(x)^{2} + x^{2}deriv^{2}}#sqrt{#sum ai^{2}},
|
|
|
9a99763 |
- End_Latex
|
|
|
9a99763 |
+ \f[
|
|
|
9a99763 |
+ err = k\sqrt{f(x)^{2} + x^{2}deriv^{2}}\sqrt{\sum ai^{2}},
|
|
|
9a99763 |
+ \f]
|
|
|
9a99763 |
where k is the double precision, ai are coefficients used in
|
|
|
9a99763 |
central difference formulas
|
|
|
9a99763 |
interpolation error is decreased by making the step size h smaller.
|
|
|
9a99763 |
@@ -177,10 +183,13 @@
|
|
|
9a99763 |
computed by Richardson's extrapolation method (use 2 derivative estimates
|
|
|
9a99763 |
to compute a third, more accurate estimation)
|
|
|
9a99763 |
first, derivatives with steps h and h/2 are computed by central difference formulas
|
|
|
9a99763 |
- Begin_Latex
|
|
|
9a99763 |
- D(h) = #frac{f(x+2h) - 2f(x+h) + 2f(x-h) - f(x-2h)}{2h^{3}}
|
|
|
9a99763 |
- End_Latex
|
|
|
9a99763 |
- the final estimate Begin_Latex D = #frac{4D(h/2) - D(h)}{3} End_Latex
|
|
|
9a99763 |
+ \f[
|
|
|
9a99763 |
+ D(h) = \frac{f(x+2h) - 2f(x+h) + 2f(x-h) - f(x-2h)}{2h^{3}}
|
|
|
9a99763 |
+ \f]
|
|
|
9a99763 |
+ the final estimate
|
|
|
9a99763 |
+ \f[
|
|
|
9a99763 |
+ D = \frac{4D(h/2) - D(h)}{3}
|
|
|
9a99763 |
+ \f]
|
|
|
9a99763 |
"Numerical Methods for Scientists and Engineers", H.M.Antia, 2nd edition"
|
|
|
9a99763 |
|
|
|
9a99763 |
the argument eps may be specified to control the step size (precision).
|
|
|
9a99763 |
@@ -192,9 +201,9 @@
|
|
|
9a99763 |
Getting the error via TF1::DerivativeError:
|
|
|
9a99763 |
(total error = roundoff error + interpolation error)
|
|
|
9a99763 |
the estimate of the roundoff error is taken as follows:
|
|
|
9a99763 |
- Begin_Latex
|
|
|
9a99763 |
- err = k#sqrt{f(x)^{2} + x^{2}deriv^{2}}#sqrt{#sum ai^{2}},
|
|
|
9a99763 |
- End_Latex
|
|
|
9a99763 |
+ \f[
|
|
|
9a99763 |
+ err = k\sqrt{f(x)^{2} + x^{2}deriv^{2}}\sqrt{\sum ai^{2}},
|
|
|
9a99763 |
+ \f]
|
|
|
9a99763 |
where k is the double precision, ai are coefficients used in
|
|
|
9a99763 |
central difference formulas
|
|
|
9a99763 |
interpolation error is decreased by making the step size h smaller.
|
|
|
9a99763 |
diff -ur root-6.06.02.orig/math/mathmore/src/KelvinFunctions.cxx root-6.06.02/math/mathmore/src/KelvinFunctions.cxx
|
|
|
9a99763 |
--- root-6.06.02.orig/math/mathmore/src/KelvinFunctions.cxx 2016-03-03 10:36:03.000000000 +0100
|
|
|
9a99763 |
+++ root-6.06.02/math/mathmore/src/KelvinFunctions.cxx 2016-03-20 18:30:30.911025497 +0100
|
|
|
9a99763 |
@@ -34,35 +34,33 @@
|
|
|
9a99763 |
double kEulerGamma = 0.577215664901532860606512090082402431042;
|
|
|
9a99763 |
|
|
|
9a99763 |
|
|
|
9a99763 |
-/* Begin_Html
|
|
|
9a99763 |
-<center>KelvinFunctions</center>
|
|
|
9a99763 |
+/**
|
|
|
9a99763 |
+\class KelvinFunctions
|
|
|
9a99763 |
|
|
|
9a99763 |
-
|
|
|
9a99763 |
This class calculates the Kelvin functions Ber(x), Bei(x), Ker(x),
|
|
|
9a99763 |
Kei(x), and their first derivatives.
|
|
|
9a99763 |
-
|
|
|
9a99763 |
-
|
|
|
9a99763 |
-End_Html */
|
|
|
9a99763 |
+*/
|
|
|
9a99763 |
|
|
|
9a99763 |
////////////////////////////////////////////////////////////////////////////////
|
|
|
9a99763 |
-/// Begin_Latex
|
|
|
9a99763 |
-/// Ber(x) = Ber_{0}(x) = Re#left[J_{0}#left(x e^{3#pii/4}#right)#right]
|
|
|
9a99763 |
-/// End_Latex
|
|
|
9a99763 |
-/// where x is real, and Begin_Latex J_{0}(z) End_Latex is the zeroth-order Bessel
|
|
|
9a99763 |
+/// \f[
|
|
|
9a99763 |
+/// Ber(x) = Ber_{0}(x) = Re\left[J_{0}\left(x e^{3\pi i/4}\right)\right]
|
|
|
9a99763 |
+/// \f]
|
|
|
9a99763 |
+/// where x is real, and \f$J_{0}(z)\f$ is the zeroth-order Bessel
|
|
|
9a99763 |
/// function of the first kind.
|
|
|
9a99763 |
///
|
|
|
9a99763 |
/// If x < fgMin (=20), Ber(x) is computed according to its polynomial
|
|
|
9a99763 |
/// approximation
|
|
|
9a99763 |
-/// Begin_Latex
|
|
|
9a99763 |
-/// Ber(x) = 1 + #sum_{n #geq 1}#frac{(-1)^{n}(x/2)^{4n}}{[(2n)!]^{2}}
|
|
|
9a99763 |
-/// End_Latex
|
|
|
9a99763 |
+/// \f[
|
|
|
9a99763 |
+/// Ber(x) = 1 + \sum_{n \geq 1}\frac{(-1)^{n}(x/2)^{4n}}{[(2n)!]^{2}}
|
|
|
9a99763 |
+/// \f]
|
|
|
9a99763 |
/// For x > fgMin, Ber(x) is computed according to its asymptotic
|
|
|
9a99763 |
/// expansion:
|
|
|
9a99763 |
-/// Begin_Latex
|
|
|
9a99763 |
-/// Ber(x) = #frac{e^{x/#sqrt{2}}}{#sqrt{2#pix}} [F1(x) cos#alpha + G1(x) sin#alpha] - #frac{1}{#pi}Kei(x)
|
|
|
9a99763 |
-/// End_Latex
|
|
|
9a99763 |
-/// where Begin_Latex #alpha = #frac{x}{#sqrt{2}} - #frac{#pi}{8} End_Latex.
|
|
|
9a99763 |
-/// See also F1(x) and G1(x).
|
|
|
9a99763 |
+/// \f[
|
|
|
9a99763 |
+/// Ber(x) = \frac{e^{x/\sqrt{2}}}{\sqrt{2\pi x}} [F1(x) cos\alpha + G1(x) sin\alpha] - \frac{1}{\pi}Kei(x)
|
|
|
9a99763 |
+/// \f]
|
|
|
9a99763 |
+/// where \f$\alpha = \frac{x}{\sqrt{2}} - \frac{\pi}{8}\f$.
|
|
|
9a99763 |
+///
|
|
|
9a99763 |
+/// See also F1() and G1().
|
|
|
9a99763 |
///
|
|
|
9a99763 |
/// Begin_Macro
|
|
|
9a99763 |
/// {
|
|
|
9a99763 |
@@ -102,24 +100,25 @@
|
|
|
9a99763 |
}
|
|
|
9a99763 |
|
|
|
9a99763 |
////////////////////////////////////////////////////////////////////////////////
|
|
|
9a99763 |
-/// Begin_Latex
|
|
|
9a99763 |
-/// Bei(x) = Bei_{0}(x) = Im#left[J_{0}#left(x e^{3#pii/4}#right)#right]
|
|
|
9a99763 |
-/// End_Latex
|
|
|
9a99763 |
-/// where x is real, and Begin_Latex J_{0}(z) End_Latex is the zeroth-order Bessel
|
|
|
9a99763 |
+/// \f[
|
|
|
9a99763 |
+/// Bei(x) = Bei_{0}(x) = Im\left[J_{0}\left(x e^{3\pi i/4}\right)\right]
|
|
|
9a99763 |
+/// \f]
|
|
|
9a99763 |
+/// where x is real, and \f$J_{0}(z)\f$ is the zeroth-order Bessel
|
|
|
9a99763 |
/// function of the first kind.
|
|
|
9a99763 |
///
|
|
|
9a99763 |
/// If x < fgMin (=20), Bei(x) is computed according to its polynomial
|
|
|
9a99763 |
/// approximation
|
|
|
9a99763 |
-/// Begin_Latex
|
|
|
9a99763 |
-/// Bei(x) = #sum_{n #geq 0}#frac{(-1)^{n}(x/2)^{4n+2}}{[(2n+1)!]^{2}}
|
|
|
9a99763 |
-/// End_Latex
|
|
|
9a99763 |
+/// \f[
|
|
|
9a99763 |
+/// Bei(x) = \sum_{n \geq 0}\frac{(-1)^{n}(x/2)^{4n+2}}{[(2n+1)!]^{2}}
|
|
|
9a99763 |
+/// \f]
|
|
|
9a99763 |
/// For x > fgMin, Bei(x) is computed according to its asymptotic
|
|
|
9a99763 |
/// expansion:
|
|
|
9a99763 |
-/// Begin_Latex
|
|
|
9a99763 |
-/// Bei(x) = #frac{e^{x/#sqrt{2}}}{#sqrt{2#pix}} [F1(x) sin#alpha + G1(x) cos#alpha] - #frac{1}{#pi}Ker(x)
|
|
|
9a99763 |
-/// End_Latex
|
|
|
9a99763 |
-/// where Begin_Latex #alpha = #frac{x}{#sqrt{2}} - #frac{#pi}{8} End_Latex
|
|
|
9a99763 |
-/// See also F1(x) and G1(x).
|
|
|
9a99763 |
+/// \f[
|
|
|
9a99763 |
+/// Bei(x) = \frac{e^{x/\sqrt{2}}}{\sqrt{2\pi x}} [F1(x) sin\alpha + G1(x) cos\alpha] - \frac{1}{\pi}Ker(x)
|
|
|
9a99763 |
+/// \f]
|
|
|
9a99763 |
+/// where \f$\alpha = \frac{x}{\sqrt{2}} - \frac{\pi}{8}\f$.
|
|
|
9a99763 |
+///
|
|
|
9a99763 |
+/// See also F1() and G1().
|
|
|
9a99763 |
///
|
|
|
9a99763 |
/// Begin_Macro
|
|
|
9a99763 |
/// {
|
|
|
9a99763 |
@@ -161,29 +160,30 @@
|
|
|
9a99763 |
|
|
|
9a99763 |
|
|
|
9a99763 |
////////////////////////////////////////////////////////////////////////////////
|
|
|
9a99763 |
-/// Begin_Latex
|
|
|
9a99763 |
-/// Ker(x) = Ker_{0}(x) = Re#left[K_{0}#left(x e^{3#pii/4}#right)#right]
|
|
|
9a99763 |
-/// End_Latex
|
|
|
9a99763 |
-/// where x is real, and Begin_Latex K_{0}(z) End_Latex is the zeroth-order modified
|
|
|
9a99763 |
+/// \f[
|
|
|
9a99763 |
+/// Ker(x) = Ker_{0}(x) = Re\left[K_{0}\left(x e^{3\pi i/4}\right)\right]
|
|
|
9a99763 |
+/// \f]
|
|
|
9a99763 |
+/// where x is real, and \f$K_{0}(z)\f$ is the zeroth-order modified
|
|
|
9a99763 |
/// Bessel function of the second kind.
|
|
|
9a99763 |
///
|
|
|
9a99763 |
/// If x < fgMin (=20), Ker(x) is computed according to its polynomial
|
|
|
9a99763 |
/// approximation
|
|
|
9a99763 |
-/// Begin_Latex
|
|
|
9a99763 |
-/// Ker(x) = -#left(ln #frac{|x|}{2} + #gamma#right) Ber(x) + #left(#frac{#pi}{4} - #delta#right) Bei(x) + #sum_{n #geq 0} #frac{(-1)^{n}}{[(2n)!]^{2}} H_{2n} #left(#frac{x}{2}#right)^{4n}
|
|
|
9a99763 |
-/// End_Latex
|
|
|
9a99763 |
-/// where Begin_Latex #gamma = 0.577215664... End_Latex is the Euler-Mascheroni constant,
|
|
|
9a99763 |
-/// Begin_Latex #delta = #pi End_Latex for x < 0 and is otherwise zero, and
|
|
|
9a99763 |
-/// Begin_Latex
|
|
|
9a99763 |
-/// H_{n} = #sum_{k = 1}^{n} #frac{1}{k}
|
|
|
9a99763 |
-/// End_Latex
|
|
|
9a99763 |
+/// \f[
|
|
|
9a99763 |
+/// Ker(x) = -\left(ln \frac{|x|}{2} + \gamma\right) Ber(x) + \left(\frac{\pi}{4} - \delta\right) Bei(x) + \sum_{n \geq 0} \frac{(-1)^{n}}{[(2n)!]^{2}} H_{2n} \left(\frac{x}{2}\right)^{4n}
|
|
|
9a99763 |
+/// \f]
|
|
|
9a99763 |
+/// where \f$\gamma = 0.577215664...\f$ is the Euler-Mascheroni constant,
|
|
|
9a99763 |
+/// \f$\delta = \pi\f$ for x < 0 and is otherwise zero, and
|
|
|
9a99763 |
+/// \f[
|
|
|
9a99763 |
+/// H_{n} = \sum_{k = 1}^{n} \frac{1}{k}
|
|
|
9a99763 |
+/// \f]
|
|
|
9a99763 |
/// For x > fgMin, Ker(x) is computed according to its asymptotic
|
|
|
9a99763 |
/// expansion:
|
|
|
9a99763 |
-/// Begin_Latex
|
|
|
9a99763 |
-/// Ker(x) = #sqrt{#frac{#pi}{2x}} e^{-x/#sqrt{2}} [F2(x) cos#beta + G2(x) sin#beta]
|
|
|
9a99763 |
-/// End_Latex
|
|
|
9a99763 |
-/// where Begin_Latex #beta = #frac{x}{#sqrt{2}} + #frac{#pi}{8} End_Latex
|
|
|
9a99763 |
-/// See also F2(x) and G2(x).
|
|
|
9a99763 |
+/// \f[
|
|
|
9a99763 |
+/// Ker(x) = \sqrt{\frac{\pi}{2x}} e^{-x/\sqrt{2}} [F2(x) cos\beta + G2(x) sin\beta]
|
|
|
9a99763 |
+/// \f]
|
|
|
9a99763 |
+/// where \f$\beta = \frac{x}{\sqrt{2}} + \frac{\pi}{8}\f$.
|
|
|
9a99763 |
+///
|
|
|
9a99763 |
+/// See also F2() and G2().
|
|
|
9a99763 |
///
|
|
|
9a99763 |
/// Begin_Macro
|
|
|
9a99763 |
/// {
|
|
|
9a99763 |
@@ -227,29 +227,30 @@
|
|
|
9a99763 |
|
|
|
9a99763 |
|
|
|
9a99763 |
////////////////////////////////////////////////////////////////////////////////
|
|
|
9a99763 |
-/// Begin_Latex
|
|
|
9a99763 |
-/// Kei(x) = Kei_{0}(x) = Im#left[K_{0}#left(x e^{3#pii/4}#right)#right]
|
|
|
9a99763 |
-/// End_Latex
|
|
|
9a99763 |
-/// where x is real, and Begin_Latex K_{0}(z) End_Latex is the zeroth-order modified
|
|
|
9a99763 |
+/// \f[
|
|
|
9a99763 |
+/// Kei(x) = Kei_{0}(x) = Im\left[K_{0}\left(x e^{3\pi i/4}\right)\right]
|
|
|
9a99763 |
+/// \f]
|
|
|
9a99763 |
+/// where x is real, and \f$K_{0}(z)\f$ is the zeroth-order modified
|
|
|
9a99763 |
/// Bessel function of the second kind.
|
|
|
9a99763 |
///
|
|
|
9a99763 |
/// If x < fgMin (=20), Kei(x) is computed according to its polynomial
|
|
|
9a99763 |
/// approximation
|
|
|
9a99763 |
-/// Begin_Latex
|
|
|
9a99763 |
-/// Kei(x) = -#left(ln #frac{x}{2} + #gamma#right) Bei(x) - #left(#frac{#pi}{4} - #delta#right) Ber(x) + #sum_{n #geq 0} #frac{(-1)^{n}}{[(2n)!]^{2}} H_{2n} #left(#frac{x}{2}#right)^{4n+2}
|
|
|
9a99763 |
-/// End_Latex
|
|
|
9a99763 |
-/// where Begin_Latex #gamma = 0.577215664... End_Latex is the Euler-Mascheroni constant,
|
|
|
9a99763 |
-/// Begin_Latex #delta = #pi End_Latex for x < 0 and is otherwise zero, and
|
|
|
9a99763 |
-/// Begin_Latex
|
|
|
9a99763 |
-/// H_{n} = #sum_{k = 1}^{n} #frac{1}{k}
|
|
|
9a99763 |
-/// End_Latex
|
|
|
9a99763 |
+/// \f[
|
|
|
9a99763 |
+/// Kei(x) = -\left(ln \frac{x}{2} + \gamma\right) Bei(x) - \left(\frac{\pi}{4} - \delta\right) Ber(x) + \sum_{n \geq 0} \frac{(-1)^{n}}{[(2n)!]^{2}} H_{2n} \left(\frac{x}{2}\right)^{4n+2}
|
|
|
9a99763 |
+/// \f]
|
|
|
9a99763 |
+/// where \f$\gamma = 0.577215664...\f$ is the Euler-Mascheroni constant,
|
|
|
9a99763 |
+/// \f$\delta = \pi\f$ for x < 0 and is otherwise zero, and
|
|
|
9a99763 |
+/// \f[
|
|
|
9a99763 |
+/// H_{n} = \sum_{k = 1}^{n} \frac{1}{k}
|
|
|
9a99763 |
+/// \f]
|
|
|
9a99763 |
/// For x > fgMin, Kei(x) is computed according to its asymptotic
|
|
|
9a99763 |
/// expansion:
|
|
|
9a99763 |
-/// Begin_Latex
|
|
|
9a99763 |
-/// Kei(x) = - #sqrt{#frac{#pi}{2x}} e^{-x/#sqrt{2}} [F2(x) sin#beta + G2(x) cos#beta]
|
|
|
9a99763 |
-/// End_Latex
|
|
|
9a99763 |
-/// where Begin_Latex #beta = #frac{x}{#sqrt{2}} + #frac{#pi}{8} End_Latex
|
|
|
9a99763 |
-/// See also F2(x) and G2(x).
|
|
|
9a99763 |
+/// \f[
|
|
|
9a99763 |
+/// Kei(x) = - \sqrt{\frac{\pi}{2x}} e^{-x/\sqrt{2}} [F2(x) sin\beta + G2(x) cos\beta]
|
|
|
9a99763 |
+/// \f]
|
|
|
9a99763 |
+/// where \f$\beta = \frac{x}{\sqrt{2}} + \frac{\pi}{8}\f$.
|
|
|
9a99763 |
+///
|
|
|
9a99763 |
+/// See also F2() and G2().
|
|
|
9a99763 |
///
|
|
|
9a99763 |
/// Begin_Macro
|
|
|
9a99763 |
/// {
|
|
|
9a99763 |
@@ -298,10 +299,10 @@
|
|
|
9a99763 |
/// If x < fgMin (=20), DBer(x) is computed according to the derivative of
|
|
|
9a99763 |
/// the polynomial approximation of Ber(x). Otherwise it is computed
|
|
|
9a99763 |
/// according to its asymptotic expansion
|
|
|
9a99763 |
-/// Begin_Latex
|
|
|
9a99763 |
-/// #frac{d}{dx} Ber(x) = M cos#left(#theta - #frac{#pi}{4}#right)
|
|
|
9a99763 |
-/// End_Latex
|
|
|
9a99763 |
-/// See also M(x) and Theta(x).
|
|
|
9a99763 |
+/// \f[
|
|
|
9a99763 |
+/// \frac{d}{dx} Ber(x) = M cos\left(\theta - \frac{\pi}{4}\right)
|
|
|
9a99763 |
+/// \f]
|
|
|
9a99763 |
+/// See also M() and Theta().
|
|
|
9a99763 |
///
|
|
|
9a99763 |
/// Begin_Macro
|
|
|
9a99763 |
/// {
|
|
|
9a99763 |
@@ -343,10 +344,10 @@
|
|
|
9a99763 |
/// If x < fgMin (=20), DBei(x) is computed according to the derivative of
|
|
|
9a99763 |
/// the polynomial approximation of Bei(x). Otherwise it is computed
|
|
|
9a99763 |
/// according to its asymptotic expansion
|
|
|
9a99763 |
-/// Begin_Latex
|
|
|
9a99763 |
-/// #frac{d}{dx} Bei(x) = M sin#left(#theta - #frac{#pi}{4}#right)
|
|
|
9a99763 |
-/// End_Latex
|
|
|
9a99763 |
-/// See also M(x) and Theta(x).
|
|
|
9a99763 |
+/// \f[
|
|
|
9a99763 |
+/// \frac{d}{dx} Bei(x) = M sin\left(\theta - \frac{\pi}{4}\right)
|
|
|
9a99763 |
+/// \f]
|
|
|
9a99763 |
+/// See also M() and Theta().
|
|
|
9a99763 |
///
|
|
|
9a99763 |
/// Begin_Macro
|
|
|
9a99763 |
/// {
|
|
|
9a99763 |
@@ -388,10 +389,10 @@
|
|
|
9a99763 |
/// If x < fgMin (=20), DKer(x) is computed according to the derivative of
|
|
|
9a99763 |
/// the polynomial approximation of Ker(x). Otherwise it is computed
|
|
|
9a99763 |
/// according to its asymptotic expansion
|
|
|
9a99763 |
-/// Begin_Latex
|
|
|
9a99763 |
-/// #frac{d}{dx} Ker(x) = N cos#left(#phi - #frac{#pi}{4}#right)
|
|
|
9a99763 |
-/// End_Latex
|
|
|
9a99763 |
-/// See also N(x) and Phi(x).
|
|
|
9a99763 |
+/// \f[
|
|
|
9a99763 |
+/// \frac{d}{dx} Ker(x) = N cos\left(\phi - \frac{\pi}{4}\right)
|
|
|
9a99763 |
+/// \f]
|
|
|
9a99763 |
+/// See also N() and Phi().
|
|
|
9a99763 |
///
|
|
|
9a99763 |
/// Begin_Macro
|
|
|
9a99763 |
/// {
|
|
|
9a99763 |
@@ -436,10 +437,10 @@
|
|
|
9a99763 |
/// If x < fgMin (=20), DKei(x) is computed according to the derivative of
|
|
|
9a99763 |
/// the polynomial approximation of Kei(x). Otherwise it is computed
|
|
|
9a99763 |
/// according to its asymptotic expansion
|
|
|
9a99763 |
-/// Begin_Latex
|
|
|
9a99763 |
-/// #frac{d}{dx} Kei(x) = N sin#left(#phi - #frac{#pi}{4}#right)
|
|
|
9a99763 |
-/// End_Latex
|
|
|
9a99763 |
-/// See also N(x) and Phi(x).
|
|
|
9a99763 |
+/// \f[
|
|
|
9a99763 |
+/// \frac{d}{dx} Kei(x) = N sin\left(\phi - \frac{\pi}{4}\right)
|
|
|
9a99763 |
+/// \f]
|
|
|
9a99763 |
+/// See also N() and Phi().
|
|
|
9a99763 |
///
|
|
|
9a99763 |
/// Begin_Macro
|
|
|
9a99763 |
/// {
|
|
|
9a99763 |
@@ -481,9 +482,9 @@
|
|
|
9a99763 |
////////////////////////////////////////////////////////////////////////////////
|
|
|
9a99763 |
/// Utility function appearing in the calculations of the Kelvin
|
|
|
9a99763 |
/// functions Bei(x) and Ber(x) (and their derivatives). F1(x) is given by
|
|
|
9a99763 |
-/// Begin_Latex
|
|
|
9a99763 |
-/// F1(x) = 1 + #sum_{n #geq 1} #frac{#prod_{m=1}^{n}(2m - 1)^{2}}{n! (8x)^{n}} cos#left(#frac{n#pi}{4}#right)
|
|
|
9a99763 |
-/// End_Latex
|
|
|
9a99763 |
+/// \f[
|
|
|
9a99763 |
+/// F1(x) = 1 + \sum_{n \geq 1} \frac{\prod_{m=1}^{n}(2m - 1)^{2}}{n! (8x)^{n}} cos\left(\frac{n\pi}{4}\right)
|
|
|
9a99763 |
+/// \f]
|
|
|
9a99763 |
|
|
|
9a99763 |
double KelvinFunctions::F1(double x)
|
|
|
9a99763 |
{
|
|
|
9a99763 |
@@ -510,9 +511,9 @@
|
|
|
9a99763 |
////////////////////////////////////////////////////////////////////////////////
|
|
|
9a99763 |
/// Utility function appearing in the calculations of the Kelvin
|
|
|
9a99763 |
/// functions Kei(x) and Ker(x) (and their derivatives). F2(x) is given by
|
|
|
9a99763 |
-/// Begin_Latex
|
|
|
9a99763 |
-/// F2(x) = 1 + #sum_{n #geq 1} (-1)^{n} #frac{#prod_{m=1}^{n}(2m - 1)^{2}}{n! (8x)^{n}} cos#left(#frac{n#pi}{4}#right)
|
|
|
9a99763 |
-/// End_Latex
|
|
|
9a99763 |
+/// \f[
|
|
|
9a99763 |
+/// F2(x) = 1 + \sum_{n \geq 1} (-1)^{n} \frac{\prod_{m=1}^{n}(2m - 1)^{2}}{n! (8x)^{n}} cos\left(\frac{n\pi}{4}\right)
|
|
|
9a99763 |
+/// \f]
|
|
|
9a99763 |
|
|
|
9a99763 |
double KelvinFunctions::F2(double x)
|
|
|
9a99763 |
{
|
|
|
9a99763 |
@@ -541,9 +542,9 @@
|
|
|
9a99763 |
////////////////////////////////////////////////////////////////////////////////
|
|
|
9a99763 |
/// Utility function appearing in the calculations of the Kelvin
|
|
|
9a99763 |
/// functions Bei(x) and Ber(x) (and their derivatives). G1(x) is given by
|
|
|
9a99763 |
-/// Begin_Latex
|
|
|
9a99763 |
-/// G1(x) = #sum_{n #geq 1} #frac{#prod_{m=1}^{n}(2m - 1)^{2}}{n! (8x)^{n}} sin#left(#frac{n#pi}{4}#right)
|
|
|
9a99763 |
-/// End_Latex
|
|
|
9a99763 |
+/// \f[
|
|
|
9a99763 |
+/// G1(x) = \sum_{n \geq 1} \frac{\prod_{m=1}^{n}(2m - 1)^{2}}{n! (8x)^{n}} sin\left(\frac{n\pi}{4}\right)
|
|
|
9a99763 |
+/// \f]
|
|
|
9a99763 |
|
|
|
9a99763 |
double KelvinFunctions::G1(double x)
|
|
|
9a99763 |
{
|
|
|
9a99763 |
@@ -568,9 +569,9 @@
|
|
|
9a99763 |
////////////////////////////////////////////////////////////////////////////////
|
|
|
9a99763 |
/// Utility function appearing in the calculations of the Kelvin
|
|
|
9a99763 |
/// functions Kei(x) and Ker(x) (and their derivatives). G2(x) is given by
|
|
|
9a99763 |
-/// Begin_Latex
|
|
|
9a99763 |
-/// G2(x) = #sum_{n #geq 1} (-1)^{n} #frac{#prod_{m=1}^{n}(2m - 1)^{2}}{n! (8x)^{n}} sin#left(#frac{n#pi}{4}#right)
|
|
|
9a99763 |
-/// End_Latex
|
|
|
9a99763 |
+/// \f[
|
|
|
9a99763 |
+/// G2(x) = \sum_{n \geq 1} (-1)^{n} \frac{\prod_{m=1}^{n}(2m - 1)^{2}}{n! (8x)^{n}} sin\left(\frac{n\pi}{4}\right)
|
|
|
9a99763 |
+/// \f]
|
|
|
9a99763 |
|
|
|
9a99763 |
double KelvinFunctions::G2(double x)
|
|
|
9a99763 |
{
|
|
|
9a99763 |
@@ -597,9 +598,9 @@
|
|
|
9a99763 |
////////////////////////////////////////////////////////////////////////////////
|
|
|
9a99763 |
/// Utility function appearing in the asymptotic expansions of DBer(x) and
|
|
|
9a99763 |
/// DBei(x). M(x) is given by
|
|
|
9a99763 |
-/// Begin_Latex
|
|
|
9a99763 |
-/// M(x) = #frac{e^{x/#sqrt{2}}}{#sqrt{2#pix}}#left(1 + #frac{1}{8#sqrt{2} x} + #frac{1}{256 x^{2}} - #frac{399}{6144#sqrt{2} x^{3}} + O#left(#frac{1}{x^{4}}#right)#right)
|
|
|
9a99763 |
-/// End_Latex
|
|
|
9a99763 |
+/// \f[
|
|
|
9a99763 |
+/// M(x) = \frac{e^{x/\sqrt{2}}}{\sqrt{2\pi x}}\left(1 + \frac{1}{8\sqrt{2} x} + \frac{1}{256 x^{2}} - \frac{399}{6144\sqrt{2} x^{3}} + O\left(\frac{1}{x^{4}}\right)\right)
|
|
|
9a99763 |
+/// \f]
|
|
|
9a99763 |
|
|
|
9a99763 |
double KelvinFunctions::M(double x)
|
|
|
9a99763 |
{
|
|
|
9a99763 |
@@ -612,10 +613,10 @@
|
|
|
9a99763 |
|
|
|
9a99763 |
////////////////////////////////////////////////////////////////////////////////
|
|
|
9a99763 |
/// Utility function appearing in the asymptotic expansions of DBer(x) and
|
|
|
9a99763 |
-/// DBei(x). Begin_Latex #theta(x) #End_Latex is given by
|
|
|
9a99763 |
-/// Begin_Latex
|
|
|
9a99763 |
-/// #theta(x) = #frac{x}{#sqrt{2}} - #frac{#pi}{8} - #frac{1}{8#sqrt{2} x} - #frac{1}{16 x^{2}} - #frac{25}{384#sqrt{2} x^{3}} + O#left(#frac{1}{x^{5}}#right)
|
|
|
9a99763 |
-/// End_Latex
|
|
|
9a99763 |
+/// DBei(x). \f$\theta(x)\f$ is given by
|
|
|
9a99763 |
+/// \f[
|
|
|
9a99763 |
+/// \theta(x) = \frac{x}{\sqrt{2}} - \frac{\pi}{8} - \frac{1}{8\sqrt{2} x} - \frac{1}{16 x^{2}} - \frac{25}{384\sqrt{2} x^{3}} + O\left(\frac{1}{x^{5}}\right)
|
|
|
9a99763 |
+/// \f]
|
|
|
9a99763 |
|
|
|
9a99763 |
double KelvinFunctions::Theta(double x)
|
|
|
9a99763 |
{
|
|
|
9a99763 |
@@ -628,10 +629,10 @@
|
|
|
9a99763 |
|
|
|
9a99763 |
////////////////////////////////////////////////////////////////////////////////
|
|
|
9a99763 |
/// Utility function appearing in the asymptotic expansions of DKer(x) and
|
|
|
9a99763 |
-/// DKei(x). (x) is given by
|
|
|
9a99763 |
-/// Begin_Latex
|
|
|
9a99763 |
-/// N(x) = #sqrt{#frac{#pi}{2x}} e^{-x/#sqrt{2}} #left(1 - #frac{1}{8#sqrt{2} x} + #frac{1}{256 x^{2}} + #frac{399}{6144#sqrt{2} x^{3}} + O#left(#frac{1}{x^{4}}#right)#right)
|
|
|
9a99763 |
-/// End_Latex
|
|
|
9a99763 |
+/// DKei(x). N(x) is given by
|
|
|
9a99763 |
+/// \f[
|
|
|
9a99763 |
+/// N(x) = \sqrt{\frac{\pi}{2x}} e^{-x/\sqrt{2}} \left(1 - \frac{1}{8\sqrt{2} x} + \frac{1}{256 x^{2}} + \frac{399}{6144\sqrt{2} x^{3}} + O\left(\frac{1}{x^{4}}\right)\right)
|
|
|
9a99763 |
+/// \f]
|
|
|
9a99763 |
|
|
|
9a99763 |
double KelvinFunctions::N(double x)
|
|
|
9a99763 |
{
|
|
|
9a99763 |
@@ -644,10 +645,10 @@
|
|
|
9a99763 |
|
|
|
9a99763 |
////////////////////////////////////////////////////////////////////////////////
|
|
|
9a99763 |
/// Utility function appearing in the asymptotic expansions of DKer(x) and
|
|
|
9a99763 |
-/// DKei(x). Begin_Latex #phi(x) #End_Latex is given by
|
|
|
9a99763 |
-/// Begin_Latex
|
|
|
9a99763 |
-/// #phi(x) = - #frac{x}{#sqrt{2}} - #frac{#pi}{8} + #frac{1}{8#sqrt{2} x} - #frac{1}{16 x^{2}} + #frac{25}{384#sqrt{2} x^{3}} + O#left(#frac{1}{x^{5}}#right)
|
|
|
9a99763 |
-/// End_Latex
|
|
|
9a99763 |
+/// DKei(x). \f$\phi(x)\f$ is given by
|
|
|
9a99763 |
+/// \f[
|
|
|
9a99763 |
+/// \phi(x) = - \frac{x}{\sqrt{2}} - \frac{\pi}{8} + \frac{1}{8\sqrt{2} x} - \frac{1}{16 x^{2}} + \frac{25}{384\sqrt{2} x^{3}} + O\left(\frac{1}{x^{5}}\right)
|
|
|
9a99763 |
+/// \f]
|
|
|
9a99763 |
|
|
|
9a99763 |
double KelvinFunctions::Phi(double x)
|
|
|
9a99763 |
{
|
|
|
9a99763 |
diff -ur root-6.06.02.orig/roofit/roostats/inc/RooStats/HybridResult.h root-6.06.02/roofit/roostats/inc/RooStats/HybridResult.h
|
|
|
9a99763 |
--- root-6.06.02.orig/roofit/roostats/inc/RooStats/HybridResult.h 2016-03-03 10:36:03.000000000 +0100
|
|
|
9a99763 |
+++ root-6.06.02/roofit/roostats/inc/RooStats/HybridResult.h 2016-03-20 18:30:30.945025834 +0100
|
|
|
9a99763 |
@@ -85,7 +85,7 @@
|
|
|
9a99763 |
/// The error on the "confidence level" of the alternative hypothesis
|
|
|
9a99763 |
Double_t CLsplusbError() const;
|
|
|
9a99763 |
|
|
|
9a99763 |
- /// The error on the ratio CLs+b/CLb
|
|
|
9a99763 |
+ /// The error on the ratio \f$CL_{s+b}/CL_{b}\f$
|
|
|
9a99763 |
Double_t CLsError() const;
|
|
|
9a99763 |
|
|
|
9a99763 |
private:
|
|
|
9a99763 |
diff -ur root-6.06.02.orig/roofit/roostats/inc/RooStats/HypoTestResult.h root-6.06.02/roofit/roostats/inc/RooStats/HypoTestResult.h
|
|
|
9a99763 |
--- root-6.06.02.orig/roofit/roostats/inc/RooStats/HypoTestResult.h 2016-03-03 10:36:03.000000000 +0100
|
|
|
9a99763 |
+++ root-6.06.02/roofit/roostats/inc/RooStats/HypoTestResult.h 2016-03-20 18:30:30.972026102 +0100
|
|
|
9a99763 |
@@ -37,11 +37,12 @@
|
|
|
9a99763 |
Any tool inheriting from HypoTestCalculator can return a HypoTestResult.
|
|
|
9a99763 |
As such, it stores a p-value for the null-hypothesis (eg. background-only)
|
|
|
9a99763 |
and an alternate hypothesis (eg. signal+background).
|
|
|
9a99763 |
- The p-values can also be transformed into confidence levels (CLb, CLsplusb) in a trivial way.
|
|
|
9a99763 |
- The ratio of the CLsplusb to CLb is often called CLs, and is considered useful, though it is
|
|
|
9a99763 |
- not a probability.
|
|
|
9a99763 |
- Finally, the p-value of the null can be transformed into a number of equivalent Gaussian sigma using the
|
|
|
9a99763 |
- Significance method.
|
|
|
9a99763 |
+ The p-values can also be transformed into confidence levels
|
|
|
9a99763 |
+ (\f$CL_{b}\f$, \f$CL_{s+b}\f$) in a trivial way.
|
|
|
9a99763 |
+ The ratio of the \f$CL_{s+b}\f$ to \f$CL_{b}\f$ is often called
|
|
|
9a99763 |
+ \f$CL_{s}\f$, and is considered useful, though it is not a probability.
|
|
|
9a99763 |
+ Finally, the p-value of the null can be transformed into a number of
|
|
|
9a99763 |
+ equivalent Gaussian sigma using the Significance method.
|
|
|
9a99763 |
|
|
|
9a99763 |
The p-value of the null for a given test statistic is rigorously defined and
|
|
|
9a99763 |
this is the starting point for the following conventions.
|
|
|
9a99763 |
@@ -52,17 +53,17 @@
|
|
|
9a99763 |
observed value of the test statistic. This is the more standard
|
|
|
9a99763 |
convention and avoids confusion when doing inverted tests.
|
|
|
9a99763 |
|
|
|
9a99763 |
-For exclusion, we also want the formula
|
|
|
9a99763 |
-CLs = CLs+b / CLb to hold which therefore defines our conventions
|
|
|
9a99763 |
-for CLs+b and CLb. CLs was specifically invented for exclusion
|
|
|
9a99763 |
+For exclusion, we also want the formula \f$CL_{s} = CL_{s+b} / CL_{b}\f$
|
|
|
9a99763 |
+to hold which therefore defines our conventions for \f$CL_{s+b}\f$ and
|
|
|
9a99763 |
+\f$CL_{b}\f$. \f$CL_{s}\f$ was specifically invented for exclusion
|
|
|
9a99763 |
and therefore all quantities need be related through the assignments
|
|
|
9a99763 |
-as they are for exclusion: **CLs+b = p_{s+b}; CLb = p_b**. This
|
|
|
9a99763 |
+as they are for exclusion: \f$CL_{s+b} = p_{s+b}\f$; \f$CL_{b} = p_{b}\f$. This
|
|
|
9a99763 |
is derived by considering the scenarios of a powerful and not powerful
|
|
|
9a99763 |
-inverted test, where for the not so powerful test, CLs must be
|
|
|
9a99763 |
+inverted test, where for the not so powerful test, \f$CL_{s}\f$ must be
|
|
|
9a99763 |
close to one.
|
|
|
9a99763 |
|
|
|
9a99763 |
For results of Hypothesis tests,
|
|
|
9a99763 |
-CLs has no similar direct interpretation as for exclusion and can
|
|
|
9a99763 |
+\f$CL_{s}\f$ has no similar direct interpretation as for exclusion and can
|
|
|
9a99763 |
be larger than one.
|
|
|
9a99763 |
|
|
|
9a99763 |
*/
|
|
|
9a99763 |
@@ -101,7 +102,7 @@
|
|
|
9a99763 |
/// Convert AlternatePValue into a "confidence level"
|
|
|
9a99763 |
virtual Double_t CLsplusb() const { return !fBackgroundIsAlt ? AlternatePValue() : NullPValue(); }
|
|
|
9a99763 |
|
|
|
9a99763 |
- /// CLs is simply CLs+b/CLb (not a method, but a quantity)
|
|
|
9a99763 |
+ /// \f$CL_{s}\f$ is simply \f$CL_{s+b}/CL_{b}\f$ (not a method, but a quantity)
|
|
|
9a99763 |
virtual Double_t CLs() const {
|
|
|
9a99763 |
double thisCLb = CLb();
|
|
|
9a99763 |
if (thisCLb == 0) {
|
|
|
9a99763 |
@@ -144,7 +145,7 @@
|
|
|
9a99763 |
/// The error on the "confidence level" of the alternative hypothesis
|
|
|
9a99763 |
Double_t CLsplusbError() const;
|
|
|
9a99763 |
|
|
|
9a99763 |
- /// The error on the ratio CLs+b/CLb
|
|
|
9a99763 |
+ /// The error on the ratio \f$CL_{s+b}/CL_{b}\f$
|
|
|
9a99763 |
Double_t CLsError() const;
|
|
|
9a99763 |
|
|
|
9a99763 |
/// The error on the Null p-value
|
|
|
9a99763 |
diff -ur root-6.06.02.orig/roofit/roostats/src/HybridResult.cxx root-6.06.02/roofit/roostats/src/HybridResult.cxx
|
|
|
9a99763 |
--- root-6.06.02.orig/roofit/roostats/src/HybridResult.cxx 2016-03-03 10:36:03.000000000 +0100
|
|
|
9a99763 |
+++ root-6.06.02/roofit/roostats/src/HybridResult.cxx 2016-03-20 18:30:30.973026112 +0100
|
|
|
9a99763 |
@@ -100,11 +100,9 @@
|
|
|
9a99763 |
}
|
|
|
9a99763 |
|
|
|
9a99763 |
///////////////////////////////////////////////////////////////////////////
|
|
|
9a99763 |
-
|
|
|
9a99763 |
+/// Returns \f$1 - CL_{b}\f$ : the B p-value
|
|
|
9a99763 |
double HybridResult::NullPValue() const
|
|
|
9a99763 |
{
|
|
|
9a99763 |
- // return 1-CL_b : the B p-value
|
|
|
9a99763 |
-
|
|
|
9a99763 |
if (fComputationsNulDoneFlag==false) {
|
|
|
9a99763 |
int nToys = fTestStat_b.size();
|
|
|
9a99763 |
if (nToys==0) {
|
|
|
9a99763 |
@@ -131,11 +129,9 @@
|
|
|
9a99763 |
}
|
|
|
9a99763 |
|
|
|
9a99763 |
///////////////////////////////////////////////////////////////////////////
|
|
|
9a99763 |
-
|
|
|
9a99763 |
+/// Returns \f$CL_{s+b}\f$ : the S+B p-value
|
|
|
9a99763 |
double HybridResult::AlternatePValue() const
|
|
|
9a99763 |
{
|
|
|
9a99763 |
- // return CL_s+b : the S+B p-value
|
|
|
9a99763 |
-
|
|
|
9a99763 |
if (fComputationsAltDoneFlag==false) {
|
|
|
9a99763 |
int nToys = fTestStat_b.size();
|
|
|
9a99763 |
if (nToys==0) {
|
|
|
9a99763 |
@@ -162,40 +158,37 @@
|
|
|
9a99763 |
}
|
|
|
9a99763 |
|
|
|
9a99763 |
///////////////////////////////////////////////////////////////////////////
|
|
|
9a99763 |
-
|
|
|
9a99763 |
+/// Returns an estimate of the error on \f$CL_{b}\f$ assuming a binomial
|
|
|
9a99763 |
+/// error on \f$CL_{b}\f$:
|
|
|
9a99763 |
+/// \f[
|
|
|
9a99763 |
+/// \sigma_{CL_{b}} = \sqrt{CL_{b} \left( 1 - CL_{b} \right) / n_{toys}}
|
|
|
9a99763 |
+/// \f]
|
|
|
9a99763 |
Double_t HybridResult::CLbError() const
|
|
|
9a99763 |
{
|
|
|
9a99763 |
- // Returns an estimate of the error on CLb assuming a binomial error on
|
|
|
9a99763 |
- // CLb:
|
|
|
9a99763 |
- // BEGIN_LATEX
|
|
|
9a99763 |
- // #sigma_{CL_{b}} &=& #sqrt{CL_{b} #left( 1 - CL_{b} #right) / n_{toys}}
|
|
|
9a99763 |
- // END_LATEX
|
|
|
9a99763 |
unsigned const int n = fTestStat_b.size();
|
|
|
9a99763 |
return TMath::Sqrt(CLb() * (1. - CLb()) / n);
|
|
|
9a99763 |
}
|
|
|
9a99763 |
|
|
|
9a99763 |
///////////////////////////////////////////////////////////////////////////
|
|
|
9a99763 |
-
|
|
|
9a99763 |
+/// Returns an estimate of the error on \f$CL_{s+b}\f$ assuming a binomial
|
|
|
9a99763 |
+/// error on \f$CL_{s+b}\f$:
|
|
|
9a99763 |
+/// \f[
|
|
|
9a99763 |
+/// \sigma_{CL_{s+b}} = \sqrt{CL_{s+b} \left( 1 - CL_{s+b} \right) / n_{toys}}
|
|
|
9a99763 |
+/// \f]
|
|
|
9a99763 |
Double_t HybridResult::CLsplusbError() const
|
|
|
9a99763 |
{
|
|
|
9a99763 |
- // Returns an estimate of the error on CLsplusb assuming a binomial
|
|
|
9a99763 |
- // error on CLsplusb:
|
|
|
9a99763 |
- // BEGIN_LATEX
|
|
|
9a99763 |
- // #sigma_{CL_{s+b}} &=& #sqrt{CL_{s+b} #left( 1 - CL_{s+b} #right) / n_{toys}}
|
|
|
9a99763 |
- // END_LATEX
|
|
|
9a99763 |
unsigned const int n = fTestStat_sb.size();
|
|
|
9a99763 |
return TMath::Sqrt(CLsplusb() * (1. - CLsplusb()) / n);
|
|
|
9a99763 |
}
|
|
|
9a99763 |
|
|
|
9a99763 |
///////////////////////////////////////////////////////////////////////////
|
|
|
9a99763 |
-
|
|
|
9a99763 |
+/// Returns an estimate of the error on \f$CL_{s}\f$ through combination
|
|
|
9a99763 |
+/// of the errors on \f$CL_{b}\f$ and \f$CL_{s+b}\f$:
|
|
|
9a99763 |
+/// \f[
|
|
|
9a99763 |
+/// \sigma_{CL_s} = CL_s \sqrt{\left( \frac{\sigma_{CL_{s+b}}}{CL_{s+b}} \right)^2 + \left( \frac{\sigma_{CL_{b}}}{CL_{b}} \right)^2}
|
|
|
9a99763 |
+/// \f]
|
|
|
9a99763 |
Double_t HybridResult::CLsError() const
|
|
|
9a99763 |
{
|
|
|
9a99763 |
- // Returns an estimate of the error on CLs through combination of the
|
|
|
9a99763 |
- // errors on CLb and CLsplusb:
|
|
|
9a99763 |
- // BEGIN_LATEX
|
|
|
9a99763 |
- // #sigma_{CL_s} &=& CL_s #sqrt{#left( #frac{#sigma_{CL_{s+b}}}{CL_{s+b}} #right)^2 + #left( #frac{#sigma_{CL_{b}}}{CL_{b}} #right)^2}
|
|
|
9a99763 |
- // END_LATEX
|
|
|
9a99763 |
unsigned const int n_b = fTestStat_b.size();
|
|
|
9a99763 |
unsigned const int n_sb = fTestStat_sb.size();
|
|
|
9a99763 |
|
|
|
9a99763 |
diff -ur root-6.06.02.orig/roofit/roostats/src/HypoTestResult.cxx root-6.06.02/roofit/roostats/src/HypoTestResult.cxx
|
|
|
9a99763 |
--- root-6.06.02.orig/roofit/roostats/src/HypoTestResult.cxx 2016-03-03 10:36:03.000000000 +0100
|
|
|
9a99763 |
+++ root-6.06.02/roofit/roostats/src/HypoTestResult.cxx 2016-03-20 18:30:30.973026112 +0100
|
|
|
9a99763 |
@@ -229,8 +229,8 @@
|
|
|
9a99763 |
}
|
|
|
9a99763 |
|
|
|
9a99763 |
////////////////////////////////////////////////////////////////////////////////
|
|
|
9a99763 |
-/// compute CLb error
|
|
|
9a99763 |
-/// Clb = 1 - NullPValue()
|
|
|
9a99763 |
+/// compute \f$CL_{b}\f$ error
|
|
|
9a99763 |
+/// \f$CL_{b}\f$ = 1 - NullPValue()
|
|
|
9a99763 |
/// must use opposite condition that routine above
|
|
|
9a99763 |
|
|
|
9a99763 |
Double_t HypoTestResult::CLbError() const {
|
|
|
9a99763 |
@@ -251,12 +251,12 @@
|
|
|
9a99763 |
}
|
|
|
9a99763 |
|
|
|
9a99763 |
////////////////////////////////////////////////////////////////////////////////
|
|
|
9a99763 |
-/// Returns an estimate of the error on CLs through combination of the
|
|
|
9a99763 |
-/// errors on CLb and CLsplusb:
|
|
|
9a99763 |
-/// BEGIN_LATEX
|
|
|
9a99763 |
-/// #sigma_{CL_s} = CL_s
|
|
|
9a99763 |
-/// #sqrt{#left( #frac{#sigma_{CL_{s+b}}}{CL_{s+b}} #right)^2 + #left( #frac{#sigma_{CL_{b}}}{CL_{b}} #right)^2}
|
|
|
9a99763 |
-/// END_LATEX
|
|
|
9a99763 |
+/// Returns an estimate of the error on \f$CL_{s}\f$ through combination of the
|
|
|
9a99763 |
+/// errors on \f$CL_{b}\f$ and \f$CL_{s+b}\f$:
|
|
|
9a99763 |
+/// \f[
|
|
|
9a99763 |
+/// \sigma_{CL_s} = CL_s
|
|
|
9a99763 |
+/// \sqrt{\left( \frac{\sigma_{CL_{s+b}}}{CL_{s+b}} \right)^2 + \left( \frac{\sigma_{CL_{b}}}{CL_{b}} \right)^2}
|
|
|
9a99763 |
+/// \f]
|
|
|
9a99763 |
|
|
|
9a99763 |
Double_t HypoTestResult::CLsError() const {
|
|
|
9a99763 |
if(!fAltDistr || !fNullDistr) return 0.0;
|