2009-02-09 19:24:56 -05:00
|
|
|
Copyright 1991, 1996, 1999, 2000 Free Software Foundation, Inc.
|
|
|
|
|
|
|
|
Copyright 2008 William Hart
|
|
|
|
|
|
|
|
This file is part of the MPIR Library.
|
|
|
|
|
|
|
|
The MPIR 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 2.1 of the License, or (at your
|
|
|
|
option) any later version.
|
|
|
|
|
|
|
|
The MPIR 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 MPIR Library; see the file COPYING.LIB. If not, write to
|
|
|
|
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
|
|
|
02110-1301, USA.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
THE MPIR LIBRARY
|
|
|
|
|
|
|
|
|
|
|
|
MPIR is a library for arbitrary precision arithmetic, operating on signed
|
|
|
|
integers, rational numbers, and floating point numbers. It has a rich set of
|
|
|
|
functions, and the functions have a regular interface.
|
|
|
|
|
|
|
|
MPIR is designed to be as fast as possible, both for small operands and huge
|
|
|
|
operands. The speed is achieved by using fullwords as the basic arithmetic
|
|
|
|
type, by using fast algorithms, with carefully optimized assembly code for the
|
|
|
|
most common inner loops for lots of CPUs, and by a general emphasis on speed
|
|
|
|
(instead of simplicity or elegance).
|
|
|
|
|
|
|
|
MPIR is believed to be faster than any other similar library. Its advantage
|
|
|
|
increases with operand sizes for certain operations, since MPIR in many
|
|
|
|
cases has asymptotically faster algorithms.
|
|
|
|
|
|
|
|
MPIR is free software and may be freely copied on the terms contained in the
|
|
|
|
files COPYING.LIB and COPYING (most of MPIR is under the former, some under
|
|
|
|
the latter).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
OVERVIEW OF MPIR
|
|
|
|
|
|
|
|
There are five classes of functions in MPIR.
|
|
|
|
|
|
|
|
1. Signed integer arithmetic functions (mpz). These functions are intended
|
|
|
|
to be easy to use, with their regular interface. The associated type is
|
|
|
|
`mpz_t'.
|
|
|
|
|
|
|
|
2. Rational arithmetic functions (mpq). For now, just a small set of
|
|
|
|
functions necessary for basic rational arithmetics. The associated type
|
|
|
|
is `mpq_t'.
|
|
|
|
|
|
|
|
3. Floating-point arithmetic functions (mpf). If the C type `double'
|
|
|
|
doesn't give enough precision for your application, declare your
|
|
|
|
variables as `mpf_t' instead, set the precision to any number desired,
|
|
|
|
and call the functions in the mpf class for the arithmetic operations.
|
|
|
|
|
|
|
|
4. Positive-integer, hard-to-use, very low overhead functions are in the
|
|
|
|
mpn class. No memory management is performed. The caller must ensure
|
|
|
|
enough space is available for the results. The set of functions is not
|
|
|
|
regular, nor is the calling interface. These functions accept input
|
|
|
|
arguments in the form of pairs consisting of a pointer to the least
|
|
|
|
significant word, and an integral size telling how many limbs (= words)
|
|
|
|
the pointer points to.
|
|
|
|
|
|
|
|
Almost all calculations, in the entire package, are made by calling these
|
|
|
|
low-level functions.
|
|
|
|
|
|
|
|
5. Berkeley MP compatible functions.
|
|
|
|
|
|
|
|
To use these functions, include the file "mp.h". You can test if you are
|
|
|
|
using the GNU version by testing if the symbol __GNU_MP__ is defined.
|
|
|
|
|
|
|
|
For more information on how to use MPIR, please refer to the documentation.
|
|
|
|
It is composed from the file gmp.texi, and can be displayed on the screen or
|
|
|
|
printed. How to do that, as well how to build the library, is described in
|
|
|
|
the INSTALL file in this directory.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
REPORTING BUGS
|
|
|
|
|
|
|
|
If you find a bug in the library, please make sure to tell us about it!
|
|
|
|
|
|
|
|
You should first check the MPIR web pages at http://www.mpir.org/. There will
|
|
|
|
be patches for all known serious bugs there.
|
|
|
|
|
|
|
|
Report bugs to our development list: http://groups.google.com/group/mpir-devel.
|
|
|
|
What information is needed in a good bug report is described in the manual.
|
|
|
|
The same address can be used for suggesting modifications and enhancements.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
----------------
|
|
|
|
Local variables:
|
|
|
|
mode: text
|
|
|
|
fill-column: 78
|
|
|
|
End:
|