Merge branch 'vendor/MDOCML'
[dragonfly.git] / contrib / mpfr / BUGS
CommitLineData
ab6d115f
JM
1Copyright 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
2Contributed by the AriC and Caramel projects, INRIA.
97a2eac4
SS
3
4This file is part of the GNU MPFR Library.
5
6The GNU MPFR Library is free software; you can redistribute it and/or modify
7it under the terms of the GNU Lesser General Public License as published by
4a238c70 8the Free Software Foundation; either version 3 of the License, or (at your
97a2eac4
SS
9option) any later version.
10
11The GNU MPFR Library is distributed in the hope that it will be useful, but
12WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
14License for more details.
15
16You should have received a copy of the GNU Lesser General Public License
4a238c70
JM
17along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
18http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
1951 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
97a2eac4
SS
20
21##############################################################################
22
97a2eac4
SS
23Known bugs:
24
25* The overflow/underflow exceptions may be badly handled in some functions;
26 specially when the intermediary internal results have exponent which
27 exceeds the hardware limit (2^30 for a 32 bits CPU, and 2^62 for a 64 bits
28 CPU) or the exact result is close to an overflow/underflow threshold.
29
30* Under Linux/x86 with the traditional FPU, some functions do not work
31 if the FPU rounding precision has been changed to single (this is a
32 bad practice and should be useless, but one never knows what other
33 software will do).
34
35* Some functions do not use MPFR_SAVE_EXPO_* macros, thus do not behave
36 correctly in a reduced exponent range.
37
38* Function hypot gives incorrect result when on the one hand the difference
39 between parameters' exponents is near 2*MPFR_EMAX_MAX and on the other hand
40 the output precision or the precision of the parameter with greatest
41 absolute value is greater than 2*MPFR_EMAX_MAX-4.
42
43Potential bugs:
44
45* Possible incorrect results due to internal underflow, which can lead to
46 a huge loss of accuracy while the error analysis doesn't take that into
47 account. If the underflow occurs at the last function call (just before
48 the MPFR_CAN_ROUND), the result should be correct (or MPFR gets into an
49 infinite loop). TODO: check the code and the error analysis.
50
51* Possible integer overflows on some machines.
52
53* Possible bugs with huge precisions (> 2^30).
54
55* Possible bugs if the chosen exponent range does not allow to represent
56 the range [1/16, 16].
57
58* Possible infinite loop in some functions for particular cases: when
59 the exact result is an exactly representable number or the middle of
60 consecutive two such numbers. However for non-algebraic functions, it is
61 believed that no such case exists, except the well-known cases like cos(0)=1,
62 exp(0)=1, and so on, and the x^y function when y is an integer or y=1/2^k.
63
64* The mpfr_set_ld function may be quite slow if the long double type has an
65 exponent of more than 15 bits.
66
67* mpfr_set_d may give wrong results on some non-IEEE architectures.
68
69* Error analysis for some functions may be incorrect (out-of-date due
70 to modifications in the code?).
71
72* Possible use of non-portable feature (pre-C99) of the integer division
73 with negative result.