Line data Source code
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://libtom.org
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 0 : int mp_prime_rabin_miller_trials(int size)
34 : {
35 : int x;
36 :
37 0 : for (x = 0; x < (int)(sizeof(sizes)/(sizeof(sizes[0]))); x++) {
38 0 : if (sizes[x].k == size) {
39 0 : return sizes[x].t;
40 0 : } else if (sizes[x].k > size) {
41 0 : return (x == 0) ? sizes[0].t : sizes[x - 1].t;
42 : }
43 : }
44 0 : 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.4 $ */
52 : /* $Date: 2006/12/28 01:25:13 $ */
|