Copyright 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. Contributed by the Spaces project, INRIA Lorraine. This file is part of the MPFR Library. The MPFR Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The MPFR Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the MPFR Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. ############################################################################## Probably many bugs. Known bugs: * The overflow/underflow exceptions may be badly handled in some functions; specially when the intermediary internal results have exponent which exceeds the hardware limit (2^30 for a 32 bits CPU, and 2^62 for a 64 bits CPU). * Under Linux/x86 with the traditional FPU, some functions do not work if the FPU rounding precision has been changed to single (this is a bad practice and should be useless, but one never knows what other software will do). * The implementation of mpfr_lgamma is incomplete (case x negative with small exponent). * Incorrect behavior (possible infinite loop, e.g. in mpfr_exp2) in some functions on tiny arguments, e.g. +/- 2^(emin-1), due to an integer overflow in MPFR_FAST_COMPUTE_IF_SMALL_INPUT. * The mpfr_fma function behaves incorrectly if the multiplication overflows or underflows. The overflow case has been fixed except in some corner cases. Potential bugs: * Possible integer overflows on some machines. * Possible bugs with huge precisions (> 2^30). * Possible bugs if the chosen exponent range does not allow to represent the range [1/16, 16]. * Possible infinite loop in some functions for particular cases: when the exact result is an exactly representable number or the middle of consecutive two such numbers. However for non-algebraic functions, it is believed that no such case exists, except the well-known cases like cos(0)=1, exp(0)=1, and so on, and the x^y function when y is an integer or y=1/2^k. * The mpfr_set_ld function may be quite slow if the long double type has an exponent of more than 15 bits. * mpfr_set_d may give wrong results on some non-IEEE architectures. * Error analysis for some functions may be incorrect (out-of-date due to modifications in the code?).