1Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc. 2Contributed by the AriC and Caramel projects, INRIA. 3 4This file is part of the GNU MPFR Library. 5 6The GNU MPFR Library is free software; you can redistribute it and/or modify 7it under the terms of the GNU Lesser General Public License as published by 8the Free Software Foundation; either version 3 of the License, or (at your 9option) any later version. 10 11The GNU MPFR Library is distributed in the hope that it will be useful, but 12WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 13or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 14License for more details. 15 16You should have received a copy of the GNU Lesser General Public License 17along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see 18http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc., 1951 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. 20 21############################################################################## 22 23Changes from version 3.1.1 to version 3.1.2: 24- Bug fixes (see <http://www.mpfr.org/mpfr-3.1.1/#fixed> or ChangeLog file). 25- Updated examples to the MPFR 3.x API. 26- Note: The official tarballs for MPFR up to 3.1.1 were affected by a 27 vulnerability for "make distcheck" due to a bug in old GNU Automake 28 versions: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2012-3386 29 30Changes from version 3.1.0 to version 3.1.1: 31- Improved MPFR manual. 32- Test coverage: 96.5% lines of code. 33- Bug fixes (see <http://www.mpfr.org/mpfr-3.1.0/#fixed> or ChangeLog file). 34 35Changes from versions 3.0.* to version 3.1.0: 36- The "canard �� l'orange" release. 37- The MPFR source has been reorganized. 38- Dropped ansi2knr support. 39- TLS support is now detected automatically. If TLS is supported, MPFR is 40 built as thread safe by default. To disable TLS explicitly, configure 41 MPFR with --disable-thread-safe. 42- New --enable-gmp-internals configure option to use GMP's undocumented 43 functions (not from the public API). Note that library versioning is 44 not guaranteed to work if this option is used. 45- The mpfr_urandom and mpfr_urandomb functions now return identical values 46 on processors with different word size (assuming the same random seed, and 47 since the GMP random generator does not depend itself on the word size, 48 cf http://gmplib.org/list-archives/gmp-devel/2010-September/001642.html). 49- The mpfr_add_one_ulp and mpfr_sub_one_ulp macros (which are obsolete and 50 no more documented) will be removed in a future release. 51- Speed improvement for the mpfr_sqr and mpfr_div functions using Mulders' 52 algorithm. As a consequence, other functions using those routines are 53 also faster. 54- Much faster formatted output (mpfr_printf, etc.) with %Rg and similar. 55- The --with-gmp-build configure option can now be used when the GMP 56 source directory and the GMP build directory are different (without 57 having to copy header files manually as before). 58- New functions mpfr_buildopt_gmpinternals_p, mpfr_buildopt_tune_case, 59 mpfr_frexp, mpfr_grandom and mpfr_z_sub. 60- New divide-by-zero exception (flag) and associated functions. 61- The mpfr.h header can be included several times, while still supporting 62 optional functions (see Section "Headers and Libraries" in the manual). 63- Updated tuning parameters. 64- Improved MPFR manual. 65- MPFR tests: libtool no longer generates wrapper scripts with "make check" 66 (so that running the tests under valgrind or gdb is easier). 67- Internal change: the logging mechanism has been improved. 68- Test coverage: 95.2% lines of code. 69- Bug fixes, in particular a huge inefficiency in mpfr_exp (when the 70 target precision is less than MPFR_EXP_THRESHOLD) on hard-to-round 71 cases, which can take several minutes. 72 Note: The mpfr_subnormalize implementation up to MPFR 3.0.0 did not change 73 the flags. In particular, it did not follow the generic rule concerning 74 the inexact flag (and no special behavior was specified). The case of the 75 underflow flag was more a lack of specification. 76 77Changes from versions 2.4.* to version 3.0.0: 78- The "boudin aux pommes" release. 79- MPFR 3.0.0 is binary incompatible with previous versions but (almost) 80 API compatible. More precisely the obsolete functions mpfr_random 81 and mpfr_random2 have been removed, the meaning of the return type 82 of the function mpfr_get_f has changed, and the return type of the 83 function mpfr_get_z is now int instead of void. In practice, this 84 should not break any existing code. 85- MPFR is now distributed under the GNU Lesser General Public License 86 version 3 or later (LGPL v3+). 87- Rounding modes GMP_RNDx are now MPFR_RNDx (GMP_RNDx kept for 88 compatibility). 89- A new rounding mode (MPFR_RNDA) is available to round away from zero. 90- The rounding mode type is now mpfr_rnd_t (as in previous versions, 91 both mpfr_rnd_t and mp_rnd_t are accepted, but mp_rnd_t may be 92 removed in the future). 93- The precision type is now mpfr_prec_t (as in previous versions, both 94 mpfr_prec_t and mp_prec_t are accepted, but mp_prec_t may be removed 95 in the future) and it is now signed (it was unsigned in MPFR 2.*, but 96 this was not documented). In practice, this change should not affect 97 existing code that assumed nothing on the precision type. 98- MPFR now has its own exponent type mpfr_exp_t, which is currently 99 the same as GMP's mp_exp_t. 100- Functions mpfr_random and mpfr_random2 have been removed. 101- mpfr_get_f and mpfr_get_z now return a ternary value. 102- mpfr_strtofr now accepts bases from 37 to 62. 103- mpfr_custom_get_mantissa was renamed to mpfr_custom_get_significand 104 (mpfr_custom_get_mantissa is still available via a #define). 105- Functions mpfr_get_si, mpfr_get_ui, mpfr_get_sj, mpfr_get_uj, 106 mpfr_get_z and mpfr_get_z_2exp no longer have cases with undefined 107 behavior; in these cases, the behavior is now specified, and in 108 particular, the erange flag is set. 109- New functions mpfr_buildopt_tls_p and mpfr_buildopt_decimal_p giving 110 information about options used at MPFR build time. 111- New function mpfr_regular_p. 112- New function mpfr_set_zero. 113- New function mpfr_digamma. 114- New function mpfr_ai (incomplete, experimental). 115- New functions mpfr_set_flt and mpfr_get_flt to convert from/to the 116 float type. 117- New function mpfr_urandom. 118- New function mpfr_set_z_2exp (companion to mpfr_get_z_2exp, which 119 was renamed from mpfr_get_z_exp in previous versions). 120- New function mpfr_min_prec. 121- Speed improvement for large precisions in the trigonometric functions 122 (mpfr_sin, mpfr_cos, mpfr_tan, mpfr_sin_cos): speedup of about 2.5 123 for 10^5 digits, of about 5 for 10^6 digits. 124- Speed improvement for large precisions of the inverse trigonometric 125 functions (arcsin, arccos, arctan): about 2 for 10^3 digits, up to 126 2.7 for 10^6 digits. 127- Some documentation files are installed in $docdir. 128- The detection of a GMP build directory (more precisely, the internal 129 header files of GMP) was previously done separately from the use of 130 the --with-gmp-build configure option. This was not consistent with 131 the documentation and with other parts of the configure script. So, 132 as of MPFR 3.0.0, the internal header files of GMP are now used if 133 and only if the --with-gmp-build configure option is given. 134- The configure script recognizes some extra "long double" formats 135 (double big endian, double little endian, double-double big endian). 136- MPFR manual: added "API Compatibility" section. 137- Test coverage: 97.1% lines of code. 138- Bug fixes. 139 140Changes from versions 2.3.* to version 2.4.0: 141- The "andouillette sauce moutarde" release. 142- MPFR is now a GNU package. 143- Changes in the behavior of mpfr_strtofr and in its documentation 144 concerning particular cases where the code and the documentation 145 did not match; this change is also present in MPFR 2.3.1. 146- Behavior of mpfr_check_range changed: if the value is an inexact 147 infinity, the overflow flag is set (in case it was lost); this 148 change is also present in MPFR 2.3.2. 149- Function mpfr_init_gmp_rand (only defined when building MPFR without 150 the --with-gmp-build configure option) is no longer defined at all. 151 This function was private and not documented, and was used only in 152 the MPFR test suite. User code that calls it is regarded as broken 153 and may fail as a consequence. Running the old test suite against 154 MPFR 2.4.0 may also fail. 155- New functions: 156 * between a MPFR number and a double: mpfr_add_d, mpfr_sub_d, 157 mpfr_d_sub, mpfr_mul_d, mpfr_div_d, mpfr_d_div, 158 * formatted input/output: 159 mpfr_printf, mpfr_fprintf, mpfr_vprintf, mpfr_vfprintf, 160 mpfr_sprintf, mpfr_snprintf, mpfr_vsprintf, mpfr_vsnprintf, 161 mpfr_asprintf, mpfr_vasprintf. 162 * mpfr_sinh_cosh, mpfr_li2, mpfr_modf, mpfr_fmod, mpfr_rec_sqrt. 163- Configure test for TLS support. 164- Get default $CC and $CFLAGS from gmp.h (__GMP_CC / __GMP_CFLAGS, 165 which are available as of GMP 4.2.3). 166- Documented the fact that mpfr_random and mpfr_random2 will be 167 suppressed in the next release, and that the specification of 168 mpfr_eq may change in the next release (for compatibility with 169 the mpf layer of GMP). 170- Test coverage: 96.7% lines of code. 171- Bug fixes. 172 173Changes from versions 2.2.* to version 2.3.0: 174- The mpfr.info file is now installed in the share subdirectory 175 (as required by the Filesystem Hierarchy Standard); see output 176 of "./configure --help". 177- The shared library is now enabled by default. If the MPFR build 178 fails on your platform, try the --disable-shared configure option 179 to disable the shared library. 180- Thread-safe support with Microsoft Visual compiler. 181- New functions mpfr_j0, mpfr_j1, mpfr_jn, mpfr_y0, mpfr_y1, mpfr_yn, 182 mpfr_lgamma, mpfr_remainder, mpfr_remquo, mpfr_fms, mpfr_signbit, 183 mpfr_setsign, mpfr_copysign, mpfr_get_patches. 184- Functions mpfr_sin, mpfr_cos and mpfr_sin_cos improved (argument 185 reduction). 186- More detailed MPFR manual. 187- Improved tests (make check). 188- Bug fixes. 189 190Changes from versions 2.1.* to version 2.2.0: 191- Bug fixes. 192- new functions mpfr_set_overflow, mpfr_set_underflow, mpfr_set_inexflag, 193 mpfr_set_erangeflag, mpfr_set_nanflag, mpfr_erfc, mpfr_atan2, mpfr_pow_z, 194 mpfr_subnormalize, mpfr_const_catalan, mpfr_sec, mpfr_csc, mpfr_cot, 195 mpfr_root, mpfr_eint, mpfr_get_f, mpfr_sech, mpfr_csch, mpfr_coth, 196 mpfr_lngamma. 197- new macro: MPFR_VERSION_STRING 198- Remove the exported MPFR variables from mpfr.h to mpfr-impl.h. 199 (They were undocumented, so programs which respect the API still work). 200- Grep CC and CFLAGS from GMP Makefile if possible. 201- Math functions are faster (both average and worst cases). 202- Better support for long double. 203- Shared library of MPFR. 204- Binary compatible with previous versions if you do not use undocumented 205 features. 206- Thread safe (if built with --enable-thread-safe). 207- Logging facility. 208- Change in the semantics of mpfr_out_str/mpfr_get_str when n_digits=0. 209- Better locale support. 210 211Changes from version 2.1.0 to version 2.1.1: 212- Better way to detect the GMP library. 213- Bug fixes. 214 215Changes from version 2.0.3 to version 2.1.0: 216- Bug fixes. 217- new functions mpfr_strtofr, mpfr_set_uj, mpfr_set_sj, mpfr_set_ui_2exp, 218 mpfr_set_si_2exp, mpfr_set_sj_2exp, mpfr_set_uj_2exp, mpfr_get_uj, 219 mpfr_get_sj, mpfr_get_z, mpfr_free_str, mpfr_si_sub, mpfr_sub_si, 220 mpfr_mul_si, mpfr_si_div, mpfr_div_si, mpfr_sqr, mpfr_cmp_z, mpfr_cmp_q, 221 mpfr_zero_p, mpfr_free_cache, mpfr_sum, mpfr_get_version, 222 mpfr_get_default_rounding_mode, mpfr_get_emin_min, mpfr_get_emin_max, 223 mpfr_get_emax_min, mpfr_get_emax_max, mpfr_inits, mpfr_inits2, mpfr_clears, 224 mpfr_fits_intmax_p, mpfr_fits_uintmax_p, mpfr_clear_erangeflag, 225 mpfr_erangeflag_p, mpfr_rint_round, mpfr_rint_trunc, mpfr_rint_ceil, 226 mpfr_rint_floor. 227- new macros MPFR_DECL_INIT, MPFR_VERSION, MPFR_VERSION_NUM, 228 MPFR_VERSION_MAJOR, MPFR_VERSION_MINOR, MPFR_VERSION_PATCHLEVEL. 229- improved documentation. 230- improved configure. 231- improved portability (library and test suite). 232- It handles correctly non IEEE-754 double. 233- GMP internal files are not needed to install MPFR. 234- It is faster with low-precision floating point. 235- New global flag: ERANGE_FLAG. 236- Binary incompatible with previous versions, but API compatible. 237- mpfr_set_str doesn't allow anymore "@NAN@garbagechar" and "@INF@garbagechar", 238 allows base 0 (detection of the base), prefix (0x, 0b), leading whitespace. 239 240Changes from version 2.0.2 to version 2.0.3: 241- Bug fixes. 242- Support GMP as a shared library (not fully tested). 243 244Changes from version 2.0.1 to version 2.0.2: 245- many bug fixes and other improvements. 246- new functions mpfr_prec_round (replaces mpfr_round_prec), mpfr_get_exp, 247 mpfr_set_exp, mpfr_get_ld, mpfr_set_ld, mpfr_get_d_2exp, mpfr_get_si, 248 mpfr_get_ui, mpfr_nextabove, mpfr_nextbelow, mpfr_nexttoward, mpfr_frac, 249 mpfr_fits_*, mpfr_cmp_d, mpfr_cmpabs, mpfr_erf, mpfr_gamma, mpfr_zeta, 250 mpfr_greater_p, mpfr_greaterequal_p, mpfr_less_p, mpfr_lessequal_p, 251 mpfr_lessgreater_p, mpfr_equal_p, mpfr_unordered_p. 252- removed functions: mpfr_print_binary, mpfr_round_prec (replaced by 253 mpfr_prec_round), mpfr_set_str_raw, mpfr_set_machine_rnd_mode. 254- function mpfr_isinteger renamed mpfr_integer_p. 255- return type of some functions changed from void to int, for consistency. 256- return type of mpfr_set_prec changed from int to void. 257- new values for exponent range. 258- rename internal variables. 259 260Changes from version 2001 to version 2.0.1: 261- new mathematical functions: acos, acosh, asin, asinh, atan, atanh, cosh, 262 base-2 exponential and logarithm, base-10 logarithm, expm1, factorial, 263 pow, pow_si, pow_ui, sinh, tan, tanh, ui_pow, ui_pow_ui 264- other new functions: mpfr_const_euler, mpfr_dim, mpfr_fma, mpfr_hypot, 265 mpfr_min, mpfr_max, mpfr_rint, mpfr_set_inf, mpfr_set_nan 266- new operations with MPZ or MPQ: mpfr_{add,sub,mul,div}_[zq] 267- new predicates: mpfr_inf_p, mpfr_nan_p, mpfr_number_p, mpfr_isinteger, 268- add mechanism to set/check exponent range (overflow, underflow), partially 269 implemented in the mpfr functions. 270- efficiency: mpfr_div is now faster when the divisor has a few limbs 271- rounding: now mpfr_pow implements exact rounding, and most functions return a 272 ternary value indicating the position of the returned value wrt the exact one 273 (thus the return value is now 'int' instead of 'void') 274- complete rewrite of the configuration files 275- mpfr_get_d, mpfr_{add,sub}_one_ulp now get a rounding mode as 2nd argument 276- some function names did change: mpz_set_fr is now mpfr_get_z_exp, 277 mpfr_print_raw is now mpfr_print_binary. 278 279Changes from version 1.0 to version 2001: 280- the default installation does not provide any more access to machine 281 rounding mode, and as a consequence does not compare MPFR results with 282 precision=53 to machine results. Add option -DTEST if you want to have 283 access to machine rounding mode, and to check MPFR results against. 284- the MPFR files do not need <math.h> any more 285- the header file <mpfr.h> was split into <mpfr.h> for exported functions 286 and <mpfr-impl.h> for internal functions. The user should not use functions 287 or macros from <mpfr-impl.h>, since those may change in further releases. 288- <mpfr.h> was modified in order to make easy a C++ interface 289- MPFR now deals with infinities (+infinity and -infinity) and NaN 290- the missing function mpfr_swap is now available 291- mpfr_zeta was removed (was incomplete) 292- mpfr_init and mpfr_init2 now initialize the corresponding variable to 0 293 (like in other initialization functions from GNU MP) 294- in case memory allocation fails, an error message is output 295- several bugs of version 1.0 were fixed 296 297Changes from version 0.4 to version 1.0: 298 299- Version 1.0 now uses a standard configure/make installation. 300- Version 1.0 implements all functions that are available in the MPF class 301 from GMP 3.1 (except mpf_swap) and a header file mpf2mpfr.h is included in 302 the distribution for easy change from MPF to MPFR. 303- Version 1.0 implements new elementary functions: mpfr_sincos 304- Some functions and macros have been renamed: mpfr_log2 is now 305 mpfr_const_log2, mpfr_pi is now mpfr_const_pi, SIGN is now MPFR_SIGN. 306- Version 1.0 uses faster algorithms for mpfr_exp, mpfr_const_pi, 307 mpfr_const_log2. Compare the timings from version 1.0 and version 0.4. 308- Version 1.0 corrects some bugs of version 0.4. 309- The precision of MPFR variables is now named mpfr_prec, which makes it 310 easier to change it, to say unsigned long long. Same for the rounding mode 311 which is called mp_rnd_t. 312 313You'll find other news concerning the GNU MPFR library on the web 314page <http://www.mpfr.org/>. 315