|
Message-ID: <20121028213242.GO24157@port70.net> Date: Sun, 28 Oct 2012 22:32:42 +0100 From: Szabolcs Nagy <nsz@...t70.net> To: musl@...ts.openwall.com Subject: libm todo 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)
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.