[ 
https://issues.apache.org/jira/browse/MATH-164?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12494375
 ] 

Luc Maisonobe commented on MATH-164:
------------------------------------

I confirm the issue. Currently, the multiplication operator is implemented 
using a single check for NaN and using the simple rules on real and imaginary 
parts if the check succeeds.

A quick check shows that there are several other related problems. For example, 
the isInfinite method checks for isNaN first and checks for infinite parts only 
afterwards. However, C99 explicitely states that a complex is considered to be 
an infinity as soon as one part is infinity, even if the other one is NaN.

So it appears that the handling of special values like NaN and infinity in the 
Complex class is not compliant with C99 at several places. Solving this needs 
some forethought.

Thanks for reporting it.

> Complex - Issue with non-compliance to C99!
> -------------------------------------------
>
>                 Key: MATH-164
>                 URL: https://issues.apache.org/jira/browse/MATH-164
>             Project: Commons Math
>          Issue Type: Wish
>    Affects Versions: 1.1
>            Reporter: Richard Lyon
>            Priority: Minor
>
> Complex z1, z2, z3;
>         
> // assign values to the two complex numbers
> z1 = new Complex(1.0, 0.0);
> z2 = new Complex(Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY);
>        
> // multiply the two complex numbers
> z3 = z1.multiply(z2);
> The result is that both the real and imaginary part of z3 are NaN. Isn't it 
> somewhat desirable that both parts of the complex should be Infinity?

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to