xref: /dflybsd-src/contrib/mpfr/BUGS (revision 2786097444a0124b5d33763854de247e230c6629)
1*ab6d115fSJohn MarinoCopyright 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
2*ab6d115fSJohn MarinoContributed by the AriC and Caramel projects, INRIA.
397a2eac4SSimon Schubert
497a2eac4SSimon SchubertThis file is part of the GNU MPFR Library.
597a2eac4SSimon Schubert
697a2eac4SSimon SchubertThe GNU MPFR Library is free software; you can redistribute it and/or modify
797a2eac4SSimon Schubertit under the terms of the GNU Lesser General Public License as published by
84a238c70SJohn Marinothe Free Software Foundation; either version 3 of the License, or (at your
997a2eac4SSimon Schubertoption) any later version.
1097a2eac4SSimon Schubert
1197a2eac4SSimon SchubertThe GNU MPFR Library is distributed in the hope that it will be useful, but
1297a2eac4SSimon SchubertWITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
1397a2eac4SSimon Schubertor FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
1497a2eac4SSimon SchubertLicense for more details.
1597a2eac4SSimon Schubert
1697a2eac4SSimon SchubertYou should have received a copy of the GNU Lesser General Public License
174a238c70SJohn Marinoalong with the GNU MPFR Library; see the file COPYING.LESSER.  If not, see
184a238c70SJohn Marinohttp://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
194a238c70SJohn Marino51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
2097a2eac4SSimon Schubert
2197a2eac4SSimon Schubert##############################################################################
2297a2eac4SSimon Schubert
2397a2eac4SSimon SchubertKnown bugs:
2497a2eac4SSimon Schubert
2597a2eac4SSimon Schubert* The overflow/underflow exceptions may be badly handled in some functions;
2697a2eac4SSimon Schubert  specially when the intermediary internal results have exponent which
2797a2eac4SSimon Schubert  exceeds the hardware limit (2^30 for a 32 bits CPU, and 2^62 for a 64 bits
2897a2eac4SSimon Schubert  CPU) or the exact result is close to an overflow/underflow threshold.
2997a2eac4SSimon Schubert
3097a2eac4SSimon Schubert* Under Linux/x86 with the traditional FPU, some functions do not work
3197a2eac4SSimon Schubert  if the FPU rounding precision has been changed to single (this is a
3297a2eac4SSimon Schubert  bad practice and should be useless, but one never knows what other
3397a2eac4SSimon Schubert  software will do).
3497a2eac4SSimon Schubert
3597a2eac4SSimon Schubert* Some functions do not use MPFR_SAVE_EXPO_* macros, thus do not behave
3697a2eac4SSimon Schubert  correctly in a reduced exponent range.
3797a2eac4SSimon Schubert
3897a2eac4SSimon Schubert* Function hypot gives incorrect result when on the one hand the difference
3997a2eac4SSimon Schubert  between parameters' exponents is near 2*MPFR_EMAX_MAX and on the other hand
4097a2eac4SSimon Schubert  the output precision or the precision of the parameter with greatest
4197a2eac4SSimon Schubert  absolute value is greater than 2*MPFR_EMAX_MAX-4.
4297a2eac4SSimon Schubert
4397a2eac4SSimon SchubertPotential bugs:
4497a2eac4SSimon Schubert
4597a2eac4SSimon Schubert* Possible incorrect results due to internal underflow, which can lead to
4697a2eac4SSimon Schubert  a huge loss of accuracy while the error analysis doesn't take that into
4797a2eac4SSimon Schubert  account. If the underflow occurs at the last function call (just before
4897a2eac4SSimon Schubert  the MPFR_CAN_ROUND), the result should be correct (or MPFR gets into an
4997a2eac4SSimon Schubert  infinite loop). TODO: check the code and the error analysis.
5097a2eac4SSimon Schubert
5197a2eac4SSimon Schubert* Possible integer overflows on some machines.
5297a2eac4SSimon Schubert
5397a2eac4SSimon Schubert* Possible bugs with huge precisions (> 2^30).
5497a2eac4SSimon Schubert
5597a2eac4SSimon Schubert* Possible bugs if the chosen exponent range does not allow to represent
5697a2eac4SSimon Schubert  the range [1/16, 16].
5797a2eac4SSimon Schubert
5897a2eac4SSimon Schubert* Possible infinite loop in some functions for particular cases: when
5997a2eac4SSimon Schubert  the exact result is an exactly representable number or the middle of
6097a2eac4SSimon Schubert  consecutive two such numbers. However for non-algebraic functions, it is
6197a2eac4SSimon Schubert  believed that no such case exists, except the well-known cases like cos(0)=1,
6297a2eac4SSimon Schubert  exp(0)=1, and so on, and the x^y function when y is an integer or y=1/2^k.
6397a2eac4SSimon Schubert
6497a2eac4SSimon Schubert* The mpfr_set_ld function may be quite slow if the long double type has an
6597a2eac4SSimon Schubert  exponent of more than 15 bits.
6697a2eac4SSimon Schubert
6797a2eac4SSimon Schubert* mpfr_set_d may give wrong results on some non-IEEE architectures.
6897a2eac4SSimon Schubert
6997a2eac4SSimon Schubert* Error analysis for some functions may be incorrect (out-of-date due
7097a2eac4SSimon Schubert  to modifications in the code?).
7197a2eac4SSimon Schubert
7297a2eac4SSimon Schubert* Possible use of non-portable feature (pre-C99) of the integer division
7397a2eac4SSimon Schubert  with negative result.
74