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

Alex Herbert commented on MATH-1692:
------------------------------------

The fix is more involved than previously noted:
{noformat}
asinh(a) = sign(a) * log(|a| + sqrt(a * a + 1))

a < 2^27:
   // canonical definition
a < 2^1023:
   sign(a) * log(2 * |a|)
otherwise:
   sign(a) * [log(|a|) + log(2)]{noformat}
{noformat}
acosh(a) = log(a + sqrt(a * a - 1))

a < 1.0:
   The argument to log is < 0. The result is complex. return NaN.
a < 2^27:
   // canonical definition
a < 2^1023:
   log(2 * |a|)
otherwise:
   log(|a|) + log(2)
 {noformat}
Fix applied in commit:

d38ed3d6c432fdf43f916a87363ecef34752d779

> "AccurateMath": Bug in "asinh" and "acosh"
> ------------------------------------------
>
>                 Key: MATH-1692
>                 URL: https://issues.apache.org/jira/browse/MATH-1692
>             Project: Commons Math
>          Issue Type: Bug
>          Components: legacy-core
>    Affects Versions: 4.0-beta1
>            Reporter: Gilles Sadowski
>            Priority: Minor
>              Labels: comparison, jdk27, unit-test
>
> Current code builds fine with JDK 11, 17 and 21, but with JDK 27, the 
> following failures occur:
> {noformat}
> [INFO] Running 
> org.apache.commons.math4.legacy.core.jdkmath.AccurateMathStrictComparisonTest
> [ERROR] Tests run: 72, Failures: 2, Errors: 0, Skipped: 0, Time elapsed: 
> 0.075 s <<< FAILURE! -- in 
> org.apache.commons.math4.legacy.core.jdkmath.AccurateMathStrictCompar
> isonTest
> [ERROR] 
> org.apache.commons.math4.legacy.core.jdkmath.AccurateMathStrictComparisonTest.test1[55]
>  -- Time elapsed: 0.004 s <<< FAILURE!
> java.lang.AssertionError: double asinh(-1.7976931348623157E308) expected 
> -710.4758600739439 actual -Infinity entries [6]
>         at org.junit.Assert.fail(Assert.java:89)
>         at 
> org.apache.commons.math4.legacy.core.jdkmath.AccurateMathStrictComparisonTest.reportFailedResults(AccurateMathStrictComparisonTest.java:161)
>         at 
> org.apache.commons.math4.legacy.core.jdkmath.AccurateMathStrictComparisonTest.callMethods(AccurateMathStrictComparisonTest.java:187)
>         at 
> org.apache.commons.math4.legacy.core.jdkmath.AccurateMathStrictComparisonTest.setupMethodCall(AccurateMathStrictComparisonTest.java:212)
>         at 
> org.apache.commons.math4.legacy.core.jdkmath.AccurateMathStrictComparisonTest.test1(AccurateMathStrictComparisonTest.java:94)
>         at java.base/java.lang.reflect.Method.invoke(Method.java:583)
> [ERROR] 
> org.apache.commons.math4.legacy.core.jdkmath.AccurateMathStrictComparisonTest.test1[56]
>  -- Time elapsed: 0.001 s <<< FAILURE!
> java.lang.AssertionError: double acosh(-1.7976931348623157E308) expected NaN 
> actual Infinity entries [6]
>         at org.junit.Assert.fail(Assert.java:89)
>         at 
> org.apache.commons.math4.legacy.core.jdkmath.AccurateMathStrictComparisonTest.reportFailedResults(AccurateMathStrictComparisonTest.java:161)
>         at 
> org.apache.commons.math4.legacy.core.jdkmath.AccurateMathStrictComparisonTest.callMethods(AccurateMathStrictComparisonTest.java:187)
>         at 
> org.apache.commons.math4.legacy.core.jdkmath.AccurateMathStrictComparisonTest.setupMethodCall(AccurateMathStrictComparisonTest.java:212)
>         at 
> org.apache.commons.math4.legacy.core.jdkmath.AccurateMathStrictComparisonTest.test1(AccurateMathStrictComparisonTest.java:94)
>         at java.base/java.lang.reflect.Method.invoke(Method.java:583)
> {noformat}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to