= MPFI =

== Description ==

MPFI is a library for interval arithmetic, which is built upon the MPFR
multiple precision floating-point arithmetic.

MPFI is intended to be a portable library written in C for arbitrary
precision interval arithmetic with intervals represented using MPFR
reliable floating-point numbers. It is based on the GNU MP library and
on the MPFR library.  The purpose of an arbitrary precision interval
arithmetic is on the one hand to get "guaranteed" results, thanks to
interval computation, and on the other hand to obtain accurate results,
thanks to multiple precision arithmetic. The MPFI library is built upon
MPFR in order to benefit from the correct rounding provided, for each
operation or function, by MPFR.  Further advantages of using MPFR are
its portability and compliance with the IEEE 754 standard for
floating-point arithmetic.

== License ==

This version of MPFI is released under the GNU Lesser General Public
License.  It is permitted to link MPFI to non-free programs, as long as
when distributing them the MPFI source code and a means to re-link with
a modified MPFI is provided.

== Upstream Contact ==

The MPFI website is located at http://mpfi.gforge.inria.fr/

The MPFI team can be contacted via the MPFI mailing list:
mpfi-users@lists.gforge.inria.fr

== Dependencies ==

 * GMP
 * MPFR

== Changelog ==

=== mpfi-1.5.1 (Jean-Pierre Flori, January 23rd, 2012) ===
 * #12171: Update MPFI to 1.5.1

=== mpfi-1.5.0 (Mike Hansen, December 17th, 2011) ===
 * #12171: Update MPFI to 1.5.0

=== mpfi-1.3.4-cvs20071125.p9 (Simon King, December 10th, 2011) ===
 * #12131: Use --libdir, to make the package work on openSUSE.

=== mpfi-1.3.4-cvs20071125.p8 (Jaap Spies, January 26th, 2010) ===
 * Make 64 bit Open Solaris work

=== mpfi-1.3.4-cvs20071125.p7 (Michael Abshoff, May 18th, 2008) ===
 * add 64 bit OSX build support

=== mpfi-1.3.4-cvs20071125.p6 (William Stein, May 16, 2008) ===
 * modify configure.ac to work with cygwin.
 * NOTE: src/ is *not* pristine!  I ran autogen.sh after patching configure.ac.

=== mpfi-1.3.4-cvs20071125.p5 (Michael Abshoff, Jan. 31st, 2008)  ===
 * remove  binary files from src/tests (#2011)

=== mpfi-1.3.4-cvs20071125.p4 (Michael Abshoff)  ===
 * change configure.ac to detect dylibs on OSX, too. Changed the macros in
   configure.ac to:

# Checks for MPFR lib (Before GMP!)
if ` test "$with_mpfr_lib" `
then
  AC_MSG_CHECKING(MPFR library)
        if test -r "$with_mpfr_lib/libmpfr.so"
        then
          LDADD="$LDADD -L$with_gmp_lib -lmpfr"
        else
           if test -r "$with_mpfr_lib/libmpfr.dylib"
           then
             LDADD="$LDADD -L$with_gmp_lib -lmpfr"
           else
             AC_MSG_ERROR([$with_mpfr_lib/libmpfr.so or libmpfr.dylib not found])
           fi
        fi
  AC_MSG_RESULT(yes)
else
  AC_CHECK_LIB(mpfr, main, , AC_MSG_ERROR([Library MPFR not found]))
fi

# Checks for GMP lib
if ` test "$with_gmp_lib" `
then
  AC_MSG_CHECKING(GMP library)
        if test -r "$with_gmp_lib/libgmp.so"
        then
          LDADD="$LDADD -L$with_gmp_lib -lgmp"
        else
          if test -r "$with_gmp_lib/libgmp.dylib"
          then
            LDADD="$LDADD -L$with_gmp_lib -lgmp"
          else
            AC_MSG_ERROR([$with_gmp_lib/libgmp.so or libgmp.dylib not found])
          fi
        fi
  AC_MSG_RESULT(yes)
else
  AC_CHECK_LIB(gmp, main, , AC_MSG_ERROR([Library GMP not found]))
fi


=== mpfi-1.3.4-cvs20071125.p3 (Michael Abshoff)  ===
 * change configure.ac to check and link against a dynamic gmp.so, mpfr.so

Clean up the test of the changelog

1. I have changed two functions:

First, mpfi_set_str() in mpfi/src/mpfi_io.c.
(The original version was very wrong; I fixed off-by-one errors, fixed
a buffer overflow, and fixed it so that it could return precise
intervals on precisely representable inputs, instead of always making
an interval containing two floats.)  The original version of the file
is at mpfi/src/mpfi_io.c.ORIG

Second, mpfi_diam_rel() in mpfi/src/mpfi.c: I changed line 598 from
    if (!mpfr_cmp_ui(centre,0))
to
    if (mpfr_cmp_ui(centre,0))

2. I (=William Stein) changed configure.ac to only build src and not tests or
doc, since building tests on some systems fails.  Of course, it would be
better to fix building of tests.  I put the changed version of configure.ac
in the patches directory.  After changing it, I ran
       autoreconf --force
in the src directory.

3. Carl Witty 2007-11-01
a. Fixed mpfi_ui_sub, by applying a patch posted by Paul Zimmerman to the
MPFI bug tracker.
b. Fixed the infinite loop in mpfi_cmp_sym_pi() (fixes the infinite loop
in mpfi_cos(), reported as MPFI bug# 1868 and Sage issue #389.

4. Carl Witty 2007-11-25
MPFI upstream is alive again!  I'm switching to the current upstream CVS
version as of today, fetched with:

cvs -d :pserver:anonymous@scm.gforge.inria.fr:/cvsroot/mpfi login
cvs -d :pserver:anonymous@scm.gforge.inria.fr:/cvsroot/mpfi checkout mpfi
mv mpfi src
cd src
./autogen.sh

This version includes all the patches from the Sage spkg (or
equivalent code), and fixes several additional bugs.  (So I removed
the patches/ directory, and the corresponding lines in spkg-install.)
Also, this new version installs both shared and static libraries.

5. Carl Witty 2007-11-29
The previous version did not compile on OSX 10.4 Intel.  I think the problem
may be with src/autogen.sh, which makes ltmain.sh, config.sub, and
config.guess be symlinks instead of files; so we get whatever versions
of these files happen to be already installed on the user's computer.

So I've replaced these three symlinks with the corresponding files, and
we'll see if that fixes the problem.

6. Carl Witty 2007-12-01
The previous version required "autoheader" (part of autoconf).
I've copied in a new version of src/missing, and touched src/mpfi_config.h.in;
I believe that either of these changes would suffice to fix the problem.
