> On 5 Dec 2019, at 01:39, Gilles Sadowski <gillese...@gmail.com> wrote:
> 
> Test failure here:
> ---CUT---
> ERROR] Failures:
> [ERROR]   CStandardTest.testCosh:692->assertComplex:275 Operation
> failed (z=(-Infinity,0.5)). Expected: (-Infinity,-Infinity) but was:
> (Infinity,-Infinity)
> —CUT—
> 

Sorry. I thought I had fixed it. 

I have pushed another fix that should correct the odd/even function properties 
of all the complex functions for normal use cases. The edge cases need to be 
addressed separately.

Alex


> Gilles
> 
> 2019-12-05 1:45 UTC+01:00, aherb...@apache.org <aherb...@apache.org>:
>> This is an automated email from the ASF dual-hosted git repository.
>> 
>> aherbert pushed a commit to branch master
>> in repository https://gitbox.apache.org/repos/asf/commons-numbers.git
>> 
>> commit 8963bd191ca80af6b1ba3f94998d5be0d64e43ac
>> Author: Alex Herbert <aherb...@apache.org>
>> AuthorDate: Thu Dec 5 00:44:27 2019 +0000
>> 
>>    Preserve even function in cosh
>> ---
>> .../java/org/apache/commons/numbers/complex/Complex.java   | 14
>> +++++++++++++-
>> 1 file changed, 13 insertions(+), 1 deletion(-)
>> 
>> diff --git
>> a/commons-numbers-complex/src/main/java/org/apache/commons/numbers/complex/Complex.java
>> b/commons-numbers-complex/src/main/java/org/apache/commons/numbers/complex/Complex.java
>> index 490380b..e5b9ca8 100644
>> ---
>> a/commons-numbers-complex/src/main/java/org/apache/commons/numbers/complex/Complex.java
>> +++
>> b/commons-numbers-complex/src/main/java/org/apache/commons/numbers/complex/Complex.java
>> @@ -1241,6 +1241,12 @@ public final class Complex implements Serializable
>> {
>>                 return constructor.create(Math.cosh(real) *
>> Math.cos(imaginary),
>>                                           Math.sinh(real) *
>> Math.sin(imaginary));
>>             }
>> +            // ISO C99: Preserve the even function
>> +            // f(z) = f(-z)
>> +            if (negative(real)) {
>> +                real = -real;
>> +                imaginary = -imaginary;
>> +            }
>>             // Special case for real == 0
>>             final double im = real == 0 ? Math.copySign(0, imaginary) :
>> Double.NaN;
>>             return constructor.create(Double.NaN, im);
>> @@ -1253,6 +1259,12 @@ public final class Complex implements Serializable
>> {
>>                     return constructor.create(Double.POSITIVE_INFINITY,
>> im);
>>                 }
>>                 // inf * cis(y)
>> +                // ISO C99: Preserve the even function
>> +                // f(z) = f(-z)
>> +                if (real < 0) {
>> +                    real = -real;
>> +                    imaginary = -imaginary;
>> +                }
>>                 final double re = real * Math.cos(imaginary);
>>                 final double im = real * Math.sin(imaginary);
>>                 return constructor.create(re, im);
>> @@ -1262,7 +1274,7 @@ public final class Complex implements Serializable  {
>>         }
>>         // real is NaN
>>         if (imaginary == 0) {
>> -            return constructor.create(Double.NaN, Math.copySign(0,
>> imaginary));
>> +            return constructor.create(Double.NaN, imaginary);
>>         }
>>         // optionally raises the ‘‘invalid’’ floating-point exception, for
>> nonzero y.
>>         return NAN;
>> 
>> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> For additional commands, e-mail: dev-h...@commons.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to