( BSD Compatible Functions

Info Catalog ( C++ Class Interface ( Top ( Custom Allocation
 Berkeley MP Compatible Functions
 These functions are intended to be fully compatible with the Berkeley MP
 library which is available on many BSD derived U*ix systems.  The
 `--enable-mpbsd' option must be used when building GNU MP to make these
 available ( Installing GMP).
    The original Berkeley MP library has a usage restriction: you cannot
 use the same variable as both source and destination in a single
 function call.  The compatible functions in GNU MP do not share this
 restriction--inputs and outputs may overlap.
    It is not recommended that new programs are written using these
 functions.  Apart from the incomplete set of functions, the interface
 for initializing `MINT' objects is more error prone, and the `pow'
 function collides with `pow' in `libm.a'.
    Include the header `mp.h' to get the definition of the necessary
 types and functions.  If you are on a BSD derived system, make sure to
 include GNU `mp.h' if you are going to link the GNU `libmp.a' to your
 program.  This means that you probably need to give the `-I<dir>'
 option to the compiler, where `<dir>' is the directory where you have
 GNU `mp.h'.
  - Function: MINT * itom (signed short int INITIAL_VALUE)
      Allocate an integer consisting of a `MINT' object and dynamic limb
      space.  Initialize the integer to INITIAL_VALUE.  Return a pointer
      to the `MINT' object.
  - Function: MINT * xtom (char *INITIAL_VALUE)
      Allocate an integer consisting of a `MINT' object and dynamic limb
      space.  Initialize the integer from INITIAL_VALUE, a hexadecimal,
      null-terminated C string.  Return a pointer to the `MINT' object.
  - Function: void move (MINT *SRC, MINT *DEST)
      Set DEST to SRC by copying.  Both variables must be previously
  - Function: void madd (MINT *SRC_1, MINT *SRC_2, MINT *DESTINATION)
      Add SRC_1 and SRC_2 and put the sum in DESTINATION.
  - Function: void msub (MINT *SRC_1, MINT *SRC_2, MINT *DESTINATION)
      Subtract SRC_2 from SRC_1 and put the difference in DESTINATION.
  - Function: void mult (MINT *SRC_1, MINT *SRC_2, MINT *DESTINATION)
      Multiply SRC_1 and SRC_2 and put the product in DESTINATION.
           MINT *REMAINDER)
  - Function: void sdiv (MINT *DIVIDEND, signed short int DIVISOR, MINT
           *QUOTIENT, signed short int *REMAINDER)
      DIVISOR.  The quotient is rounded towards zero; the remainder has
      the same sign as the dividend unless it is zero.
      Some implementations of these functions work differently--or not
      at all--for negative arguments.
  - Function: void msqrt (MINT *OP, MINT *ROOT, MINT *REMAINDER)
      Set ROOT to the truncated integer part of the square root of OP,
      like `mpz_sqrt'.  Set REMAINDER to OP-ROOT*ROOT, i.e.  zero if OP
      is a perfect square.
      If ROOT and REMAINDER are the same variable, the results are
  - Function: void pow (MINT *BASE, MINT *EXP, MINT *MOD, MINT *DEST)
      Set DEST to (BASE raised to EXP) modulo MOD.
      Note that the name `pow' clashes with `pow' from the standard C
      math library ( Exponentiation and Logarithms (libc)Exponents
      and Logarithms.).  An application will only be able to use one or
      the other.
  - Function: void rpow (MINT *BASE, signed short int EXP, MINT *DEST)
      Set DEST to BASE raised to EXP.
  - Function: void gcd (MINT *OP1, MINT *OP2, MINT *RES)
      Set RES to the greatest common divisor of OP1 and OP2.
  - Function: int mcmp (MINT *OP1, MINT *OP2)
      Compare OP1 and OP2.  Return a positive value if OP1 > OP2, zero
      if OP1 = OP2, and a negative value if OP1 < OP2.
  - Function: void min (MINT *DEST)
      Input a decimal string from `stdin', and put the read integer in
      DEST.  SPC and TAB are allowed in the number string, and are
  - Function: void mout (MINT *SRC)
      Output SRC to `stdout', as a decimal string.  Also output a
  - Function: char * mtox (MINT *OP)
      Convert OP to a hexadecimal string, and return a pointer to the
      string.  The returned string is allocated using the default memory
      allocation function, `malloc' by default.  It will be
      `strlen(str)+1' bytes, that being exactly enough for the string
      and null-terminator.
  - Function: void mfree (MINT *OP)
      De-allocate, the space used by OP.  *This function should only be
      passed a value returned by `itom' or `xtom'.*
Info Catalog ( C++ Class Interface ( Top ( Custom Allocation
automatically generated byinfo2html