3
/* LibTomMath, multiple-precision integer library -- Tom St Denis
5
* LibTomMath is a library that provides multiple-precision
6
* integer arithmetic as well as number theoretic functionality.
8
* The library was designed directly after the MPI library by
9
* Michael Fromberger but has been written from scratch with
10
* additional optimizations in place.
12
* The library is free for all purposes without any express
15
* Tom St Denis, tomstdenis@gmail.com, http://libtom.org
18
/* calculate c = a**b using a square-multiply algorithm */
19
int mp_expt_d (mp_int * a, mp_digit b, mp_int * c)
24
if ((res = mp_init_copy (&g, a)) != MP_OKAY) {
28
/* set initial result */
31
for (x = 0; x < (int) DIGIT_BIT; x++) {
33
if ((res = mp_sqr (c, c)) != MP_OKAY) {
38
/* if the bit is set multiply */
39
if ((b & (mp_digit) (((mp_digit)1) << (DIGIT_BIT - 1))) != 0) {
40
if ((res = mp_mul (c, &g, c)) != MP_OKAY) {
46
/* shift to next bit */
55
/* $Source: /cvs/libtom/libtommath/bn_mp_expt_d.c,v $ */
56
/* $Revision: 1.4 $ */
57
/* $Date: 2006/12/28 01:25:13 $ */