Upgrade MPFR from 3.1.0 to 3.1.2 on the vendor branch vendor/MPFR
authorJohn Marino <draco@marino.st>
Tue, 23 Apr 2013 19:48:02 +0000 (21:48 +0200)
committerJohn Marino <draco@marino.st>
Tue, 23 Apr 2013 20:32:15 +0000 (22:32 +0200)
245 files changed:
contrib/mpfr/AUTHORS
contrib/mpfr/BUGS
contrib/mpfr/README
contrib/mpfr/VERSION
contrib/mpfr/doc/mpfr.info
contrib/mpfr/src/abort_prec_max.c
contrib/mpfr/src/acos.c
contrib/mpfr/src/acosh.c
contrib/mpfr/src/add.c
contrib/mpfr/src/add1.c
contrib/mpfr/src/add1sp.c
contrib/mpfr/src/add_d.c
contrib/mpfr/src/add_ui.c
contrib/mpfr/src/agm.c
contrib/mpfr/src/ai.c
contrib/mpfr/src/amd/amdfam10/mparam.h
contrib/mpfr/src/amd/athlon/mparam.h
contrib/mpfr/src/amd/k8/mparam.h
contrib/mpfr/src/asin.c
contrib/mpfr/src/asinh.c
contrib/mpfr/src/atan.c
contrib/mpfr/src/atan2.c
contrib/mpfr/src/atanh.c
contrib/mpfr/src/bernoulli.c
contrib/mpfr/src/buildopt.c
contrib/mpfr/src/cache.c
contrib/mpfr/src/cbrt.c
contrib/mpfr/src/check.c
contrib/mpfr/src/clear.c
contrib/mpfr/src/clears.c
contrib/mpfr/src/cmp.c
contrib/mpfr/src/cmp2.c
contrib/mpfr/src/cmp_abs.c
contrib/mpfr/src/cmp_d.c
contrib/mpfr/src/cmp_ld.c
contrib/mpfr/src/cmp_si.c
contrib/mpfr/src/cmp_ui.c
contrib/mpfr/src/comparisons.c
contrib/mpfr/src/const_catalan.c
contrib/mpfr/src/const_euler.c
contrib/mpfr/src/const_log2.c
contrib/mpfr/src/const_pi.c
contrib/mpfr/src/constant.c
contrib/mpfr/src/copysign.c
contrib/mpfr/src/cos.c
contrib/mpfr/src/cosh.c
contrib/mpfr/src/cot.c
contrib/mpfr/src/coth.c
contrib/mpfr/src/csc.c
contrib/mpfr/src/csch.c
contrib/mpfr/src/d_div.c
contrib/mpfr/src/d_sub.c
contrib/mpfr/src/digamma.c
contrib/mpfr/src/dim.c
contrib/mpfr/src/div.c
contrib/mpfr/src/div_2exp.c
contrib/mpfr/src/div_2si.c
contrib/mpfr/src/div_2ui.c
contrib/mpfr/src/div_d.c
contrib/mpfr/src/div_ui.c
contrib/mpfr/src/dump.c
contrib/mpfr/src/eint.c
contrib/mpfr/src/eq.c
contrib/mpfr/src/erf.c
contrib/mpfr/src/erfc.c
contrib/mpfr/src/exceptions.c
contrib/mpfr/src/exp.c
contrib/mpfr/src/exp10.c
contrib/mpfr/src/exp2.c
contrib/mpfr/src/exp3.c
contrib/mpfr/src/exp_2.c
contrib/mpfr/src/expm1.c
contrib/mpfr/src/extract.c
contrib/mpfr/src/factorial.c
contrib/mpfr/src/fits_intmax.c
contrib/mpfr/src/fits_s.h
contrib/mpfr/src/fits_sint.c
contrib/mpfr/src/fits_slong.c
contrib/mpfr/src/fits_sshort.c
contrib/mpfr/src/fits_u.h
contrib/mpfr/src/fits_uint.c
contrib/mpfr/src/fits_uintmax.c
contrib/mpfr/src/fits_ulong.c
contrib/mpfr/src/fits_ushort.c
contrib/mpfr/src/fma.c
contrib/mpfr/src/fms.c
contrib/mpfr/src/frac.c
contrib/mpfr/src/free_cache.c
contrib/mpfr/src/frexp.c
contrib/mpfr/src/gamma.c
contrib/mpfr/src/gammaonethird.c
contrib/mpfr/src/gen_inverse.h
contrib/mpfr/src/generic/mparam.h
contrib/mpfr/src/get_d.c
contrib/mpfr/src/get_d64.c
contrib/mpfr/src/get_exp.c
contrib/mpfr/src/get_f.c
contrib/mpfr/src/get_flt.c
contrib/mpfr/src/get_ld.c
contrib/mpfr/src/get_patches.c
contrib/mpfr/src/get_si.c
contrib/mpfr/src/get_sj.c
contrib/mpfr/src/get_str.c
contrib/mpfr/src/get_ui.c
contrib/mpfr/src/get_uj.c
contrib/mpfr/src/get_z.c
contrib/mpfr/src/get_z_exp.c
contrib/mpfr/src/gmp_op.c
contrib/mpfr/src/grandom.c
contrib/mpfr/src/hypot.c
contrib/mpfr/src/ieee_floats.h
contrib/mpfr/src/init.c
contrib/mpfr/src/init2.c
contrib/mpfr/src/inits.c
contrib/mpfr/src/inits2.c
contrib/mpfr/src/inp_str.c
contrib/mpfr/src/int_ceil_log2.c
contrib/mpfr/src/isinf.c
contrib/mpfr/src/isinteger.c
contrib/mpfr/src/isnan.c
contrib/mpfr/src/isnum.c
contrib/mpfr/src/isqrt.c
contrib/mpfr/src/isregular.c
contrib/mpfr/src/iszero.c
contrib/mpfr/src/jn.c
contrib/mpfr/src/jyn_asympt.c
contrib/mpfr/src/li2.c
contrib/mpfr/src/lngamma.c
contrib/mpfr/src/log.c
contrib/mpfr/src/log10.c
contrib/mpfr/src/log1p.c
contrib/mpfr/src/log2.c
contrib/mpfr/src/logging.c
contrib/mpfr/src/min_prec.c
contrib/mpfr/src/minmax.c
contrib/mpfr/src/modf.c
contrib/mpfr/src/mp_clz_tab.c
contrib/mpfr/src/mpf2mpfr.h
contrib/mpfr/src/mpfr-gmp.c
contrib/mpfr/src/mpfr-gmp.h
contrib/mpfr/src/mpfr-impl.h
contrib/mpfr/src/mpfr-intmax.h
contrib/mpfr/src/mpfr-longlong.h
contrib/mpfr/src/mpfr-thread.h
contrib/mpfr/src/mpfr.h
contrib/mpfr/src/mpn_exp.c
contrib/mpfr/src/mul.c
contrib/mpfr/src/mul_2exp.c
contrib/mpfr/src/mul_2si.c
contrib/mpfr/src/mul_2ui.c
contrib/mpfr/src/mul_d.c
contrib/mpfr/src/mul_ui.c
contrib/mpfr/src/mulders.c
contrib/mpfr/src/neg.c
contrib/mpfr/src/next.c
contrib/mpfr/src/out_str.c
contrib/mpfr/src/pow.c
contrib/mpfr/src/pow_si.c
contrib/mpfr/src/pow_ui.c
contrib/mpfr/src/pow_z.c
contrib/mpfr/src/powerof2.c
contrib/mpfr/src/print_raw.c
contrib/mpfr/src/print_rnd_mode.c
contrib/mpfr/src/printf.c
contrib/mpfr/src/rec_sqrt.c
contrib/mpfr/src/reldiff.c
contrib/mpfr/src/rem1.c
contrib/mpfr/src/rint.c
contrib/mpfr/src/root.c
contrib/mpfr/src/round_near_x.c
contrib/mpfr/src/round_p.c
contrib/mpfr/src/round_prec.c
contrib/mpfr/src/round_raw_generic.c
contrib/mpfr/src/scale2.c
contrib/mpfr/src/sec.c
contrib/mpfr/src/sech.c
contrib/mpfr/src/set.c
contrib/mpfr/src/set_d.c
contrib/mpfr/src/set_d64.c
contrib/mpfr/src/set_dfl_prec.c
contrib/mpfr/src/set_exp.c
contrib/mpfr/src/set_f.c
contrib/mpfr/src/set_flt.c
contrib/mpfr/src/set_inf.c
contrib/mpfr/src/set_ld.c
contrib/mpfr/src/set_nan.c
contrib/mpfr/src/set_prc_raw.c
contrib/mpfr/src/set_prec.c
contrib/mpfr/src/set_q.c
contrib/mpfr/src/set_rnd.c
contrib/mpfr/src/set_si.c
contrib/mpfr/src/set_si_2exp.c
contrib/mpfr/src/set_sj.c
contrib/mpfr/src/set_str.c
contrib/mpfr/src/set_str_raw.c
contrib/mpfr/src/set_ui.c
contrib/mpfr/src/set_ui_2exp.c
contrib/mpfr/src/set_uj.c
contrib/mpfr/src/set_z.c
contrib/mpfr/src/set_z_exp.c
contrib/mpfr/src/set_zero.c
contrib/mpfr/src/setmax.c
contrib/mpfr/src/setmin.c
contrib/mpfr/src/setsign.c
contrib/mpfr/src/sgn.c
contrib/mpfr/src/si_op.c
contrib/mpfr/src/signbit.c
contrib/mpfr/src/sin.c
contrib/mpfr/src/sin_cos.c
contrib/mpfr/src/sinh.c
contrib/mpfr/src/sinh_cosh.c
contrib/mpfr/src/sqr.c
contrib/mpfr/src/sqrt.c
contrib/mpfr/src/sqrt_ui.c
contrib/mpfr/src/stack_interface.c
contrib/mpfr/src/strtofr.c
contrib/mpfr/src/sub.c
contrib/mpfr/src/sub1.c
contrib/mpfr/src/sub1sp.c
contrib/mpfr/src/sub_d.c
contrib/mpfr/src/sub_ui.c
contrib/mpfr/src/subnormal.c
contrib/mpfr/src/sum.c
contrib/mpfr/src/swap.c
contrib/mpfr/src/tan.c
contrib/mpfr/src/tanh.c
contrib/mpfr/src/uceil_exp2.c
contrib/mpfr/src/uceil_log2.c
contrib/mpfr/src/ufloor_log2.c
contrib/mpfr/src/ui_div.c
contrib/mpfr/src/ui_pow.c
contrib/mpfr/src/ui_pow_ui.c
contrib/mpfr/src/ui_sub.c
contrib/mpfr/src/urandom.c
contrib/mpfr/src/urandomb.c
contrib/mpfr/src/vasprintf.c
contrib/mpfr/src/version.c
contrib/mpfr/src/volatile.c
contrib/mpfr/src/x86/core2/mparam.h
contrib/mpfr/src/x86/mparam.h
contrib/mpfr/src/x86_64/core2/mparam.h
contrib/mpfr/src/x86_64/pentium4/mparam.h
contrib/mpfr/src/yn.c
contrib/mpfr/src/zeta.c
contrib/mpfr/src/zeta_ui.c

index be44206..5cd6c87 100644 (file)
@@ -18,6 +18,6 @@ Damien Stehlé           Function mpfr_get_ld_2exp
 Philippe Théveny        Main author
 Sylvain Chevillard      Original version of ai.c
 
-The main authors are included in the MPFR mailing-list <mpfr@loria.fr>.
+The main authors are included in the MPFR mailing-list <mpfr@inria.fr>.
 This is the preferred way to contact us. For further information, please
 look at the MPFR web page <http://www.mpfr.org/>.
index cc44d16..bfc3677 100644 (file)
@@ -1,5 +1,5 @@
-Copyright 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 25e65db..6d10adb 100644 (file)
@@ -1,5 +1,5 @@
-Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index fd2a018..ef538c2 100644 (file)
@@ -1 +1 @@
-3.1.0
+3.1.2
index 00683c3..ef69621 100644 (file)
@@ -1,11 +1,11 @@
 This is mpfr.info, produced by makeinfo version 4.13 from mpfr.texi.
 
 This manual documents how to install and use the Multiple Precision
-Floating-Point Reliable Library, version 3.1.0.
+Floating-Point Reliable Library, version 3.1.2.
 
    Copyright 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free
-Software Foundation, Inc.
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012,
+2013 Free Software Foundation, Inc.
 
    Permission is granted to copy, distribute and/or modify this
 document under the terms of the GNU Free Documentation License, Version
@@ -26,11 +26,11 @@ GNU MPFR
 ********
 
    This manual documents how to install and use the Multiple Precision
-Floating-Point Reliable Library, version 3.1.0.
+Floating-Point Reliable Library, version 3.1.2.
 
    Copyright 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free
-Software Foundation, Inc.
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012,
+2013 Free Software Foundation, Inc.
 
    Permission is granted to copy, distribute and/or modify this
 document under the terms of the GNU Free Documentation License, Version
@@ -209,7 +209,7 @@ details are provided in the `INSTALL' file):
 
      This will make sure MPFR was built correctly.  If you get error
      messages, please report this to the MPFR mailing-list
-     `mpfr@loria.fr'.  (*Note Reporting Bugs::, for information on what
+     `mpfr@inria.fr'.  (*Note Reporting Bugs::, for information on what
      to include in useful bug reports.)
 
   5. `make install'
@@ -274,9 +274,9 @@ problems are due to bad configuration on the user side (not specific to
 MPFR). Problems are also mentioned in the FAQ
 `http://www.mpfr.org/faq.html'.
 
-   Please report problems to the MPFR mailing-list `mpfr@loria.fr'.
-*Note Reporting Bugs::.  Some bug fixes are available on the MPFR 3.1.0
-web page `http://www.mpfr.org/mpfr-3.1.0/'.
+   Please report problems to the MPFR mailing-list `mpfr@inria.fr'.
+*Note Reporting Bugs::.  Some bug fixes are available on the MPFR 3.1.2
+web page `http://www.mpfr.org/mpfr-3.1.2/'.
 
 2.4 Getting the Latest Version of MPFR
 ======================================
@@ -291,14 +291,14 @@ File: mpfr.info,  Node: Reporting Bugs,  Next: MPFR Basics,  Prev: Installing MP
 ****************
 
 If you think you have found a bug in the MPFR library, first have a look
-on the MPFR 3.1.0 web page `http://www.mpfr.org/mpfr-3.1.0/' and the
+on the MPFR 3.1.2 web page `http://www.mpfr.org/mpfr-3.1.2/' and the
 FAQ `http://www.mpfr.org/faq.html': perhaps this bug is already known,
 in which case you may find there a workaround for it.  You might also
 look in the archives of the MPFR mailing-list:
-`http://websympa.loria.fr/wwsympa/arc/mpfr'.  Otherwise, please
-investigate and report it.  We have made this library available to you,
-and it is not to ask too much from you, to ask you to report the bugs
-that you find.
+`https://sympa.inria.fr/sympa/arc/mpfr'.  Otherwise, please investigate
+and report it.  We have made this library available to you, and it is
+not to ask too much from you, to ask you to report the bugs that you
+find.
 
    There are a few things you should think about when you put your bug
 report together.
@@ -322,7 +322,7 @@ corrected version of the library; if the bug report is poor, we will
 not do anything about it (aside of chiding you to send better bug
 reports).
 
-   Send your bug report to the MPFR mailing-list `mpfr@loria.fr'.
+   Send your bug report to the MPFR mailing-list `mpfr@inria.fr'.
 
    If you think something in this manual is unclear, or downright
 incorrect, or if the language needs to be improved, please send a note
