freebsd-dev/lib/msun
Michal Meloun e1b98d0774 Implement sincos, sincosf, and sincosl.
The primary benefit of these functions is that argument
reduction is done once instead of twice in independent
calls to sin() and cos().

* lib/msun/Makefile:
  . Add s_sincos[fl].c to the build.
  . Add sincos.3 documentation.
  . Add appropriate MLINKS.

* lib/msun/Symbol.map:
  . Expose sincos[fl] symbols in dynamic libm.so.

* lib/msun/man/sincos.3:
  . Documentation for sincos[fl].

* lib/msun/src/k_sincos.h:
  . Kernel for sincos() function.  This merges the individual kernels
    for sin() and cos().  The merger offered an opportunity to re-arrange
    the individual kernels for better performance.

* lib/msun/src/k_sincosf.h:
   . Kernel for sincosf() function.  This merges the individual kernels
     for sinf() and cosf(). The merger offered an opportunity to re-arrange
     the individual kernels for better performance.

* lib/msun/src/k_sincosl.h:
   . Kernel for sincosl() function.  This merges the individual kernels
     for sinl() and cosl(). The merger offered an opportunity to re-arrange
     the individual kernels for better performance.

* lib/msun/src/math.h:
  . Add prototytpes for sincos[fl]().

* lib/msun/src/math_private.h:
  . Add RETURNV macros.  This is needed to reset fpsetprec on I386
    hardware for a function with type void.

* lib/msun/src/s_sincos.c:
  . Implementation of sincos() where sin() and cos() were merged into
    one routine and possibly re-arranged for better performance.

* lib/msun/src/s_sincosf.c:
  . Implementation of sincosf() where sinf() and cosf() were merged into
    one routine and possibly re-arranged for better performance.

* lib/msun/src/s_sincosl.c:
  . Implementation of sincosl() where sinl() and cosl() were merged into
    one routine and possibly re-arranged for better performance.

PR:		215977, 218300
Submitted by:	Steven G. Kargl <sgk@troutmask.apl.washington.edu>
MFC after:	1 month
Differential Revision:	https://reviews.freebsd.org/D10765
2017-05-28 06:13:38 +00:00
..
aarch64 Add the fe* symbols to libm for arm64. 2015-03-31 19:07:28 +00:00
amd64 Add asm versions of fmod(), fmodf() and fmodl() on amd64. Add asm 2016-09-04 12:22:14 +00:00
arm libm: remove duplicate version script entries 2016-11-29 18:40:24 +00:00
bsdsrc
i387 Oops, the previous i386 version of e_fmodf.S and e_fmodl.S was 2016-09-04 15:08:14 +00:00
ld80 libm: add braces around initialization of subobjects 2016-11-01 15:11:10 +00:00
ld128 Rename cpack*() to CMPLX*(). 2014-12-16 09:21:56 +00:00
man Implement sincos, sincosf, and sincosl. 2017-05-28 06:13:38 +00:00
mips Replace SOFTFLOAT with __mips_soft_float, which gcc/clang define for us. 2017-03-16 21:05:21 +00:00
powerpc Create a new MACHINE_ARCH for Freescale PowerPC e500v2 2016-10-22 01:57:15 +00:00
riscv libm: remove duplicate version script entries 2016-11-29 18:40:24 +00:00
sparc64 Remove ia64. 2014-07-07 00:27:09 +00:00
src Implement sincos, sincosf, and sincosl. 2017-05-28 06:13:38 +00:00
tests Document that the msun tests require WARNS=0 2017-03-11 00:04:59 +00:00
x86
Makefile Implement sincos, sincosf, and sincosl. 2017-05-28 06:13:38 +00:00
Makefile.depend META MODE: Prefer INSTALL=tools/install.sh to lessen the need for xinstall.host. 2015-11-25 19:10:28 +00:00
Symbol.map Implement sincos, sincosf, and sincosl. 2017-05-28 06:13:38 +00:00