* libm todo
@ 2012-10-28 21:32 Szabolcs Nagy
0 siblings, 0 replies; only message in thread
From: Szabolcs Nagy @ 2012-10-28 21:32 UTC (permalink / raw)
To: musl
my libm todo list for the record (not in priority order):
- use errno on softfloat arch:
if ((math_errhandling & MATH_ERREXCEPT) == 0) errno = ...;
- arm hardfloat abi can have proper fenv
- add #pragma FENV_ACCESS ON whenever fenv is used in a function
gcc does not support it but required by c99
- use c11 CMPLX(re,im) instead of cpack(re,im)
- check the ld80 expl.c that was recently added to freebsd
- FORCE_EVAL (when we need to eval an expression for side-effects)
check if gcc has better workaround than volatile store
check functions where this might be needed
- use unified bithack method (dshape vs union{..} in fabs, copysign..)
- __invtrig cleanup (aT is globally visible now but only used by atanl)
- check if strtod and printf %f work in all rounding modes
- check if large errors of non-nearest rounding mode can be fixed
eg tan(pi/2-eps) in tozero mode has big errors
- check remaining volatile stuff (maybe apply strict_assign or force_eval)
- signbit is pure macro, __signbit is probably not needed (other than abi compatibility)
- fix __isrel in math.h (now it depends on long double isnan)
- long double macro versions of isnan, isinf
representation specific, needs some ugly ifdefs
- trigonometric functions:
__tan: 3rd arg semantics is probably not optimal
__sin,__cos,..: z,w,.. -> x2,x4,.. so degree is easier to see
use long double pi in long double code (casinl, cacosl,..)
- round to int trick fix
remove HAVE_EFFICIENT_IRINT
check +0x1.8p52 usage in rint, rempio, sin_pi in lgamma_r
- fix integer issues
int32_t -> uint32_t where needed (bit shift)
int -> int32_t (where two's complement representation is assumed)
- implement missing functions:
sqrtl -> sqrt
tgamma, tgammaf, tgammal (using lanczos approx as in boost and python)
- remove long double bessel (j*l, y*l)
- add comments to *.s
- test vectors for special cases in c99 F.9 and G.6
- complex: fix casin[h], cacos[h], catan[h]
- fix the longdb.h header (endianness check for ld80 etc)
bug fixes we made so far compared to freebsd (and openbsd)
many simple functions got rewritten to be cleaner
some signed int related ub are fixed
some useless volatile and compiler bug workarounds are cleaned up
strict_assign macro got fixed (freebsd has no real long double by default)
nextafterl did not raise underflow when result was zero
tgammal incorrectly set signgam (openbsd)
pow*(1,nan or inf) == 1 special case was wrong
nan check in modf was wrong
fmal ldexp vs ldexpl was wrong
fma* x == 0 special case check was before the isfinite check
invalid optimization in ldexp
lrint* inexact clearing was optimized away because of gcc bug
scalbn(0x1p1023, -2097)==0x1p-1074 was incorrect
modfl(+-inf) was incorrect on ld80
ilogbl was incorrect on ld80 (implicit bit was not taken into account)
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2012-10-28 21:32 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-10-28 21:32 libm todo Szabolcs Nagy
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/musl/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).