Uploaded image for project: 'ROOT'
  1. ROOT
  2. ROOT-8572

Interpolator never prints warning about not printing further warnings

    XMLWordPrintable

    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 11-11-11
                   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 11-11-11
                      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

        Attachments

          Activity

            People

            • Assignee:
              amadio Guilherme Amadio
              Reporter:
              suhl Sebastian Uhl (Inactive)
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:
                Actual End: