mailing list of musl libc
 help / color / mirror / code / Atom feed
* 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).