From 6ec01646dc55b6fa688ed5906e0d52556d174da2 Mon Sep 17 00:00:00 2001 From: markm Date: Sun, 20 Oct 1996 08:49:26 +0000 Subject: Clean import of libgmp 2.0.2, with only the non-x86 bits removed. BMakefiles and other bits will follow. Requested by: Andrey Chernov Made world by: Chuck Robey --- contrib/libgmp/INSTALL | 154 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 154 insertions(+) create mode 100644 contrib/libgmp/INSTALL (limited to 'contrib/libgmp/INSTALL') diff --git a/contrib/libgmp/INSTALL b/contrib/libgmp/INSTALL new file mode 100644 index 0000000..38bfaa8 --- /dev/null +++ b/contrib/libgmp/INSTALL @@ -0,0 +1,154 @@ +INSTALLING GMP +============== + +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. + +Here are short instructions how to install MP, and some examples that help you +get started using MP. + +First, you need to compile, and optionally install, MP. Since you're +impatient, try this: + + ./configure; make + +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. + +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. + + #include + #include /* All MP programs need to include gmp.h */ + + main (int argc, char **argv) + { + mpz_t a, b, p; + + /* Initialize variables */ + mpz_init (a); + mpz_init (b); + mpz_init (p); + + /* Assign a and b from base 10 strings in argv */ + mpz_set_str (a, argv[1], 10); + mpz_set_str (b, argv[2], 10); + + /* 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); + + /* Clear out variables */ + mpz_clear (a); + mpz_clear (b); + mpz_clear (p); + exit (0); + } + + +In practice, that example would be written like this instead: + + #include + #include + + main (int argc, char **argv) + { + mpz_t a, b, p; + + /* 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); + /* Initialize p */ + mpz_init (p); + + /* 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); + + /* Since we're about to exit, no need to clear out variables */ + exit (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 try to run the example: + + 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. + +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. + +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. + +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 +Basics" in the manual. + + +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 "" -- cgit v1.1