/*************************************************************************** * Copyright (C) 2010 by Michael Fischer * * fischer-michael@cs.yale.edu * * * * For use in Yale course CPSC 467b, Spring 2010 * ***************************************************************************/ // Compute a^b (mod c) using gmp library //usage: modexp-ssl a b c #include #include #include #include "stopwatch.h" // ---------------------------------------------------------------------------- int main(int argc, char* argv[]) { stopwatch watch; if (argc != 4) { fprintf(stderr, "usage: %s a b c\n", argv[0]); return 1; } /* Start timing */ startTime(&watch); mpz_t a; mpz_init(a); mpz_t b; mpz_init(b); mpz_t c; mpz_init(c); mpz_t d; mpz_init(d); mpz_set_str(a, argv[1], 10); mpz_set_str(b, argv[2], 10); mpz_set_str(c, argv[3], 10); mpz_powm(d, a, b, c); char* s = mpz_get_str(NULL, 10, d); puts(s); free(s); mpz_clear(a); mpz_clear(b); mpz_clear(c); mpz_clear(d); // Stop timing stopTime(&watch); // Print timing results printElapsedTime(&watch); }