RFR: 8338694: x86_64 intrinsic for tanh using libm [v2]
Joe Darcy
darcy at openjdk.org
Wed Sep 4 00:03:20 UTC 2024
On Fri, 30 Aug 2024 20:26:05 GMT, Srinivas Vamsi Parasa <duke at openjdk.org> wrote:
>> The goal of this PR is to implement an x86_64 intrinsic for java.lang.Math.tanh() using libm
>>
>> Benchmark (ops/ms) | Stock JDK | Tanh intrinsic | Speedup
>> -- | -- | -- | --
>> MathBench.tanhDouble | 70900 | 95618 | 1.35x
>
> Srinivas Vamsi Parasa has updated the pull request incrementally with one additional commit since the last revision:
>
> Add stub initialization and extra tanh tests
test/jdk/java/lang/Math/HyperbolicTests.java line 1009:
> 1007: for(int i = 0; i < testCases.length; i++) {
> 1008: double testCase = testCases[i];
> 1009: failures += testTanhWithReferenceUlpDiff(testCase, StrictMath.tanh(testCase), 2.5);
The allowable worst-case error is 2.5 ulp, although at many arguments FDLIBM has a smaller error.
For a general Math vs StrictMath test with an allowable 2.5 ulp error, without knowing how accurate FDLIBM is for that function and argument, a large error of approx. 2X the nominal error should be allowed (in case FDLIBM errors in one direction and the Math method errors in the other direction).
If the test is going to use randomness, then its jtreg tags should include
`@key randomness`
and it is preferable to use jdk.test.lib.RandomFactory to get and Random object since that handles printing out a key so the random sequence can be replicated if the test fails.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/20657#discussion_r1742826418
More information about the core-libs-dev
mailing list