Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 27 Feb 2019 01:56:55 +0000
From:      bugzilla-noreply@freebsd.org
To:        bugs@FreeBSD.org
Subject:   [Bug 235413] [LIBM] optizimation for cexp and cexpf
Message-ID:  <bug-235413-227-sVnu1e1JjM@https.bugs.freebsd.org/bugzilla/>
In-Reply-To: <bug-235413-227@https.bugs.freebsd.org/bugzilla/>
References:  <bug-235413-227@https.bugs.freebsd.org/bugzilla/>

index | next in thread | previous in thread | raw e-mail

https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=235413

Steve Kargl <kargl@FreeBSD.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
 Attachment #201620|0                           |1
        is obsolete|                            |

--- Comment #1 from Steve Kargl <kargl@FreeBSD.org> ---
Created attachment 202398
  --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=202398&action=edit
New patch with cexpl implementation included

The new patch cexpl.diff supercedes the old path.  It includes the changes in
the old patch as well as implementations for long double complex cexpl().  This
patch depends on https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236063

A suitable commit messages is 

* lib/msun/src/math_private.h:
  . Add an EXTRACT_LDBL80_WORDS2() macro to get access to the high and
    low word of a 64-bit significand as well as the expsign.
  . Add prototype for __ldexp_expl().
  . Add prototype for __ldexp_cexpl().

* lib/msun/src/s_cexp.c:
  . A float.h to get LDBL_MANT_DIG.
  . Add c and s to declaration, and sort.
  . Move x = 0 case to be the first case tested.  This is in preparation
    for fixing constanting folding in GCC.
  . Use sincos() instead of a call to sin() and to cos().
  . A week_refrence for LDBL_MANT_DIG == 53.

* lib/msun/src/s_cexpf.c:
  . Add c and s to declaration, and sort.
  . Move x = 0 case to be the first case tested.  This is in preparation
    for fixing constanting folding in GCC.
  . Use sincosf() instead of a call to sinf() and to cosf().

* lib/msun/src/k_exp.c:
  . Add c and s to declaration, and sort.
  . Use sincos() instead of a call to sin() and to cos().

* lib/msun/src/k_expf.c
  . Add c and s to declaration, and sort.
  . Use sincosf() instead of a call to sinf() and to cosf().

* lib/msun/ld128/k_cexpl.c:
  . Copy src/k_exp.c to here.  #if 0 ... #endif all code and have
    functions return NaN.  These functions are currently unused,
    and await someone who cares.
  . Issue a compile-time warning about the sloppiness.

* lib/msun/ld128/s_cexpl.c:
  . Copy src/s_cexp.c to here.
  . Convert "double complex" to "long double complex" without use of
    bit-twiddling.
  . Add compile-time warning about the sloppiness.
  . Add run-time warning about the sloppiness.

* lib/msun/ld80/k_cexpl.c:
  . Copy src/k_exp.c to here.
  . Convert "double complex" to "long double complex".  Use bit-twiddling.

* lib/msun/ld80/s_cexpl.c:
  . Copy src/s_cexp.c to here.
  . Convert "double complex" to "long double complex".  Use bit-twiddling
    where bits are grabbed with new EXTRACT_LDBL80_WORDS2() macro.

* lib/msun/man/cexp.3:
  . Document the addtion of cexpl.

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

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

help

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-235413-227-sVnu1e1JjM>