Uploaded image for project: 'Commons Math'
  1. Commons Math
  2. MATH-1414

Method reciprocal() in Complex for complex numbers with parts very close to 0.0

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Minor
    • Resolution: Won't Do
    • None
    • 4.0
    • None
    • None

    Description

      In class Complex method reciprocal() returns INF only if the real and imaginary parts are exactly equal to 0.0. In the cases when real and imaginary parts are double numbers very close to 0.0, it does not hold. For example, if we run this code

      Complex complex0 = new Complex((-2.44242319E-315));
      Complex complex1 = complex0.reciprocal();
      

      the value of complex1.getReal() will be -Infinity and the value of complex1.getImaginary() will be NaN, instead of complex1 being equal to INF.

      I think the code in the method

      if (real == 0.0 && imaginary == 0.0) {
            return INF;
      }
      

      should be replaced by the equality check with some tolerance (0.01 in this case):

      if (equals(this, ZERO, 0.01)) {
           return INF;
      }
      

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              gjahanagirova Gunel Jahangirova
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: