- Change to cmake configuration (was using ./configure) - Change to doxygen documentation generation (was using THTML) - Run the test suite - Remove compatibility with older EPEL (Group tags, BuildRoot tag, etc.) - New sub-packages: root-multiproc, root-cling, root-r, root-r-tools, root-geocad, root-tmva-python, root-tmva-r, root-tmva-gui, root-cli, root-notebook and root-rootaas - New subpackage for EPEL7: root-python34 - Dropped sub-packages: root-cint, root-reflex, root-cintex, root-ruby
274 lines
9.5 KiB
Diff
274 lines
9.5 KiB
Diff
diff -ur root-6.06.02.orig/math/mathcore/src/TMath.cxx root-6.06.02/math/mathcore/src/TMath.cxx
|
|
--- root-6.06.02.orig/math/mathcore/src/TMath.cxx 2016-03-03 10:36:03.000000000 +0100
|
|
+++ root-6.06.02/math/mathcore/src/TMath.cxx 2016-03-09 06:21:28.492819438 +0100
|
|
@@ -359,9 +359,9 @@
|
|
/// Handbook of Mathematical Functions by Abramowitz and Stegun, formula 6.5.1 on page 260 .
|
|
/// Its normalization is such that TMath::Gamma(a,+infinity) = 1 .
|
|
///
|
|
-/// Begin_Latex
|
|
-/// P(a, x) = #frac{1}{#Gamma(a) } #int_{0}^{x} t^{a-1} e^{-t} dt
|
|
-/// End_Latex
|
|
+/// \f[
|
|
+/// P(a, x) = \frac{1}{\Gamma(a)} \int_{0}^{x} t^{a-1} e^{-t} dt
|
|
+/// \f]
|
|
///
|
|
///
|
|
///--- Nve 14-nov-1998 UU-SAP Utrecht
|
|
@@ -559,15 +559,16 @@
|
|
/// see TMath::PoissonI to get a non-smooth function.
|
|
/// Note that for large values of par, it is better to call
|
|
/// TMath::Gaus(x,par,sqrt(par),kTRUE)
|
|
-///Begin_Html
|
|
+/// Begin_Macro
|
|
+/// {
|
|
+/// TCanvas *c1 = new TCanvas("c1", "c1", 700, 500);
|
|
+/// TF1 *poisson = new TF1("poisson", "TMath::Poisson(x, 5)", 0, 15);
|
|
+/// poisson->Draw("L");
|
|
+/// }
|
|
+/// End_Macro
|
|
|
|
Double_t TMath::Poisson(Double_t x, Double_t par)
|
|
{
|
|
-/*
|
|
-<img src="gif/Poisson.gif">
|
|
-*/
|
|
-//End_Html
|
|
-
|
|
if (x<0)
|
|
return 0;
|
|
else if (x == 0.0)
|
|
@@ -587,15 +588,17 @@
|
|
/// compute the Poisson distribution function for (x,par)
|
|
/// This is a non-smooth function.
|
|
/// This function is equivalent to ROOT::Math::poisson_pdf
|
|
-///Begin_Html
|
|
+/// Begin_Macro
|
|
+/// {
|
|
+/// TCanvas *c1 = new TCanvas("c1", "c1", 700, 500);
|
|
+/// TF1 *poissoni = new TF1("poissoni", "TMath::PoissonI(x, 5)", 0, 15);
|
|
+/// poissoni->SetNpx(1000);
|
|
+/// poissoni->Draw("L");
|
|
+/// }
|
|
+/// End_Macro
|
|
|
|
Double_t TMath::PoissonI(Double_t x, Double_t par)
|
|
{
|
|
-/*
|
|
-<img src="gif/PoissonI.gif">
|
|
-*/
|
|
-//End_Html
|
|
-
|
|
Int_t ix = Int_t(x);
|
|
return Poisson(ix,par);
|
|
}
|
|
@@ -630,36 +633,33 @@
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/// Calculates the Kolmogorov distribution function,
|
|
-///Begin_Html
|
|
+/// \f[
|
|
+/// P(z) = 2 \sum_{j=1}^{\infty} (-1)^{j-1} e^{-2 j^2 z^2}
|
|
+/// \f]
|
|
+/// which gives the probability that Kolmogorov's test statistic will exceed
|
|
+/// the value z assuming the null hypothesis. This gives a very powerful
|
|
+/// test for comparing two one-dimensional distributions.
|
|
+/// see, for example, Eadie et al, "statistocal Methods in Experimental
|
|
+/// Physics', pp 269-270).
|
|
+///
|
|
+/// This function returns the confidence level for the null hypothesis, where:
|
|
+/// z = dn*sqrt(n), and
|
|
+/// dn is the maximum deviation between a hypothetical distribution
|
|
+/// function and an experimental distribution with
|
|
+/// n events
|
|
+///
|
|
+/// NOTE: To compare two experimental distributions with m and n events,
|
|
+/// use z = sqrt(m*n/(m+n))*dn
|
|
+///
|
|
+/// Accuracy: The function is far too accurate for any imaginable application.
|
|
+/// Probabilities less than 10^-15 are returned as zero.
|
|
+/// However, remember that the formula is only valid for "large" n.
|
|
+/// Theta function inversion formula is used for z <= 1
|
|
+///
|
|
+/// This function was translated by Rene Brun from PROBKL in CERNLIB.
|
|
|
|
Double_t TMath::KolmogorovProb(Double_t z)
|
|
{
|
|
- /*
|
|
- <img src="gif/kolmogorov.gif">
|
|
- */
|
|
- //End_Html
|
|
- // which gives the probability that Kolmogorov's test statistic will exceed
|
|
- // the value z assuming the null hypothesis. This gives a very powerful
|
|
- // test for comparing two one-dimensional distributions.
|
|
- // see, for example, Eadie et al, "statistocal Methods in Experimental
|
|
- // Physics', pp 269-270).
|
|
- //
|
|
- // This function returns the confidence level for the null hypothesis, where:
|
|
- // z = dn*sqrt(n), and
|
|
- // dn is the maximum deviation between a hypothetical distribution
|
|
- // function and an experimental distribution with
|
|
- // n events
|
|
- //
|
|
- // NOTE: To compare two experimental distributions with m and n events,
|
|
- // use z = sqrt(m*n/(m+n))*dn
|
|
- //
|
|
- // Accuracy: The function is far too accurate for any imaginable application.
|
|
- // Probabilities less than 10^-15 are returned as zero.
|
|
- // However, remember that the formula is only valid for "large" n.
|
|
- // Theta function inversion formula is used for z <= 1
|
|
- //
|
|
- // This function was translated by Rene Brun from PROBKL in CERNLIB.
|
|
-
|
|
Double_t fj[4] = {-2,-8,-18,-32}, r[4];
|
|
const Double_t w = 2.50662827;
|
|
// c1 - -pi**2/8, c2 = 9*c1, c3 = 25*c1
|
|
@@ -2254,15 +2254,40 @@
|
|
/// The definition can be found in "Engineering Statistics Handbook" on site
|
|
/// http://www.itl.nist.gov/div898/handbook/eda/section3/eda366b.htm
|
|
/// use now implementation in ROOT::Math::gamma_pdf
|
|
-///Begin_Html
|
|
+/// Begin_Macro
|
|
+/// {
|
|
+/// TCanvas *c1 = new TCanvas("c1", "c1", 700, 500);
|
|
+///
|
|
+/// c1->SetLogy();
|
|
+/// c1->SetGridx();
|
|
+/// c1->SetGridy();
|
|
+///
|
|
+/// TF1 *gdist = new TF1("gdist", "TMath::GammaDist(x, [0], [1], [2])", 0, 10);
|
|
+///
|
|
+/// gdist->SetParameters(0.5, 0., 1.);
|
|
+/// gdist->SetLineColor(2);
|
|
+/// TF1 *gdist1 = gdist->DrawCopy("L");
|
|
+/// gdist->SetParameters(1.0, 0., 1.);
|
|
+/// gdist->SetLineColor(3);
|
|
+/// TF1 *gdist2 = gdist->DrawCopy("LSAME");
|
|
+/// gdist->SetParameters(2.0, 0., 1.);
|
|
+/// gdist->SetLineColor(4);
|
|
+/// TF1 *gdist3 = gdist->DrawCopy("LSAME");
|
|
+/// gdist->SetParameters(5.0, 0., 1.);
|
|
+/// gdist->SetLineColor(6);
|
|
+/// TF1 *gdist4 = gdist->DrawCopy("LSAME");
|
|
+///
|
|
+/// legend = new TLegend(0.15, 0.15, 0.5, 0.35);
|
|
+/// legend->AddEntry(gdist1, "gamma = 0.5, mu = 0, beta = 1", "L");
|
|
+/// legend->AddEntry(gdist2, "gamma = 1.0, mu = 0, beta = 1", "L");
|
|
+/// legend->AddEntry(gdist3, "gamma = 2.0, mu = 0, beta = 1", "L");
|
|
+/// legend->AddEntry(gdist4, "gamma = 5.0, mu = 0, beta = 1", "L");
|
|
+/// legend->Draw();
|
|
+/// }
|
|
+/// End_Macro
|
|
|
|
Double_t TMath::GammaDist(Double_t x, Double_t gamma, Double_t mu, Double_t beta)
|
|
{
|
|
- /*
|
|
- <img src="gif/gammadist.gif">
|
|
- */
|
|
- //End_Html
|
|
-
|
|
if ((x<mu) || (gamma<=0) || (beta <=0)) {
|
|
Error("TMath::GammaDist", "illegal parameter values x = %f , gamma = %f beta = %f",x,gamma,beta);
|
|
return 0;
|
|
@@ -2308,21 +2333,47 @@
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/// Computes the density of LogNormal distribution at point x.
|
|
/// Variable X has lognormal distribution if Y=Ln(X) has normal distribution
|
|
-/// sigma is the shape parameter
|
|
-/// theta is the location parameter
|
|
-/// m is the scale parameter
|
|
+/// - sigma is the shape parameter
|
|
+/// - theta is the location parameter
|
|
+/// - m is the scale parameter
|
|
/// The formula was taken from "Engineering Statistics Handbook" on site
|
|
/// http://www.itl.nist.gov/div898/handbook/eda/section3/eda3669.htm
|
|
/// Implementation using ROOT::Math::lognormal_pdf
|
|
-///Begin_Html
|
|
+/// Begin_Macro
|
|
+/// {
|
|
+/// TCanvas *c1 = new TCanvas("c1", "c1", 700, 500);
|
|
+///
|
|
+/// c1->SetLogy();
|
|
+/// c1->SetGridx();
|
|
+/// c1->SetGridy();
|
|
+///
|
|
+/// TF1 *logn = new TF1("logn", "TMath::LogNormal(x, [0], [1], [2])", 0, 5);
|
|
+/// logn->SetMinimum(1e-3);
|
|
+///
|
|
+/// logn->SetParameters(0.5, 0., 1.);
|
|
+/// logn->SetLineColor(2);
|
|
+/// TF1 *logn1 = logn->DrawCopy("L");
|
|
+/// logn->SetParameters(1.0, 0., 1.);
|
|
+/// logn->SetLineColor(3);
|
|
+/// TF1 *logn2 = logn->DrawCopy("LSAME");
|
|
+/// logn->SetParameters(2.0, 0., 1.);
|
|
+/// logn->SetLineColor(4);
|
|
+/// TF1 *logn3 = logn->DrawCopy("LSAME");
|
|
+/// logn->SetParameters(5.0, 0., 1.);
|
|
+/// logn->SetLineColor(6);
|
|
+/// TF1 *logn4 = logn->DrawCopy("LSAME");
|
|
+///
|
|
+/// legend = new TLegend(0.15, 0.15, 0.5, 0.35);
|
|
+/// legend->AddEntry(logn1, "sigma = 0.5, theta = 0, m = 1", "L");
|
|
+/// legend->AddEntry(logn2, "sigma = 1.0, theta = 0, m = 1", "L");
|
|
+/// legend->AddEntry(logn3, "sigma = 2.0, theta = 0, m = 1", "L");
|
|
+/// legend->AddEntry(logn4, "sigma = 5.0, theta = 0, m = 1", "L");
|
|
+/// legend->Draw();
|
|
+/// }
|
|
+/// End_Macro
|
|
|
|
Double_t TMath::LogNormal(Double_t x, Double_t sigma, Double_t theta, Double_t m)
|
|
{
|
|
- /*
|
|
- <img src="gif/lognormal.gif">
|
|
- */
|
|
- //End_Html
|
|
-
|
|
if ((x<theta) || (sigma<=0) || (m<=0)) {
|
|
Error("TMath::Lognormal", "illegal parameter values");
|
|
return 0;
|
|
@@ -2615,15 +2666,39 @@
|
|
///density function computed numerically in an accurate way: our approximation
|
|
///shows a difference of less than 3% around the peak of the density function, slowly
|
|
///increasing going towards the extreme tails to the right and to the left"
|
|
-///Begin_Html
|
|
+/// Begin_Macro
|
|
+/// {
|
|
+/// TCanvas *c1 = new TCanvas("c1", "c1", 700, 500);
|
|
+///
|
|
+/// c1->SetGridx();
|
|
+/// c1->SetGridy();
|
|
+///
|
|
+/// TF1 *vavilov = new TF1("vavilov", "TMath::Vavilov(x, [0], [1])", -3, 11);
|
|
+///
|
|
+/// vavilov->SetParameters(0.5, 0.);
|
|
+/// vavilov->SetLineColor(2);
|
|
+/// TF1 *vavilov1 = vavilov->DrawCopy("L");
|
|
+/// vavilov->SetParameters(0.3, 0.);
|
|
+/// vavilov->SetLineColor(3);
|
|
+/// TF1 *vavilov2 = vavilov->DrawCopy("LSAME");
|
|
+/// vavilov->SetParameters(0.2, 0.);
|
|
+/// vavilov->SetLineColor(4);
|
|
+/// TF1 *vavilov3 = vavilov->DrawCopy("LSAME");
|
|
+/// vavilov->SetParameters(0.1, 0.);
|
|
+/// vavilov->SetLineColor(6);
|
|
+/// TF1 *vavilov4 = vavilov->DrawCopy("LSAME");
|
|
+///
|
|
+/// legend = new TLegend(0.5, 0.65, 0.85, 0.85);
|
|
+/// legend->AddEntry(vavilov1, "kappa = 0.5, beta2 = 0", "L");
|
|
+/// legend->AddEntry(vavilov2, "kappa = 0.3, beta2 = 0", "L");
|
|
+/// legend->AddEntry(vavilov3, "kappa = 0.2, beta2 = 0", "L");
|
|
+/// legend->AddEntry(vavilov4, "kappa = 0.1, beta2 = 0", "L");
|
|
+/// legend->Draw();
|
|
+/// }
|
|
+/// End_Macro
|
|
|
|
Double_t TMath::Vavilov(Double_t x, Double_t kappa, Double_t beta2)
|
|
{
|
|
-/*
|
|
-<img src="gif/Vavilov.gif">
|
|
-*/
|
|
-//End_Html
|
|
-
|
|
Double_t *ac = new Double_t[14];
|
|
Double_t *hc = new Double_t[9];
|
|
|