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.
|