version 0.3.33
[fms.git] / libs / libtommath / bn_mp_prime_rabin_miller_trials.c
1 #include <tommath.h>
2 #ifdef BN_MP_PRIME_RABIN_MILLER_TRIALS_C
3 /* LibTomMath, multiple-precision integer library -- Tom St Denis
4  *
5  * LibTomMath is a library that provides multiple-precision
6  * integer arithmetic as well as number theoretic functionality.
7  *
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.
11  *
12  * The library is free for all purposes without any express
13  * guarantee it works.
14  *
15  * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com
16  */
17
18
19 static const struct {
20    int k, t;
21 } sizes[] = {
22 {   128,    28 },
23 {   256,    16 },
24 {   384,    10 },
25 {   512,     7 },
26 {   640,     6 },
27 {   768,     5 },
28 {   896,     4 },
29 {  1024,     4 }
30 };
31
32 /* returns # of RM trials required for a given bit size */
33 int mp_prime_rabin_miller_trials(int size)
34 {
35    int x;
36
37    for (x = 0; x < (int)(sizeof(sizes)/(sizeof(sizes[0]))); x++) {
38        if (sizes[x].k == size) {
39           return sizes[x].t;
40        } else if (sizes[x].k > size) {
41           return (x == 0) ? sizes[0].t : sizes[x - 1].t;
42        }
43    }
44    return sizes[x-1].t + 1;
45 }
46
47
48 #endif
49
50 /* $Source: /cvs/libtom/libtommath/bn_mp_prime_rabin_miller_trials.c,v $ */
51 /* $Revision: 1.3 $ */
52 /* $Date: 2006/03/31 14:18:44 $ */