This is the mail archive of the glibc-bugs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug math/18875] New: Excess precision leads incorrect libm


https://sourceware.org/bugzilla/show_bug.cgi?id=18875

            Bug ID: 18875
           Summary: Excess precision leads incorrect libm
           Product: glibc
           Version: unspecified
            Status: NEW
          Severity: normal
          Priority: P2
         Component: math
          Assignee: unassigned at sourceware dot org
          Reporter: hjl.tools at gmail dot com
  Target Milestone: ---
            Target: x86

sysdeps/ieee754/flt-32/w_expf.c has

  if (__builtin_expect (!isfinite (z) || z == 0, 0)

On x86 with excess precision, we got

(gdb) info float
=>R7: Valid   0x3d30e0d9b4d78a806800 +6.369668676344082156e-217 
  R6: Empty   0x40029000000000000000

and z (+6.369668676344082156e-217) == 0 became false.  This
leads to

Failure: exp (-0x1.f1cf36p+8): errno set to 0, expected 34 (ERANGE)
Failure: exp_downward (-0x1.f1cf36p+8): errno set to 0, expected 34 (ERANGE)
Failure: exp_towardzero (-0x1.f1cf36p+8): errno set to 0, expected 34 (ERANGE)

in math/test-float.out.  This may also be the cause for

Failure: exp10 (-0x1.31p+8): errno set to 0, expected 34 (ERANGE)
Failure: exp10 (-0x1.343792p+12): errno set to 0, expected 34 (ERANGE)
Failure: exp10 (-0x1.343794p+12): errno set to 0, expected 34 (ERANGE)
Failure: exp10 (-0x1.344p+12): errno set to 0, expected 34 (ERANGE)
Failure: exp10_downward (-0x1.31p+8): errno set to 0, expected 34 (ERANGE)
Failure: exp10_downward (-0x1.343792p+12): errno set to 0, expected 34 (ERANGE)
Failure: exp10_downward (-0x1.343794p+12): errno set to 0, expected 34 (ERANGE)
Failure: exp10_downward (-0x1.344p+12): errno set to 0, expected 34 (ERANGE)
Failure: exp10_towardzero (-0x1.31p+8): errno set to 0, expected 34 (ERANGE)
Failure: exp10_towardzero (-0x1.343792p+12): errno set to 0, expected 34
(ERANGE)
Failure: exp10_towardzero (-0x1.343794p+12): errno set to 0, expected 34
(ERANGE)
Failure: exp10_towardzero (-0x1.344p+12): errno set to 0, expected 34 (ERANGE)
Failure: exp2 (-0x1.3045fep+8): errno set to 0, expected 34 (ERANGE)
Failure: exp2 (-0x3.fb8p+8): errno set to 0, expected 34 (ERANGE)
Failure: exp2 (-0x3.fc8p+8): errno set to 0, expected 34 (ERANGE)
Failure: exp2 (-0x3.fd8p+8): errno set to 0, expected 34 (ERANGE)
Failure: exp2 (-0x4.01p+12): errno set to 0, expected 34 (ERANGE)
Failure: exp2 (-0x4.32p+8): errno set to 0, expected 34 (ERANGE)
Failure: exp2_downward (-0x1.3045fep+8): errno set to 0, expected 34 (ERANGE)
Failure: exp2_downward (-0x3.fb8p+8): errno set to 0, expected 34 (ERANGE)
Failure: exp2_downward (-0x3.fc8p+8): errno set to 0, expected 34 (ERANGE)
Failure: exp2_downward (-0x3.fd8p+8): errno set to 0, expected 34 (ERANGE)
Failure: exp2_downward (-0x4.01p+12): errno set to 0, expected 34 (ERANGE)
Failure: exp2_downward (-0x4.32p+8): errno set to 0, expected 34 (ERANGE)
Failure: exp2_towardzero (-0x1.3045fep+8): errno set to 0, expected 34 (ERANGE)
Failure: exp2_towardzero (-0x3.fb8p+8): errno set to 0, expected 34 (ERANGE)
Failure: exp2_towardzero (-0x3.fc8p+8): errno set to 0, expected 34 (ERANGE)
Failure: exp2_towardzero (-0x3.fd8p+8): errno set to 0, expected 34 (ERANGE)
Failure: exp2_towardzero (-0x4.01p+12): errno set to 0, expected 34 (ERANGE)
Failure: exp2_towardzero (-0x4.32p+8): errno set to 0, expected 34 (ERANGE)
Failure: pow10 (-0x1.31p+8): errno set to 0, expected 34 (ERANGE)
Failure: pow10 (-0x1.343792p+12): errno set to 0, expected 34 (ERANGE)
Failure: pow10 (-0x1.343794p+12): errno set to 0, expected 34 (ERANGE)
Failure: pow10 (-0x1.344p+12): errno set to 0, expected 34 (ERANGE)
Failure: pow10_downward (-0x1.31p+8): errno set to 0, expected 34 (ERANGE)
Failure: pow10_downward (-0x1.343792p+12): errno set to 0, expected 34 (ERANGE)
Failure: pow10_downward (-0x1.343794p+12): errno set to 0, expected 34 (ERANGE)
Failure: pow10_downward (-0x1.344p+12): errno set to 0, expected 34 (ERANGE)
Failure: pow10_towardzero (-0x1.31p+8): errno set to 0, expected 34 (ERANGE)
Failure: pow10_towardzero (-0x1.343792p+12): errno set to 0, expected 34
(ERANGE)
Failure: pow10_towardzero (-0x1.343794p+12): errno set to 0, expected 34
(ERANGE)
Failure: pow10_towardzero (-0x1.344p+12): errno set to 0, expected 34 (ERANGE)

in math/test-float.out on i686.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]