public inbox for glibc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug math/19016] New: clog10 inaccuracy
@ 2015-09-28 17:57 jsm28 at gcc dot gnu.org
  2015-09-28 20:16 ` [Bug math/19016] clog, " jsm28 at gcc dot gnu.org
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: jsm28 at gcc dot gnu.org @ 2015-09-28 17:57 UTC (permalink / raw)
  To: glibc-bugs

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

            Bug ID: 19016
           Summary: clog10 inaccuracy
           Product: glibc
           Version: 2.22
            Status: NEW
          Severity: normal
          Priority: P2
         Component: math
          Assignee: unassigned at sourceware dot org
          Reporter: jsm28 at gcc dot gnu.org
  Target Milestone: ---

For some inputs, clog10 functions can produce errors slightly larger than
accepted in glibc (at least in non-default rounding modes).  E.g., for long
double on x86_64:

Failure: Test: Real part of: clog10_upward (-0xb.e1d3ep-4 -
0x7.54785e1b143f8p-4 i)
Result:
 is:         -5.91989445352436023014e-02  -0xf.27a97abc911bf7200000p-8
 should be:  -5.91989445352436023386e-02  -0xf.27a97abc911bf7d00000p-8
 difference:  3.72694496791892149191e-20   0xb.00000000000000000000p-68
 ulp       :  11.0000
 max.ulp   :  6.0000

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


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug math/19016] clog, clog10 inaccuracy
  2015-09-28 17:57 [Bug math/19016] New: clog10 inaccuracy jsm28 at gcc dot gnu.org
@ 2015-09-28 20:16 ` jsm28 at gcc dot gnu.org
  2015-09-28 22:12 ` cvs-commit at gcc dot gnu.org
  2015-09-28 22:13 ` jsm28 at gcc dot gnu.org
  2 siblings, 0 replies; 4+ messages in thread
From: jsm28 at gcc dot gnu.org @ 2015-09-28 20:16 UTC (permalink / raw)
  To: glibc-bugs

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

Joseph Myers <jsm28 at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|clog10 inaccuracy           |clog, clog10 inaccuracy

--- Comment #1 from Joseph Myers <jsm28 at gcc dot gnu.org> ---
Also for clog, e.g. for long double on x86_64:

Failure: Test: Real part of: clog_towardzero (0xb.fffffffffff8p-4 +
0x7.fffff8p-4 i)
Result:
 is:         -1.03819700729014380504e-01  -0xd.49f6c5a7e34c9b900000p-7
 should be:  -1.03819700729014380416e-01  -0xd.49f6c5a7e34c9ac00000p-7
 difference:  8.80914265144472352631e-20   0xd.00000000000000000000p-67
 ulp       :  13.0000
 max.ulp   :  8.0000

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


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug math/19016] clog, clog10 inaccuracy
  2015-09-28 17:57 [Bug math/19016] New: clog10 inaccuracy jsm28 at gcc dot gnu.org
  2015-09-28 20:16 ` [Bug math/19016] clog, " jsm28 at gcc dot gnu.org
@ 2015-09-28 22:12 ` cvs-commit at gcc dot gnu.org
  2015-09-28 22:13 ` jsm28 at gcc dot gnu.org
  2 siblings, 0 replies; 4+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2015-09-28 22:12 UTC (permalink / raw)
  To: glibc-bugs

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

--- Comment #2 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot gnu.org> ---
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  a5721ebc68cc8b761b0ffdf6dcae52723369e071 (commit)
      from  60cf80f09d029257caedc0c8abe7e3e09c64e6c7 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=a5721ebc68cc8b761b0ffdf6dcae52723369e071

commit a5721ebc68cc8b761b0ffdf6dcae52723369e071
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Mon Sep 28 22:11:22 2015 +0000

    Fix clog, clog10 inaccuracy (bug 19016).

    For arguments with X^2 + Y^2 close to 1, clog and clog10 avoid large
    errors from log(hypot) by computing X^2 + Y^2 - 1 in a way that avoids
    cancellation error and then using log1p.

    However, the thresholds for using that approach still result in log
    being used on argument as large as sqrt(13/16) > 0.9, leading to
    significant errors, in some cases above the 9ulp maximum allowed in
    glibc libm.  This patch arranges for the approach using log1p to be
    used in any cases where |X|, |Y| < 1 and X^2 + Y^2 >= 0.5 (with the
    existing allowance for cases where one of X and Y is very small),
    adjusting the __x2y2m1 functions to work with the wider range of
    inputs.  This way, log only gets used on arguments below sqrt(1/2) (or
    substantially above 1), where the error involved is much less.

    Tested for x86_64, x86, mips64 and powerpc.  For the ulps regeneration
    I removed the existing clog and clog10 ulps before regenerating to
    allow any reduced ulps to appear.  Tests added include those found by
    random test generation to produce large ulps either before or after
    the patch, and some found by trying inputs close to the (0.75, 0.5)
    threshold where the potential errors from using log are largest.

        [BZ #19016]
        * sysdeps/generic/math_private.h (__x2y2m1f): Update comment to
        allow more cases with X^2 + Y^2 >= 0.5.
        * sysdeps/ieee754/dbl-64/x2y2m1.c (__x2y2m1): Likewise.  Add -1 as
        normal element in sum instead of special-casing based on values of
        arguments.
        * sysdeps/ieee754/dbl-64/x2y2m1f.c (__x2y2m1f): Update comment.
        * sysdeps/ieee754/ldbl-128/x2y2m1l.c (__x2y2m1l): Likewise.  Add
        -1 as normal element in sum instead of special-casing based on
        values of arguments.
        * sysdeps/ieee754/ldbl-128ibm/x2y2m1l.c (__x2y2m1l): Likewise.
        * sysdeps/ieee754/ldbl-96/x2y2m1.c [FLT_EVAL_METHOD != 0]
        (__x2y2m1): Update comment.
        * sysdeps/ieee754/ldbl-96/x2y2m1l.c (__x2y2m1l): Likewise.  Add -1
        as normal element in sum instead of special-casing based on values
        of arguments.
        * math/s_clog.c (__clog): Handle more cases using log1p without
        hypot.
        * math/s_clog10.c (__clog10): Likewise.
        * math/s_clog10f.c (__clog10f): Likewise.
        * math/s_clog10l.c (__clog10l): Likewise.
        * math/s_clogf.c (__clogf): Likewise.
        * math/s_clogl.c (__clogl): Likewise.
        * math/auto-libm-test-in: Add more tests of clog and clog10.
        * math/auto-libm-test-out: Regenerated.
        * sysdeps/i386/fpu/libm-test-ulps: Update.
        * sysdeps/x86_64/fpu/libm-test-ulps: Likewise.

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                             |   30 +
 NEWS                                  |    3 +-
 math/auto-libm-test-in                |   90 +
 math/auto-libm-test-out               | 6488 +++++++++++++++++++++++++++++++++
 math/s_clog.c                         |    7 +-
 math/s_clog10.c                       |    7 +-
 math/s_clog10f.c                      |    7 +-
 math/s_clog10l.c                      |    7 +-
 math/s_clogf.c                        |    7 +-
 math/s_clogl.c                        |    7 +-
 sysdeps/generic/math_private.h        |    4 +-
 sysdeps/i386/fpu/libm-test-ulps       |   80 +-
 sysdeps/ieee754/dbl-64/x2y2m1.c       |   22 +-
 sysdeps/ieee754/dbl-64/x2y2m1f.c      |    4 +-
 sysdeps/ieee754/ldbl-128/x2y2m1l.c    |   22 +-
 sysdeps/ieee754/ldbl-128ibm/x2y2m1l.c |   24 +-
 sysdeps/ieee754/ldbl-96/x2y2m1.c      |    4 +-
 sysdeps/ieee754/ldbl-96/x2y2m1l.c     |   22 +-
 sysdeps/x86_64/fpu/libm-test-ulps     |   80 +-
 19 files changed, 6759 insertions(+), 156 deletions(-)

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


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug math/19016] clog, clog10 inaccuracy
  2015-09-28 17:57 [Bug math/19016] New: clog10 inaccuracy jsm28 at gcc dot gnu.org
  2015-09-28 20:16 ` [Bug math/19016] clog, " jsm28 at gcc dot gnu.org
  2015-09-28 22:12 ` cvs-commit at gcc dot gnu.org
@ 2015-09-28 22:13 ` jsm28 at gcc dot gnu.org
  2 siblings, 0 replies; 4+ messages in thread
From: jsm28 at gcc dot gnu.org @ 2015-09-28 22:13 UTC (permalink / raw)
  To: glibc-bugs

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

Joseph Myers <jsm28 at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|---                         |FIXED
   Target Milestone|---                         |2.23

--- Comment #3 from Joseph Myers <jsm28 at gcc dot gnu.org> ---
Fixed for 2.23.

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


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2015-09-28 22:13 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-09-28 17:57 [Bug math/19016] New: clog10 inaccuracy jsm28 at gcc dot gnu.org
2015-09-28 20:16 ` [Bug math/19016] clog, " jsm28 at gcc dot gnu.org
2015-09-28 22:12 ` cvs-commit at gcc dot gnu.org
2015-09-28 22:13 ` jsm28 at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).