1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
|
Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
Contributed by the Arenaire and Cacao projects, INRIA.
This file is part of the GNU MPFR Library.
The GNU MPFR Library is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 3 of the License, or (at your
option) any later version.
The GNU MPFR Library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License
along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
##############################################################################
Changes from versions 2.4.* to version 3.0:
- MPFR is now distributed under the GNU Lesser General Public License
version 3 or later (LGPL v3+).
- Rounding modes GMP_RNDX are now MPFR_RNDX (GMP_RNDX kept for compatibility).
- A new rounding mode (MPFR_RNDA) is available to round away from zero.
_ The rounding mode type mp_rnd_t is now mpfr_rnd_t (mp_rnd_t kept for
compatibility).
- Functions mpfr_random and mpfr_random2 have been removed.
- mpfr_get_f and mpfr_get_z now return a ternary value.
- New functions mpfr_buildopt_tls_p and mpfr_buildopt_decimal_p giving
information about options used at MPFR build time.
- New function mpfr_set_zero.
- New function mpfr_digamma.
- New functions mpfr_set_flt and mpfr_get_flt to convert from/to the float type
- New function mpfr_urandom.
- Speed improvement for large operands in the trigonometric functions
(mpfr_sin, mpfr_cos, mpfr_tan, mpfr_sin_cos): speedup of about 2.5 for
10^5 digits, of about 5 for 10^6 digits.
- Speed improvement for large operands of the inverse trigonometric functions
(arcsin, arccos, arctan): about 2 for 10^3 digits, up to 2.7 for 10^6 digits
- Some documentation files are installed in $docdir.
- Bug fixes.
Changes from versions 2.3.* to version 2.4.0:
- MPFR is now a GNU package.
- Changes in the behavior of mpfr_strtofr and in its documentation
concerning particular cases where the code and the documentation
did not match; this change is also present in MPFR 2.3.1.
- Behavior of mpfr_check_range changed: if the value is an inexact
infinity, the overflow flag is set (in case it was lost); this
change is also present in MPFR 2.3.2.
- Function mpfr_init_gmp_rand (only defined when building MPFR without
the --with-gmp-build configure option) is no longer defined at all.
This function was private and not documented, and was used only in
the MPFR test suite. User code that calls it is regarded as broken
and may fail as a consequence. Running the old test suite against
MPFR 2.4.0 may also fail.
- New functions:
* between a MPFR number and a double: mpfr_add_d, mpfr_sub_d,
mpfr_d_sub, mpfr_mul_d, mpfr_div_d, mpfr_d_div,
* formatted input/output:
mpfr_printf, mpfr_fprintf, mpfr_vprintf, mpfr_vfprintf,
mpfr_sprintf, mpfr_snprintf, mpfr_vsprintf, mpfr_vsnprintf,
mpfr_asprintf, mpfr_vasprintf.
* mpfr_sinh_cosh, mpfr_li2, mpfr_modf, mpfr_fmod, mpfr_rec_sqrt.
- Configure test for TLS support.
- Get default $CC and $CFLAGS from gmp.h (__GMP_CC / __GMP_CFLAGS,
which are available as of GMP 4.2.3).
- Documented the fact that mpfr_random and mpfr_random2 will be
suppressed in the next release, and that the specification of
mpfr_eq may change in the next release (for compatibility with
the mpf layer of GMP).
- Bug fixes.
Changes from versions 2.2.* to version 2.3.0:
- The mpfr.info file is now installed in the share subdirectory
(as required by the Filesystem Hierarchy Standard); see output
of "./configure --help".
- The shared library is now enabled by default. If the MPFR build
fails on your platform, try the --disable-shared configure option
to disable the shared library.
- Thread-safe support with Microsoft Visual compiler.
- New functions mpfr_j0, mpfr_j1, mpfr_jn, mpfr_y0, mpfr_y1, mpfr_yn,
mpfr_lgamma, mpfr_remainder, mpfr_remquo, mpfr_fms, mpfr_signbit,
mpfr_setsign, mpfr_copysign, mpfr_get_patches.
- Functions mpfr_sin, mpfr_cos and mpfr_sin_cos improved (argument
reduction).
- More detailed MPFR manual.
- Improved tests (make check).
- Bug fixes.
Changes from versions 2.1.* to version 2.2.0:
- Bug fixes.
- new functions mpfr_set_overflow, mpfr_set_underflow, mpfr_set_inexflag,
mpfr_set_erangeflag, mpfr_set_nanflag, mpfr_erfc, mpfr_atan2, mpfr_pow_z,
mpfr_subnormalize, mpfr_const_catalan, mpfr_sec, mpfr_csc, mpfr_cot,
mpfr_root, mpfr_eint, mpfr_get_f, mpfr_sech, mpfr_csch, mpfr_coth,
mpfr_lngamma.
- new macro: MPFR_VERSION_STRING
- Remove the exported MPFR variables from mpfr.h to mpfr-impl.h.
(They were undocumented, so programs which respect the API still work).
- Grep CC and CFLAGS from GMP Makefile if possible.
- Math functions are faster (both average and worst cases).
- Better support for long double.
- Shared library of MPFR.
- Binary compatible with previous versions if you do not use undocumented
features.
- Thread safe (if built with --enable-thread-safe).
- Logging facility.
- Change in the semantics of mpfr_out_str/mpfr_get_str when n_digits=0.
- Better locale support.
Changes from version 2.1.0 to version 2.1.1:
- Better way to detect the GMP library.
- Bug fixes.
Changes from version 2.0.3 to version 2.1.0:
- Bug fixes.
- new functions mpfr_strtofr, mpfr_set_uj, mpfr_set_sj, mpfr_set_ui_2exp,
mpfr_set_si_2exp, mpfr_set_sj_2exp, mpfr_set_uj_2exp, mpfr_get_uj,
mpfr_get_sj, mpfr_get_z, mpfr_free_str, mpfr_si_sub, mpfr_sub_si,
mpfr_mul_si, mpfr_si_div, mpfr_div_si, mpfr_sqr, mpfr_cmp_z, mpfr_cmp_q,
mpfr_zero_p, mpfr_free_cache, mpfr_sum, mpfr_get_version,
mpfr_get_default_rounding_mode, mpfr_get_emin_min, mpfr_get_emin_max,
mpfr_get_emax_min, mpfr_get_emax_max, mpfr_inits, mpfr_inits2, mpfr_clears,
mpfr_fits_intmax_p, mpfr_fits_uintmax_p, mpfr_clear_erangeflag,
mpfr_erangeflag_p, mpfr_rint_round, mpfr_rint_trunc, mpfr_rint_ceil,
mpfr_rint_floor.
- new macros MPFR_DECL_INIT, MPFR_VERSION, MPFR_VERSION_NUM,
MPFR_VERSION_MAJOR, MPFR_VERSION_MINOR, MPFR_VERSION_PATCHLEVEL.
- improved documentation.
- improved configure.
- improved portability (library and test suite).
- It handles correctly non IEEE-754 double.
- GMP internal files are not needed to install MPFR.
- It is faster with low-precision floating point.
- New global flag: ERANGE_FLAG.
- Binary incompatible with previous versions, but API compatible.
- mpfr_set_str doesn't allow anymore "@NAN@garbagechar" and "@INF@garbagechar",
allows base 0 (detection of the base), prefix (0x, 0b), leading whitespace.
Changes from version 2.0.2 to version 2.0.3:
- Bug fixes.
- Support GMP as a shared library (not fully tested).
Changes from version 2.0.1 to version 2.0.2:
- many bug fixes and other improvements.
- new functions mpfr_prec_round (replaces mpfr_round_prec), mpfr_get_exp,
mpfr_set_exp, mpfr_get_ld, mpfr_set_ld, mpfr_get_d_2exp, mpfr_get_si,
mpfr_get_ui, mpfr_nextabove, mpfr_nextbelow, mpfr_nexttoward, mpfr_frac,
mpfr_fits_*, mpfr_cmp_d, mpfr_cmpabs, mpfr_erf, mpfr_gamma, mpfr_zeta,
mpfr_greater_p, mpfr_greaterequal_p, mpfr_less_p, mpfr_lessequal_p,
mpfr_lessgreater_p, mpfr_equal_p, mpfr_unordered_p.
- removed functions: mpfr_print_binary, mpfr_round_prec (replaced by
mpfr_prec_round), mpfr_set_str_raw, mpfr_set_machine_rnd_mode.
- function mpfr_isinteger renamed mpfr_integer_p.
- return type of some functions changed from void to int, for consistency.
- return type of mpfr_set_prec changed from int to void.
- new values for exponent range.
- rename internal variables.
Changes from version 2001 to version 2.0.1:
- new mathematical functions: acos, acosh, asin, asinh, atan, atanh, cosh,
base-2 exponential and logarithm, base-10 logarithm, expm1, factorial,
pow, pow_si, pow_ui, sinh, tan, tanh, ui_pow, ui_pow_ui
- other new functions: mpfr_const_euler, mpfr_dim, mpfr_fma, mpfr_hypot,
mpfr_min, mpfr_max, mpfr_rint, mpfr_set_inf, mpfr_set_nan
- new operations with MPZ or MPQ: mpfr_{add,sub,mul,div}_[zq]
- new predicates: mpfr_inf_p, mpfr_nan_p, mpfr_number_p, mpfr_isinteger,
- add mechanism to set/check exponent range (overflow, underflow), partially
implemented in the mpfr functions.
- efficiency: mpfr_div is now faster when the divisor has a few limbs
- rounding: now mpfr_pow implements exact rounding, and most functions return a
ternary value indicating the position of the returned value wrt the exact one
(thus the return value is now 'int' instead of 'void')
- complete rewrite of the configuration files
- mpfr_get_d, mpfr_{add,sub}_one_ulp now get a rounding mode as 2nd argument
- some function names did change: mpz_set_fr is now mpfr_get_z_exp,
mpfr_print_raw is now mpfr_print_binary.
Changes from version 1.0 to version 2001:
- the default installation does not provide any more access to machine
rounding mode, and as a consequence does not compare MPFR results with
precision=53 to machine results. Add option -DTEST if you want to have
access to machine rounding mode, and to check MPFR results against.
- the MPFR files do not need <math.h> any more
- the header file <mpfr.h> was split into <mpfr.h> for exported functions
and <mpfr-impl.h> for internal functions. The user should not use functions
or macros from <mpfr-impl.h>, since those may change in further releases.
- <mpfr.h> was modified in order to make easy a C++ interface
- MPFR now deals with infinities (+infinity and -infinity) and NaN
- the missing function mpfr_swap is now available
- mpfr_zeta was removed (was incomplete)
- mpfr_init and mpfr_init2 now initialize the corresponding variable to 0
(like in other initialization functions from GNU MP)
- in case memory allocation fails, an error message is output
- several bugs of version 1.0 were fixed
Changes from version 0.4 to version 1.0:
- Version 1.0 now uses a standard configure/make installation.
- Version 1.0 implements all functions that are available in the MPF class
from GMP 3.1 (except mpf_swap) and a header file mpf2mpfr.h is included in
the distribution for easy change from MPF to MPFR.
- Version 1.0 implements new elementary functions: mpfr_sincos
- Some functions and macros have been renamed: mpfr_log2 is now
mpfr_const_log2, mpfr_pi is now mpfr_const_pi, SIGN is now MPFR_SIGN.
- Version 1.0 uses faster algorithms for mpfr_exp, mpfr_const_pi,
mpfr_const_log2. Compare the timings from version 1.0 and version 0.4.
- Version 1.0 corrects some bugs of version 0.4.
- The precision of MPFR variables is now named mpfr_prec, which makes it
easier to change it, to say unsigned long long. Same for the rounding mode
which is called mp_rnd_t.
You'll find other news concerning the GNU MPFR library on the web
page <http://www.mpfr.org/>.
|