summaryrefslogtreecommitdiff
path: root/TODO
blob: 167ed22c2b30e2007dc170d9bb3d28adc6ba01b5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
Documentation:

- add a description of the algorithms used + proof of correctness

Installation:

- from Kevin Ryde <user42@zip.com.au>:
   Determine the exp2/exp3 thresholds using tune/tuneup.c.

- problems when mpfr uses a different compiler (gcc) than gmp (for example
	cc under Solaris 2.7).

New functions to implement:

- mpfr_mul_mpz, mpfr_div_mpz

- fused multiply-add (suggestion from Dan Zuras)

Rounding:

- implement exact rounding in mpfr_pow_ui and mpfr_ui_pow_ui

- in all functions that do rounding, return an int indicating if the result
  is exact (i.e. no bit was lost) or not (like in mpfr_div_ui)

Efficiency:

- mpfr_div is currently O(n^2) when the divisor has two limbs

Miscellaneous:

- change Library GPL to Lesser GPL, and mention INRIA and/or SPACES

- rename mpf2mpfr.h to gmp-mpf2mpfr.h?

- detect overflow/underflow in exponent (from Ben Hinkle <bhinkle4@juno.com>)

- specify exponent size (suggestion from Ben Hinkle <bhinkle4@juno.com>)

- add mpfr_get_ld for 'long double' [asked by J-C Fauge`re] ?
  (exists since K&R, but has not necessarily a greater precision than double)
  cf http://anubis.dkuug.dk/jtc1/sc22/wg14/www/docs/n869/

- from Kevin Ryde <user42@zip.com.au>:
   Also for pi.c, a pre-calculated compiled-in pi to a few thousand
   digits would be good value I think.  After all, say 10000 bits using
   1250 bytes would still be small compared to the code size!
   Store pi in round to zero mode (to recover other modes).

- rewrite mpfr_get_d2 to avoid rounding problems, for example on the IA64:
x=8.94446216651049664713e+94,74 y=-8.69096029476006043478e+78,113 pz=102,rnd=GMP_RNDU
got 8.94446216651049812927e+94
result should be 8.94446216651049516499e+94 (diff=-2 ulp)
i.e.0.101010111000010100110011011001011100111011100100010110000000000000000000000000000000000000000000000000[00000000000000000000000000]E316

- problem when reading a float followed by a character, for example 1.5*x
	[from Fabrice.Rouillier@loria.fr, Mon, 04 Dec 2000]

- use another scheme that sqrt(-1.0) in tests/tdiv.c and tests/tsqrt.c
	to generate a NaN (for example under freebsd by default,
	invalid, zerodivide and overflow generate exceptions)

- detect overflows/underflows in addition/multiplication of ordinary numbers
	(PUTOT Sylvie <sputot@aigle.saclay.cea.fr>, Tue, 20 Mar 2001)

- check correctness of +/-0 - +/-0 with different rounding modes.