Details

Type: Bug

Status: Closed (View Workflow)

Priority: High

Resolution: Fixed

Affects Version/s: 6.04/02, 6.08/02

Fix Version/s: 6.10/00

Component/s: Math Libraries

Labels:None

Environment:
SLC6 and MacOS
Description
The following commands
root [0] ROOT::Math::Interpolator i({0.5, 1.5, 2.5}, {0.0, 1.0, 0.0})

(ROOT::Math::Interpolator &) @0x7fbe1d826040

root [1] i.Eval(3.0)

Warning in <ROOT::Math::GSLInterpolator::Eval>: input domain error

(double) 0.000000

root [2] i.Eval(3.0)

Warning in <ROOT::Math::GSLInterpolator::Eval>: input domain error

(double) 0.000000

root [3] i.Eval(3.0)

Warning in <ROOT::Math::GSLInterpolator::Eval>: input domain error

(double) 0.000000

root [4] i.Eval(3.0)

Warning in <ROOT::Math::GSLInterpolator::Eval>: input domain error

(double) 0.000000

root [5] i.Eval(3.0)

(double) 0.000000

stop printing further warnings after four warnings were printed. It seems as if in such a case there also should be a warning about further warnings being suppressed in math/mathmore/src/GSLInterpolator.h lines 85, 102, 118, and 135. However, this warning is never actually printed, as the corresponding case in the if statements can never be reached.
if(nErrors < 5)

MATH_WARN_MSG("GSLInterpolator::Eval",gsl_strerror(ierr) ) //Trying to suppress errors B Zimmerman 111111

else if(nErrors == 4)

MATH_WARN_MSG("GSLInterpolator::Eval","Suppressing additional warnings");

Could this be replaced by something like for example
if(nErrors <= 4) {

MATH_WARN_MSG("GSLInterpolator::Eval",gsl_strerror(ierr) ) //Trying to suppress errors B Zimmerman 111111

if(nErrors == 4)

MATH_WARN_MSG("GSLInterpolator::Eval","Suppressing additional warnings");

}

The expected output would be:
root [0] ROOT::Math::Interpolator i({0.5, 1.5, 2.5}, {0.0, 1.0, 0.0})

(ROOT::Math::Interpolator &) @0x7fbe1d826040

root [1] i.Eval(3.0)

Warning in <ROOT::Math::GSLInterpolator::Eval>: input domain error

(double) 0.000000

root [2] i.Eval(3.0)

Warning in <ROOT::Math::GSLInterpolator::Eval>: input domain error

(double) 0.000000

root [3] i.Eval(3.0)

Warning in <ROOT::Math::GSLInterpolator::Eval>: input domain error

(double) 0.000000

root [4] i.Eval(3.0)

Warning in <ROOT::Math::GSLInterpolator::Eval>: input domain error

Warning in <ROOT::Math::GSLInterpolator::Eval>: Suppressing additional warnings

(double) 0.000000

root [5] i.Eval(3.0)

(double) 0.000000
