GMP:   Multi-precision Arithmetic
1 mpz:   Multi-precision Integers
mpz?
mpz
mpz-set!
mpz->number
mpz-zero?
mpz-positive?
mpz-negative?
mpz=?
mpz->bytes
bytes->mpz
mpz-bytes-length
1.1 Operations on mpz Values
mpz_  set
mpz_  set_  ui
mpz_  set_  si
mpz_  set_  d
mpz_  set_  q
mpz_  set_  str
mpz_  swap
mpz_  get_  ui
mpz_  get_  si
mpz_  get_  d
mpz_  get_  d_  2exp
mpz_  add
mpz_  add_  ui
mpz_  sub
mpz_  sub_  ui
mpz_  ui_  sub
mpz_  mul
mpz_  mul_  si
mpz_  mul_  ui
mpz_  addmul
mpz_  addmul_  ui
mpz_  submul
mpz_  submul_  ui
mpz_  mul_  2exp
mpz_  neg
mpz_  abs
mpz_  cdiv_  q
mpz_  cdiv_  r
mpz_  cdiv_  qr
mpz_  cdiv_  q_  ui
mpz_  cdiv_  r_  ui
mpz_  cdiv_  qr_  ui
mpz_  cdiv_  ui
mpz_  cdiv_  q_  2exp
mpz_  cdiv_  r_  2exp
mpz_  fdiv_  q
mpz_  fdiv_  r
mpz_  fdiv_  qr
mpz_  fdiv_  q_  ui
mpz_  fdiv_  r_  ui
mpz_  fdiv_  qr_  ui
mpz_  fdiv_  ui
mpz_  fdiv_  q_  2exp
mpz_  fdiv_  r_  2exp
mpz_  tdiv_  q
mpz_  tdiv_  r
mpz_  tdiv_  qr
mpz_  tdiv_  q_  ui
mpz_  tdiv_  r_  ui
mpz_  tdiv_  qr_  ui
mpz_  tdiv_  ui
mpz_  tdiv_  q_  2exp
mpz_  tdiv_  r_  2exp
mpz_  mod
mpz_  mod_  ui
mpz_  divexact
mpz_  divexact_  ui
mpz_  divisible_  p
mpz_  divisible_  ui_  p
mpz_  divisible_  2exp_  p
mpz_  congruent
mpz_  congruent_  ui_  p
mpz_  congruent_  2exp_  p
mpz_  pow_  ui
mpz_  ui_  pow_  ui
mpz_  root
mpz_  rootrem
mpz_  sqrt
mpz_  sqrtrem
mpz_  perfect_  power_  p
mpz_  perfect_  square_  p
mpz_  probab_  prime_  p
mpz_  nextprime
mpz_  gcd
mpz_  gcd_  ui
mpz_  gcdext
mpz_  lcm
mpz_  lcm_  ui
mpz_  invert
mpz_  kronecker
mpz_  kronecker_  si
mpz_  kronecker_  ui
mpz_  si_  kronecker
mpz_  ui_  kronecker
mpz_  remove
mpz_  fac_  ui
mpz_  primordial_  ui
mpz_  bin_  ui
mpz_  bin_  uiui
mpz_  fib_  ui
mpz_  fib2_  ui
mpz_  lucnum_  ui
mpz_  lucnum2_  ui
mpz_  cmp
mpz_  cmp_  d
mpz_  cmp_  si
mpz_  cmp_  ui
mpz_  cmpabs
mpz_  cmpabs_  d
mpz_  cmpabs_  ui
mpz_  sgn
mpz_  and
mpz_  ior
mpz_  xor
mpz_  com
mpz_  popcount
mpz_  hamdist
mpz_  scan0
mpz_  scan1
mpz_  clrbit
mpz_  combit
mpz_  tstbit
mpz_  urandomb
mpz_  urandomm
mpz_  rrandomb
mpz_  fits_  ulong_  p
mpz_  fits_  slong_  p
mpz_  fits_  uint_  p
mpz_  fits_  sint_  p
mpz_  fits_  ushort_  p
mpz_  fits_  sshort_  p
mpz_  odd_  p
mpz_  even_  p
mpz_  sizeinbase
mpz_  size
mpz_  getlimbn
2 mpq:   Multi-precision Rational Numbers
mpq?
mpq
mpq->number
mpq-zero?
mpq-positive?
mpq-negative?
2.1 Operations on mpq Values
mpq_  canonicalize
mpq_  set
mpq_  set_  z
mpq_  set_  ui
mpq_  set_  si
mpq_  swap
mpq_  get_  d
mpq_  set_  d
mpq_  add
mpq_  sub
mpq_  mul
mpq_  mul_  2exp
mpq_  div
mpq_  div_  2exp
mpq_  neg
mpq_  abs
mpq_  inv
mpq_  cmp
mpq_  cmp_  z
mpq_  cmp_  ui
mpq_  cmp_  si
mpq_  equal
mpq_  sgn
mpq_  get_  num
mpq_  get_  den
mpq_  set_  num
mpq_  set_  den
3 Random Number Generation
gmp-randstate?
gmp-randstate
gmp-randstate-mt
gmp_  randseed
gmp_  randseed_  ui
gmp_  urandomb_  ui
gmp_  urandomm_  ui
7.7

GMP: Multi-precision Arithmetic

Ryan Culpepper <ryanc@racket-lang.org>

This library provides safe low-level bindings to GMP, the GNU Multi-Precision Arithmetic library. This manual assumes familiarity with the relevant parts of the GMP manual.

 (require gmp) package: gmp-lib

This package is distributed under the LGPL. Note that the GMP native library is dual-licensed under the LGPLv3 and the GPLv2 (see copying conditions for details).

1 mpz: Multi-precision Integers

An mpz (mpz_t) is a mutable value containing an arbitrary-precision integer. In this library, such values are created with mpz and recognized with mpz?. Their backing storage is automatically initialized and garbage-collected.

procedure

(mpz? v)  boolean?

  v : any/c
Returns #t if v is an mpz value, #f otherwise.

procedure

(mpz [n])  mpz?

  n : (or/c exact-integer? mpz?) = 0
Creates a new mpz initialized with the value n. If n is an mpz, then its value is copied; n is unchanged and does not share storage with the result.

procedure

(mpz-set! z n)  void?

  z : mpz?
  n : exact-integer?
Sets z to contain the value n.

procedure

(mpz->number z)  exact-integer?

  z : mpz?
Returns the integer value stored in z.

procedure

(mpz-zero? z)  boolean?

  z : mpz?

procedure

(mpz-positive? z)  boolean?

  z : mpz?

procedure

(mpz-negative? z)  boolean?

  z : mpz?
Like zero?, positive?, and negative?, respectively.

procedure

(mpz=? z1 z2)  boolean?

  z1 : mpz?
  z2 : mpz?
Returns #t if z1 and z2 contain equal integers, #f otherwise.

procedure

(mpz->bytes z    
  size    
  signed?    
  [big-endian?    
  dest-buf]    
  dest-start)  bytes?
  z : mpz?
  size : (or/c exact-positive-integer? #f)
  signed? : boolean?
  big-endian? : boolean? = #t
  dest-buf : bytes? = (make-bytes size)
  dest-start : 0

procedure

(bytes->mpz buf signed? [big-endian? start end])  mpz?

  buf : bytes?
  signed? : boolean?
  big-endian? : boolean? = #t
  start : exact-nonnegative-integer? = 0
  end : exact-nonnegative-integer? = (bytes-length buf)
Like integer->integer-bytes and integer-bytes->integer, respectively. The size argument to mpz->bytes can be any positive integer (as long as it is large enough to represent z), or it may be #f to automatically use the shortest suitable size.

procedure

(mpz-bytes-length z signed?)  exact-positive-integer?

  z : mpz?
  signed? : boolean?
Computes the number of bytes needed by mpz->bytes to represent z.

1.1 Operations on mpz Values

The following operations are supported. By GMP convention, destination arguments come first, followed by source operands.

procedure

(mpz_set rop op)  void?

  rop : mpz?
  op : mpz?

procedure

(mpz_set_ui rop op)  void?

  rop : mpz?
  op : unsigned-long

procedure

(mpz_set_si rop op)  void?

  rop : mpz?
  op : signed-long

procedure

(mpz_set_d rop op)  void?

  rop : mpz?
  op : rational?

procedure

(mpz_set_q rop op)  void?

  rop : mpz?
  op : mpq?

procedure

(mpz_set_str rop op)  void?

  rop : mpz
  op : string?

procedure

(mpz_swap rop11 rop2)  void?

  rop11 : mpz?
  rop2 : mpz?
See Assignment Functions in the GMP manual.

procedure

(mpz_get_ui op)  exact-nonnegative-integer?

  op : mpz?

procedure

(mpz_get_si op)  exact-integer?

  op : mpz?

procedure

(mpz_get_d op)  rational?

  op : mpz?

procedure

(mpz_get_d_2exp op)  
rational? exact-integer?
  op : mpz?
See Conversion Functions in the GMP manual.

procedure

(mpz_add rop op1 op2)  void?

  rop : mpz?
  op1 : mpz?
  op2 : mpz?

procedure

(mpz_add_ui rop op1 op2)  void?

  rop : mpz?
  op1 : mpz?
  op2 : unsigned-long

procedure

(mpz_sub rop op1 op2)  void?

  rop : mpz?
  op1 : mpz?
  op2 : mpz?

procedure

(mpz_sub_ui rop op1 op2)  void?

  rop : mpz?
  op1 : mpz?
  op2 : unsigned-long

procedure

(mpz_ui_sub rop op1 op2)  void?

  rop : mpz?
  op1 : unsigned-long
  op2 : mpz?

procedure

(mpz_mul rop op1 op2)  void?

  rop : mpz?
  op1 : mpz?
  op2 : mpz?

procedure

(mpz_mul_si rop op1 op2)  void?

  rop : mpz?
  op1 : mpz?
  op2 : signed-long

procedure

(mpz_mul_ui rop op1 op2)  void?

  rop : mpz?
  op1 : mpz?
  op2 : unsigned-long

procedure

(mpz_addmul rop op1 op2)  void?

  rop : mpz?
  op1 : mpz?
  op2 : mpz?

procedure

(mpz_addmul_ui rop op1 op2)  void?

  rop : mpz?
  op1 : mpz?
  op2 : unsigned-long

procedure

(mpz_submul rop op1 op2)  void?

  rop : mpz?
  op1 : mpz?
  op2 : mpz?

procedure

(mpz_submul_ui rop op1 op2)  void?

  rop : mpz?
  op1 : mpz?
  op2 : unsigned-long

procedure

(mpz_mul_2exp rop op1 op2)  void?

  rop : mpz?
  op1 : mpz?
  op2 : unsigned-long

procedure

(mpz_neg rop op)  void?

  rop : mpz?
  op : mpz?

procedure

(mpz_abs rop op)  void?

  rop : mpz?
  op : mpz?
See Arithmetic Functions in the GMP manual.

procedure

(mpz_cdiv_q q n d)  void?

  q : mpz?
  n : mpz?
  d : mpz?

procedure

(mpz_cdiv_r r n d)  void?

  r : mpz?
  n : mpz?
  d : mpz?

procedure

(mpz_cdiv_qr q r n d)  void?

  q : mpz?
  r : mpz?
  n : mpz?
  d : mpz?

procedure

(mpz_cdiv_q_ui q n d)  void?

  q : mpz?
  n : mpz?
  d : unsigned-long

procedure

(mpz_cdiv_r_ui r n d)  void?

  r : mpz?
  n : mpz?
  d : unsigned-long

procedure

(mpz_cdiv_qr_ui q r n d)  void?

  q : mpz?
  r : mpz?
  n : mpz?
  d : unsigned-long

procedure

(mpz_cdiv_ui n d)  void?

  n : mpz?
  d : unsigned-long

procedure

(mpz_cdiv_q_2exp q n b)  void?

  q : mpz?
  n : mpz?
  b : unsigned-long

procedure

(mpz_cdiv_r_2exp r n b)  void?

  r : mpz?
  n : mpz?
  b : unsigned-long

procedure

(mpz_fdiv_q q n d)  void?

  q : mpz?
  n : mpz?
  d : mpz?

procedure

(mpz_fdiv_r r n d)  void?

  r : mpz?
  n : mpz?
  d : mpz?

procedure

(mpz_fdiv_qr q r n d)  void?

  q : mpz?
  r : mpz?
  n : mpz?
  d : mpz?

procedure

(mpz_fdiv_q_ui q n d)  void?

  q : mpz?
  n : mpz?
  d : unsigned-long

procedure

(mpz_fdiv_r_ui r n d)  void?

  r : mpz?
  n : mpz?
  d : unsigned-long

procedure

(mpz_fdiv_qr_ui q r n d)  void?

  q : mpz?
  r : mpz?
  n : mpz?
  d : unsigned-long

procedure

(mpz_fdiv_ui n d)  void?

  n : mpz?
  d : unsigned-long

procedure

(mpz_fdiv_q_2exp q n b)  void?

  q : mpz?
  n : mpz?
  b : unsigned-long

procedure

(mpz_fdiv_r_2exp r n b)  void?

  r : mpz?
  n : mpz?
  b : unsigned-long

procedure

(mpz_tdiv_q q n d)  void?

  q : mpz?
  n : mpz?
  d : mpz?

procedure

(mpz_tdiv_r r n d)  void?

  r : mpz?
  n : mpz?
  d : mpz?

procedure

(mpz_tdiv_qr q r n d)  void?

  q : mpz?
  r : mpz?
  n : mpz?
  d : mpz?

procedure

(mpz_tdiv_q_ui q n d)  void?

  q : mpz?
  n : mpz?
  d : unsigned-long

procedure

(mpz_tdiv_r_ui r n d)  void?

  r : mpz?
  n : mpz?
  d : unsigned-long

procedure

(mpz_tdiv_qr_ui q r n d)  void?

  q : mpz?
  r : mpz?
  n : mpz?
  d : unsigned-long

procedure

(mpz_tdiv_ui n d)  void?

  n : mpz?
  d : unsigned-long

procedure

(mpz_tdiv_q_2exp q n b)  void?

  q : mpz?
  n : mpz?
  b : unsigned-long

procedure

(mpz_tdiv_r_2exp r n b)  void?

  r : mpz?
  n : mpz?
  b : unsigned-long

procedure

(mpz_mod r n d)  void?

  r : mpz?
  n : mpz?
  d : mpz?

procedure

(mpz_mod_ui r n d)  void?

  r : mpz?
  n : mpz?
  d : unsigned-long

procedure

(mpz_divexact q n d)  void?

  q : mpz?
  n : mpz?
  d : mpz?

procedure

(mpz_divexact_ui q n d)  void?

  q : mpz?
  n : mpz?
  d : unsigned-long

procedure

(mpz_divisible_p n d)  exact-integer?

  n : mpz?
  d : mpz?

procedure

(mpz_divisible_ui_p n d)  exact-integer?

  n : mpz?
  d : unsigned-long

procedure

(mpz_divisible_2exp_p n b)  exact-integer?

  n : mpz?
  b : unsigned-long

procedure

(mpz_congruent n c d)  exact-integer?

  n : mpz?
  c : mpz?
  d : mpz?

procedure

(mpz_congruent_ui_p n c d)  exact-integer?

  n : mpz?
  c : mpz?
  d : unsigned-long

procedure

(mpz_congruent_2exp_p n c b)  exact-integer?

  n : mpz?
  c : mpz?
  b : unsigned-long
See Division Functions in the GMP manual.

procedure

(mpz_pow_ui rop base exp)  void?

  rop : mpz?
  base : mpz?
  exp : unsigned-long

procedure

(mpz_ui_pow_ui rop base exp)  void?

  rop : mpz?
  base : unsigned-long
  exp : unsigned-long
See Exponentiation Functions in the GMP manual.

procedure

(mpz_root root u n)  void?

  root : mpz?
  u : mpz?
  n : unsigned-long

procedure

(mpz_rootrem root rem u n)  void?

  root : mpz?
  rem : mpz?
  u : mpz?
  n : unsigned-long

procedure

(mpz_sqrt root op)  void?

  root : mpz?
  op : mpz?

procedure

(mpz_sqrtrem root rem op)  void?

  root : mpz?
  rem : mpz?
  op : mpz?

procedure

(mpz_perfect_power_p op)  exact-integer?

  op : mpz?

procedure

(mpz_perfect_square_p op)  exact-integer?

  op : mpz?
See Root Extraction Functions in the GMP manual.

procedure

(mpz_probab_prime_p n reps)  exact-integer?

  n : mpz?
  reps : signed-integer

procedure

(mpz_nextprime rop op)  void?

  rop : mpz?
  op : mpz?

procedure

(mpz_gcd rop op1 op2)  void?

  rop : mpz?
  op1 : mpz?
  op2 : mpz?

procedure

(mpz_gcd_ui rop op1 op2)  unsigned-long

  rop : mpz?
  op1 : mpz?
  op2 : unsigned-long

procedure

(mpz_gcdext g s t a b)  void?

  g : mpz?
  s : mpz?
  t : mpz?
  a : mpz?
  b : mpz?

procedure

(mpz_lcm rop op1 op2)  void?

  rop : mpz?
  op1 : mpz?
  op2 : mpz?

procedure

(mpz_lcm_ui rop op1 op2)  void?

  rop : mpz?
  op1 : mpz?
  op2 : unsigned-long

procedure

(mpz_invert rop op1 op2)  exact-integer?

  rop : mpz?
  op1 : mpz?
  op2 : mpz?

procedure

(mpz_kronecker a b)  exact-integer?

  a : mpz?
  b : mpz?

procedure

(mpz_kronecker_si a b)  exact-integer?

  a : mpz?
  b : signed-long

procedure

(mpz_kronecker_ui a b)  exact-integer?

  a : mpz?
  b : unsigned-long

procedure

(mpz_si_kronecker a b)  exact-integer?

  a : signed-long
  b : mpz?

procedure

(mpz_ui_kronecker a b)  exact-integer?

  a : unsigned-long
  b : mpz?

procedure

(mpz_remove rop op f)  exact-nonnegative-integer?

  rop : mpz?
  op : mpz?
  f : mpz?

procedure

(mpz_fac_ui rop op)  void?

  rop : mpz?
  op : mpz?

procedure

(mpz_primordial_ui rop n)  void?

  rop : mpz?
  n : unsigned-long

procedure

(mpz_bin_ui rop n k)  void?

  rop : mpz?
  n : mpz?
  k : unsigned-long

procedure

(mpz_bin_uiui rop n k)  void?

  rop : mpz?
  n : unsigned-long
  k : unsigned-long

procedure

(mpz_fib_ui fn n)  void?

  fn : mpz?
  n : unsigned-long

procedure

(mpz_fib2_ui fn fnsub1 n)  void?

  fn : mpz?
  fnsub1 : mpz?
  n : unsigned-long

procedure

(mpz_lucnum_ui ln n)  void?

  ln : mpz?
  n : unsigned-long

procedure

(mpz_lucnum2_ui ln lnsub1 n)  void?

  ln : mpz?
  lnsub1 : mpz?
  n : unsigned-long
See Number Theoretic Functions in the GMP manual.

procedure

(mpz_cmp op1 op2)  exact-integer?

  op1 : mpz?
  op2 : mpz?

procedure

(mpz_cmp_d op1 op2)  exact-integer?

  op1 : mpz?
  op2 : real?

procedure

(mpz_cmp_si op1 op2)  exact-integer?

  op1 : mpz?
  op2 : signed-long

procedure

(mpz_cmp_ui op1 op2)  exact-integer?

  op1 : mpz?
  op2 : unsigned-long

procedure

(mpz_cmpabs op1 op2)  exact-integer?

  op1 : mpz?
  op2 : mpz?

procedure

(mpz_cmpabs_d op1 op2)  exact-integer?

  op1 : mpz?
  op2 : real?

procedure

(mpz_cmpabs_ui op1 op2)  exact-integer?

  op1 : mpz?
  op2 : unsigned-long

procedure

(mpz_sgn op)  (or/c -1 0 1)

  op : mpz?
See Comparison Functions in the GMP manual.

procedure

(mpz_and rop op1 op2)  void?

  rop : mpz?
  op1 : mpz?
  op2 : mpz?

procedure

(mpz_ior rop op1 op2)  void?

  rop : mpz?
  op1 : mpz?
  op2 : mpz?

procedure

(mpz_xor rop op1 op2)  void?

  rop : mpz?
  op1 : mpz?
  op2 : mpz?

procedure

(mpz_com rop op)  void?

  rop : mpz?
  op : mpz?

procedure

(mpz_popcount op)  exact-nonnegative-integer?

  op : mpz?

procedure

(mpz_hamdist op1 op2)  exact-nonnegative-integer?

  op1 : mpz?
  op2 : mpz?

procedure

(mpz_scan0 op start-bit)  exact-nonnegative-integer?

  op : mpz?
  start-bit : exact-nonnegative-integer?

procedure

(mpz_scan1 op start-bit)  exact-nonnegative-integer?

  op : mpz?
  start-bit : exact-nonnegative-integer?

procedure

(mpz_clrbit rop bit-index)  void?

  rop : mpz?
  bit-index : exact-nonnegative-integer?

procedure

(mpz_combit rop bit-index)  void?

  rop : mpz?
  bit-index : exact-nonnegative-integer?

procedure

(mpz_tstbit op bit-index)  (or/c 0 1)

  op : mpz?
  bit-index : exact-nonnegative-integer?

procedure

(mpz_urandomb rop state n)  void?

  rop : mpz?
  state : gmp-randstate?
  n : exact-nonnegative-integer?

procedure

(mpz_urandomm rop state n)  void?

  rop : mpz?
  state : gmp-randstate?
  n : mpz?

procedure

(mpz_rrandomb rop state n)  void?

  rop : mpz?
  state : gmp-randstate?
  n : exact-nonnegative-integer?
See Integer Random Numbers in the GMP manual.

Added in version 1.2 of package gmp-lib.

procedure

(mpz_fits_ulong_p op)  exact-integer?

  op : mpz?

procedure

(mpz_fits_slong_p op)  exact-integer?

  op : mpz?

procedure

(mpz_fits_uint_p op)  exact-integer?

  op : mpz?

procedure

(mpz_fits_sint_p op)  exact-integer?

  op : mpz?

procedure

(mpz_fits_ushort_p op)  exact-integer?

  op : mpz?

procedure

(mpz_fits_sshort_p op)  exact-integer?

  op : mpz?

procedure

(mpz_odd_p op)  exact-integer?

  op : mpz?

procedure

(mpz_even_p op)  exact-integer?

  op : mpz?

procedure

(mpz_sizeinbase op base)  exact-nonnegative-integer?

  op : mpz?
  base : (integer-in 2 62)
See Miscellaneous Functions in the GMP manual.

procedure

(mpz_size op)  exact-nonnegative-integer?

  op : mpz?

procedure

(mpz_getlimbn op n)  exact-nonnegative-integer?

  op : mpz?
  n : unsigned-long
See Special Functions in the GMP manual.

2 mpq: Multi-precision Rational Numbers

An mpq (mpq_t) is a mutable value containing a rational number with arbitrary-precision numerator and denominator. In this library, such values are created with mpq and recognized with mpq?. Their backing storage is automatically initialized and garbage-collected.

procedure

(mpq? v)  boolean?

  v : any/c
Returns #t if v is an mpq value, #f otherwise.

procedure

(mpq x)  mpq?

  x : (or/c (and/c rational? exact?) mpz? mpq?)
Creates a new mpq initialized with the value x. If x is an mpz or mpq, then its value is copied; x is unchanged does not share storage with the result.

procedure

(mpq->number q)  (and/c rational? exact?)

  q : mpq?
Returns the exact rational value stored in z.

procedure

(mpq-zero? q)  boolean?

  q : mpq?

procedure

(mpq-positive? q)  boolean?

  q : mpq?

procedure

(mpq-negative? q)  boolean?

  q : mpq?
Like zero?, positive?, and negative?, respectively.

2.1 Operations on mpq Values

The following operations are supported. By GMP convention, destination arguments come first, followed by source operands.

procedure

(mpq_canonicalize op)  void?

  op : mpq?
See Rational Number Functions in the GMP manual.

procedure

(mpq_set rop op)  void?

  rop : mpq?
  op : mpq?

procedure

(mpq_set_z rop op)  void?

  rop : mpq?
  op : mpz?

procedure

(mpq_set_ui rop n d)  void?

  rop : mpq?
  n : unsigned-long
  d : unsigned-long

procedure

(mpq_set_si rop n d)  void?

  rop : mpq?
  n : signed-long
  d : unsigned-long

procedure

(mpq_swap rop1 rop2)  void?

  rop1 : mpq?
  rop2 : mpq?
See Initializing Rationals in the GMP manual.

procedure

(mpq_get_d op)  real?

  op : mpq?

procedure

(mpq_set_d rop op)  void?

  rop : mpq?
  op : real?
See Conversion Functions in the GMP manual.

procedure

(mpq_add rop op1 op2)  void?

  rop : mpq?
  op1 : mpq?
  op2 : mpq?

procedure

(mpq_sub rop op1 op2)  void?

  rop : mpq?
  op1 : mpq?
  op2 : mpq?

procedure

(mpq_mul rop op1 op2)  void?

  rop : mpq?
  op1 : mpq?
  op2 : mpq?

procedure

(mpq_mul_2exp rop op1 op2)  void?

  rop : mpq?
  op1 : mpq?
  op2 : unsigned-long

procedure

(mpq_div rop op1 op2)  void?

  rop : mpq?
  op1 : mpq?
  op2 : mpq?

procedure

(mpq_div_2exp rop op1 op2)  void?

  rop : mpq?
  op1 : mpq?
  op2 : unsigned-long?

procedure

(mpq_neg rop op)  void?

  rop : mpq?
  op : mpq?

procedure

(mpq_abs rop op)  void?

  rop : mpq?
  op : mpq?

procedure

(mpq_inv rop op)  void?

  rop : mpq?
  op : mpq?
See Arithmetic Functions in the GMP manual.

procedure

(mpq_cmp op1 op2)  exact-integer?

  op1 : mpq?
  op2 : mpq?

procedure

(mpq_cmp_z op1 op2)  exact-integer?

  op1 : mpq?
  op2 : mpz?

procedure

(mpq_cmp_ui op1 n2 d2)  exact-integer?

  op1 : mpq?
  n2 : unsigned-long
  d2 : unsigned-long

procedure

(mpq_cmp_si op1 n2 d2)  exact-integer?

  op1 : mpq?
  n2 : signed-long
  d2 : unsigned-long

procedure

(mpq_equal op1 op2)  exact-integer?

  op1 : mpq?
  op2 : mpq?

procedure

(mpq_sgn op)  (or/c -1 0 1)

  op : mpq?
See Comparision Functions in the GMP manual.

procedure

(mpq_get_num num rational)  void?

  num : mpz?
  rational : mpq?

procedure

(mpq_get_den den rational)  void?

  den : mpz?
  rational : mpq?

procedure

(mpq_set_num rational num)  void?

  rational : mpq?
  num : mpz?

procedure

(mpq_set_den rational den)  void?

  rational : mpq?
  den : mpq?

3 Random Number Generation

A randstate (gmp_randstate_t) represents a random number generation algorithm and its state. In this library, such values are recognized with gmp-randstate? and created with gmp-randstate and gmp-randstate-mt. They are automatically initialized and garbage-collected.

procedure

(gmp-randstate? v)  boolean?

  v : any/c
Returns #t if v is a gmp_randstate_t value, #f otherwise.

Added in version 1.2 of package gmp-lib.

Returns a new gmp_randstate_t initialized with gmp_randinit_default or gmp_randinit_mt, respectively.

Added in version 1.2 of package gmp-lib.

procedure

(gmp_randseed state seed)  void?

  state : gmp-randstate?
  seed : mpz?

procedure

(gmp_randseed_ui state seed)  void?

  state : gmp-randstate?
  seed : exact-nonnegative-integer?
See Random State Seeding in the GMP manual.

Added in version 1.2 of package gmp-lib.

procedure

(gmp_urandomb_ui state n)  exact-nonnegative-integer?

  state : gmp-randstate?
  n : exact-nonnegative-integer?

procedure

(gmp_urandomm_ui state n)  exact-nonnegative-integer?

  state : gmp_randstate?
  n : exact-positive-integer?
See Random State Miscellaneous in the GMP manual.

Added in version 1.2 of package gmp-lib.