Line data Source code
1 : #include <tommath.h>
2 : #ifdef BN_MP_CMP_MAG_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 : /* compare maginitude of two ints (unsigned) */
19 2012737 : int mp_cmp_mag (mp_int * a, mp_int * b)
20 : {
21 : int n;
22 : mp_digit *tmpa, *tmpb;
23 :
24 : /* compare based on # of non-zero digits */
25 2012737 : if (a->used > b->used) {
26 22138 : return MP_GT;
27 : }
28 :
29 1989145 : if (a->used < b->used) {
30 39302 : return MP_LT;
31 : }
32 :
33 : /* alias for a */
34 1949177 : tmpa = a->dp + (a->used - 1);
35 :
36 : /* alias for b */
37 1949177 : tmpb = b->dp + (a->used - 1);
38 :
39 : /* compare based on digits */
40 2126158 : for (n = 0; n < a->used; ++n, --tmpa, --tmpb) {
41 2125731 : if (*tmpa > *tmpb) {
42 707433 : return MP_GT;
43 : }
44 :
45 1369987 : if (*tmpa < *tmpb) {
46 1123673 : return MP_LT;
47 : }
48 : }
49 405 : return MP_EQ;
50 : }
51 : #endif
52 :
53 : /* $Source: /cvs/libtom/libtommath/bn_mp_cmp_mag.c,v $ */
54 : /* $Revision: 1.4 $ */
55 : /* $Date: 2006/12/28 01:25:13 $ */
|