#include <stdio.h>
#include "gmp.h"

// COMPILE: gcc biginttest.c -lgmp -o biginttest
// RUN:     ./biginttest
// DOC: http://gmplib.org/#DOC
// REQUIREMENTS: libgmp3c2 libgmp3-dev

int main (int argc, char* argv[]) {
  mpz_t i, j, one, t;
  
  mpz_init(t);
  mpz_init_set_str(i, "10000000000000000000001", 0);
  mpz_init_set_str(j, "5000000000000000000000", 0);
  mpz_init_set_str(one, "1", 0);
  
  printf("      i = "); mpz_out_str(stdout, 10, i); printf("\n");
  printf("      j = "); mpz_out_str(stdout, 10, j); printf("\n");
  mpz_sub(t, i, one);
  printf("    i-1 = "); mpz_out_str(stdout, 10, t); printf("\n");
  mpz_div(t, i, j);
  printf("    i/j = "); mpz_out_str(stdout, 10, t); printf("\n");
  mpz_mod(t, i, j);
  printf("i mod j = "); mpz_out_str(stdout, 10, t); printf("\n");
  
  // mpz_clear(i); // for freeing
  return 0;
}

