TODO list update
[libm] / TODO
1 ldhack.h fix:
2         move ldouble manipulation into arch specific headers
3 long double isnan, isinf..:
4         efficient macro versions of long double classification macros?
5         (they are ld* representation specific)
6 lrint:
7         does inexact allowed on overflow?
8         see c99 7.12, 7.12.9.5, F.9, F.9.6.5
9 small file cleanups:
10         if libm.h internals is not needed (ldexp,..) then include math.h only
11 trigonometric functions:
12         __rem_pio_large: is returning 2 bits enough?
13         __tan: 3rd arg semantics is probably not optimal
14         sinf,cosf: return sindf(-y) vs -sindf(y)?
15         __sin,__cos,..: z,w,.. -> x2,x4,.. so degree is easier to see
16         __rem_pio2*: rounding trick: simply use the low 32 bits of fn?
17         use long double pi in long double code? (casin, cacos,..)
18 nan:
19         use strtod? c99 7.12.11.2
20 scalbf:
21         scalb is buggy, do we need the *f and *l version?
22 scalbn:
23         needs a rewrite: signed int problems, wrong <-50000 check
24 __ldexp_cexp:
25         only complex in math/, move to cmath?
26 j0l, y0l,..:
27         declare long double bessel functions in math.h?
28 uniform inexact exception raising:
29         (int)x == 0 and huge+x > 0 are used
30         unreachable code is not commented and hard to follow
31 generic code fixes:
32         int32_t -> uint32_t conversion (subtle)
33         += 1, -= 1 -> ++, --
34         TWO52, one, zero, twom1000,.. -> use reasonable consts
35         (float)1 -> 1.0f
36         ldexp -> use scalbn internally (ldexp is a wrapper)
37         i386 vs precision -> assume extended prec setting
38         long double const trunc/slowness bug
39         remove "unsupported long double format" checks
40         sign bit (sqrt)
41 fma:
42         expects single 53bit rounding
43         rewrite using long double arithmetics?
44 log2:
45         dekker vs long double arithmetics
46 tgamma:
47         missing
48         lanczos approx as in boost/math/special_functions, python/Modules/mathmodule.c
49         or bsd tgamma
50 complex
51         optimizable creal cimag (libm.h macro for internal code?)
52         cpack(x,y) vs x+I*y vs union .a[0]=x, .a[1]=y
53         fix casin[h], cacos[h], catan[h]
54         add missing long double versions
55         test? (using mdc lib, available test vectors,..)
56         Kahan, W. "Branch Cuts for Complex Elementary Functions, or Much Ado About Nothing's Sign Bit." 1987
57         Hull, Fairgrieve, Tang "Implementing complex elementary functions using exception handling" 1994
58         Hull, Fairgrieve, Tang "Implementing the complex arcsine and arccosine functions using exception handling" 1997
59         boost/math/complex
60         python/Modules/cmathmodule.c (+math, cmath tests)
61 asm:
62         i386, x86_64 asm versions
63 libm test
64         test vectors
65         special cases from c99 F.9, G.6
66         randomized test using mpfr
67 arm fenv?