[Bug 216862] C11 conformance: cexpl() is missing

From: <bugzilla-noreply_at_freebsd.org>
Date: Fri, 05 Nov 2021 11:53:43 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=216862

--- Comment #9 from commit-hook@FreeBSD.org ---
A commit in branch main references this bug:

URL:
https://cgit.FreeBSD.org/src/commit/?id=046e2d5db1e8afd2d09ea28e5d2a7550535d4b77

commit 046e2d5db1e8afd2d09ea28e5d2a7550535d4b77
Author:     Steve Kargl <kargl@FreeBSD.org>
AuthorDate: 2021-11-05 02:04:01 +0000
Commit:     Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2021-11-05 11:51:42 +0000

    Implementations of cexpl()

    The change implements cexpl() for both ld80 and ld128 architectures.
    Testing was done on x86_64 and aarch64 systems.

    Along the way sincos[fl]() use an optimization that reduces the argument
    to being done one rather than twice.  This optimization actually pointed
    to a bug in the ld128 version of sincosl(), which is now fixed.  In
    addition, the minmax polynomial coefficients for sincosl() have been
    updated.

    A concise log of the file-by-file changes follows.

    * include/complex.h:
      . Add a prototype for cexpl().

    * lib/msun/Makefile:
      . Add s_cexpl.c to the build.
      . Setup a link for cexpl.3 to cexp.3.

    * lib/msun/Symbol.map:
      . Expose cexpl symbol in libm shared library.

    * lib/msun/ld128/s_cexpl.c:
      * Implementation of cexpl() for 128-bit long double architectures.
        Tested on an aarch64 system.

    * lib/msun/ld80/s_cexpl.c:
      * Implementation of cexpl() for Intel 80-bit long double.

    * lib/msun/man/cexp.3:
      . Document cexpl().

    * lib/msun/man/complex.3:
      . Add a BUGS section about cpow[fl].

    * lib/msun/src/s_cexp.c:
      . Include float.h for weak references on 53-bit long double targets.
      . Use sincos() to reduce argument reduction cost.

    * lib/msun/src/s_cexpf.c:
      . Use sincosf() to reduce argument reduction cost.

    * lib/msun/src/k_sincosl.h:
      . Catch up with the new minmax polynomial coefficients for the kernel for
        the 128-bit cosl() implementation.
      . BUG FIX: *cs was used where *sn should have been.  This means that
sinl()
        was no computed correctly when iy != 0.

    * lib/msun/src/s_cosl.c:
      . Include fpmath.h to get access to IEEEl2bits.
      . Replace M_PI_4 with pio4,  a 64-bit or 113-bit approximation for pi /
4.

    PR:     216862
    MFC after:      1 week

 include/complex.h              |   2 +
 lib/msun/Makefile              |   4 +-
 lib/msun/Symbol.map            |   1 +
 lib/msun/ld128/s_cexpl.c (new) |  94 ++++++++++++++++++++++++++++++++++++
 lib/msun/ld80/s_cexpl.c (new)  | 107 +++++++++++++++++++++++++++++++++++++++++
 lib/msun/man/cexp.3            |  17 ++++---
 lib/msun/man/complex.3         |   8 ++-
 lib/msun/src/k_sincosl.h       |  29 ++++++-----
 lib/msun/src/s_cexp.c          |  16 ++++--
 lib/msun/src/s_cexpf.c         |  11 +++--
 lib/msun/src/s_cosl.c          |   7 ++-
 11 files changed, 265 insertions(+), 31 deletions(-)

-- 
You are receiving this mail because:
You are the assignee for the bug.