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