opnsense-src/lib/msun/ld128
Bruce Evans 27aa844253 Centralize the complications for special efficient rounding to integers.
This was open-coded in range reduction for trig and exp functions.  Now
there are 3 static inline functions rnint[fl]() that replace open-coded
expressions, and type-generic irint() and i64rint() macros that hide the
complications for efficiently using non-generic irint() and irintl()
functions and casts.

Special details:

ld128/e_rem_pio2l.h needs to use i64rint() since it needs a 46-bit integer
result.  Everything else only needs a (less than) 32-bit integer result so
uses irint().

Float and double cases now use float_t and double_t locally instead of
STRICT_ASSIGN() to avoid bugs in extra precision.

On amd64, inline asm is now only used for irint() on long doubles.  The SSE
asm for irint() on amd64 only existed because the ifdef tangles made the
correct method of simply casting to int for this case non-obvious.
2018-07-20 12:42:24 +00:00
..
e_lgammal_r.c The value small=2**-(p+3), where p is the precision, can be determine from 2014-10-09 22:39:52 +00:00
e_powl.c Add a macro nan_mix() and use it to get NaN results that are (bitwise) 2018-07-17 07:42:14 +00:00
e_rem_pio2l.h Centralize the complications for special efficient rounding to integers. 2018-07-20 12:42:24 +00:00
invtrig.c lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
invtrig.h lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
k_cosl.c Add kernel functions for 128-bit long doubles. These could be improved 2008-02-17 07:32:31 +00:00
k_expl.h Centralize the complications for special efficient rounding to integers. 2018-07-20 12:42:24 +00:00
k_sinl.c Add kernel functions for 128-bit long doubles. These could be improved 2008-02-17 07:32:31 +00:00
k_tanl.c Add kernel functions for 128-bit long doubles. These could be improved 2008-02-17 07:32:31 +00:00
s_erfl.c * Makefile: 2014-07-13 17:05:03 +00:00
s_exp2l.c lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
s_expl.c Centralize the complications for special efficient rounding to integers. 2018-07-20 12:42:24 +00:00
s_logl.c lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
s_nanl.c lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00