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
19static 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 */
33int 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$ */
51/* $Revision$ */
52/* $Date$ */
53