update TODO
[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 j0l, y0l,..:
25         declare long double bessel functions in math.h?
26 uniform inexact exception raising:
27         (int)x == 0 and huge+x > 0 are used
28         unreachable code is not commented and hard to follow
29 generic code fixes:
30         int32_t -> uint32_t conversion (subtle)
31         += 1, -= 1 -> ++, --
32         TWO52, one, zero, twom1000,.. -> use reasonable consts
33         (float)1 -> 1.0f
34         ldexp -> use scalbn internally (ldexp is a wrapper)
35         i386 vs precision -> assume extended prec setting
36         long double const trunc/slowness bug
37         remove "unsupported long double format" checks
38         sign bit (sqrt)
39 fma:
40         expects single 53bit rounding
41         rewrite using long double arithmetics?
42 log2:
43         dekker vs long double arithmetics
44 tgamma:
45         missing
46         lanczos approx as in boost/math/special_functions, python/Modules/mathmodule.c
47         or bsd tgamma
48 complex
49         optimizable creal cimag (libm.h macro for internal code?)
50         cpack(x,y) vs x+I*y vs union .a[0]=x, .a[1]=y
51         fix casin[h], cacos[h], catan[h]
52         add missing long double versions
53         test? (using mdc lib, available test vectors,..)
54         Kahan, W. "Branch Cuts for Complex Elementary Functions, or Much Ado About Nothing's Sign Bit." 1987
55         Hull, Fairgrieve, Tang "Implementing complex elementary functions using exception handling" 1994
56         Hull, Fairgrieve, Tang "Implementing the complex arcsine and arccosine functions using exception handling" 1997
57         boost/math/complex
58         python/Modules/cmathmodule.c (+math, cmath tests)
59 asm:
60         i386, x86_64 asm versions
61 libm test
62         test vectors
63         special cases from c99 F.9, G.6
64         randomized test using mpfr
65 arm fenv?