/src/dropbear/libtommath/bn_mp_cmp_mag.c
Line | Count | Source |
1 | | #include "tommath_private.h" |
2 | | #ifdef BN_MP_CMP_MAG_C |
3 | | /* LibTomMath, multiple-precision integer library -- Tom St Denis */ |
4 | | /* SPDX-License-Identifier: Unlicense */ |
5 | | |
6 | | /* compare maginitude of two ints (unsigned) */ |
7 | | mp_ord mp_cmp_mag(const mp_int *a, const mp_int *b) |
8 | 151M | { |
9 | 151M | int n; |
10 | 151M | const mp_digit *tmpa, *tmpb; |
11 | | |
12 | | /* compare based on # of non-zero digits */ |
13 | 151M | if (a->used > b->used) { |
14 | 628k | return MP_GT; |
15 | 628k | } |
16 | | |
17 | 150M | if (a->used < b->used) { |
18 | 1.88M | return MP_LT; |
19 | 1.88M | } |
20 | | |
21 | | /* alias for a */ |
22 | 148M | tmpa = a->dp + (a->used - 1); |
23 | | |
24 | | /* alias for b */ |
25 | 148M | tmpb = b->dp + (a->used - 1); |
26 | | |
27 | | /* compare based on digits */ |
28 | 151M | for (n = 0; n < a->used; ++n, --tmpa, --tmpb) { |
29 | 151M | if (*tmpa > *tmpb) { |
30 | 35.8M | return MP_GT; |
31 | 35.8M | } |
32 | | |
33 | 116M | if (*tmpa < *tmpb) { |
34 | 112M | return MP_LT; |
35 | 112M | } |
36 | 116M | } |
37 | 55.0k | return MP_EQ; |
38 | 148M | } |
39 | | #endif |