Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FP32 sinhf_u10 and FP64 sinh_u10 are inaccurate #461

Open
hdelassus opened this issue Apr 7, 2023 · 0 comments
Open

FP32 sinhf_u10 and FP64 sinh_u10 are inaccurate #461

hdelassus opened this issue Apr 7, 2023 · 0 comments
Labels

Comments

@hdelassus
Copy link

On x64 targets, we found that Sleef_sinhf_u10 and Sleef_sinh_u10 have maximum absolute error > 1 ulp.

The entry points for which the errors were reproduced are:

  • Sleef_sinh_u10
  • Sleef_sinhd1_u10
  • Sleef_sinhd1_u10purec
  • Sleef_sinhd1_u10purecfma
  • Sleef_sinhd2_u10
  • Sleef_sinhd2_u10avx2128
  • Sleef_sinhd2_u10sse2
  • Sleef_sinhd2_u10sse4
  • Sleef_sinhd4_u10avx2
  • Sleef_sinhd8_u10avx512f
  • Sleef_sinhf_u10
  • Sleef_sinhf1_u10
  • Sleef_sinhf1_u10purec
  • Sleef_sinhf1_u10purecfma
  • Sleef_sinhf4_u10
  • Sleef_sinhf4_u10avx2128
  • Sleef_sinhf4_u10sse2
  • Sleef_sinhf4_u10sse4
  • Sleef_sinhf8_u10avx2
  • Sleef_sinhf16_u10avx512f

Reproducers are attached. Compile them with:

cc -O3 sinhf-test.c -o sinhf-test -mavx512f -lm -lsleef -lmpfr
cc -O3 sinh-test.c -o sinh-test -mavx512f -lm -lsleef -lmpfr

Outputs:

$ ./test-sinhf
sinhf_0(0x1.63a626p+6) = inf
sinhf_1(0x1.63a626p+6) = inf
sinhf_2(0x1.63a626p+6) = inf
sinhf_3(0x1.63a626p+6) = inf
sinhf_4(0x1.63a626p+6) = inf
sinhf_5(0x1.63a626p+6) = inf
sinhf_6(0x1.63a626p+6) = inf
sinhf_7(0x1.63a626p+6) = inf
sinhf_8(0x1.63a626p+6) = inf
sinhf_9(0x1.63a626p+6) = inf
MPFR faithful results = 0x1.35630cp+127, 0x1.35630ep+127
$ ./test-sinh
sinh_0(-0x1.631a95ecfef5fp+9) = -inf
sinh_1(-0x1.631a95ecfef5fp+9) = -inf
sinh_2(-0x1.631a95ecfef5fp+9) = -inf
sinh_3(-0x1.631a95ecfef5fp+9) = -inf
sinh_4(-0x1.631a95ecfef5fp+9) = -inf
sinh_5(-0x1.631a95ecfef5fp+9) = -inf
sinh_6(-0x1.631a95ecfef5fp+9) = -inf
sinh_7(-0x1.631a95ecfef5fp+9) = -inf
sinh_8(-0x1.631a95ecfef5fp+9) = -inf
sinh_9(-0x1.631a95ecfef5fp+9) = -inf
MPFR faithful results = -0x1.8791fb84a0c82p+1023, -0x1.8791fb84a0c81p+1023

These results unduly overflow.

@blapie blapie added the algo label Nov 2, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants