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/22235] iscanonical in C++ and float128


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

--- Comment #4 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, release/2.26/master has been updated
       via  3b10c5d2abb0392d5ecfd865e2eb911ac109e36f (commit)
      from  3f68c5c9b61600f0f85c75bac15b1520d5059359 (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=3b10c5d2abb0392d5ecfd865e2eb911ac109e36f

commit 3b10c5d2abb0392d5ecfd865e2eb911ac109e36f
Author: Gabriel F. T. Gomes <gabriel@inconstante.eti.br>
Date:   Mon Oct 2 14:46:35 2017 -0300

    Add C++ versions of iscanonical for ldbl-96 and ldbl-128ibm (bug 22235)

    All representations of floating-point numbers in types with IEC 60559
    binary exchange format are canonical.  On the other hand, types with IEC
    60559 extended formats, such as those implemented under ldbl-96 and
    ldbl-128ibm, contain representations that are not canonical.

    TS 18661-1 introduced the type-generic macro iscanonical, which returns
    whether a floating-point value is canonical or not.  In Glibc, this
    type-generic macro is implemented using the macro __MATH_TG, which, when
    support for float128 is enabled, relies on __builtin_types_compatible_p
    to select between floating-point types.  However, this use of
    iscanonical breaks C++ applications, because the builtin is only
    available in C mode.

    This patch provides a C++ implementation of iscanonical that relies on
    function overloading, rather than builtins, to select between
    floating-point types.

    Unlike the C++ implementations for iszero and issignaling, this
    implementation ignores __NO_LONG_DOUBLE_MATH.  The double type always
    matches IEC 60559 double format, which is always canonical.  Thus, when
    double and long double are the same (__NO_LONG_DOUBLE_MATH), iscanonical
    always returns 1 and is not implemented with __MATH_TG.

    Tested for powerpc64, powerpc64le and x86_64.

        [BZ #22235]
        * math/math.h: Trivial fix for unbalanced parentheses in comment.
        * math/Makefile [CXX] (tests): Add test-math-iscanonical.cc.
        (CFLAGS-test-math-iscanonical.cc): New variable.
        * math/test-math-iscanonical.cc: New file.
        * sysdeps/ieee754/ldbl-96/bits/iscanonical.h (iscanonical):
        Provide a C++ implementation based on function overloading,
        rather than using __MATH_TG, which uses C-only builtins.
        * sysdeps/ieee754/ldbl-128ibm/bits/iscanonical.h (iscanonical):
        Likewise.
        * sysdeps/powerpc/powerpc64le/Makefile
        (CFLAGS-test-math-iscanonical.cc): New variable.

    (cherry picked from commit aa0235dfdebffe9b338deba51f3ba563ee9b433d)

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

Summary of changes:
 ChangeLog                                          |   15 +++++++++
 NEWS                                               |    1 +
 math/Makefile                                      |    4 ++-
 math/math.h                                        |    2 +-
 debug/tst-ssp-1.c => math/test-math-iscanonical.cc |   33 +++++++++++---------
 sysdeps/ieee754/ldbl-128ibm/bits/iscanonical.h     |   21 +++++++++++-
 sysdeps/ieee754/ldbl-96/bits/iscanonical.h         |   19 +++++++++++-
 sysdeps/powerpc/powerpc64le/Makefile               |    1 +
 8 files changed, 76 insertions(+), 20 deletions(-)
 copy debug/tst-ssp-1.c => math/test-math-iscanonical.cc (65%)

-- 
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]