=================================================================== RCS file: /home/cvs/OpenXM_contrib/gmp/Attic/INSTALL,v retrieving revision 1.1 retrieving revision 1.1.1.3 diff -u -p -r1.1 -r1.1.1.3 --- OpenXM_contrib/gmp/Attic/INSTALL 2000/01/10 15:35:21 1.1 +++ OpenXM_contrib/gmp/Attic/INSTALL 2003/08/25 16:05:54 1.1.1.3 @@ -1,35 +1,76 @@ -INSTALLING GMP -============== +Copyright 1996, 1997, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. +This file is part of the GNU MP Library. + +The GNU MP 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 GNU MP 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 MP Library; see the file COPYING.LIB. If not, write to +the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +02111-1307, USA. + + + + + + INSTALLING GNU MP + ================= + + These instructions are only for the impatient. Others should read the install -instructions in the manual, gmp.info. Use "info -f gmp.info", or, if you -don't have info, use type "C-h i g (gmp.info)Top" in emacs. +instructions in gmp.info. Use -Here are short instructions how to install MP, and some examples that help you -get started using MP. + info -f ./gmp.info -First, you need to compile, and optionally install, MP. Since you're -impatient, try this: +or in emacs - ./configure; make + C-u C-h i gmp.info -If that fails, or you care about the performance of MP, you need to read the -full instructions in the chapter "Installing MP", in the manual. -Next, you need to try some small test programs, for example the ones below. +Here are some brief instructions on how to install GMP, and some examples to +help you get started using it. First you need to compile. Since you're +impatient, try this -In MP programs, all variables need to be initialized before they are assigned, -and cleared out before program flow leaves the scope in which it was declared. -Here is an example of a program that reads two numbers from the command line, -multiplies them, and prints the result to stdout. + ./configure + make +If that fails, or you care about the performance of GMP, you need to read the +full instructions in the chapter "Installing GMP" in the manual. + +Optionally, you can install with the following. This will be to /usr/local by +default, and you'll probably need to be "root" to be able to write there. + + make install + +Next, try some small test programs, for example the ones below. + +In GMP programs, all variables need to be initialized before they are +assigned, and cleared out before program flow leaves the scope in which they +were declared. Here is an example program that reads two numbers from the +command line, multiplies them, and prints the result to stdout. + + #include - #include /* All MP programs need to include gmp.h */ + #include /* All GMP programs need to include gmp.h */ main (int argc, char **argv) { mpz_t a, b, p; + if (argc != 3) + { + printf ("Usage: %s \n", argv[0]); + return 1; + } + /* Initialize variables */ mpz_init (a); mpz_init (b); @@ -42,20 +83,22 @@ multiplies them, and prints the result to stdout. /* Multiply a and b and put the result in p */ mpz_mul (p, a, b); - /* Print p in base 10 */ - mpz_out_str (stdout, 10, p); - fputc ('\n', stdout); + /* Print p in decimal */ + gmp_printf ("%Zd\n", p); /* Clear out variables */ mpz_clear (a); mpz_clear (b); mpz_clear (p); - exit (0); + return 0; } -In practice, that example would be written like this instead: +This might look tedious, with all the initializing and clearing. Fortunately +some of these operations can be combined, and other operations can often be +avoided. An experienced GMP user might write: + #include #include @@ -63,6 +106,12 @@ In practice, that example would be written like this i { mpz_t a, b, p; + if (argc != 3) + { + printf ("Usage: %s \n", argv[0]); + return 1; + } + /* Initialize and assign a and b from base 10 strings in argv */ mpz_init_set_str (a, argv[1], 10); mpz_init_set_str (b, argv[2], 10); @@ -72,83 +121,53 @@ In practice, that example would be written like this i /* Multiply a and b and put the result in p */ mpz_mul (p, a, b); - /* Print p in base 10 */ - mpz_out_str (stdout, 10, p); - fputc ('\n', stdout); + /* Print p in decimal */ + gmp_printf ("%Zd\n", p); /* Since we're about to exit, no need to clear out variables */ - exit (0); + return 0; } -Finally, you have to compile your test program, and link it with the MP -library. Assuming your working directory is still the gmp source directory, -type: - gcc -g -I. example.c libgmp.a +Now you have to compile your test program, and link it with the GMP library. +Assuming your working directory is still the gmp build directory, and your +source file is called example.c, enter: + gcc -g -I. example.c .libs/libgmp.a +After installing, the command becomes: "gcc -g example.c -lgmp". Also, GMP is +libtool based so you can use that to link if you want. + Now try to run the example: - a.out 98365871231256752134 319378318340103345227 + ./a.out 98365871231256752134 319378318340103345227 31415926535897932384618573336104570964418 -The functions used here all operate on the domain of signed integers. -Functions operating on that domain have names starting with "mpz_". There are -many more such functions than used in these examples. See the chapter -"Integer Functions" in the manual, for a complete list. +The functions used here all operate on signed integers, and have names +starting with "mpz_". There are many more such functions than used in these +examples. See the chapter "Integer Functions" in the manual for a complete +list. -There are two other main classes of functions in MP. They operate on rational -numbers and floating-point numbers, respectively. The chapters "Rational -Number Functions", and "Floating-point Functions" documents these classes. +There are two other main classes of functions in GMP. They operate on +rational numbers and floating-point numbers, respectively. The chapters +"Rational Number Functions", and "Floating-point Functions" document these +classes. To run a set of tests, do "make check". This will take a while. To create the printable documentation from the texinfo source, type "make -dvi". This requires the "tex" command to be available in your search path. +gmp.dvi" or "make gmp.ps". This requires various "tex" commands. -To install the library, do "make install". - -If you decide to use MP, It is a good idea you read at least the chapter "MP +If you decide to use GMP, it is a good idea you at least read the chapter "GMP Basics" in the manual. +Some known build problems are noted in the "Installing GMP" chapter of +the manual. Please report other problems to bug-gmp@gnu.org. -Known Build Problems --------------------- -Note that GCC 2.7.2 (as well as 2.6.3) for the RS/6000 and PowerPC can not -be used to compile GMP, due to a bug in GCC. If you want to use GCC, you -need to apply the patch at the end of this file, or use a later version of -the compiler. -If you are on a Sequent Symmetry, use GAS instead of the system's assembler -due to the latter's serious bugs. - -The system compiler on NeXT is a massacred and old gcc, even if the -compiler calls itself cc. This compiler cannot be used to build GMP. You -need to get a real gcc, and install that before you compile GMP. (NeXT -might have fixed this in newer releases of their system.) - -Please report other problems to bug-gmp@prep.ai.mit.edu. - - -Patch to apply to GCC 2.6.3 and 2.7.2: - -*** config/rs6000/rs6000.md Sun Feb 11 08:22:11 1996 ---- config/rs6000/rs6000.md.new Sun Feb 18 03:33:37 1996 -*************** -*** 920,926 **** - (set (match_operand:SI 0 "gpc_reg_operand" "=r") - (not:SI (match_dup 1)))] - "" -! "nor. %0,%2,%1" - [(set_attr "type" "compare")]) - - (define_insn "" ---- 920,926 ---- - (set (match_operand:SI 0 "gpc_reg_operand" "=r") - (not:SI (match_dup 1)))] - "" -! "nor. %0,%1,%1" - [(set_attr "type" "compare")]) - - (define_insn "" +---------------- +Local variables: +mode: text +fill-column: 78 +End: