Givaro
|
NO DOC
// Copyright(c)'1994-2009 by The Givaro group // This file is part of Givaro. // Givaro is governed by the CeCILL-B license under French law // and abiding by the rules of distribution of free software. // see the COPYRIGHT file for more details. #include <iostream> #include <givaro/givzpz.h> #include <givaro/givpower.h> #include <givaro/givtimer.h> using namespace Givaro; // Modular exponentiation // argv[1] : a // argv[2] : e // argv[3] : p // res ---> a^e % p int main(int argc, char ** argv) { { Integer p(argv[3]); ZpzDom<Integer> Zp( p ); ZpzDom<Integer>::Element a, b; unsigned long e = (unsigned long)atoi(argv[2]) ; Zp.init(a, Integer(argv[1])); Zp.init(b); Timer tim;tim.clear();tim.start(); dom_power(b, a, (long)e, Zp); tim.stop(); Zp.write( std::cout << '(', a) << '^' << e << ") % " << p << '=' << std::flush; Zp.write( std::cerr, b) << std::endl; std::cerr << tim << std::endl; } return 0; }