[ https://issues.apache.org/jira/browse/MATH-1414?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15974508#comment-15974508 ]
Gunel Jahangirova edited comment on MATH-1414 at 4/19/17 12:00 PM: ------------------------------------------------------------------- In case of Complex(0.0, 0.0) the value calculated for reciprocal is (Infinity, NaN) and the current implementation returns Inf. Similarly, we could return {code}Double.NEGATIVE_INFINITY{code}, if the real part of the result is {code}Double.NEGATIVE_INFINITY{code} and {code}Double.POSITIVE_INFINITY{code} in case it is {code}Double.POSITIVE_INFINITY{code}. was (Author: gjahanagirova): In case of Complex(0.0, 0.0) the value calculated for reciprocal is (Infinity, NaN) and the current implementation returns Inf. Similarly, we could return Double.NEGATIVE_INFINITY, if the real part of the result is Double.NEGATIVE_INFINITY and Double.POSITIVE_INFINITY in case it is Double.POSITIVE_INFINITY. > Method reciprocal() in Complex for complex numbers with parts very close to > 0.0 > ------------------------------------------------------------------------------- > > Key: MATH-1414 > URL: https://issues.apache.org/jira/browse/MATH-1414 > Project: Commons Math > Issue Type: Improvement > Reporter: Gunel Jahangirova > Priority: Minor > > 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 > {code} > Complex complex0 = new Complex((-2.44242319E-315)); > Complex complex1 = complex0.reciprocal(); > {code} > 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 > {code} > if (real == 0.0 && imaginary == 0.0) { > return INF; > } > {code} > should be replaced by the equality check with some tolerance (0.01 in this > case): > {code} > if (equals(this, ZERO, 0.01)) { > return INF; > } > {code} -- This message was sent by Atlassian JIRA (v6.3.15#6346)