= MPFR =
== Description ==
The MPFR library is a C library for multiple-precision floating-point
computations with correct rounding. MPFR has continuously been supported by
the INRIA and the current main authors come from the Caramel and Arénaire
project-teams at Loria (Nancy, France) and LIP (Lyon, France) respectively;
see more on the credit page. MPFR is based on the GMP multiple-precision
library.
The main goal of MPFR is to provide a library for multiple-precision
floating-point computation which is both efficient and has a well-defined
semantics. It copies the good ideas from the ANSI/IEEE-754 standard for
double-precision floating-point arithmetic (53-bit significand).
== License ==
MPFR is free. It is distributed under the GNU Lesser General Public License
(GNU Lesser GPL), version 3 or later (2.1 or later for MPFR versions until
2.4.x). The library has been registered in France by the Agence de Protection
des Programmes under the number IDDN FR 001 120020 00 R P 2000 000 10800, on
15 March 2000. This license guarantees your freedom to share and change MPFR,
to make sure MPFR is free for all its users. Unlike the ordinary General
Public License, the Lesser GPL enables developers of non-free programs to use
MPFR in their programs. If you have written a new function for MPFR or improved
an existing one, please share your work!
== SPKG Maintainers ==
* David Kirkby
== Upstream Contact ==
The MPFR website is located at http://mpfr.org/
The MPFR team can be contacted via the MPFR mailing list: mpfr@loria.fr
== Dependencies ==
* GMP/MPIR
* GNU patch
== Special Update/Build Instructions ==
* When building Sage binaries for wide-spread distribution, set the variable
`INCLUDE_MPFR_PATCH` to 1, to include a patch which avoids failures on sun4v
machines. (This applies to at least SunOS / Solaris.)
* Make sure the patches still apply.
* Make sure MPFR's settings of `CC` and `CFLAGS` still get properly extracted,
currently from its `config.log` in the `src/` directory.
* We should remove the `configure` option `--disable-thread-safe` in case
the issues without that have meanwhile been fixed. (Then we should
actually pass `--enable-thread-safe`.)
== TODO ==
* The workaround for a gcc bug on the T2 Solaris box is probably no
longer needed; Isthere is a T2 to test on left?
* --disable-thread-safe should be switched to --enable-thread-safe,
need to check that this works on the buildbot machines
== Changelog ==
=== mpfr-3.1.2.p0 (Volker Braun, 8 July 2013) ===
* Trac #14869: Update to latest upstream
* It seems that upstream is no longer distributing official patches
on top of official releases but only a single tarball (good!), so the
references to "official" upstream patches have been removed.
=== mpfr-3.1.0.p2 (Jeroen Demeyer, 28 May 2012) ===
* Trac #12751: Apply the ia64 workaround for gcc-4.7.0 *only* on
gcc-4.7.0 and not on other gcc-4.7.x versions.
* Remove pointless check for gmp.h.
* Rename MPFR_EXTRA_OPTS to MPFR_CONFIGURE for consistency with MPIR.
=== mpfr-3.1.0.p1 (Leif Leonhardy, April 13th 2012) ===
* #12837: Work around GCC 4.7.0 bug on ia64 (Itanium), unfortunately by almost
completely disabling optimization on that platform. (MPFR is also a pre-
requisite for building the GCC spkg; after that has been built, MPFR will
get rebuilt with normal optimization.)
* Use `patch` to apply patches.
* Apply all recent "official" upstream patches; the resulting MPFR version
then is 3.1.0-p8.
* Properly quote the parameter to the `configure` option `--libdir`.
* Export `CFLAGS`! Previously MPFR would not even have used "its own" flags
(extracted from `config.status` after configuring it with `CC` and `CFLAGS`
unset) if `CFLAGS`, set in its `spkg-install`, weren't already exported.
(Also export `CPPFLAGS` and `LDFLAGS`, to which `$CFLAG64` is now also added
if `SAGE64` is `yes`.)
* Add `$CFLAG64` to *required* `CFLAGS` if `SAGE64=yes`.
* Clean up the spkg; redirect all warnings and error messages to stderr; add
some messages.
=== mpfr-3.1.0.p0 (Jean-Pierre Flori, February 22nd, 2012) ===
* #11666: Further cleanups and rebase on #12131, #12366 and #12548.
* Let configure get the MPIR flags.
=== mpfr-3.1.0 (Mike Hansen, December 17th, 2011) ===
* #11666: Upgrade MPFR to 3.1.0
* Update spkg-install and spkg-check files to current standards
=== mpfr-2.4.2.p2 (Jeroen Demeyer, 20 February 2012) ===
* #12548: do not delete old libraries
=== mpfr-2.4.2.p1 (Jeroen Demeyer, 27 January 2012) ===
* #12366: delete old libraries/headers *after* build
* Remove useless "export MAKE=make".
* Do not run spkg-check by default.
* Actually check whether ./configure and $MAKE were successful.
=== mpfr-2.4.2.p0 (Simon King, December 10th, 2010) ===
* #12131: Use --libdir, to make the package work on openSUSE.
=== mpfr-2.4.2 (Mike Hansen, February 16th, 2010) ===
* #8261: Upgrade MPFR to 2.4.2.
=== mpfr-2.4.1p1 (Jaap Spies, Jan 26th, 2010) ===
* Make SAGE64 work also on Open Solaris 64 bit
=== mpfr-2.4.1p0 (David Kirkby, July 17th 2009) ===
* Sage TRAC #6453 http://sagetrac.org/sage_trac/ticket/6453
Implement a patch to mpn_exp.c developed by Paul Zimmermann
(Paul.Zimmermann@loria.fr) to bypass what may be a Solaris or gcc bug.
This avoids 20 test failures on a Sun T5240 running Solaris 10 (both
updates 4 and 7 have been tried on this machine). Since it's only seen
there, the patch is very specific and is only applied on those machines, not
all Solaris systems by default, but can be over-ridden with an environment
variable INCLUDE_MPFR_PATCH (set to 1 to include patch, 0 to exclude it).
If INCLUDE_MPFR_PATCH is unset, the patch will be included on sun4v systems,
but exluded on all others. Please set it to 1 if building binaries for others.
This is a bug in Solaris's memset() function, for more information see
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40757
* Remove a comment at the bottom of spkg-install telling developers to bypass
check on release systems. Given failures have occured, it would be unwise to
bypass any checks.
Note, the checks were performed in Sage 4.1, so despite a coment saying
checks should be bypassed in 'releases' they were in fact not bypassed.
The tests were already executed, which is how the bug was discovered.
* Add a comment to remind people not to bypass the tests, pointing out
failures had occured, so it would be unwise to bypass checks.
* Update the source to use the latest patches, as strongly reccommened in the
INSTALL file. This brings the code to MPFR 2.4.1 patch level 5, though I'm
considering it mpfr-2.4.1p0 for Sage purposes.
=== mpfr-2.4.1 (Michael Abshoff, March 2nd, 2009) ===
* update to the official MPFR 2.4.1 release
=== mpfr-2.4.0 (Michael Abshoff, February 7th, 2009) ===
* update to the official MPFR 2.4.0 release
* turn on the test suite per default
=== mpfr-2.3.2 (Michael Abshoff, September 27th, 2008) ===
* update to the official MPFR 2.3.2 release
=== mpfr-2.3.1 (Michael Abshoff, Jan. 29th, 2008) ===
* update to the official MPFR 2.3.1 release
* remove workaround patches
* split make phase into make & make install
* verify that SAGE_LOCAL is defined (#633)
=== mpfr-2.3.0.p2 (Michael Abshoff, Jan. 15th, 2008) ===
* integrate r5186 from trunk at http://gforge.inria.fr/plugins/scmsvn/viewcvs.php/trunk/?root=mpfr - This fixes an issue in mpfr where it would use alloca instead of the allocation function provided by GMP (which theses days is anything but alloca() due to limited stack on most system. Against policy I did patch mpfr-gmp.[c|h] directly since we will update to MPFR 2.3.1 once it is out shortly anyway.
* add 64 bit MacOSX build support
=== mpfr-2.3.0.p1 (Michael Abshoff, Nov. 15th, 2007) ===
* patched sources in place to 2.3.0-p4 (see http://www.mpfr.org/mpfr-current/patches)
=== mpfr-2.3.0 (Michael Abshoff, Sept. 14th, 2007) ===
* upgrade to mpfr 2.3.0 release
* add spkg-check