@@ -929,8 +929,10 @@ Initialization Functions::).
      option `--enable-decimal-float', which also requires
      `--with-gmp-build', and when the compiler or system provides the
      `_Decimal64' data type (recent versions of GCC support this data
-     type).  `mpfr_set_q' might fail if the numerator (or the
-     denominator) can not be represented as a `mpfr_t'.
+     type); to use `mpfr_set_decimal64', one should define the macro
+     `MPFR_WANT_DECIMAL_FLOATS' before including `mpfr.h'.
+     `mpfr_set_q' might fail if the numerator (or the denominator) can
+     not be represented as a `mpfr_t'.
 
      Note: If you want to store a floating-point constant to a `mpfr_t',
      you should use `mpfr_set_str' (or one of the MPFR constant
@@ -2286,6 +2288,13 @@ File: mpfr.info,  Node: Miscellaneous Functions,  Next: Exception Related Functi
      be created using the GMP `gmp_randinit' function (see the GMP
      manual).
 
+     The combination of the ternary values is returned like with
+     `mpfr_sin_cos'. If ROP2 is a null pointer, the second ternary
+     value is assumed to be 0 (note that the encoding of the only
+     ternary value is not the same as the usual encoding for functions
+     that return only one result). Otherwise the ternary value of a
+     random number is always non-zero.
+
      Note: the note for `mpfr_urandomb' holds too. In addition, the
      exponent range and the rounding mode might have a side effect on
      the next random state.
@@ -2994,11 +3003,12 @@ against another MPFR version (older or newer), as described below.
 
    * `mpfr_urandom' and `mpfr_urandomb' changed in MPFR 3.1.  Their
      behavior no longer depends on the platform (assuming this is also
-     true for GMP's random generator).  As a consequence, the returned
-     values can be different between MPFR 3.1 and previous MPFR
-     versions.  Note: as the reproducibility of these functions was not
-     specified before MPFR 3.1, the MPFR 3.1 behavior is _not_ regarded
-     as backward incompatible with previous versions.
+     true for GMP's random generator, which is not the case between GMP
+     4.1 and 4.2 if `gmp_randinit_default' is used).  As a consequence,
+     the returned values can be different between MPFR 3.1 and previous
+     MPFR versions.  Note: as the reproducibility of these functions
+     was not specified before MPFR 3.1, the MPFR 3.1 behavior is _not_
+     regarded as backward incompatible with previous versions.
 
 
 \1f
@@ -3083,14 +3093,15 @@ the portability of MPFR in 2002-2004.
 without the continuous support of INRIA, and of the LORIA (Nancy,
 France) and LIP (Lyon, France) laboratories. In particular the main
 authors were or are members of the PolKA, Spaces, Cacao and Caramel
-project-teams at LORIA and of the Arénaire project-team at LIP.  This
-project was started during the Fiable (reliable in French) action
-supported by INRIA, and continued during the AOC action.  The
+project-teams at LORIA and of the Arénaire and AriC project-teams at
+LIP.  This project was started during the Fiable (reliable in French)
+action supported by INRIA, and continued during the AOC action.  The
 development of MPFR was also supported by a grant (202F0659 00 MPN 121)
 from the Conseil Régional de Lorraine in 2002, from INRIA by an
 "associate engineer" grant (2003-2005), an "opération de développement
 logiciel" grant (2007-2009), and the post-doctoral grant of Sylvain
-Chevillard in 2009-2010.
+Chevillard in 2009-2010.  The MPFR-MPC workshop in June 2012 was partly
+supported by the ERC grant ANTICS of Andreas Enge.
 
 \1f
 File: mpfr.info,  Node: References,  Next: GNU Free Documentation License,  Prev: Contributors,  Up: Top
@@ -3690,13 +3701,13 @@ Function and Type Index
 * mpfr_atan2:                            Special Functions.   (line  65)
 * mpfr_atanh:                            Special Functions.   (line 138)
 * mpfr_buildopt_decimal_p:               Miscellaneous Functions.
-                                                              (line 156)
+                                                              (line 163)
 * mpfr_buildopt_gmpinternals_p:          Miscellaneous Functions.
-                                                              (line 161)
+                                                              (line 168)
 * mpfr_buildopt_tls_p:                   Miscellaneous Functions.
-                                                              (line 150)
+                                                              (line 157)
 * mpfr_buildopt_tune_case:               Miscellaneous Functions.
-                                                              (line 166)
+                                                              (line 173)
 * mpfr_can_round:                        Rounding Related Functions.
                                                               (line  37)
 * mpfr_cbrt:                             Basic Arithmetic Functions.
@@ -3750,7 +3761,7 @@ Function and Type Index
 * mpfr_const_log2:                       Special Functions.   (line 256)
 * mpfr_const_pi:                         Special Functions.   (line 257)
 * mpfr_copysign:                         Miscellaneous Functions.
-                                                              (line 104)
+                                                              (line 111)
 * mpfr_cos:                              Special Functions.   (line  30)
 * mpfr_cosh:                             Special Functions.   (line 115)
 * mpfr_cot:                              Special Functions.   (line  48)
@@ -3862,7 +3873,7 @@ Function and Type Index
 * mpfr_get_emin_min:                     Exception Related Functions.
                                                               (line  28)
 * mpfr_get_exp:                          Miscellaneous Functions.
-                                                              (line  82)
+                                                              (line  89)
 * mpfr_get_f:                            Conversion Functions.
                                                               (line  73)
 * mpfr_get_flt:                          Conversion Functions.
@@ -3872,7 +3883,7 @@ Function and Type Index
 * mpfr_get_ld_2exp:                      Conversion Functions.
                                                               (line  36)
 * mpfr_get_patches:                      Miscellaneous Functions.
-                                                              (line 141)
+                                                              (line 148)
 * mpfr_get_prec:                         Initialization Functions.
                                                               (line 147)
 * mpfr_get_si:                           Conversion Functions.
@@ -3886,7 +3897,7 @@ Function and Type Index
 * mpfr_get_uj:                           Conversion Functions.
                                                               (line  23)
 * mpfr_get_version:                      Miscellaneous Functions.
-                                                              (line 110)
+                                                              (line 117)
 * mpfr_get_z:                            Conversion Functions.
                                                               (line  68)
 * mpfr_get_z_2exp:                       Conversion Functions.
@@ -4055,7 +4066,7 @@ Function and Type Index
 * mpfr_set_erangeflag:                   Exception Related Functions.
                                                               (line 125)
 * mpfr_set_exp:                          Miscellaneous Functions.
-                                                              (line  87)
+                                                              (line  94)
 * mpfr_set_f:                            Assignment Functions.
                                                               (line  24)
 * mpfr_set_flt:                          Assignment Functions.
@@ -4063,11 +4074,11 @@ Function and Type Index
 * mpfr_set_inexflag:                     Exception Related Functions.
                                                               (line 124)
 * mpfr_set_inf:                          Assignment Functions.
-                                                              (line 145)
+                                                              (line 147)
 * mpfr_set_ld:                           Assignment Functions.
                                                               (line  19)
 * mpfr_set_nan:                          Assignment Functions.
-                                                              (line 144)
+                                                              (line 146)
 * mpfr_set_nanflag:                      Exception Related Functions.
                                                               (line 123)
 * mpfr_set_overflow:                     Exception Related Functions.
@@ -4081,31 +4092,31 @@ Function and Type Index
 * mpfr_set_si:                           Assignment Functions.
                                                               (line  13)
 * mpfr_set_si_2exp:                      Assignment Functions.
-                                                              (line  51)
+                                                              (line  53)
 * mpfr_set_sj:                           Assignment Functions.
                                                               (line  15)
 * mpfr_set_sj_2exp:                      Assignment Functions.
-                                                              (line  55)
+                                                              (line  57)
 * mpfr_set_str:                          Assignment Functions.
-                                                              (line  63)
+                                                              (line  65)
 * mpfr_set_ui:                           Assignment Functions.
                                                               (line  12)
 * mpfr_set_ui_2exp:                      Assignment Functions.
-                                                              (line  49)
+                                                              (line  51)
 * mpfr_set_uj:                           Assignment Functions.
                                                               (line  14)
 * mpfr_set_uj_2exp:                      Assignment Functions.
-                                                              (line  53)
+                                                              (line  55)
 * mpfr_set_underflow:                    Exception Related Functions.
                                                               (line 120)
 * mpfr_set_z:                            Assignment Functions.
                                                               (line  22)
 * mpfr_set_z_2exp:                       Assignment Functions.
-                                                              (line  57)
+                                                              (line  59)
 * mpfr_set_zero:                         Assignment Functions.
-                                                              (line 146)
+                                                              (line 148)
 * mpfr_setsign:                          Miscellaneous Functions.
-                                                              (line  98)
+                                                              (line 105)
 * mpfr_sgn:                              Comparison Functions.
                                                               (line  51)
 * mpfr_si_div:                           Basic Arithmetic Functions.
@@ -4113,7 +4124,7 @@ Function and Type Index
 * mpfr_si_sub:                           Basic Arithmetic Functions.
                                                               (line  33)
 * mpfr_signbit:                          Miscellaneous Functions.
-                                                              (line  93)
+                                                              (line 100)
 * mpfr_sin:                              Special Functions.   (line  31)
 * mpfr_sin_cos:                          Special Functions.   (line  37)
 * mpfr_sinh:                             Special Functions.   (line 116)
@@ -4129,7 +4140,7 @@ Function and Type Index
 * mpfr_sqrt_ui:                          Basic Arithmetic Functions.
                                                               (line  99)
 * mpfr_strtofr:                          Assignment Functions.
-                                                              (line  81)
+                                                              (line  83)
 * mpfr_sub:                              Basic Arithmetic Functions.
                                                               (line  27)
 * mpfr_sub_d:                            Basic Arithmetic Functions.
@@ -4146,7 +4157,7 @@ Function and Type Index
                                                               (line  61)
 * mpfr_sum:                              Special Functions.   (line 275)
 * mpfr_swap:                             Assignment Functions.
-                                                              (line 152)
+                                                              (line 154)
 * mpfr_t:                                Nomenclature and Types.
                                                               (line   6)
 * mpfr_tan:                              Special Functions.   (line  32)
@@ -4172,17 +4183,17 @@ Function and Type Index
 * mpfr_vasprintf:                        Formatted Output Functions.
                                                               (line 196)
 * MPFR_VERSION:                          Miscellaneous Functions.
-                                                              (line 113)
+                                                              (line 120)
 * MPFR_VERSION_MAJOR:                    Miscellaneous Functions.
-                                                              (line 114)
+                                                              (line 121)
 * MPFR_VERSION_MINOR:                    Miscellaneous Functions.
-                                                              (line 115)
+                                                              (line 122)
 * MPFR_VERSION_NUM:                      Miscellaneous Functions.
-                                                              (line 133)
+                                                              (line 140)
 * MPFR_VERSION_PATCHLEVEL:               Miscellaneous Functions.
-                                                              (line 116)
+                                                              (line 123)
 * MPFR_VERSION_STRING:                   Miscellaneous Functions.
-                                                              (line 117)
+                                                              (line 124)
 * mpfr_vfprintf:                         Formatted Output Functions.
                                                               (line 160)
 * mpfr_vprintf:                          Formatted Output Functions.
@@ -4204,48 +4215,48 @@ Function and Type Index
 
 \1f
 Tag Table:
-Node: Top\7f880
-Node: Copying\7f2219
-Node: Introduction to MPFR\7f3979
-Node: Installing MPFR\7f6068
-Node: Reporting Bugs\7f10890
-Node: MPFR Basics\7f12823
-Node: Headers and Libraries\7f13139
-Node: Nomenclature and Types\7f16123
-Node: MPFR Variable Conventions\7f18127
-Node: Rounding Modes\7f19657
-Ref: ternary value\7f20754
-Node: Floating-Point Values on Special Numbers\7f22707
-Node: Exceptions\7f25683
-Node: Memory Handling\7f28835
-Node: MPFR Interface\7f29967
-Node: Initialization Functions\7f32063
-Node: Assignment Functions\7f38977
-Node: Combined Initialization and Assignment Functions\7f47511
-Node: Conversion Functions\7f48804
-Node: Basic Arithmetic Functions\7f57356
-Node: Comparison Functions\7f66364
-Node: Special Functions\7f69846
-Node: Input and Output Functions\7f83599
-Node: Formatted Output Functions\7f85522
-Node: Integer Related Functions\7f94641
-Node: Rounding Related Functions\7f100403
-Node: Miscellaneous Functions\7f104017
-Node: Exception Related Functions\7f112207
-Node: Compatibility with MPF\7f118961
-Node: Custom Interface\7f121649
-Node: Internals\7f125894
-Node: API Compatibility\7f127378
-Node: Type and Macro Changes\7f129308
-Node: Added Functions\7f132029
-Node: Changed Functions\7f134972
-Node: Removed Functions\7f139167
-Node: Other Changes\7f139579
-Node: Contributors\7f141108
-Node: References\7f143574
-Node: GNU Free Documentation License\7f145315
-Node: Concept Index\7f167758
-Node: Function and Type Index\7f173677
+Node: Top\7f892
+Node: Copying\7f2243
+Node: Introduction to MPFR\7f4003
+Node: Installing MPFR\7f6092
+Node: Reporting Bugs\7f10914
+Node: MPFR Basics\7f12843
+Node: Headers and Libraries\7f13159
+Node: Nomenclature and Types\7f16143
+Node: MPFR Variable Conventions\7f18147
+Node: Rounding Modes\7f19677
+Ref: ternary value\7f20774
+Node: Floating-Point Values on Special Numbers\7f22727
+Node: Exceptions\7f25703
+Node: Memory Handling\7f28855
+Node: MPFR Interface\7f29987
+Node: Initialization Functions\7f32083
+Node: Assignment Functions\7f38997
+Node: Combined Initialization and Assignment Functions\7f47651
+Node: Conversion Functions\7f48944
+Node: Basic Arithmetic Functions\7f57496
+Node: Comparison Functions\7f66504
+Node: Special Functions\7f69986
+Node: Input and Output Functions\7f83739
+Node: Formatted Output Functions\7f85662
+Node: Integer Related Functions\7f94781
+Node: Rounding Related Functions\7f100543
+Node: Miscellaneous Functions\7f104157
+Node: Exception Related Functions\7f112724
+Node: Compatibility with MPF\7f119478
+Node: Custom Interface\7f122166
+Node: Internals\7f126411
+Node: API Compatibility\7f127895
+Node: Type and Macro Changes\7f129825
+Node: Added Functions\7f132546
+Node: Changed Functions\7f135489
+Node: Removed Functions\7f139770
+Node: Other Changes\7f140182
+Node: Contributors\7f141711
+Node: References\7f144285
+Node: GNU Free Documentation License\7f146026
+Node: Concept Index\7f168469
+Node: Function and Type Index\7f174388
 \1f
 End Tag Table
 
index 4a3f356..a747e72 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_abort_prec_max -- Abort due to maximal precision overflow.
 
-Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index b81c1b4..63eddf5 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_acos -- arc-cosinus of a floating-point number
 
-Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 8eba4d2..75e931d 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_acosh -- inverse hyperbolic cosine
 
-Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 3debf72..4b938dc 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_add -- add two floating-point numbers
 
-Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 2e26a60..e77f752 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_add1 -- internal function to perform a "real" addition
 
-Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
@@ -44,12 +44,12 @@ mpfr_add1 (mpfr_ptr a, mpfr_srcptr b, mpfr_srcptr c, mpfr_rnd_t rnd_mode)
   bq = MPFR_PREC(b);
   cq = MPFR_PREC(c);
 
-  an = (aq-1)/GMP_NUMB_BITS+1; /* number of limbs of a */
+  an = MPFR_PREC2LIMBS (aq); /* number of limbs of a */
   aq2 = (mpfr_prec_t) an * GMP_NUMB_BITS;
   sh = aq2 - aq;                  /* non-significant bits in low limb */
 
-  bn = (bq-1)/GMP_NUMB_BITS+1; /* number of limbs of b */
-  cn = (cq-1)/GMP_NUMB_BITS+1; /* number of limbs of c */
+  bn = MPFR_PREC2LIMBS (bq); /* number of limbs of b */
+  cn = MPFR_PREC2LIMBS (cq); /* number of limbs of c */
 
   ap = MPFR_MANT(a);
   bp = MPFR_MANT(b);
@@ -124,7 +124,7 @@ mpfr_add1 (mpfr_ptr a, mpfr_srcptr b, mpfr_srcptr c, mpfr_rnd_t rnd_mode)
       dif = aq2 - diff_exp;
       /* dif is the number of bits of c which overlap with a' */
 
-      difn = (dif-1)/GMP_NUMB_BITS + 1;
+      difn = MPFR_PREC2LIMBS (dif);
       /* only the highest difn limbs from c have to be considered */
       if (MPFR_UNLIKELY(difn > cn))
         {
index 66c39be..91aa303 100644 (file)
@@ -1,8 +1,8 @@
 /* mpfr_add1sp -- internal function to perform a "real" addition
    All the op must have the same precision
 
-Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
@@ -107,7 +107,7 @@ mpfr_add1sp (mpfr_ptr a, mpfr_srcptr b, mpfr_srcptr c, mpfr_rnd_t rnd_mode)
 
   /* Read prec and num of limbs */
   p = MPFR_PREC(b);
-  n = (p+GMP_NUMB_BITS-1)/GMP_NUMB_BITS;
+  n = MPFR_PREC2LIMBS (p);
   MPFR_UNSIGNED_MINUS_MODULO(sh, p);
   bx = MPFR_GET_EXP(b);
   d = (mpfr_uexp_t) (bx - MPFR_GET_EXP(c));
index 3a1de86..888511a 100644 (file)
@@ -1,8 +1,8 @@
 /* mpfr_add_d -- add a multiple precision floating-point number
                  to a machine double precision float
 
-Copyright 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
@@ -34,7 +34,7 @@ mpfr_add_d (mpfr_ptr a, mpfr_srcptr b, double c, mpfr_rnd_t rnd_mode)
     (("b[%Pu]=%.*Rg c=%.20g rnd=%d",
       mpfr_get_prec(b), mpfr_log_prec, b, c, rnd_mode),
      ("a[%Pu]=%.*Rg inexact=%d",
-      mpfr_get_prec (a), mpfr_get_prec, a, inexact));
+      mpfr_get_prec (a), mpfr_log_prec, a, inexact));
 
   MPFR_SAVE_EXPO_MARK (expo);
 
index 156173a..aff6c67 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_add_ui -- add a floating-point number with a machine integer
 
-Copyright 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
@@ -29,7 +29,7 @@ mpfr_add_ui (mpfr_ptr y, mpfr_srcptr x, unsigned long int u, mpfr_rnd_t rnd_mode
   MPFR_LOG_FUNC
     (("x[%Pu]=%.*Rg u=%d rnd=%d",
       mpfr_get_prec(x), mpfr_log_prec, x, u, rnd_mode),
-     ("y[%Pu]=%.*Rg", mpfr_get_prec (y), mpfr_get_prec, y));
+     ("y[%Pu]=%.*Rg", mpfr_get_prec (y), mpfr_log_prec, y));
 
   if (MPFR_LIKELY(u != 0) )  /* if u=0, do nothing */
     {
index 1f37200..567bc46 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_agm -- arithmetic-geometric mean of two floating-point numbers
 
-Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
@@ -91,7 +91,7 @@ mpfr_agm (mpfr_ptr r, mpfr_srcptr op2, mpfr_srcptr op1, mpfr_rnd_t rnd_mode)
   q = MPFR_PREC(r);
   p = q + MPFR_INT_CEIL_LOG2(q) + 15;
   MPFR_ASSERTD (p >= 7); /* see algorithms.tex */
-  s = (p - 1) / GMP_NUMB_BITS + 1;
+  s = MPFR_PREC2LIMBS (p);
 
   /* b (op2) and a (op1) are the 2 operands but we want b >= a */
   compare = mpfr_cmp (op1, op2);
@@ -285,7 +285,7 @@ mpfr_agm (mpfr_ptr r, mpfr_srcptr op2, mpfr_srcptr op1, mpfr_rnd_t rnd_mode)
 
       /* Next iteration */
       MPFR_ZIV_NEXT (loop, p);
-      s = (p - 1) / GMP_NUMB_BITS + 1;
+      s = MPFR_PREC2LIMBS (p);
     }
   MPFR_ZIV_FREE (loop);
 
index 95c2e0b..19d9eb5 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_ai -- Airy function Ai
 
-Copyright 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 85d6270..b5b1d81 100644 (file)
@@ -1,6 +1,6 @@
 /* Various Thresholds of MPFR, not exported.  -*- mode: C -*-
 
-Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
 
 This file is part of the GNU MPFR Library.
 
index 9070050..3a48522 100644 (file)
@@ -1,6 +1,6 @@
 /* Various Thresholds of MPFR, not exported.  -*- mode: C -*-
 
-Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
 
 This file is part of the GNU MPFR Library.
 
index a2c0dc6..4f6b348 100644 (file)
@@ -1,6 +1,6 @@
 /* Various Thresholds of MPFR, not exported.  -*- mode: C -*-
 
-Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
 
 This file is part of the GNU MPFR Library.
 
index e16d087..e243dcd 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_asin -- arc-sinus of a floating-point number
 
-Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 55a4907..2741bf9 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_asinh -- inverse hyperbolic sine
 
-Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index e717c43..45e8e75 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_atan -- arc-tangent of a floating-point number
 
-Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 8c14c91..8631bee 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_atan2 -- arc-tan 2 of a floating-point number
 
-Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 00d33da..078ffc6 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_atanh -- Inverse Hyperbolic Tangente
 
-Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index e3fac22..8538155 100644 (file)
@@ -1,7 +1,7 @@
 /* bernoulli -- internal function to compute Bernoulli numbers.
 
-Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index c2e150b..67dd025 100644 (file)
@@ -1,8 +1,8 @@
 /* buildopt.c -- functions giving information about options used during the
    mpfr library compilation
 
-Copyright 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 881492e..359ac42 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_cache -- cache interface for multiple-precision constants in MPFR.
 
-Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index b10faea..8c7abcf 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_cbrt -- cube root function.
 
-Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index ddb27ae..97c9541 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_check -- Check if a floating-point number has not been corrupted.
 
-Copyright 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index cbce59f..0db60c1 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_clear -- free the memory space allocated for a floating-point number
 
-Copyright 1999, 2000, 2001, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2000, 2001, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 27209c3..bb49e0b 100644 (file)
@@ -1,8 +1,8 @@
 /* mpfr_clears --  free the memory space allocated for several
    floating-point numbers
 
-Copyright 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 0244399..d6a4268 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_cmp -- compare two floating-point numbers
 
-Copyright 1999, 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 5298010..70e40fe 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_cmp2 -- exponent shift when subtracting two numbers.
 
-Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index f0510d2..a6e6d9e 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_cmpabs -- compare the absolute values of two FP numbers
 
-Copyright 1999, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 57992c7..1341a18 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_cmp_d -- compare a floating-point number with a double
 
-Copyright 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 6bc40e7..c09bea6 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_cmp_d -- compare a floating-point number with a long double
 
-Copyright 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 44f682d..ac104a6 100644 (file)
@@ -1,8 +1,8 @@
 /* mpfr_cmp_si_2exp -- compare a floating-point number with a signed
 machine integer multiplied by a power of 2
 
-Copyright 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index d6db1d4..1e094ab 100644 (file)
@@ -1,8 +1,8 @@
 /* mpfr_cmp_ui_2exp -- compare a floating-point number with an unsigned
 machine integer multiplied by a power of 2
 
-Copyright 1999, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index cce1307..584667e 100644 (file)
@@ -1,7 +1,7 @@
 /* comparison predicates
 
-Copyright 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 2771879..c8929c1 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_const_catalan -- compute Catalan's constant.
 
-Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 451a953..2257634 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_const_euler -- Euler's constant
 
-Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 06b6991..7e6333f 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_const_log2 -- compute natural logarithm of 2
 
-Copyright 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index ffb5572..046ccc4 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_const_pi -- compute Pi
 
-Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 6979cb0..25ea40e 100644 (file)
@@ -1,7 +1,7 @@
 /* MPFR internal constant FP numbers
 
-Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 30c48bd..e6e1281 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_copysign -- Produce a value with the magnitude of x and sign bit of y
 
-Copyright 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index afcb476..aeb9efa 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_cos -- cosine of a floating-point number
 
-Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 4c53399..dbef5aa 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_cosh -- hyperbolic cosine
 
-Copyright 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 33a50b5..21b786e 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_cot - cotangent function.
 
-Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 6a2b593..5cc093b 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_coth - Hyperbolic cotangent function.
 
-Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index d2054f1..c9cc236 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_csc - cosecant function.
 
-Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index d4cd547..2eecaf7 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_csch - Hyperbolic cosecant function.
 
-Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 30d6344..4ddac9d 100644 (file)
@@ -1,8 +1,8 @@
 /* mpfr_d_div -- divide a machine double precision float
                  by a multiple precision floating-point number
 
-Copyright 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 9026b30..59d810f 100644 (file)
@@ -1,8 +1,8 @@
 /* mpfr_d_sub -- subtract a multiple precision floating-point number
                  from a machine double precision float
 
-Copyright 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 68509d5..9eb971c 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_digamma -- digamma function of a floating-point number
 
-Copyright 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index ba38fc0..29cab12 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_dim -- positive difference
 
-Copyright 2001, 2002, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2001, 2002, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 17eac6f..e683482 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_div -- divide two floating-point numbers
 
-Copyright 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index da8cd25..1dedd3b 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_div_2exp -- divide a floating-point number by a power of two
 
-Copyright 1999, 2001, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2001, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 2a21ec9..5de15b9 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_div_2si -- divide a floating-point number by a power of two
 
-Copyright 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 89a7398..89e0488 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_div_2ui -- divide a floating-point number by a power of two
 
-Copyright 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index d7a5d6b..e2f6c9f 100644 (file)
@@ -1,8 +1,8 @@
 /* mpfr_div_d -- divide a multiple precision floating-point number
                  by a machine double precision float
 
-Copyright 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 98340bd..8688411 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_div_{ui,si} -- divide a floating-point number by a machine integer
 
-Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index f25d1d8..9c5fda6 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_dump -- Dump a float to stdout.
 
-Copyright 1999, 2001, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2001, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index e379409..05bf0ce 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_eint, mpfr_eint1 -- the exponential integral
 
-Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 0b7b7a3..7589070 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_eq -- Compare two floats up to a specified bit #.
 
-Copyright 1999, 2001, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2001, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
@@ -56,8 +56,8 @@ mpfr_eq (mpfr_srcptr u, mpfr_srcptr v, unsigned long int n_bits)
   if (uexp != vexp)
     return 0; /* no bit agree */
 
-  usize = (MPFR_PREC(u) - 1) / GMP_NUMB_BITS + 1;
-  vsize = (MPFR_PREC(v) - 1) / GMP_NUMB_BITS + 1;
+  usize = MPFR_LIMB_SIZE (u);
+  vsize = MPFR_LIMB_SIZE (v);
 
   if (vsize > usize) /* exchange u and v */
     {
index 0e313eb..0b5a221 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_erf -- error function of a floating-point number
 
-Copyright 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 89989e6..653bf2f 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_erfc -- The Complementary Error Function of a floating-point number
 
-Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index f96da82..2bd89dc 100644 (file)
@@ -1,7 +1,7 @@
 /* Exception flags and utilities.
 
-Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 2cca955..82e6d4b 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_exp -- exponential of a floating-point number
 
-Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
@@ -133,7 +133,7 @@ mpfr_exp (mpfr_ptr y, mpfr_srcptr x, mpfr_rnd_t rnd_mode)
               mp_size_t yn;
               int sh;
 
-              yn = 1 + (MPFR_PREC(y) - 1) / GMP_NUMB_BITS;
+              yn = MPFR_LIMB_SIZE (y);
               sh = (mpfr_prec_t) yn * GMP_NUMB_BITS - MPFR_PREC(y);
               MPFR_MANT(y)[0] += MPFR_LIMB_ONE << sh;
               inexact = 1;
index 98c1cd0..3540cb9 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_exp10 -- power of 10 function 10^y
 
-Copyright 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 097cef2..a107d8a 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_exp2 -- power of 2 function 2^y
 
-Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 2c03cce..57fd0a4 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_exp -- exponential of a floating-point number
 
-Copyright 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 38067da..7f9ef6f 100644 (file)
@@ -1,8 +1,8 @@
 /* mpfr_exp_2 -- exponential of a floating-point number
                  using algorithms in O(n^(1/2)*M(n)) and O(n^(1/3)*M(n))
 
-Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index a458b09..1961dd4 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_expm1 -- Compute exp(x)-1
 
-Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 59e5485..0338932 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_extract -- bit-extraction function for the binary splitting algorithm
 
-Copyright 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index b84fda7..a4fee01 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_fac_ui -- factorial of a non-negative integer
 
-Copyright 2001, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2001, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 86a7a75..260338e 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_fits_intmax_p -- test whether an mpfr fits an intmax_t.
 
-Copyright 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 3c752ed..83ebc2c 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_fits_*_p -- test whether an mpfr fits a C signed type.
 
-Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 2a6d0b1..111b05c 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_fits_sint_p -- test whether an mpfr fits an int.
 
-Copyright 2003, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2003, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index a37bf29..2e37f0d 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_fits_slong_p -- test whether an mpfr fits a long.
 
-Copyright 2003, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2003, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 213b780..85e31fb 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_fits_sshort_p -- test whether an mpfr fits a short.
 
-Copyright 2003, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2003, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index ba02827..ab4715f 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_fits_*_p -- test whether an mpfr fits a C unsigned type.
 
-Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 24af7bf..6c6d3bb 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_fits_uint_p -- test whether an mpfr fits an unsigned int.
 
-Copyright 2003, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2003, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 3e9b71b..43a9ca9 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_fits_uintmax_p -- test whether an mpfr fits an uintmax_t.
 
-Copyright 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 3a3ca71..d311e7e 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_fits_ulong_p -- test whether an mpfr fits an unsigned long.
 
-Copyright 2003, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2003, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 7509ae0..25c74b1 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_fits_ushort_p -- test whether an mpfr fits an unsigned short.
 
-Copyright 2003, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2003, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 4e1083a..8454e8d 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_fma -- Floating multiply-add
 
-Copyright 2001, 2002, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2001, 2002, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index fdb2331..2c0fd53 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_fms -- Floating multiply-subtract
 
-Copyright 2001, 2002, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2001, 2002, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 85fa2f4..b857e3a 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_frac -- Fractional part of a floating-point number.
 
-Copyright 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 3747e8e..990f999 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_free_cache - Free the cache used by MPFR for internal consts.
 
-Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 8d43514..0aea130 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_frexp -- convert to integral and fractional parts
 
-Copyright 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 1969764..dbfacec 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_gamma -- gamma function
 
-Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
@@ -100,7 +100,8 @@ mpfr_gamma (mpfr_ptr gamma, mpfr_srcptr x, mpfr_rnd_t rnd_mode)
   mpfr_t xp, GammaTrial, tmp, tmp2;
   mpz_t fact;
   mpfr_prec_t realprec;
-  int compared, inex, is_integer;
+  int compared, is_integer;
+  int inex = 0;  /* 0 means: result gamma not set yet */
   MPFR_GROUP_DECL (group);
   MPFR_SAVE_EXPO_DECL (expo);
   MPFR_ZIV_DECL (loop);
@@ -296,7 +297,7 @@ mpfr_gamma (mpfr_ptr gamma, mpfr_srcptr x, mpfr_rnd_t rnd_mode)
       /* we want an upper bound for x * [log(2-x)-1].
          since x < 0, we need a lower bound on log(2-x) */
       mpfr_ui_sub (xp, 2, x, MPFR_RNDD);
-      mpfr_log2 (xp, xp, MPFR_RNDD);
+      mpfr_log (xp, xp, MPFR_RNDD);
       mpfr_sub_ui (xp, xp, 1, MPFR_RNDD);
       mpfr_mul (xp, xp, x, MPFR_RNDU);
 
@@ -377,6 +378,15 @@ mpfr_gamma (mpfr_ptr gamma, mpfr_srcptr x, mpfr_rnd_t rnd_mode)
       mpfr_mul (GammaTrial, tmp2, xp, MPFR_RNDN); /* Pi*(2-x), error (1+u)^2 */
       err_g = MPFR_GET_EXP(GammaTrial);
       mpfr_sin (GammaTrial, GammaTrial, MPFR_RNDN); /* sin(Pi*(2-x)) */
+      /* If tmp is +Inf, we compute exp(lngamma(x)). */
+      if (mpfr_inf_p (tmp))
+        {
+          inex = mpfr_explgamma (gamma, x, &expo, tmp, tmp2, rnd_mode);
+          if (inex)
+            goto end;
+          else
+            goto ziv_next;
+        }
       err_g = err_g + 1 - MPFR_GET_EXP(GammaTrial);
       /* let g0 the true value of Pi*(2-x), g the computed value.
          We have g = g0 + h with |h| <= |(1+u^2)-1|*g.
@@ -411,11 +421,16 @@ mpfr_gamma (mpfr_ptr gamma, mpfr_srcptr x, mpfr_rnd_t rnd_mode)
       if (MPFR_LIKELY (MPFR_CAN_ROUND (GammaTrial, realprec - err_g,
                                        MPFR_PREC(gamma), rnd_mode)))
         break;
+
+    ziv_next:
       MPFR_ZIV_NEXT (loop, realprec);
     }
+
+ end:
   MPFR_ZIV_FREE (loop);
 
-  inex = mpfr_set (gamma, GammaTrial, rnd_mode);
+  if (inex == 0)
+    inex = mpfr_set (gamma, GammaTrial, rnd_mode);
   MPFR_GROUP_CLEAR (group);
   mpz_clear (fact);
 
index 546fb87..93fda9c 100644 (file)
@@ -1,7 +1,7 @@
 /* Functions for evaluating Gamma(1/3) and Gamma(2/3). Used by mpfr_ai.
 
-Copyright 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 8ffb4fa..49f8ed0 100644 (file)
@@ -1,7 +1,7 @@
 /* generic inverse of a function.
 
-Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index f37c064..c0ff603 100644 (file)
@@ -1,6 +1,6 @@
 /* Various Thresholds of MPFR, not exported.  -*- mode: C -*-
 
-Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
 
 This file is part of the GNU MPFR Library.
 
index fe56d14..307148a 100644 (file)
@@ -1,8 +1,8 @@
 /* mpfr_get_d, mpfr_get_d_2exp -- convert a multiple precision floating-point
                                   number to a machine double precision float
 
-Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
@@ -100,7 +100,7 @@ mpfr_get_d (mpfr_srcptr src, mpfr_rnd_t rnd_mode)
           nbits += (1021 + e);
           MPFR_ASSERTD (nbits >= 1);
         }
-      np = (nbits + GMP_NUMB_BITS - 1) / GMP_NUMB_BITS;
+      np = MPFR_PREC2LIMBS (nbits);
       MPFR_ASSERTD ( np <= MPFR_LIMBS_PER_DOUBLE );
       carry = mpfr_round_raw_4 (tp, MPFR_MANT(src), MPFR_PREC(src), negative,
                                 nbits, rnd_mode);
index 0b20fda..ec4d8e8 100644 (file)
@@ -5,8 +5,8 @@ See http://gcc.gnu.org/ml/gcc/2006-06/msg00691.html,
 http://gcc.gnu.org/onlinedocs/gcc/Decimal-Float.html,
 and TR 24732 <http://www.open-std.org/jtc1/sc22/wg14/www/projects#24732>.
 
-Copyright 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
@@ -32,6 +32,10 @@ http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
 
 #ifdef MPFR_WANT_DECIMAL_FLOATS
 
+#ifndef DEC64_MAX
+# define DEC64_MAX 9.999999999999999E384dd
+#endif
+
 #ifdef DPD_FORMAT
 static int T[1000] = {
   0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 32,
@@ -142,26 +146,14 @@ get_decimal64_zero (int negative)
 static _Decimal64
 get_decimal64_min (int negative)
 {
-  union ieee_double_extract x;
-
-  x.s.sig = (negative) ? 1 : 0;
-  x.s.exp = 0;
-  x.s.manh = 0;
-  x.s.manl = 1;
-  return x.d;
+  return negative ? - 1E-398dd : 1E-398dd;
 }
 
 /* construct the decimal64 largest finite number with given sign */
 static _Decimal64
 get_decimal64_max (int negative)
 {
-  union ieee_double_extract x;
-
-  x.s.sig = (negative) ? 1 : 0;
-  x.s.exp = 1919;
-  x.s.manh = 1048575; /* 2^20-1 */
-  x.s.manl = ~0;
-  return x.d;
+  return negative ? - DEC64_MAX : DEC64_MAX;
 }
 
 /* one-to-one conversion:
@@ -334,7 +326,8 @@ mpfr_get_decimal64 (mpfr_srcptr src, mpfr_rnd_t rnd_mode)
   /* the largest decimal64 number is just below 10^(385) < 2^1279 */
   else if (MPFR_UNLIKELY (e > 1279)) /* then src >= 2^1279 */
     {
-      if (MPFR_RNDZ || (rnd_mode == MPFR_RNDU && negative != 0)
+      if (rnd_mode == MPFR_RNDZ
+          || (rnd_mode == MPFR_RNDU && negative != 0)
           || (rnd_mode == MPFR_RNDD && negative == 0))
         return get_decimal64_max (negative);
       else
@@ -354,6 +347,15 @@ mpfr_get_decimal64 (mpfr_srcptr src, mpfr_rnd_t rnd_mode)
              which corresponds to s=[0.]1000...000 and e=-397 */
           if (e < -397)
             {
+              if (rnd_mode == MPFR_RNDN && e == -398)
+                {
+                  /* If 0.5E-398 < |src| < 1E-398 (smallest subnormal),
+                     src should round to +/- 1E-398 in MPFR_RNDN. */
+                  mpfr_get_str (s, &e, 10, 1, src, MPFR_RNDA);
+                  return e == -398 && s[negative] <= '5' ?
+                    get_decimal64_zero (negative) :
+                    get_decimal64_min (negative);
+                }
               if (rnd_mode == MPFR_RNDZ || rnd_mode == MPFR_RNDN
                   || (rnd_mode == MPFR_RNDD && negative == 0)
                   || (rnd_mode == MPFR_RNDU && negative != 0))
@@ -379,7 +381,8 @@ mpfr_get_decimal64 (mpfr_srcptr src, mpfr_rnd_t rnd_mode)
          which corresponds to s=[0.]9999...999 and e=385 */
       else if (e > 385)
         {
-          if (MPFR_RNDZ || (rnd_mode == MPFR_RNDU && negative != 0)
+          if (rnd_mode == MPFR_RNDZ
+              || (rnd_mode == MPFR_RNDU && negative != 0)
               || (rnd_mode == MPFR_RNDD && negative == 0))
             return get_decimal64_max (negative);
           else
index 6669562..5be268f 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_get_exp - get the exponent of a floating-point number
 
-Copyright 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 5e0d37e..67b2962 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_get_f -- convert a MPFR number to a GNU MPF number
 
-Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
@@ -61,7 +61,7 @@ mpfr_get_f (mpf_ptr x, mpfr_srcptr y, mpfr_rnd_t rnd_mode)
 
           sx = PREC (x);
           SIZ (x) = sx;
-          xp = LIMBS (x);
+          xp = PTR (x);
           for (i = 0; i < sx; i++)
             xp[i] = MP_LIMB_T_MAX;
 
index 4e2f923..411e3c7 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_get_flt -- convert a mpfr_t to a machine single precision float
 
-Copyright 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
@@ -92,7 +92,7 @@ mpfr_get_flt (mpfr_srcptr src, mpfr_rnd_t rnd_mode)
           nbits += (125 + e);
           MPFR_ASSERTD (nbits >= 1);
         }
-      np = (nbits + GMP_NUMB_BITS - 1) / GMP_NUMB_BITS;
+      np = MPFR_PREC2LIMBS (nbits);
       MPFR_ASSERTD(np <= MPFR_LIMBS_PER_FLT);
       carry = mpfr_round_raw_4 (tp, MPFR_MANT(src), MPFR_PREC(src), negative,
                                 nbits, rnd_mode);
index bfd9f1b..146c516 100644 (file)
@@ -1,8 +1,8 @@
 /* mpfr_get_ld, mpfr_get_ld_2exp -- convert a multiple precision floating-point
                                     number to a machine long double
 
-Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 23de4c6..ac9f6ae 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_get_patches -- Patches that have been applied
 
-Copyright 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 065f22b..f2b2762 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_get_si -- convert a floating-point number to a signed long.
 
-Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 0af58b1..528f421 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_get_sj -- convert a MPFR number to a huge machine signed integer
 
-Copyright 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 90cd11d..b907aa6 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_get_str -- output a floating-point number to a string
 
-Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
@@ -2351,7 +2351,7 @@ mpfr_get_str (char *s, mpfr_exp_t *e, int b, size_t m, mpfr_srcptr x, mpfr_rnd_t
 
       /* the first digit will contain only r bits */
       prec = (m - 1) * pow2 + r; /* total number of bits */
-      n = (prec - 1) / GMP_NUMB_BITS + 1;
+      n = MPFR_PREC2LIMBS (prec);
 
       MPFR_TMP_MARK (marker);
       x1 = MPFR_TMP_LIMBS_ALLOC (n + 1);
@@ -2417,12 +2417,12 @@ mpfr_get_str (char *s, mpfr_exp_t *e, int b, size_t m, mpfr_srcptr x, mpfr_rnd_t
       exact = 1;
 
       /* number of limbs */
-      n = 1 + (prec - 1) / GMP_NUMB_BITS;
+      n = MPFR_PREC2LIMBS (prec);
 
       /* a will contain the approximation of the mantissa */
       a = MPFR_TMP_LIMBS_ALLOC (n);
 
-      nx = 1 + (MPFR_PREC(x) - 1) / GMP_NUMB_BITS;
+      nx = MPFR_LIMB_SIZE (x);
 
       if ((mpfr_exp_t) m == g) /* final exponent is 0, no multiplication or
                                 division to perform */
index cb70d2f..d7b11fe 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_get_ui -- convert a floating-point number to an unsigned long.
 
-Copyright 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index ba71ee0..4f085b4 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_get_uj -- convert a MPFR number to a huge machine unsigned integer
 
-Copyright 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 563f77c..13a2e99 100644 (file)
@@ -1,8 +1,8 @@
 /* mpfr_get_z -- get a multiple-precision integer from
                  a floating-point number
 
-Copyright 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 3fdbc36..30a5f18 100644 (file)
@@ -1,8 +1,8 @@
 /* mpfr_get_z_2exp -- get a multiple-precision integer and an exponent
                       from a floating-point number
 
-Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 307d46f..769cd03 100644 (file)
@@ -1,7 +1,7 @@
 /* Implementations of operations between mpfr and mpz/mpq data
 
-Copyright 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 51eb451..f3aead3 100644 (file)
@@ -3,8 +3,8 @@
    distribution and round it to the precision of rop1, rop2 according
    to the given rounding mode.
 
-Copyright 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 8475e27..79e25ab 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_hypot -- Euclidean distance
 
-Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 20fd204..fe52468 100644 (file)
@@ -1,7 +1,7 @@
 /* auxiliary data to generate special IEEE floats (NaN, +Inf, -Inf)
 
-Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 434f47c..a36de47 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_init -- initialize a floating-point number
 
-Copyright 1999, 2001, 2002, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2001, 2002, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index e4329b6..25f53af 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_init2 -- initialize a floating-point number with given precision
 
-Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
@@ -51,7 +51,7 @@ mpfr_init2 (mpfr_ptr x, mpfr_prec_t p)
      which both have an odd mantissa */
   MPFR_ASSERTN(p >= MPFR_PREC_MIN && p <= MPFR_PREC_MAX);
 
-  xsize = (mp_size_t) ((p - 1) / GMP_NUMB_BITS) + 1;
+  xsize = MPFR_PREC2LIMBS (p);
   tmp   = (mpfr_limb_ptr) (*__gmp_allocate_func)(MPFR_MALLOC_SIZE(xsize));
 
   MPFR_PREC(x) = p;                /* Set prec */
index 3eddd6f..b27599d 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_inits -- initialize several floating-point numbers
 
-Copyright 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 11f1a48..dd3d32d 100644 (file)
@@ -1,8 +1,8 @@
 /* mpfr_inits2 -- initialize several floating-point numbers with given
    precision
 
-Copyright 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index fa3ea24..5679844 100644 (file)
@@ -1,8 +1,8 @@
 /* mpfr_inp_str -- input a number in base BASE from stdio stream STREAM
                    and store the result in ROP
 
-Copyright 1999, 2001, 2002, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2001, 2002, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 374929c..5763830 100644 (file)
@@ -1,7 +1,7 @@
 /* __gmpfr_int_ceil_log2 -- Integer ceil of log2(x)
 
-Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 9d12988..85cb6fd 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_inf_p -- check for infinities
 
-Copyright 2000, 2001, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2000, 2001, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 071b759..b82a95d 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_integer_p -- test if a mpfr variable is integer.
 
-Copyright 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 7275906..4049701 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_nan_p -- check for NaN
 
-Copyright 2000, 2001, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2000, 2001, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index dd772ee..9f25138 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_number_p -- check for ordinary numbers
 
-Copyright 2000, 2001, 2002, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2000, 2001, 2002, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index c5f744d..34d02ff 100644 (file)
@@ -1,7 +1,7 @@
 /* __gmpfr_isqrt && __gmpfr_cuberoot -- Integer square root and cube root
 
-Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 1e96ed5..51f47ab 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_regular_p -- check for regular number (neither NaN, Inf or zero)
 
-Copyright 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 4811006..ed9e9f7 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_zero_p -- check for zero
 
-Copyright 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 9e1a16e..f857207 100644 (file)
@@ -1,8 +1,8 @@
 /* mpfr_j0, mpfr_j1, mpfr_jn -- Bessel functions of 1st kind, integer order.
    http://www.opengroup.org/onlinepubs/009695399/functions/j0.html
 
-Copyright 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 2ddb4bf..2f0e2fd 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_jn_asympt, mpfr_yn_asympt -- shared code for mpfr_jn and mpfr_yn
 
-Copyright 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 19565db..c118c0f 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_li2 -- Dilogarithm.
 
-Copyright 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 4831517..c400bd8 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_lngamma -- lngamma function
 
-Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
@@ -49,9 +49,72 @@ mpfr_gamma_alpha (mpfr_t s, mpfr_prec_t p)
     mpfr_set_ui_2exp (s, 9, -1, MPFR_RNDN); /* 4.5 */
 }
 
-#ifndef IS_GAMMA
+#ifdef IS_GAMMA
+
+/* This function is called in case of intermediate overflow/underflow.
+   The s1 and s2 arguments are temporary MPFR numbers, having the
+   working precision. If the result could be determined, then the
+   flags are updated via pexpo, y is set to the result, and the
+   (non-zero) ternary value is returned. Otherwise 0 is returned
+   in order to perform the next Ziv iteration. */
 static int
-unit_bit (mpfr_srcptr (x))
+mpfr_explgamma (mpfr_ptr y, mpfr_srcptr x, mpfr_save_expo_t *pexpo,
+                mpfr_ptr s1, mpfr_ptr s2, mpfr_rnd_t rnd)
+{
+  mpfr_t t1, t2;
+  int inex1, inex2, sign;
+  MPFR_BLOCK_DECL (flags1);
+  MPFR_BLOCK_DECL (flags2);
+  MPFR_GROUP_DECL (group);
+
+  MPFR_BLOCK (flags1, inex1 = mpfr_lgamma (s1, &sign, x, MPFR_RNDD));
+  MPFR_ASSERTN (inex1 != 0);
+  /* s1 = RNDD(lngamma(x)), inexact */
+  if (MPFR_UNLIKELY (MPFR_OVERFLOW (flags1)))
+    {
+      if (MPFR_SIGN (s1) > 0)
+        {
+          MPFR_SAVE_EXPO_UPDATE_FLAGS (*pexpo, MPFR_FLAGS_OVERFLOW);
+          return mpfr_overflow (y, rnd, sign);
+        }
+      else
+        {
+          MPFR_SAVE_EXPO_UPDATE_FLAGS (*pexpo, MPFR_FLAGS_UNDERFLOW);
+          return mpfr_underflow (y, rnd == MPFR_RNDN ? MPFR_RNDZ : rnd, sign);
+        }
+    }
+
+  mpfr_set (s2, s1, MPFR_RNDN);     /* exact */
+  mpfr_nextabove (s2);              /* v = RNDU(lngamma(z0)) */
+
+  if (sign < 0)
+    rnd = MPFR_INVERT_RND (rnd);  /* since the result with be negated */
+  MPFR_GROUP_INIT_2 (group, MPFR_PREC (y), t1, t2);
+  MPFR_BLOCK (flags1, inex1 = mpfr_exp (t1, s1, rnd));
+  MPFR_BLOCK (flags2, inex2 = mpfr_exp (t2, s2, rnd));
+  /* t1 is the rounding with mode 'rnd' of a lower bound on |Gamma(x)|,
+     t2 is the rounding with mode 'rnd' of an upper bound, thus if both
+     are equal, so is the wanted result. If t1 and t2 differ or the flags
+     differ, at some point of Ziv's loop they should agree. */
+  if (mpfr_equal_p (t1, t2) && flags1 == flags2)
+    {
+      MPFR_ASSERTN ((inex1 > 0 && inex2 > 0) || (inex1 < 0 && inex2 < 0));
+      mpfr_set4 (y, t1, MPFR_RNDN, sign);  /* exact */
+      if (sign < 0)
+        inex1 = - inex1;
+      MPFR_SAVE_EXPO_UPDATE_FLAGS (*pexpo, flags1);
+    }
+  else
+    inex1 = 0;  /* couldn't determine the result */
+  MPFR_GROUP_CLEAR (group);
+
+  return inex1;
+}
+
+#else
+
+static int
+unit_bit (mpfr_srcptr x)
 {
   mpfr_exp_t expo;
   mpfr_prec_t prec;
@@ -67,7 +130,7 @@ unit_bit (mpfr_srcptr (x))
 
   /* Now, the unit bit is represented. */
 
-  prec = ((prec - 1) / GMP_NUMB_BITS + 1) * GMP_NUMB_BITS - expo;
+  prec = MPFR_PREC2LIMBS (prec) * GMP_NUMB_BITS - expo;
   /* number of represented fractional bits (including the trailing 0's) */
 
   x0 = *(MPFR_MANT (x) + prec / GMP_NUMB_BITS);
@@ -75,6 +138,7 @@ unit_bit (mpfr_srcptr (x))
 
   return (x0 >> (prec % GMP_NUMB_BITS)) & 1;
 }
+
 #endif
 
 /* lngamma(x) = log(gamma(x)).
@@ -99,12 +163,14 @@ GAMMA_FUNC (mpfr_ptr y, mpfr_srcptr z0, mpfr_rnd_t rnd)
   mpfr_t s, t, u, v, z;
   unsigned long m, k, maxm;
   mpz_t *INITIALIZED(B);  /* variable B declared as initialized */
-  int inexact, compared;
+  int compared;
+  int inexact = 0;  /* 0 means: result y not set yet */
   mpfr_exp_t err_s, err_t;
   unsigned long Bm = 0; /* number of allocated B[] */
   unsigned long oldBm;
   double d;
   MPFR_SAVE_EXPO_DECL (expo);
+  MPFR_ZIV_DECL (loop);
 
   compared = mpfr_cmp_ui (z0, 1);
 
@@ -122,7 +188,7 @@ GAMMA_FUNC (mpfr_ptr y, mpfr_srcptr z0, mpfr_rnd_t rnd)
   if (MPFR_EXP(z0) <= - (mpfr_exp_t) MPFR_PREC(y))
     {
       mpfr_t l, h, g;
-      int ok, inex2;
+      int ok, inex1, inex2;
       mpfr_prec_t prec = MPFR_PREC(y) + 14;
       MPFR_ZIV_DECL (loop);
 
@@ -157,14 +223,14 @@ GAMMA_FUNC (mpfr_ptr y, mpfr_srcptr z0, mpfr_rnd_t rnd)
           mpfr_sub (h, h, g, MPFR_RNDD);
           mpfr_mul (g, z0, z0, MPFR_RNDU);
           mpfr_add (h, h, g, MPFR_RNDU);
-          inexact = mpfr_prec_round (l, MPFR_PREC(y), rnd);
+          inex1 = mpfr_prec_round (l, MPFR_PREC(y), rnd);
           inex2 = mpfr_prec_round (h, MPFR_PREC(y), rnd);
           /* Caution: we not only need l = h, but both inexact flags should
              agree. Indeed, one of the inexact flags might be zero. In that
              case if we assume lngamma(z0) cannot be exact, the other flag
              should be correct. We are conservative here and request that both
              inexact flags agree. */
-          ok = SAME_SIGN (inexact, inex2) && mpfr_cmp (l, h) == 0;
+          ok = SAME_SIGN (inex1, inex2) && mpfr_cmp (l, h) == 0;
           if (ok)
             mpfr_set (y, h, rnd); /* exact */
           mpfr_clear (l);
@@ -172,8 +238,9 @@ GAMMA_FUNC (mpfr_ptr y, mpfr_srcptr z0, mpfr_rnd_t rnd)
           mpfr_clear (g);
           if (ok)
             {
+              MPFR_ZIV_FREE (loop);
               MPFR_SAVE_EXPO_FREE (expo);
-              return mpfr_check_range (y, inexact, rnd);
+              return mpfr_check_range (y, inex1, rnd);
             }
           /* since we have log|gamma(x)| = - log|x| - gamma*x + O(x^2),
              if x ~ 2^(-n), then we have a n-bit approximation, thus
@@ -205,9 +272,10 @@ GAMMA_FUNC (mpfr_ptr y, mpfr_srcptr z0, mpfr_rnd_t rnd)
          thus lngamma(x) = log(Pi*(x-1)/sin(Pi*(2-x))) - lngamma(2-x) */
 
       w = precy + MPFR_INT_CEIL_LOG2 (precy);
+      w += MPFR_INT_CEIL_LOG2 (w) + 14;
+      MPFR_ZIV_INIT (loop, w);
       while (1)
         {
-          w += MPFR_INT_CEIL_LOG2 (w) + 14;
           MPFR_ASSERTD(w >= 3);
           mpfr_set_prec (s, w);
           mpfr_set_prec (t, w);
@@ -288,7 +356,9 @@ GAMMA_FUNC (mpfr_ptr y, mpfr_srcptr z0, mpfr_rnd_t rnd)
                                   + (rnd == MPFR_RNDN)))
                 goto end;
             }
+          MPFR_ZIV_NEXT (loop, w);
         }
+      MPFR_ZIV_FREE (loop);
     }
 
   /* now z0 > 1 */
@@ -298,10 +368,10 @@ GAMMA_FUNC (mpfr_ptr y, mpfr_srcptr z0, mpfr_rnd_t rnd)
   /* since k is O(w), the value of log(z0*...*(z0+k-1)) is about w*log(w),
      so there is a cancellation of ~log(w) in the argument reconstruction */
   w = precy + MPFR_INT_CEIL_LOG2 (precy);
-
-  do
+  w += MPFR_INT_CEIL_LOG2 (w) + 13;
+  MPFR_ZIV_INIT (loop, w);
+  while (1)
     {
-      w += MPFR_INT_CEIL_LOG2 (w) + 13;
       MPFR_ASSERTD (w >= 3);
 
       /* argument reduction: we compute gamma(z0 + k), where the series
@@ -441,6 +511,15 @@ GAMMA_FUNC (mpfr_ptr y, mpfr_srcptr z0, mpfr_rnd_t rnd)
 #ifdef IS_GAMMA
       err_s = MPFR_GET_EXP(s);
       mpfr_exp (s, s, MPFR_RNDN);
+      /* If s is +Inf, we compute exp(lngamma(z0)). */
+      if (mpfr_inf_p (s))
+        {
+          inexact = mpfr_explgamma (y, z0, &expo, s, t, rnd);
+          if (inexact)
+            goto end0;
+          else
+            goto ziv_next;
+        }
       /* before the exponential, we have s = s0 + h where
          |h| <= (2m+48)*ulp(s), thus exp(s0) = exp(s) * exp(-h).
          For |h| <= 1/4, we have |exp(h)-1| <= 1.2*|h| thus
@@ -480,16 +559,26 @@ GAMMA_FUNC (mpfr_ptr y, mpfr_srcptr z0, mpfr_rnd_t rnd)
       err_s = (err_t == err_s) ? 1 + err_s : ((err_t > err_s) ? err_t : err_s);
       err_s += 1 - MPFR_GET_EXP(s);
 #endif
+      if (MPFR_LIKELY (MPFR_CAN_ROUND (s, w - err_s, precy, rnd)))
+        break;
+#ifdef IS_GAMMA
+    ziv_next:
+#endif
+      MPFR_ZIV_NEXT (loop, w);
     }
-  while (MPFR_UNLIKELY (!MPFR_CAN_ROUND (s, w - err_s, precy, rnd)));
 
+#ifdef IS_GAMMA
+ end0:
+#endif
   oldBm = Bm;
   while (Bm--)
     mpz_clear (B[Bm]);
   (*__gmp_free_func) (B, oldBm * sizeof (mpz_t));
 
  end:
-  inexact = mpfr_set (y, s, rnd);
+  if (inexact == 0)
+    inexact = mpfr_set (y, s, rnd);
+  MPFR_ZIV_FREE (loop);
 
   mpfr_clear (s);
   mpfr_clear (t);
index c7c2e35..0244ab5 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_log -- natural logarithm of a floating-point number
 
-Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index bc69ed1..31b6ce9 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_log10 -- logarithm in base 10.
 
-Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 0f873bc..a4c9b25 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_log1p -- Compute log(1+x)
 
-Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 309eece..d95497b 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_log2 -- log base 2
 
-Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 9c484b1..7b3f8c5 100644 (file)
@@ -1,7 +1,7 @@
 /* MPFR Logging functions.
 
-Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 08c1bc6..7df9e77 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_min_prec -- minimal size in bits to hold the mantissa
 
-Copyright 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 1fb9d0a..288027b 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_min -- min and max of x, y
 
-Copyright 2001, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2001, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 21968db..a16020b 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_modf -- Integral and fractional part.
 
-Copyright 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 4b4dea0..3f455e4 100644 (file)
@@ -3,7 +3,7 @@
    THE CONTENTS OF THIS FILE ARE FOR INTERNAL USE AND MAY CHANGE
    INCOMPATIBLY OR DISAPPEAR IN A FUTURE GNU MPFR RELEASE.
 
-Copyright 1991, 1993, 1994, 1996, 1997, 2000, 2001, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+Copyright 1991, 1993, 1994, 1996, 1997, 2000, 2001, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
 
 This file is part of the GNU MPFR Library.
 It has been copied and adapted from the GNU MP Library.
index 59ed791..ef6ab82 100644 (file)
@@ -1,7 +1,7 @@
 /* mpf2mpfr.h -- Compatibility include file with mpf.
 
-Copyright 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 5caf1a2..0d60c88 100644 (file)
@@ -1,8 +1,8 @@
 /* mpfr_gmp -- Limited gmp-impl emulator
    Modified version of the GMP files.
 
-Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 93c1ddc..c004fe5 100644 (file)
@@ -1,7 +1,7 @@
 /* Interface to replace gmp-impl.h
 
-Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
@@ -163,7 +163,6 @@ __MPFR_DECLSPEC void mpfr_assert_fail _MPFR_PROTO((const char *, int,
 #define SIZ(x) ((x)->_mp_size)
 #define ABSIZ(x) ABS (SIZ (x))
 #define PTR(x) ((x)->_mp_d)
-#define LIMBS(x) ((x)->_mp_d)
 #define EXP(x) ((x)->_mp_exp)
 #define PREC(x) ((x)->_mp_prec)
 #define ALLOC(x) ((x)->_mp_alloc)
index 1f0f15d..fa693d3 100644 (file)
@@ -1,7 +1,7 @@
 /* Utilities for MPFR developers, not exported.
 
-Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
@@ -128,7 +128,7 @@ http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
 #if defined(_WIN32)
 /* Under MS Windows (e.g. with VS2008 or VS2010), Intel's compiler doesn't
    support/enable extensions like the ones seen under GNU/Linux.
-   http://websympa.loria.fr/wwsympa/arc/mpfr/2011-02/msg00032.html */
+   https://sympa.inria.fr/sympa/arc/mpfr/2011-02/msg00032.html */
 # define __MPFR_ICC(a,b,c) 0
 #elif defined(__ICC)
 # define __MPFR_ICC(a,b,c) (__ICC >= (a)*100+(b)*10+(c))
@@ -646,10 +646,24 @@ union ieee_double_decimal64 { double d; _Decimal64 d64; };
  **************** mpfr_t properties *******************
  ******************************************************/
 
+/* In the following macro, p is usually a mpfr_prec_t, but this macro
+   works with other integer types (without integer overflow). Checking
+   that p >= 1 in debug mode is useful here because this macro can be
+   used on a computed precision (in particular, this formula does not
+   work for a degenerate case p = 0, and could give different results
+   on different platforms). But let us not use an assertion checking
+   in the MPFR_LAST_LIMB() and MPFR_LIMB_SIZE() macros below to avoid
+   too much expansion for assertions (in practice, this should be a
+   problem just when testing MPFR with the --enable-assert configure
+   option and the -ansi -pedantic-errors gcc compiler flags). */
+#define MPFR_PREC2LIMBS(p) \
+  (MPFR_ASSERTD ((p) >= 1), ((p) - 1) / GMP_NUMB_BITS + 1)
+
 #define MPFR_PREC(x)      ((x)->_mpfr_prec)
 #define MPFR_EXP(x)       ((x)->_mpfr_exp)
 #define MPFR_MANT(x)      ((x)->_mpfr_d)
-#define MPFR_LIMB_SIZE(x) ((MPFR_PREC((x))-1)/GMP_NUMB_BITS+1)
+#define MPFR_LAST_LIMB(x) ((MPFR_PREC (x) - 1) / GMP_NUMB_BITS)
+#define MPFR_LIMB_SIZE(x) (MPFR_LAST_LIMB (x) + 1)
 
 
 /******************************************************
@@ -749,7 +763,8 @@ typedef intmax_t mpfr_eexp_t;
 #define MPFR_IS_FP(x)       (!MPFR_IS_NAN(x) && !MPFR_IS_INF(x))
 #define MPFR_IS_SINGULAR(x) (MPFR_EXP(x) <= MPFR_EXP_INF)
 #define MPFR_IS_PURE_FP(x)  (!MPFR_IS_SINGULAR(x) && \
-  (MPFR_ASSERTD (MPFR_MANT(x)[MPFR_LIMB_SIZE(x)-1] & MPFR_LIMB_HIGHBIT), 1))
+  (MPFR_ASSERTD ((MPFR_MANT(x)[MPFR_LAST_LIMB(x)]  \
+                  & MPFR_LIMB_HIGHBIT) != 0), 1))
 
 #define MPFR_ARE_SINGULAR(x,y) \
   (MPFR_UNLIKELY(MPFR_IS_SINGULAR(x)) || MPFR_UNLIKELY(MPFR_IS_SINGULAR(y)))
@@ -988,10 +1003,11 @@ extern unsigned char *mpfr_stack;
  ******************************************************/
 
 /* Theses macros help the compiler to determine if a test is
- * likely or unlikely. */
+   likely or unlikely. The !! is necessary in case x is larger
+   than a long. */
 #if __MPFR_GNUC(3,0) || __MPFR_ICC(8,1,0)
 # define MPFR_LIKELY(x) (__builtin_expect(!!(x),1))
-# define MPFR_UNLIKELY(x) (__builtin_expect((x),0))
+# define MPFR_UNLIKELY(x) (__builtin_expect(!!(x),0))
 #else
 # define MPFR_LIKELY(x) (x)
 # define MPFR_UNLIKELY(x) (x)
@@ -1060,7 +1076,7 @@ extern unsigned char *mpfr_stack;
 /* Set a number to 1 (Fast) - It doesn't check if 1 is in the exponent range */
 #define MPFR_SET_ONE(x)                                               \
 do {                                                                  \
-  mp_size_t _size = MPFR_LIMB_SIZE(x) - 1;                            \
+  mp_size_t _size = MPFR_LAST_LIMB(x);                                \
   MPFR_SET_POS(x);                                                    \
   MPFR_EXP(x) = 1;                                                    \
   MPN_ZERO ( MPFR_MANT(x), _size);                                    \
@@ -1212,8 +1228,8 @@ typedef struct {
     _destp = MPFR_MANT (dest);                                              \
     if (MPFR_UNLIKELY (_destprec >= _srcprec))                              \
       {                                                                     \
-        _srcs  = (_srcprec  + GMP_NUMB_BITS-1)/GMP_NUMB_BITS;               \
-        _dests = (_destprec + GMP_NUMB_BITS-1)/GMP_NUMB_BITS - _srcs;       \
+        _srcs  = MPFR_PREC2LIMBS (_srcprec);                                \
+        _dests = MPFR_PREC2LIMBS (_destprec) - _srcs;                       \
         MPN_COPY (_destp + _dests, srcp, _srcs);                            \
         MPN_ZERO (_destp, _dests);                                          \
         inexact = 0;                                                        \
@@ -1226,8 +1242,8 @@ typedef struct {
         mp_limb_t _rb, _sb, _ulp;                                           \
                                                                             \
         /* Compute Position and shift */                                    \
-        _srcs  = (_srcprec  + GMP_NUMB_BITS-1)/GMP_NUMB_BITS;               \
-        _dests = (_destprec + GMP_NUMB_BITS-1)/GMP_NUMB_BITS;               \
+        _srcs  = MPFR_PREC2LIMBS (_srcprec);                                \
+        _dests = MPFR_PREC2LIMBS (_destprec);                               \
         MPFR_UNSIGNED_MINUS_MODULO (_sh, _destprec);                        \
         _sp = (srcp) + _srcs - _dests;                                      \
                                                                             \
@@ -1371,7 +1387,7 @@ typedef struct {
       if (MPFR_LIKELY (MPFR_PREC (dest) == MPFR_PREC (src)))            \
         {                                                               \
           MPN_COPY (MPFR_MANT (dest), MPFR_MANT (src),                  \
-                    (MPFR_PREC (src) + GMP_NUMB_BITS-1)/GMP_NUMB_BITS); \
+                    MPFR_LIMB_SIZE (src));                              \
           inexact = 0;                                                  \
         }                                                               \
       else                                                              \
@@ -1591,7 +1607,7 @@ __MPFR_DECLSPEC extern mpfr_prec_t mpfr_log_prec;
   do                                                                    \
     if ((MPFR_LOG_INTERNAL_F & mpfr_log_type) &&                        \
         (mpfr_log_current <= mpfr_log_level))                           \
-      LOG_PRINT ("%s.%d:%s[%#Pu]=%.*Rf\n", __func__, __LINE__,          \
+      LOG_PRINT ("%s.%d:%s[%#Pu]=%.*Rg\n", __func__, __LINE__,          \
                  #x, mpfr_get_prec (x), mpfr_log_prec, x);              \
   while (0)
 
@@ -1681,7 +1697,7 @@ struct mpfr_group_t {
  MPFR_ASSERTD (_prec >= MPFR_PREC_MIN);                                 \
  if (MPFR_UNLIKELY (_prec > MPFR_PREC_MAX))                             \
    mpfr_abort_prec_max ();                                              \
- _size = (mpfr_prec_t) (_prec + GMP_NUMB_BITS - 1) / GMP_NUMB_BITS;     \
+ _size = MPFR_PREC2LIMBS (_prec);                                       \
  if (MPFR_UNLIKELY (_size * (num) > MPFR_GROUP_STATIC_SIZE))            \
    {                                                                    \
      (g).alloc = (num) * _size * sizeof (mp_limb_t);                    \
@@ -1732,7 +1748,7 @@ struct mpfr_group_t {
  MPFR_ASSERTD (_prec >= MPFR_PREC_MIN);                                 \
  if (MPFR_UNLIKELY (_prec > MPFR_PREC_MAX))                             \
    mpfr_abort_prec_max ();                                              \
- _size = (mpfr_prec_t) (_prec + GMP_NUMB_BITS - 1) / GMP_NUMB_BITS;     \
+ _size = MPFR_PREC2LIMBS (_prec);                                       \
  (g).alloc = (num) * _size * sizeof (mp_limb_t);                        \
  if (MPFR_LIKELY (_oalloc == 0))                                        \
    (g).mant = (mp_limb_t *) (*__gmp_allocate_func) ((g).alloc);         \
@@ -1885,7 +1901,7 @@ __MPFR_DECLSPEC void mpfr_abort_prec_max _MPFR_PROTO ((void))
        MPFR_NORETURN_ATTR;
 
 __MPFR_DECLSPEC void mpfr_rand_raw _MPFR_PROTO((mpfr_limb_ptr, gmp_randstate_t,
-                                                unsigned long));
+                                                mpfr_prec_t));
 
 __MPFR_DECLSPEC mpz_t* mpfr_bernoulli_internal _MPFR_PROTO((mpz_t*,
                                                             unsigned long));
index c87739c..f00c672 100644 (file)
@@ -1,7 +1,7 @@
 /* MPFR internal header related to intmax_t.
 
-Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 57d2c5e..32d0873 100644 (file)
@@ -1,7 +1,7 @@
 /* longlong.h -- definitions for mixed size 32/64 bit arithmetic.
 
 Copyright 1991, 1992, 1993, 1994, 1996, 1997, 1999, 2000, 2001, 2002, 2003,
-2004, 2005, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+2004, 2005, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
 
 This file 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
index f4b337b..5dd137b 100644 (file)
@@ -1,7 +1,7 @@
 /* MPFR internal header related to thread-local variables.
 
-Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index d918943..a3241dc 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr.h -- Include file for mpfr.
 
-Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
@@ -26,8 +26,8 @@ http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
 /* Define MPFR version number */
 #define MPFR_VERSION_MAJOR 3
 #define MPFR_VERSION_MINOR 1
-#define MPFR_VERSION_PATCHLEVEL 0
-#define MPFR_VERSION_STRING "3.1.0"
+#define MPFR_VERSION_PATCHLEVEL 2
+#define MPFR_VERSION_STRING "3.1.2"
 
 /* Macros dealing with MPFR VERSION */
 #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c))
@@ -39,6 +39,18 @@ MPFR_VERSION_NUM(MPFR_VERSION_MAJOR,MPFR_VERSION_MINOR,MPFR_VERSION_PATCHLEVEL)
 # include <gmp.h>
 #endif
 
+/* GMP's internal __gmp_const macro has been removed on 2012-03-04:
+     http://gmplib.org:8000/gmp/rev/d287cfaf6732
+   const is standard and now assumed to be available. If the __gmp_const
+   definition is no longer present in GMP, this probably means that GMP
+   assumes that const is available; thus let's define it to const.
+   Note: this is a temporary fix that can be backported to previous MPFR
+   versions. In the future, __gmp_const should be replaced by const like
+   in GMP. */
+#ifndef __gmp_const
+# define __gmp_const const
+#endif
+
 /* Avoid some problems with macro expansion if the user defines macros
    with the same name as keywords. By convention, identifiers and macro
    names starting with mpfr_ are reserved by MPFR. */
@@ -927,7 +939,7 @@ __MPFR_DECLSPEC int    mpfr_custom_get_kind   _MPFR_PROTO ((mpfr_srcptr));
      - INTMAX_C and UINTMAX_C, but not if the compiler is a C++ one
        (as suggested by Patrick Pelissier) because the test does not
        work well in this case. See:
-         http://websympa.loria.fr/wwsympa/arc/mpfr/2010-02/msg00025.html
+         https://sympa.inria.fr/sympa/arc/mpfr/2010-02/msg00025.html
        We do not check INTMAX_MAX and UINTMAX_MAX because under Solaris,
        these macros are always defined by <limits.h> (i.e. even when
        <stdint.h> and <inttypes.h> are not included).
index 4997ff6..63dcde9 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_mpn_exp -- auxiliary function for mpfr_get_str and mpfr_set_str
 
-Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 184af45..efbfdb1 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_mul -- multiply two floating-point numbers
 
-Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
@@ -93,15 +93,15 @@ mpfr_mul3 (mpfr_ptr a, mpfr_srcptr b, mpfr_srcptr c, mpfr_rnd_t rnd_mode)
 
   ax = MPFR_GET_EXP (b) + MPFR_GET_EXP (c);
 
-  bq = MPFR_PREC(b);
-  cq = MPFR_PREC(c);
+  bq = MPFR_PREC (b);
+  cq = MPFR_PREC (c);
 
-  MPFR_ASSERTD(bq+cq > bq); /* PREC_MAX is /2 so no integer overflow */
+  MPFR_ASSERTN ((mpfr_uprec_t) bq + cq <= MPFR_PREC_MAX);
 
-  bn = (bq+GMP_NUMB_BITS-1)/GMP_NUMB_BITS; /* number of limbs of b */
-  cn = (cq+GMP_NUMB_BITS-1)/GMP_NUMB_BITS; /* number of limbs of c */
+  bn = MPFR_PREC2LIMBS (bq); /* number of limbs of b */
+  cn = MPFR_PREC2LIMBS (cq); /* number of limbs of c */
   k = bn + cn; /* effective nb of limbs used by b*c (= tn or tn+1) below */
-  tn = (bq + cq + GMP_NUMB_BITS - 1) / GMP_NUMB_BITS;
+  tn = MPFR_PREC2LIMBS (bq + cq);
   /* <= k, thus no int overflow */
   MPFR_ASSERTD(tn <= k);
 
@@ -292,12 +292,12 @@ mpfr_mul (mpfr_ptr a, mpfr_srcptr b, mpfr_srcptr c, mpfr_rnd_t rnd_mode)
   bq = MPFR_PREC (b);
   cq = MPFR_PREC (c);
 
-  MPFR_ASSERTD (bq+cq > bq); /* PREC_MAX is /2 so no integer overflow */
+  MPFR_ASSERTN ((mpfr_uprec_t) bq + cq <= MPFR_PREC_MAX);
 
-  bn = (bq+GMP_NUMB_BITS-1)/GMP_NUMB_BITS; /* number of limbs of b */
-  cn = (cq+GMP_NUMB_BITS-1)/GMP_NUMB_BITS; /* number of limbs of c */
+  bn = MPFR_PREC2LIMBS (bq); /* number of limbs of b */
+  cn = MPFR_PREC2LIMBS (cq); /* number of limbs of c */
   k = bn + cn; /* effective nb of limbs used by b*c (= tn or tn+1) below */
-  tn = (bq + cq + GMP_NUMB_BITS - 1) / GMP_NUMB_BITS;
+  tn = MPFR_PREC2LIMBS (bq + cq);
   MPFR_ASSERTD (tn <= k); /* tn <= k, thus no int overflow */
 
   /* Check for no size_t overflow*/
index 4f96f1f..a3e2450 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_mul_2exp -- multiply a floating-point number by a power of two
 
-Copyright 1999, 2001, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2001, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 96b1412..814a30d 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_mul_2si -- multiply a floating-point number by a power of two
 
-Copyright 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 48de652..a4bafe9 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_mul_2ui -- multiply a floating-point number by a power of two
 
-Copyright 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index db23721..d1296da 100644 (file)
@@ -1,8 +1,8 @@
 /* mpfr_mul_d -- multiply a multiple precision floating-point number
                  by a machine double precision float
 
-Copyright 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
@@ -34,7 +34,7 @@ mpfr_mul_d (mpfr_ptr a, mpfr_srcptr b, double c, mpfr_rnd_t rnd_mode)
     (("b[%Pu]=%.*Rg c=%.20g rnd=%d",
       mpfr_get_prec(b), mpfr_log_prec, b, c, rnd_mode),
      ("a[%Pu]=%.*Rg inexact=%d",
-      mpfr_get_prec (a), mpfr_get_prec, a, inexact));
+      mpfr_get_prec (a), mpfr_log_prec, a, inexact));
 
   MPFR_SAVE_EXPO_MARK (expo);
 
index 6b0b136..8c9258a 100644 (file)
@@ -1,8 +1,8 @@
 /* mpfr_mul_ui -- multiply a floating-point number by a machine integer
    mpfr_mul_si -- multiply a floating-point number by a machine integer
 
-Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 0345250..273c75a 100644 (file)
@@ -1,7 +1,7 @@
 /* Mulders' MulHigh function (short product)
 
-Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index efe75b8..400b78b 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_neg -- change the sign of a floating-point number
 
-Copyright 1999, 2000, 2001, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2000, 2001, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 5f7c4cb..849d206 100644 (file)
@@ -1,8 +1,8 @@
 /* mpfr_nextabove, mpfr_nextbelow, mpfr_nexttoward -- next representable
 floating-point number
 
-Copyright 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index cb65aa6..c32dbe2 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_out_str -- output a floating-point number to a stream
 
-Copyright 1999, 2001, 2002, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2001, 2002, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 983ae4a..b0add7e 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_pow -- power function x^y
 
-Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
@@ -136,7 +136,7 @@ is_odd (mpfr_srcptr y)
      (b) all the 'z' bits are zero
   */
 
-  prec = ((prec - 1) / GMP_NUMB_BITS + 1) * GMP_NUMB_BITS - expo;
+  prec = MPFR_PREC2LIMBS (prec) * GMP_NUMB_BITS - expo;
   /* number of z+0 bits */
 
   yn = prec / GMP_NUMB_BITS;
index dff90da..645035e 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_pow_si -- power function x^y with y a signed int
 
-Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 712273c..377aee1 100644 (file)
@@ -1,8 +1,8 @@
 /* mpfr_pow_ui-- compute the power of a floating-point
                                   by a machine integer
 
-Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index abf7238..df356ee 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_pow_z -- power function x^z with z a MPZ
 
-Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 8f2f36b..76ce6b9 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_powerof2_raw -- test whether a floating-point number is a power of 2
 
-Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 12fc0a2..08b7baf 100644 (file)
@@ -1,8 +1,8 @@
 /* mpfr_print_binary -- print the internal binary representation of a
                      floating-point number
 
-Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
@@ -84,7 +84,7 @@ mpfr_print_mant_binary(const char *str, const mp_limb_t *p, mpfr_prec_t r)
   int i;
   mpfr_prec_t count = 0;
   char c;
-  mp_size_t n = (r - 1) / GMP_NUMB_BITS + 1;
+  mp_size_t n = MPFR_PREC2LIMBS (r);
 
   printf("%s ", str);
   for(n-- ; n>=0 ; n--)
@@ -109,7 +109,7 @@ mpfr_dump_mant (const mp_limb_t *p, mpfr_prec_t r, mpfr_prec_t precx,
   int i;
   mpfr_prec_t count = 0;
   char c;
-  mp_size_t n = (r - 1) / GMP_NUMB_BITS + 1;
+  mp_size_t n = MPFR_PREC2LIMBS (r);
 
   for(n-- ; n>=0 ; n--)
     {
index b1a2649..65269c7 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_print_rnd_mode -- convert a given rounding mode to a string
 
-Copyright 1999, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 2af20a0..10a67c4 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_printf -- printf function and friends.
 
-Copyright 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index ff56068..f3ccf72 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_rec_sqrt -- inverse square root
 
-Copyright 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 1a6b4ce..a82400e 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_reldiff -- compute relative difference of two floating-point numbers.
 
-Copyright 2000, 2001, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2000, 2001, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 3c931e9..24d5441 100644 (file)
@@ -2,8 +2,8 @@
    mpfr_fmod -- compute the floating-point remainder of x/y
    mpfr_remquo and mpfr_remainder -- argument reduction functions
 
-Copyright 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 316bc5d..809f366 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_rint -- Round to an integer.
 
-Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 2d5be8b..619c9dd 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_root -- kth root.
 
-Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 7e36201..9789c9b 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_round_near_x -- Round a floating point number nears another one.
 
-Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 32068cc..4a35831 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_round_p -- check if an approximation is roundable.
 
-Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index cbc2005..600ac8d 100644 (file)
@@ -1,8 +1,8 @@
 /* mpfr_round_raw_generic, mpfr_round_raw2, mpfr_round_raw, mpfr_prec_round,
    mpfr_can_round, mpfr_can_round_raw -- various rounding functions
 
-Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
@@ -55,12 +55,12 @@ mpfr_prec_round (mpfr_ptr x, mpfr_prec_t prec, mpfr_rnd_t rnd_mode)
 
   MPFR_ASSERTN(prec >= MPFR_PREC_MIN && prec <= MPFR_PREC_MAX);
 
-  nw = 1 + (prec - 1) / GMP_NUMB_BITS; /* needed allocated limbs */
+  nw = MPFR_PREC2LIMBS (prec); /* needed allocated limbs */
 
   /* check if x has enough allocated space for the significand */
   /* Get the number of limbs from the precision.
      (Compatible with all allocation methods) */
-  ow = (MPFR_PREC (x) + GMP_NUMB_BITS - 1) / GMP_NUMB_BITS;
+  ow = MPFR_LIMB_SIZE (x);
   if (nw > ow)
     {
       /* FIXME: Variable can't be created using custom allocation,
index c31f28d..79ba90d 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_round_raw_generic -- Generic rounding function
 
-Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
@@ -80,7 +80,7 @@ mpfr_round_raw_generic(
       (xprec <= yprec || MPFR_IS_LIKE_RNDZ (rnd_mode, neg)))
     return 0;
 
-  xsize = (xprec-1)/GMP_NUMB_BITS + 1;
+  xsize = MPFR_PREC2LIMBS (xprec);
   nw = yprec / GMP_NUMB_BITS;
   rw = yprec & (GMP_NUMB_BITS - 1);
 
index ca4bed4..5de38c3 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_scale2 -- multiply a double float by 2^exp
 
-Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 85f1d13..c5ced39 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_sec - secant function = 1/cos.
 
-Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 76e96c4..6e37a9a 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_sech - Hyperbolic secant function = 1/cosh.
 
-Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 7bbe1d1..1561aa2 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_set -- copy of a floating-point number
 
-Copyright 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
@@ -48,8 +48,7 @@ mpfr_set4 (mpfr_ptr a, mpfr_srcptr b, mpfr_rnd_t rnd_mode, int signb)
       /* Same precision and b is not singular:
        * just copy the mantissa, and set the exponent and the sign
        * The result is exact. */
-      MPN_COPY (MPFR_MANT (a), MPFR_MANT (b),
-                (MPFR_PREC (b) + GMP_NUMB_BITS-1)/GMP_NUMB_BITS);
+      MPN_COPY (MPFR_MANT (a), MPFR_MANT (b), MPFR_LIMB_SIZE (b));
       MPFR_RET (0);
     }
   else
index b1a4c2d..479167b 100644 (file)
@@ -1,8 +1,8 @@
 /* mpfr_set_d -- convert a machine double precision float to
                  a multiple precision floating-point number
 
-Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index dc7944e..d950acf 100644 (file)
@@ -5,8 +5,8 @@ See http://gcc.gnu.org/ml/gcc/2006-06/msg00691.html,
 http://gcc.gnu.org/onlinedocs/gcc/Decimal-Float.html,
 and TR 24732 <http://www.open-std.org/jtc1/sc22/wg14/www/projects#24732>.
 
-Copyright 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 4c984b6..f2bbf32 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_set_default_prec, mpfr_get_default_prec -- set/get default precision
 
-Copyright 1999, 2000, 2001, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2000, 2001, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 8efc7ed..e2d01da 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_set_exp - set the exponent of a floating-point number
 
-Copyright 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 2755964..80f776b 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_set_f -- set a MPFR number from a GNU MPF number
 
-Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
@@ -43,7 +43,7 @@ mpfr_set_f (mpfr_ptr y, mpf_srcptr x, mpfr_rnd_t rnd_mode)
   if (SIZ(x) * MPFR_FROM_SIGN_TO_INT(MPFR_SIGN(y)) < 0)
     MPFR_CHANGE_SIGN (y);
 
-  sy = 1 + (MPFR_PREC(y) - 1) / GMP_NUMB_BITS;
+  sy = MPFR_LIMB_SIZE (y);
   my = MPFR_MANT(y);
   mx = PTR(x);
 
index 9683d92..46677b3 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_set_flt -- convert a machine single precision float to mpfr_t
 
-Copyright 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index f255203..c7daefb 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_set_inf -- set a number to plus or minus infinity.
 
-Copyright 2002, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2002, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 7b55c52..6a3bd04 100644 (file)
@@ -1,8 +1,8 @@
 /* mpfr_set_ld -- convert a machine long double to
                   a multiple precision floating-point number
 
-Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 54402aa..db89041 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_set_nan -- set a number to NaN.
 
-Copyright 2002, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2002, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 14dba8b..7b66e54 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_set_prec_raw -- reset the precision of a floating-point number
 
-Copyright 2000, 2001, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2000, 2001, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index ede9b25..3ecdc05 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_set_prec -- reset the precision of a floating-point number
 
-Copyright 1999, 2001, 2002, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2001, 2002, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
@@ -32,7 +32,7 @@ mpfr_set_prec (mpfr_ptr x, mpfr_prec_t p)
   MPFR_ASSERTN (p >= MPFR_PREC_MIN && p <= MPFR_PREC_MAX);
 
   /* Calculate the new number of limbs */
-  xsize = (p - 1) / GMP_NUMB_BITS + 1;
+  xsize = MPFR_PREC2LIMBS (p);
 
   /* Realloc only if the new size is greater than the old */
   xoldsize = MPFR_GET_ALLOC_SIZE (x);
index e09e117..1a4e511 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_set_q -- set a floating-point number from a multiple-precision rational
 
-Copyright 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 81f975e..7b014dd 100644 (file)
@@ -1,8 +1,8 @@
 /* mpfr_set_default_rounding_mode -- set the default rounding mode
    mpfr_get_default_rounding_mode -- get the default rounding mode
 
-Copyright 1999, 2001, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2001, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 25ca576..30cb66d 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_set_si -- set a MPFR number from a machine signed integer
 
-Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index e93e267..2064a70 100644 (file)
@@ -1,8 +1,8 @@
 /* mpfr_set_si_2exp -- set a MPFR number from a machine signed integer with
    a shift
 
-Copyright 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 7c17d42..1d8c522 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_set_sj -- set a MPFR number from a huge machine signed integer
 
-Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 9153299..d2c40fc 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_set_str -- set a floating-point number from a string
 
-Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 49a053d..e7debb4 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_set_str_binary -- set a floating-point number from a binary string
 
-Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index e82bcaf..caafaac 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_set_ui -- set a MPFR number from a machine unsigned integer
 
-Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 1a60468..6c77ba2 100644 (file)
@@ -1,8 +1,8 @@
 /* mpfr_set_ui_2exp -- set a MPFR number from a machine unsigned integer with
    a shift
 
-Copyright 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 8d3e98c..768d3fe 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_set_uj -- set a MPFR number from a huge machine unsigned integer
 
-Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index b570ace..8a14d94 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_set_z -- set a floating-point number from a multiple-precision integer
 
-Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 19bedef..e5fe961 100644 (file)
@@ -1,8 +1,8 @@
 /* mpfr_set_z_2exp -- set a floating-point number from a multiple-precision
                       integer and an exponent
 
-Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 3d24647..ea13b03 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_set_zero -- set a number to plus or minus zero.
 
-Copyright 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 0ac4e16..e88a709 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_setmax -- maximum representable floating-point number (raw version)
 
-Copyright 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
@@ -32,7 +32,7 @@ mpfr_setmax (mpfr_ptr x, mpfr_exp_t e)
   mp_limb_t *xp;
 
   MPFR_SET_EXP (x, e);
-  xn = 1 + (MPFR_PREC(x) - 1) / GMP_NUMB_BITS;
+  xn = MPFR_LIMB_SIZE (x);
   sh = (mpfr_prec_t) xn * GMP_NUMB_BITS - MPFR_PREC(x);
   xp = MPFR_MANT(x);
   xp[0] = MP_LIMB_T_MAX << sh;
index 9a1cb1b..62c003a 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_setmin -- minimum representable floating-point number (raw version)
 
-Copyright 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 08f280d..eb9e481 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_setsign -- Produce a value with the magnitude of x and sign bit s
 
-Copyright 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 4dc1966..ec59929 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_sgn -- Sign of a floating point number.
 
-Copyright 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index e3e6ab1..bad4b85 100644 (file)
@@ -2,8 +2,8 @@
    mpfr_sub_si -- sub  a floating-point number with a machine integer
    mpfr_si_sub -- sub  a machine number with a floating-point number
 
-Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 49fea7c..8a2bc7f 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_signbit -- Signbit of a MPFR number
 
-Copyright 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 477532f..88e73f3 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_sin -- sine of a floating-point number
 
-Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index a8a94bc..8ee95e9 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_sin_cos -- sine and cosine of a floating-point number
 
-Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 48634bf..0349036 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_sinh -- hyperbolic sine
 
-Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 16d4089..af4fede 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_sinh_cosh -- hyperbolic sine and cosine
 
-Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index e9916da..a3748b5 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_sqr -- Floating square
 
-Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
@@ -56,11 +56,11 @@ mpfr_sqr (mpfr_ptr a, mpfr_srcptr b, mpfr_rnd_t rnd_mode)
   ax = 2 * MPFR_GET_EXP (b);
   bq = MPFR_PREC(b);
 
-  MPFR_ASSERTD (2 * bq > bq); /* PREC_MAX is /2 so no integer overflow */
+  MPFR_ASSERTN (2 * (mpfr_uprec_t) bq <= MPFR_PREC_MAX);
 
-  bn = MPFR_LIMB_SIZE(b); /* number of limbs of b */
-  tn = 1 + (2 * bq - 1) / GMP_NUMB_BITS; /* number of limbs of square,
-                                               2*bn or 2*bn-1 */
+  bn = MPFR_LIMB_SIZE (b); /* number of limbs of b */
+  tn = MPFR_PREC2LIMBS (2 * bq); /* number of limbs of square,
+                                    2*bn or 2*bn-1 */
 
   if (MPFR_UNLIKELY(bn > MPFR_SQR_THRESHOLD))
     return mpfr_mul (a, b, b, rnd_mode);
index 57847d7..64a9e02 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_sqrt -- square root of a floating-point number
 
-Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 40afdaa..92d60de 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_sqrt_ui -- square root of a machine integer
 
-Copyright 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 92673e8..25c44da 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_stack -- initialize a floating-point number with given allocation area
 
-Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
@@ -26,7 +26,7 @@ http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
 size_t
 mpfr_custom_get_size (mpfr_prec_t prec)
 {
-  return (prec + GMP_NUMB_BITS -1) / GMP_NUMB_BITS * BYTES_PER_MP_LIMB;
+  return MPFR_PREC2LIMBS (prec) * BYTES_PER_MP_LIMB;
 }
 
 #undef mpfr_custom_init
index dda5740..5248c10 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_strtofr -- set a floating-point number from a string
 
-Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
@@ -33,7 +33,8 @@ struct parsed_string {
   int            base;     /* base of the string */
   unsigned char *mantissa; /* raw significand (without any point) */
   unsigned char *mant;     /* stripped significand (without starting and
-                              ending zeroes) */
+                              ending zeroes). This points inside the area
+                              allocated for the mantissa field. */
   size_t         prec;     /* length of mant (zero for +/-0) */
   size_t         alloc;    /* allocation size of mantissa */
   mpfr_exp_t     exp_base; /* number of digits before the point */
@@ -414,7 +415,7 @@ parse_string (mpfr_t x, struct parsed_string *pstr,
         (mpfr_exp_t) read_exp;
     }
 
-  /* Remove 0's at the beginning and end of mant_s[0..prec_s-1] */
+  /* Remove 0's at the beginning and end of mantissa[0..prec-1] */
   mant = pstr->mantissa;
   for ( ; (pstr->prec > 0) && (*mant == 0) ; mant++, pstr->prec--)
     pstr->exp_base--;
@@ -459,7 +460,8 @@ parsed_string_to_mpfr (mpfr_t x, struct parsed_string *pstr, mpfr_rnd_t rnd)
   /* initialize the working precision */
   prec = MPFR_PREC (x) + MPFR_INT_CEIL_LOG2 (MPFR_PREC (x));
 
-  /* compute y as long as rounding is not possible */
+  /* compute the value y of the leading characters as long as rounding is not
+     possible */
   MPFR_TMP_MARK(marker);
   MPFR_ZIV_INIT (loop, prec);
   for (;;)
@@ -467,7 +469,7 @@ parsed_string_to_mpfr (mpfr_t x, struct parsed_string *pstr, mpfr_rnd_t rnd)
       /* Set y to the value of the ~prec most significant bits of pstr->mant
          (as long as we guarantee correct rounding, we don't need to get
          exactly prec bits). */
-      ysize = (prec - 1) / GMP_NUMB_BITS + 1;
+      ysize = MPFR_PREC2LIMBS (prec);
       /* prec bits corresponds to ysize limbs */
       ysize_bits = ysize * GMP_NUMB_BITS;
       /* and to ysize_bits >= prec > MPFR_PREC (x) bits */
@@ -514,7 +516,7 @@ parsed_string_to_mpfr (mpfr_t x, struct parsed_string *pstr, mpfr_rnd_t rnd)
       real_ysize = mpn_set_str (y, pstr->mant, pstr_size, pstr->base);
       MPFR_ASSERTD (real_ysize <= ysize+1);
 
-      /* normalize y: warning we can get even get ysize+1 limbs! */
+      /* normalize y: warning we can even get ysize+1 limbs! */
       MPFR_ASSERTD (y[real_ysize - 1] != 0); /* mpn_set_str guarantees this */
       count_leading_zeros (count, y[real_ysize - 1]);
       /* exact means that the number of limbs of the output of mpn_set_str
@@ -550,7 +552,7 @@ parsed_string_to_mpfr (mpfr_t x, struct parsed_string *pstr, mpfr_rnd_t rnd)
           exp = GMP_NUMB_BITS - count;
         }
 
-      /* compute base^(exp_s-pr) on n limbs */
+      /* compute base^(exp_base - pstr_size) on n limbs */
       if (IS_POW2 (pstr->base))
         {
           /* Base: 2, 4, 8, 16, 32 */
@@ -611,7 +613,8 @@ parsed_string_to_mpfr (mpfr_t x, struct parsed_string *pstr, mpfr_rnd_t rnd)
              If exact is zero, then z is rounded toward zero with respect
              to that value. */
 
-          /* multiply(y = 0.mant_s[0]...mant_s[pr-1])_base by base^(exp_s-g) */
+          /* multiply(y = 0.mant[0]...mant[pr-1])_base by base^(exp-g):
+             since both y and z are rounded toward zero, so is "result" */
           mpn_mul_n (result, y, z, ysize);
 
           /* compute the error on the product */
@@ -667,6 +670,20 @@ parsed_string_to_mpfr (mpfr_t x, struct parsed_string *pstr, mpfr_rnd_t rnd)
           /* (z, exp_z) = base^(exp_base-pstr_size) */
           z = result + 2*ysize + 1;
           err = mpfr_mpn_exp (z, &exp_z, pstr->base, exp_z, ysize);
+          /* Since we want y/z rounded toward zero, we must get an upper
+             bound of z. If err >= 0, the error on z is bounded by 2^err. */
+          if (err >= 0)
+            {
+              mp_limb_t cy;
+              unsigned long h = err / GMP_NUMB_BITS;
+              unsigned long l = err - h * GMP_NUMB_BITS;
+
+              if (h >= ysize) /* not enough precision in z */
+                goto next_loop;
+              cy = mpn_add_1 (z, z, ysize - h, MPFR_LIMB_ONE << l);
+              if (cy != 0) /* the code below requires z on ysize limbs */
+                goto next_loop;
+            }
           exact = exact && (err == -1);
           if (err == -2)
             goto underflow; /* FIXME: Sure? */
@@ -697,6 +714,7 @@ parsed_string_to_mpfr (mpfr_t x, struct parsed_string *pstr, mpfr_rnd_t rnd)
           if (result[2 * ysize] == MPFR_LIMB_ONE)
             {
               mp_limb_t *r = result + ysize;
+
               exact = exact && ((*r & MPFR_LIMB_ONE) == 0);
               mpn_rshift (r, r, ysize + 1, 1);
               /* Overflow Checking not needed */
@@ -707,7 +725,7 @@ parsed_string_to_mpfr (mpfr_t x, struct parsed_string *pstr, mpfr_rnd_t rnd)
       /* case exp_base = pstr_size: no multiplication or division needed */
       else
         {
-          /* base^(exp_s-pr) = 1             nothing to compute */
+          /* base^(exp-pr) = 1             nothing to compute */
           result = y;
           err = 0;
         }
@@ -730,6 +748,7 @@ parsed_string_to_mpfr (mpfr_t x, struct parsed_string *pstr, mpfr_rnd_t rnd)
                                        MPFR_RNDN, rnd, MPFR_PREC(x)))
         break;
 
+    next_loop:
       /* update the prec for next loop */
       MPFR_ZIV_NEXT (loop, prec);
     } /* loop */
index 460c434..d1af16f 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_sub -- subtract two floating-point numbers
 
-Copyright 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 1ae299d..b266412 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_sub1 -- internal function to perform a "real" subtraction
 
-Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 48bdda8..0741734 100644 (file)
@@ -1,8 +1,8 @@
 /* mpfr_sub1sp -- internal function to perform a "real" substraction
    All the op must have the same precision
 
-Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
@@ -155,8 +155,8 @@ mpfr_sub1sp (mpfr_ptr a, mpfr_srcptr b, mpfr_srcptr c, mpfr_rnd_t rnd_mode)
   MPFR_ASSERTD(MPFR_IS_PURE_FP(c));
 
   /* Read prec and num of limbs */
-  p = MPFR_PREC(b);
-  n = (p-1)/GMP_NUMB_BITS+1;
+  p = MPFR_PREC (b);
+  n = MPFR_PREC2LIMBS (p);
 
   /* Fast cmp of |b| and |c|*/
   bx = MPFR_GET_EXP (b);
index b9ec57e..14922ca 100644 (file)
@@ -1,8 +1,8 @@
 /* mpfr_sub_d -- subtract a machine double precision float from
                  a multiple precision floating-point number
 
-Copyright 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 67a3e24..8fcd530 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_sub_ui -- subtract a floating-point number and a machine integer
 
-Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index a063f0f..cbf35ae 100644 (file)
@@ -1,8 +1,8 @@
 /* mpfr_subnormalize -- Subnormalize a floating point number
    emulating sub-normal numbers.
 
-Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
@@ -38,9 +38,9 @@ http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
    Set the inexact flag if the returned ternary value is non-zero.
    Set the underflow flag if a second rounding occurred (whether this
    rounding is exact or not). See
-     http://websympa.loria.fr/wwsympa/arc/mpfr/2009-06/msg00000.html
-     http://websympa.loria.fr/wwsympa/arc/mpfr/2009-06/msg00008.html
-     http://websympa.loria.fr/wwsympa/arc/mpfr/2009-06/msg00010.html
+     https://sympa.inria.fr/sympa/arc/mpfr/2009-06/msg00000.html
+     https://sympa.inria.fr/sympa/arc/mpfr/2009-06/msg00008.html
+     https://sympa.inria.fr/sympa/arc/mpfr/2009-06/msg00010.html
 */
 
 int
index 6fa2588..200a523 100644 (file)
@@ -1,7 +1,7 @@
 /* Sum -- efficiently sum a list of floating-point numbers
 
-Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 2ba24de..8ab213a 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_swap (U, V) -- Swap U and V.
 
-Copyright 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index dae8382..8cd93cd 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_tan -- tangent of a floating-point number
 
-Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 7ad452f..b1e9b7d 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_tanh -- hyperbolic tangent
 
-Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index e8ca63a..dd571d0 100644 (file)
@@ -1,7 +1,7 @@
 /* __gmpfr_ceil_exp2 - returns y >= 2^d
 
-Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 4286ba8..27f7d4f 100644 (file)
@@ -1,7 +1,7 @@
 /* __gmpfr_ceil_log2 - returns ceil(log(d)/log(2))
 
-Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 2a043b4..9200dbf 100644 (file)
@@ -1,7 +1,7 @@
 /* __gmpfr_floor_log2 - returns floor(log(d)/log(2))
 
-Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 19e5009..223ec79 100644 (file)
@@ -1,8 +1,8 @@
 /* mpfr_ui_div -- divide a machine integer by a floating-point number
    mpfr_si_div -- divide a machine number by a floating-point number
 
-Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 603ee40..a566cae 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_ui_pow -- power of n function n^x
 
-Copyright 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index c096d05..63bcb33 100644 (file)
@@ -1,7 +1,7 @@
 /*  mpfr_ui_pow_ui -- compute the power beetween two machine integer
 
-Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 559b3f6..0b3911b 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_ui_sub -- subtract a floating-point number from an integer
 
-Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 46c0830..de626f1 100644 (file)
@@ -2,8 +2,8 @@
    real number between 0 and 1 (exclusive) and round it to the precision of rop
    according to the given rounding mode.
 
-Copyright 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index 15c38d1..5bf64f4 100644 (file)
@@ -3,8 +3,8 @@
    using STATE as the random state previously initialized by a call to
    gmp_randinit_lc_2exp_size().
 
-Copyright 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
@@ -31,13 +31,20 @@ http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
    a sufficient number of limbs */
 void
 mpfr_rand_raw (mpfr_limb_ptr mp, gmp_randstate_t rstate,
-               unsigned long int nbits)
+               mpfr_prec_t nbits)
 {
   mpz_t z;
 
+  MPFR_ASSERTN (nbits >= 1);
   /* To be sure to avoid the potential allocation of mpz_urandomb */
-  ALLOC(z) = SIZ(z) = ((nbits - 1) / GMP_NUMB_BITS) + 1;
+  ALLOC(z) = SIZ(z) = MPFR_PREC2LIMBS (nbits);
   PTR(z)   = mp;
+#if __MPFR_GMP(5,0,0)
+  /* Check for integer overflow (unless mp_bitcnt_t is signed,
+     but according to the GMP manual, this shouldn't happen).
+     Note: mp_bitcnt_t has been introduced in GMP 5.0.0. */
+  MPFR_ASSERTN ((mp_bitcnt_t) -1 < 0 || nbits <= (mp_bitcnt_t) -1);
+#endif
   mpz_urandomb (z, rstate, nbits);
 }
 
index a4f57a8..31e001c 100644 (file)
@@ -1,8 +1,8 @@
 /* mpfr_vasprintf -- main function for the printf functions family
    plus helper macros & functions.
 
-Copyright 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
@@ -1178,7 +1178,7 @@ regular_fg (struct number_parts *np, mpfr_srcptr p,
   mpfr_exp_t exp;
   char * str;
   const int spec_g = (spec.spec == 'g' || spec.spec == 'G');
-  const int keep_trailing_zeros = spec_g && spec.alt;
+  const int keep_trailing_zeros = !spec_g || spec.alt;
 
   /* WARNING: an empty precision field is forbidden (it means precision = 6
      and it should have been changed to 6 before the function call) */
@@ -1303,6 +1303,7 @@ regular_fg (struct number_parts *np, mpfr_srcptr p,
                   str = dec_info->str;
                 }
               if (MPFR_IS_NEG (p))
+                /* skip sign */
                 ++str;
               if (exp == 1)
                 /* round up to 1 */
@@ -1314,7 +1315,6 @@ regular_fg (struct number_parts *np, mpfr_srcptr p,
                 }
               else
                 {
-                  /* skip sign */
                   np->fp_ptr = str;
                   np->fp_leading_zeros = -exp;
                   MPFR_ASSERTD (exp <= 0);
@@ -1356,7 +1356,7 @@ regular_fg (struct number_parts *np, mpfr_srcptr p,
   else
     /* 1 <= |p| */
     {
-      size_t nsd;  /* Number of significant digits */
+      size_t str_len;
 
       /* Determine the position of the most significant decimal digit. */
       exp = floor_log10 (p);
@@ -1365,12 +1365,10 @@ regular_fg (struct number_parts *np, mpfr_srcptr p,
         /* P is too large to print all its integral part digits */
         return -1;
 
-      np->ip_size = exp + 1;
-
-      nsd = spec.prec + np->ip_size;
       if (dec_info == NULL)
-        {
-          str = mpfr_get_str (NULL, &exp, 10, nsd, p, spec.rnd_mode);
+        { /* this case occurs with mpfr_printf ("%.0RUf", x) with x=9.5 */
+          str =
+            mpfr_get_str (NULL, &exp, 10, spec.prec+exp+1, p, spec.rnd_mode);
           register_string (np->sl, str);
         }
       else
@@ -1379,81 +1377,60 @@ regular_fg (struct number_parts *np, mpfr_srcptr p,
           str = dec_info->str;
         }
       np->ip_ptr = MPFR_IS_NEG (p) ? ++str : str; /* skip sign */
+      str_len = strlen (str);
+
+      /* integral part */
+      if (exp > str_len)
+        /* mpfr_get_str gives no trailing zero when p is rounded up to the next
+           power of 10 (p integer, so no fractional part) */
+        {
+          np->ip_trailing_zeros = exp - str_len;
+          np->ip_size = str_len;
+        }
+      else
+        np->ip_size = exp;
 
       if (spec.group)
         /* thousands separator in integral part */
         np->thousands_sep = MPFR_THOUSANDS_SEPARATOR;
 
-      if (nsd == 0 || (spec_g && !spec.alt))
-        /* compute how much non-zero digits in integral and fractional
-           parts */
+      /* fractional part */
+      str += np->ip_size;
+      str_len -= np->ip_size;
+      if (!keep_trailing_zeros)
+        /* remove trailing zeros, if any */
         {
-          size_t str_len;
-          str_len = strlen (str); /* note: the sign has been skipped */
-
-          if (exp > str_len)
-            /* mpfr_get_str doesn't give the trailing zeros when p is a
-               multiple of 10 (p integer, so no fractional part) */
+          char *ptr = str + str_len - 1; /* pointer to the last digit of
+                                            str */
+          while ((*ptr == '0') && (str_len != 0))
             {
-              np->ip_trailing_zeros = exp - str_len;
-              np->ip_size = str_len;
-              if (spec.alt)
-                np->point = MPFR_DECIMAL_POINT;
+              --ptr;
+              --str_len;
             }
-          else
-            /* str may contain some digits which are in fractional part */
-            {
-              char *ptr;
-
-              ptr = str + str_len - 1; /* points to the end of str */
-              str_len -= np->ip_size;  /* number of digits in fractional
-                                          part */
-
-              if (!keep_trailing_zeros)
-                /* remove trailing zeros, if any */
-                {
-                  while ((*ptr == '0') && (str_len != 0))
-                    {
-                      --ptr;
-                      --str_len;
-                    }
-                }
+        }
 
-              if (str_len > INT_MAX)
-                /* too many digits in fractional part */
-                return -1;
+      if (str_len > 0)
+        /* some nonzero digits in fractional part */
+        {
+          if (str_len > INT_MAX)
+            /* too many digits in fractional part */
+            return -1;
 
-              if (str_len != 0)
-                /* some digits in fractional part */
-                {
-                  np->point = MPFR_DECIMAL_POINT;
-                  np->fp_ptr = str + np->ip_size;
-                  np->fp_size = str_len;
-                }
-            }
+          np->point = MPFR_DECIMAL_POINT;
+          np->fp_ptr = str;
+          np->fp_size = str_len;
         }
-      else
-        /* spec.prec digits in fractional part */
-        {
-          if (np->ip_size == exp - 1)
-            /* the absolute value of the number has been rounded up to a power
-               of ten.
-               Insert an additional zero in integral part and put the rest of
-               them in fractional part. */
-            np->ip_trailing_zeros = 1;
-
-          if (spec.prec != 0)
-            {
-              MPFR_ASSERTD (np->ip_size + np->ip_trailing_zeros == exp);
-              MPFR_ASSERTD (np->ip_size + spec.prec == nsd);
 
-              np->point = MPFR_DECIMAL_POINT;
-              np->fp_ptr = str + np->ip_size;
-              np->fp_size = spec.prec;
-            }
-          else if (spec.alt)
-            np->point = MPFR_DECIMAL_POINT;
+      if (keep_trailing_zeros && str_len < spec.prec)
+        /* add missing trailing zeros */
+        {
+          np->point = MPFR_DECIMAL_POINT;
+          np->fp_trailing_zeros = spec.prec - np->fp_size;
         }
+
+      if (spec.alt)
+        /* add decimal point even if no digits follow it */
+        np->point = MPFR_DECIMAL_POINT;
     }
 
   return 0;
index 2855663..1ae4fe2 100644 (file)
@@ -1,7 +1,7 @@
 /* mpfr_get_version -- MPFR version
 
-Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
@@ -25,5 +25,5 @@ http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
 const char *
 mpfr_get_version (void)
 {
-  return "3.1.0";
+  return "3.1.2";
 }
index ea41aeb..82c82ee 100644 (file)
@@ -4,8 +4,8 @@
    CERTAIN TO BE SUBJECT TO INCOMPATIBLE CHANGES OR DISAPPEAR COMPLETELY IN
    FUTURE MPFR RELEASES.
 
-Copyright 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.
 
index f59ce3b..1f4e77b 100644 (file)
@@ -1,6 +1,6 @@
 /* Various Thresholds of MPFR, not exported.  -*- mode: C -*-
 
-Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
 
 This file is part of the GNU MPFR Library.
 
index 0d1ecd9..5514690 100644 (file)
@@ -1,6 +1,6 @@
 /* Various Thresholds of MPFR, not exported.  -*- mode: C -*-
 
-Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
 
 This file is part of the GNU MPFR Library.
 
index 588761a..0cf85d0 100644 (file)
@@ -1,6 +1,6 @@
 /* Various Thresholds of MPFR, not exported.  -*- mode: C -*-
 
-Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
 
 This file is part of the GNU MPFR Library.
 
@@ -22,6 +22,9 @@ http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
 /* Generated by MPFR's tuneup.c, 2011-07-31, gcc 4.3.2 */
 /* gcc14.fsffrance.org (Intel(R) Xeon(R) CPU X5450 @ 3.00GHz) with gmp 5.0.2 */
 
+/* very similar timings were obtained on 2012-01-25 with gcc 4.1.3
+   on gcc70.fsffrance.org (Intel(R) Xeon(TM) CPU 3.20GHz) with gmp 5.0.2,
+   where GMP defines -mtune=nocona, thus we share the parameters */
 
 #define MPFR_MULHIGH_TAB  \
  -1,0,0,0,-1,0,0,0,0,0,0,0,0,0,0,9, \
index 8657c64..8412940 100644 (file)
@@ -1,6 +1,6 @@
 /* Various Thresholds of MPFR, not exported.  -*- mode: C -*-
 
-Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
 
 This file is part of the GNU MPFR Library.
 
index 71f5957..24d3e17 100644 (file)
@@ -1,8 +1,8 @@
 /* mpfr_y0, mpfr_y1, mpfr_yn -- Bessel functions of 2nd kind, integer order.
    http://www.opengroup.org/onlinepubs/009695399/functions/y0.html
 
-Copyright 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-Contributed by the Arenaire and Caramel projects, INRIA.
+Copyright 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Contributed by the AriC and Caramel projects, INRIA.
 
 This file is part of the GNU MPFR Library.