[ 
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)

Reply via email to