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