1 /* Copyright Digital Equipment Corporation & INRIA 1988, 1989 */
2 /* Last modified_on Fri Aug 10 17:21:47 GMT+2:00 1990 by shand */
3 /* modified_on Fri Apr 28 18:36:28 GMT+2:00 1989 by herve */
6 /* bnCmp.c: a piece of the bignum kernel written in C */
9 /***************************************/
16 static char copyright[]="@(#)bnCmp.c: copyright Digital Equipment Corporation & INRIA 1988, 1989, 1990\n";
19 Boolean BnnIsZero (nn, nl)
25 * Returns TRUE iff N = 0
29 return (BnnNumDigits (nn, nl) == 1 && (nl == 0 || BnnIsDigitZero (*nn)));
32 /***************************************/
36 BigNumCmp BnnCompare (mm, ml, nn, nl)
39 register BigNumLength ml, nl;
49 register BigNumCmp result = BN_EQ;
52 ml = BnnNumDigits (mm, ml);
53 nl = BnnNumDigits (nn, nl);
56 return (ml > nl ? BN_GT : BN_LT);
58 while (result == BN_EQ && ml-- > 0)
59 result = BnnCompareDigits (*(mm+ml), *(nn+ml));
63 /**** USE memcmp() instead: extern int memcmp ();
67 lex = memcmp (mm, nn, nl*BN_DIGIT_SIZE/BN_BYTE_SIZE);
68 return (lex > 0 ? BN_GT: (lex == 0 ? BN_EQ: BN_LT));
71 return (ml > nl ? BN_GT : BN_LT);