]> andersk Git - moira.git/blobdiff - util/gdss/lib/crypto/bignum/c/testKerN.c
kill GDSS
[moira.git] / util / gdss / lib / crypto / bignum / c / testKerN.c
diff --git a/util/gdss/lib/crypto/bignum/c/testKerN.c b/util/gdss/lib/crypto/bignum/c/testKerN.c
deleted file mode 100644 (file)
index f561fda..0000000
+++ /dev/null
@@ -1,1002 +0,0 @@
-/* Copyright     Digital Equipment Corporation & INRIA     1988, 1989 */
-/* testKerN.c: tests des primitives de KerN                           */
-/* Last modified_on Mon Mar 26 20:37:00 GMT+2:00 1990 by shand        */
-/*      modified_on Wed Feb 14 16:14:04 GMT+1:00 1990 by herve        */
-/*      modified_on 17-OCT-1989 20:35:55.91 by Jim Lawton             */
-
-/* You can comment the line below if you want to test the C macro Package
-   instead of C or Assembly functions. */
-
-#define BNNMACROS_OFF 1
-
-
-#include "BigNum.h"
-#include "BntoBnn.h"
-
-
-                       /* structure d'un test */
-
-struct testenv {
-       char    *name;          /* Le nom de la fonction teste'e.        */
-       int     flag;           /* Pour savoir si l'on continue le Test. */
-       char    hist[2048];     /* L'expression qui provoque l'erreur.   */
-       char    *depend;        /* De quoi depend le Test.               */
-};
-
-
-                       /* Les nombres pre'de'finies. */
-
-static BigNum          NumbVect[5][2];
-static BigNum          NumbProto, Ntmp2, NtmpBig;
-
-#define RN(n)          NumbVect[n][0]
-#define SN(n)          NumbVect[n][1]
-
-                       /* Taille des nombres utilise's. */
-                       /* de la forme 4(n + 1) */
-#define TESTLENGTH     16
-#define DTL            TESTLENGTH/2
-#define QTL            TESTLENGTH/4
-
-/* Nombre de test. */
-int TestCount;
-
-ResetTest(n) int n; {
-       /* Remet le nieme nombre a` la valeur prototype. */
-       BnAssign(RN(n), 0, NumbProto, 0, TESTLENGTH);
-       BnAssign(SN(n), 0, NumbProto, 0, TESTLENGTH);
-}
-
-Check(n) int n; {
-       int i;
-       /* Verifie que les n nombres calcules correspondent aux simule's. */
-       for(i = 0; i < n; i++)
-               if(CheckSubRange(i, 0, TESTLENGTH)) return(1);
-       return(FALSE);
-}
-
-CheckSubRange(x, nd, nl) int x, nd, nl; {
-       /* Verifie l'e'galite' des sous-nombres
-           (RN(x), nd, nl) et (SN(x), nd, nl) */
-       while(nl) {
-               nl--;
-               if(BnCompareDigits(RN(x), nd, SN(x), nd)) return(nd + 1);
-               nd++;
-       }
-       return(FALSE);
-}
-
-ShowDiff0(e, r1, r2) struct testenv *e; int r1,r2; {
-       ErrorPrint(e);
-       if(r1 != r2)
-               printf("---- Result is %d and should be %d----\n", r1, r2);
-       return(e->flag);
-}
-
-ShowDiff1(e, r1, r2, n, nd, nl)
-               struct testenv *e; char *n; int r1, r2, nd, nl; {
-       ErrorPrint(e);
-       if(r1 != r2)
-               printf("---- Result is %d and should be %d----\n", r1, r2);
-       ShowOutRange(0, n, nd, nl);
-       ShowSubNumber(0, n, nd, nl);
-       return(e->flag);
-}
-
-ShowDiff2(e, r1, r2, n, nd, nl, m, md, ml)
-               struct testenv *e; char *n, *m; int r1, r2, nd, nl, md, ml; {
-       ErrorPrint(e);
-       if(r1 != r2)
-               printf("---- Result is %d and should be %d----\n", r1, r2);
-       ShowOutRange(0, n, nd, nl);
-       ShowOutRange(1, m, md, ml);
-       ShowSubNumber(0, n, nd, nl);
-       ShowSubNumber(1, m, md, ml);
-       return(e->flag);
-}
-
-ShowDiff3(e, r1, r2, n, nd, nl, m, md, ml, o, od, ol)
-               struct testenv *e; char *n, *m, *o;
-               int r1, r2, nd, nl, md, ml, od, ol; {
-       ErrorPrint(e);
-       if(r1 != r2)
-               printf("---- Result is %d and should be %d----\n", r1, r2);
-       ShowOutRange(0, n, nd, nl);
-       ShowOutRange(1, m, md, ml);
-       ShowOutRange(2, o, od, ol);
-       ShowSubNumber(0, n, nd, nl);
-       ShowSubNumber(1, m, md, ml);
-       ShowSubNumber(2, o, od, ol);
-       return(e->flag);
-}
-
-ShowDiff4(e, r1, r2, n, nd, nl, m, md, ml, o, od, ol, p, pd, pl)
-               struct testenv *e; char *n, *m, *o, *p;
-               int r1, r2, nd, nl, md, ml, od, ol, pd, pl; {
-       ErrorPrint(e);
-       if(r1 != r2)
-               printf("---- Result is %d and should be %d----\n", r1, r2);
-       ShowOutRange(0, n, nd, nl);
-       ShowOutRange(1, m, md, ml);
-       ShowOutRange(2, o, od, ol);
-       ShowOutRange(3, p, pd, pl);
-       ShowSubNumber(0, n, nd, nl);
-       ShowSubNumber(1, m, md, ml);
-       ShowSubNumber(2, o, od, ol);
-       ShowSubNumber(3, p, pd, pl);
-       return(e->flag);
-}
-
-ShowSubNumber(x, n, nd, nl) char *n; int x, nd, nl; {
-       printf("[%s, %d, %d] =  ", n, nd, nl);
-       RangeNumberPrint("", RN(x), nd, nl);
-       if(CheckSubRange(x, nd, nl)) {
-               RangeNumberPrint(" Before:      ", NumbProto, nd, nl);
-               RangeNumberPrint(" Simulated:   ", SN(x), nd, nl);
-}      }
-
-RangeNumberPrint(s, n, nd, nl) char *s; BigNum n; int nd, nl; {
-       int first = 1;
-
-       /* Ne marche que si BnGetDigit est garanti!!! */
-       printf("%s {", s);
-       while(nl) {
-               nl--;
-               if(!first) printf(", "); else first = 0;
-               if(BN_DIGIT_SIZE <= 16)
-                       printf("%.4X", BnGetDigit(n, nd + nl));
-               else    printf("%.8X", BnGetDigit(n, nd + nl));
-       }
-       printf("}\n");
-}
-
-char *msg = "---- Modification Out of Range of number ";
-ShowOutRange(x, n, nd, nl) char *n; int x, nd, nl; {
-       int i = 0, bol = 0;
-
-       while(i = CheckSubRange(x, i, TESTLENGTH - i)) {
-               if((i <= nd) || (i > nd + nl)) {
-                       if(!bol) {
-                               bol = 1;
-                               printf("%s %s at index: (%d", msg, n, i - 1);
-                       } else {
-                               printf(" %d", i - 1);
-       }       }       }
-       if(bol) printf(").\n");
-}              
-
-ErrorPrint(e) struct testenv *e; {
-       printf("*** Error in compute : %s\n", e->hist);
-       printf("  Depends on %s\n", e->depend);
-}
-
-/*
- *     Tests des fonctions non redefinisables
- */
-
-int genlengthvec[] = {9, 8, 1, 0, 2000, 32000,};
-BigNumType gentypevec[] = {0, 1, 2, 3, 4, 5,};
-
-Generique(e) struct testenv *e; {
-       int i;
-       int length, length2;
-       BigNumType type, type2;
-       int fix;
-       BigNum n;
-
-       
-   for(i=0; i < 6; i++) {
-       type = gentypevec[i];
-       length = genlengthvec[i];
-       n = BnCreate(type, length);
-       if((type2 = BnGetType(n)) != type) {
-               sprintf(e->hist,"BnGetType(BnCreate(%d, %d));", type, length);
-               if(ShowDiff0(e, type, type2)) return(TRUE);
-       }
-       if((length2 = BnGetSize(n)) != length) {
-               sprintf(e->hist,"BnGetSize(BnCreate(%d, %d));", type, length);
-               if(ShowDiff0(e, length, length2)) return(TRUE);
-       }
-       if(BnFree(n) == 0) {
-               sprintf(e->hist, "BnFree(BnCreate(%d, %d));", type, length);
-               if(ShowDiff0(e, 1, 0)) return(TRUE);
-       }
-       BnSetType((n = BnAlloc(length)), type);
-       if((type2 = BnGetType(n)) != type) {
-               sprintf(e->hist,"BnGetType(BnAlloc(%d, %d));", type, length);
-               if(ShowDiff0(e, type, type2)) return(TRUE);
-       }
-       if((length2 = BnGetSize(n)) != length) {
-               sprintf(e->hist,"BnGetSize(BnAlloc(%d, %d));", type, length);
-               if(ShowDiff0(e, length, length2)) return(TRUE);
-       }
-       if(BnFree(n) == 0) {
-               sprintf(e->hist, "BnFree(BnAlloc(%d, %d));", type, length);
-               if(ShowDiff0(e, 1, 0)) return(TRUE);
-       }
-   }
-   return(FALSE);
-}
-
-/*
- *     BnSetToZero
- */
-___BnSetToZero___(n, nd, nl) register BigNum n; register int nd, nl; {
-       register int i;
-       for(i=0; i<nl; i++)
-               BnSetDigit(n, nd + i, 0);
-}
-
-TestBnSetToZero(e) struct testenv *e; {
-       int nd, nl;
-
-       e->depend = "()";
-       for(nd = 0; nd <= TESTLENGTH; nd++)
-          for(nl = 0; nl <= TESTLENGTH - nd; nl++) {
-               TestCount++;
-               ResetTest(0);
-                  BnSetToZero   (RN(0), nd, nl);
-               ___BnSetToZero___(SN(0), nd, nl);
-               if(Check(1)) {
-                       sprintf(e->hist, "%s(n, %d, %d)", e->name, nd, nl);
-                       if(ShowDiff1(e, 0, 0, "n", nd, nl)) return(1);
-       }       }
-       return(FALSE);
-}
-
-/*
- *     BnAssign
- */
-___BnAssign___(m, md, n, nd, nl) BigNum m, n; int md, nd, nl; {
-       BnSetToZero(NtmpBig, 0, nl);
-       BnAdd(NtmpBig, 0, nl, n, nd, nl, 0);
-       BnSetToZero(m, md, nl);
-       BnAdd(m, md, nl, NtmpBig, 0, nl, 0);
-}
-
-TestBnAssign(e) struct testenv *e; {
-       int md, nd, nl;
-
-       e->depend = "(BnSetToZero, BnAdd)";
-       for(md = 0; md <= TESTLENGTH; md++)
-         for(nd = 0; nd <= TESTLENGTH; nd++)
-           for(nl=0; ((nl<=TESTLENGTH-nd) && (nl<=TESTLENGTH-md)); nl++) {
-               TestCount++;
-               ResetTest(0);
-                  BnAssign   (RN(0), md, RN(0), nd, nl);
-               ___BnAssign___(SN(0), md, SN(0), nd, nl);
-               if(Check(1)) {
-                       sprintf(e->hist, "%s(n, %d, n, %d, %d)", e->name,
-                                               md, nd, nl);
-                       if(ShowDiff1(e, 0, 0, "n", md, nl)) return(1);
-       }       }
-       return(FALSE);
-}
-
-
-/*
- *     BnNumDigits
- */
-___BnNumDigits___(n, nd, nl) register BigNum n; register int nd, nl; {
-
-       while(nl != 0) {
-               nl--;
-               if(!BnIsDigitZero(n, nd + nl)) break;
-       }
-       return(nl + 1);
-}
-
-TestBnNumDigits(e) struct testenv *e; {
-       int nd0, nl0, nd, nl, l1, l2;
-
-       e->depend = "(BnIsDigitZero)";
-       for(nd0 = 0; nd0 <= TESTLENGTH; nd0++)
-         for(nl0 = 0; nl0 <= TESTLENGTH - nd0; nl0++)
-           for(nd = 0; nd <= TESTLENGTH; nd++)
-             for(nl = 0; nl <= TESTLENGTH - nd; nl++) {
-               TestCount++;
-               ResetTest(0);
-               BnSetToZero(RN(0), nd0, nl0);
-               BnSetToZero(SN(0), nd0, nl0);
-               l1 =    BnNumDigits   (RN(0), nd, nl);
-               l2 = ___BnNumDigits___(SN(0), nd, nl);
-               if(Check(1) || l1 != l2) {
-                       sprintf(e->hist, "%s(n, %d, %d)", e->name, nd, nl);
-                       if(ShowDiff1(e, l1, l2, "n", nd, nl)) return(1);
-       }       }
-       return(FALSE);
-}
-
-/*
- *     BnNumLeadingZeroBitsInDigit
- */
-__BnNumLeadingZeroBitsInDigit__(n, nd) BigNum n; int nd; {
-       int p = 0;
-
-       if(BnIsDigitZero(n, nd)) return(BN_DIGIT_SIZE);
-       BnAssign(Ntmp2, 0, n, nd, 1);
-       BnShiftLeft(Ntmp2, 0, 1, Ntmp2, 1, 1);
-       while(BnIsDigitZero(Ntmp2, 1)) {
-               BnShiftLeft(Ntmp2, 0, 1, Ntmp2, 1, 1);
-               p++;
-       }
-       return(p);
-}
-
-TestBnNumLeadingZeroBitsInDigit(e) struct testenv *e; {
-       int nd; int l1, l2;
-
-
-       e->depend = "(BnShiftLeft, BnIsDigitZero)";
-       ResetTest(0);
-       for(nd = 0; nd < TESTLENGTH; nd++) {
-               TestCount++;
-               l1 =    BnNumLeadingZeroBitsInDigit   (RN(0), nd);
-               l2 = __BnNumLeadingZeroBitsInDigit__(SN(0), nd);
-               if(Check(1) || l1 != l2) {
-                       sprintf(e->hist, "%s(n, %d)", e->name, nd);
-                       if(ShowDiff1(e, l1, l2, "n", nd, 1)) return(1);
-       }       }
-       return(FALSE);
-}
-
-/*
- *     BnIsDigitZero
- */
-___BnIsDigitZero___(n, nd) BigNum n; int nd; {
-       if(BnGetDigit(n, nd) == 0) return(1);
-       return(0);
-}
-
-TestBnIsDigitZero(e) struct testenv *e; {
-       int nd; int l1, l2;
-
-       e->depend = "()";
-       ResetTest(0);
-       for(nd = 0; nd < TESTLENGTH; nd++) {
-               TestCount++;
-               l1 =    BnIsDigitZero   (RN(0), nd);
-               l2 = ___BnIsDigitZero___(SN(0), nd);
-               if(Check(1) || ((l1 == 0) && (l2 != 0)) ||
-                              ((l1 != 0) && (l2 == 0))) {
-                       sprintf(e->hist, "%s(n, %d)", e->name, nd);
-                       if(ShowDiff1(e, l1, l2, "n", nd, 1)) return(1);
-       }       }
-       return(FALSE);
-}
-
-/*
- *     BnIsDigitNormalized
- */
-___BnIsDigitNormalized___(n, nd) BigNum n; int nd; {
-       BnAssign(Ntmp2, 0, n, nd, 1);
-       BnShiftLeft(Ntmp2, 0, 1, Ntmp2, 1, 1);
-       if(BnIsDigitZero(Ntmp2, 1)) return(0);
-       return(1);
-}
-
-TestBnIsDigitNormalized(e) struct testenv *e; {
-       int nd; int l1, l2;
-
-       e->depend = "(BnShiftLeft, BnIsDigitZero)";
-       ResetTest(0);
-       for(nd = 0; nd < TESTLENGTH; nd++) {
-               TestCount++;
-               l1 =    BnIsDigitNormalized   (RN(0), nd);
-               l2 = ___BnIsDigitNormalized___(SN(0), nd);
-               if(Check(1) || ((l1 == 0) && (l2 != 0)) ||
-                              ((l1 != 0) && (l2 == 0))) {
-                       sprintf(e->hist, "%s(n, %d)", e->name, nd);
-                       if(ShowDiff1(e, l1, l2, "n", nd, 1)) return(1);
-       }       }
-       return(FALSE);
-}
-
-/*
- *     BnIsDigitOdd
- */
-___BnIsDigitOdd___(n, nd) BigNum n; int nd; {
-       BnAssign(Ntmp2, 0, n, nd, 1);
-       BnShiftRight(Ntmp2, 0, 1, Ntmp2, 1, 1);
-       if(BnIsDigitZero(Ntmp2, 1)) return(0);
-       return(1);
-}
-
-TestBnIsDigitOdd(e) struct testenv *e; {
-       int nd; int l1, l2;
-
-       e->depend = "(BnShiftRight, BnIsDigitZero)";
-       ResetTest(0);
-       for(nd = 0; nd < TESTLENGTH; nd++) {
-               TestCount++;
-               l1 =    BnIsDigitOdd   (RN(0), nd);
-               l2 = ___BnIsDigitOdd___(SN(0), nd);
-               if(Check(1) || ((l1 == 0) && (l2 != 0)) ||
-                              ((l1 != 0) && (l2 == 0))) {
-                       sprintf(e->hist, "%s(n, %d)", e->name, nd);
-                       if(ShowDiff1(e, l1, l2, "n", nd, 1)) return(1);
-       }       }
-       return(FALSE);
-}
-
-/*
- *     BnCompareDigits
- */
-___BnCompareDigits___(n, nd, m, md) BigNum n, m; int nd, md; {
-       BnAssign(Ntmp2, 0, n, nd, 1);
-       BnComplement(Ntmp2, 0, 1);
-       if(BnAdd(Ntmp2, 0, 1, m, md, 1, 0)) return(-1);
-       BnComplement(Ntmp2, 0, 1);
-       if(BnIsDigitZero(Ntmp2, 0)) return(0);
-       return(1);
-}
-
-TestBnCompareDigits(e) struct testenv *e; {
-       int nd, md; int l1, l2;
-
-       e->depend = "(BnComplement, BnAdd, BnIsDigitZero)";
-       ResetTest(0);
-       ResetTest(1);
-       for(nd = 0; nd < TESTLENGTH; nd++)
-          for(md = 0; md < TESTLENGTH; md++) {
-               TestCount++;
-               l1 =    BnCompareDigits   (RN(0), nd, RN(1), md);
-               l2 = ___BnCompareDigits___(SN(0), nd, SN(1), md);
-               if(Check(2) || l1 != l2) {
-                       sprintf(e->hist, "%s(n, %d, m, %d)", e->name, nd, md);
-                       if(ShowDiff2(e, l1, l2, "n", nd, 1, "m", md, 1))
-                               return(1);
-       }       }
-       return(FALSE);
-}
-
-/*
- *     BnComplement
- */
-___BnComplement___(n, nd, nl) BigNum n; int nd, nl; {
-       int i;
-
-       BnSetDigit(Ntmp2, 0, 0);
-       BnSubtractBorrow(Ntmp2, 0, 1, 0);
-       for(i = 0; i < nl; i++)
-               BnXorDigits(n, nd + i, Ntmp2, 0);
-}
-
-TestBnComplement(e) struct testenv *e; {
-       int nd, nl;
-
-       e->depend = "(BnSubtractBorrow, BnXorDigits)";
-       for(nd = 0; nd <= TESTLENGTH; nd++)
-          for(nl = 0; nl <= TESTLENGTH - nd; nl++) {
-               TestCount++;
-               ResetTest(0);
-                  BnComplement   (RN(0), nd, nl);
-               ___BnComplement___(SN(0), nd, nl);
-               if(Check(1)) {
-                       sprintf(e->hist, "%s(n, %d, %d)", e->name, nd, nl);
-                       if(ShowDiff1(e, 0, 0, "n", nd, nl)) return(1);
-       }       }
-       return(FALSE);
-}
-
-/*
- *     BnAndDigits
- */
-___BnAndDigits___(n, nd, m, md) BigNum n, m; int nd, md; {
-       BnAssign(Ntmp2, 0, n, nd, 1);
-       BnOrDigits(Ntmp2, 0, m, md);
-       BnXorDigits(Ntmp2, 0, m, md);
-       BnXorDigits(n, nd, Ntmp2, 0);
-}
-
-TestBnAndDigits(e) struct testenv *e; {
-       int nd, md;
-
-       e->depend = "(BnOrDigits, BnXorDigits)";
-       ResetTest(1);
-       for(nd = 0; nd < TESTLENGTH; nd++)
-          for(md = 0; md < TESTLENGTH; md++) {
-               TestCount++;
-               ResetTest(0);
-                  BnAndDigits   (RN(0), nd, RN(1), md);
-               ___BnAndDigits___(SN(0), nd, SN(1), md);
-               if(Check(2)) {
-                       sprintf(e->hist, "%s(n, %d, m, %d)", e->name, nd, md);
-                       if(ShowDiff2(e, 0, 0, "n", nd, 1, "m", md, 1))
-                               return(1);
-       }       }
-       return(FALSE);
-}
-
-/*
- *     BnOrDigits
- */
-___BnOrDigits___(n, nd, m, md) BigNum n, m; int nd, md; {
-       BnAssign(Ntmp2, 0, n, nd, 1);
-       BnAndDigits(Ntmp2, 0, m, md);
-       BnXorDigits(Ntmp2, 0, m, md);
-       BnXorDigits(n, nd, Ntmp2, 0);
-}
-
-TestBnOrDigits(e) struct testenv *e; {
-       int nd, md;
-
-       e->depend = "(BnAndDigits, BnXorDigits)";
-       ResetTest(1);
-       for(nd = 0; nd < TESTLENGTH; nd++)
-          for(md = 0; md < TESTLENGTH; md++) {
-               TestCount++;
-               ResetTest(0);
-                  BnOrDigits   (RN(0), nd, RN(1), md);
-               ___BnOrDigits___(SN(0), nd, SN(1), md);
-               if(Check(2)) {
-                       sprintf(e->hist, "%s(n, %d, m, %d)", e->name, nd, md);
-                       if(ShowDiff2(e, 0, 0, "n", nd, 1, "m", md, 1))
-                               return(1);
-       }       }
-       return(FALSE);
-}
-
-/*
- *     BnXorDigits
- */
-___BnXorDigits___(n, nd, m, md) BigNum n, m; int nd, md; {
-       BnAssign(Ntmp2, 0, n, nd, 1);
-       BnAndDigits(Ntmp2, 0, m, md);
-       BnComplement(Ntmp2, 0, 1);
-       BnOrDigits(n, nd, m, md);
-       BnAndDigits(n, nd, Ntmp2, 0);
-}
-
-TestBnXorDigits(e) struct testenv *e; {
-       int nd, md;
-
-       e->depend = "(BnAndDigits, BnComplement, BnOrDigits)";
-       ResetTest(1);
-       for(nd = 0; nd < TESTLENGTH; nd++)
-          for(md = 0; md < TESTLENGTH; md++) {
-               TestCount++;
-               ResetTest(0);
-                  BnXorDigits   (RN(0), nd, RN(1), md);
-               ___BnXorDigits___(SN(0), nd, SN(1), md);
-               if(Check(2)) {
-                       sprintf(e->hist, "%s(n, %d, m, %d)", e->name, nd, md);
-                       if(ShowDiff2(e, 0, 0, "n", nd, 1, "m", md, 1))
-                               return(1);
-       }       }
-       return(FALSE);
-}
-
-/*
- *     BnShiftLeft
- */
-___BnShiftLeft___(n, nd, nl, m, md, s) BigNum n, m; int nd, nl, md; int s; {
-       BnSetDigit(m, md, 2);
-       BnSetDigit(Ntmp2, 0, 1);
-       while(s--) {
-               BnSetToZero(NtmpBig, 0, 2);
-               BnMultiplyDigit(NtmpBig, 0, 2, Ntmp2, 0, 1, m, md);
-               BnAssign(Ntmp2, 0, NtmpBig, 0, 1);
-       }
-       BnSetToZero(NtmpBig, 0, nl + 1);
-       BnMultiplyDigit(NtmpBig, 0, nl + 1, n, nd, nl, Ntmp2, 0);
-       BnAssign(n, nd, NtmpBig, 0, nl);
-       BnAssign(m, md, NtmpBig, nl, 1);
-}
-
-TestBnShiftLeft(e) struct testenv *e; {
-       int nd, nl, md; int s;
-
-       e->depend = "(BnSetToZero, BnMultiplyDigit)";
-       ResetTest(1);
-       for(nd = 0; nd <= TESTLENGTH; nd++)
-         for(nl = 0; nl <= TESTLENGTH - nd; nl++)
-           for(md = 0; md < 2; md++)
-             for(s = 0; s < BN_DIGIT_SIZE; s++) {
-               TestCount++;
-               ResetTest(0);
-                  BnShiftLeft   (RN(0), nd, nl, RN(1), md, s);
-               ___BnShiftLeft___(SN(0), nd, nl, SN(1), md, s);
-               if(Check(2)) {
-                       sprintf(e->hist, "%s(n, %d, %d, m, %d, %d)",
-                                       e->name, nd, nl, md, s);
-                       if(ShowDiff2(e, 0, 0, "n", nd, nl, "m", md, 1))
-                               return(1);
-       }       }
-       return(FALSE);
-}
-
-/*
- *     BnShiftRight
- */
-___BnShiftRight___(n, nd, nl, m, md, s) BigNum n, m; int nd, nl, md; int s; {
-       if((nl == 0) || (s == 0)) {
-               BnSetDigit(m, md, 0);
-               return;
-       }
-       BnAssign(NtmpBig, 0, n, nd, nl);
-       BnShiftLeft(NtmpBig, 0, nl, NtmpBig, nl, BN_DIGIT_SIZE - s);
-       BnAssign(n, nd, NtmpBig, 1, nl);
-       BnAssign(m, md, NtmpBig, 0, 1);
-}
-
-TestBnShiftRight(e) struct testenv *e; {
-       int nd, nl, md; int s;
-
-       e->depend = "(BnShiftLeft)";
-       ResetTest(1);
-       for(nd = 0; nd <= TESTLENGTH; nd++)
-         for(nl = 0; nl <= TESTLENGTH - nd; nl++)
-           for(md = 0; md < 2; md++)
-             for(s = 0; s < BN_DIGIT_SIZE; s++) {
-               TestCount++;
-               ResetTest(0);
-                  BnShiftRight   (RN(0), nd, nl, RN(1), md, s);
-               ___BnShiftRight___(SN(0), nd, nl, SN(1), md, s);
-               if(Check(2)) {
-                       sprintf(e->hist, "%s(n, %d, %d, m, %d, %d)",
-                                       e->name, nd, nl, md, s);
-                       if(ShowDiff2(e, 0, 0, "n", nd, nl, "m", md, 1))
-                               return(1);
-       }       }
-       return(FALSE);
-}
-
-/*
- *     BnAddCarry
- */
-___BnAddCarry___(n, nd, nl, r) BigNum n; int nd, nl; int r;{
-       if(r == 0) return(0);
-       BnComplement(n, nd, nl);
-       r = BnSubtractBorrow(n, nd, nl, 0);
-       BnComplement(n, nd, nl);
-       if(r == 0) return(1);
-       return(0);
-}
-
-TestBnAddCarry(e) struct testenv *e; {
-       int nd, nl; int r, l1, l2;
-
-       e->depend = "(BnComplement, BnSubtractBorrow)";
-       for(nd = 0; nd <= TESTLENGTH; nd++)
-         for(nl = 0; nl <= TESTLENGTH - nd; nl++)
-           for(r = 0; r < 2; r++) {
-               TestCount++;
-               ResetTest(0);
-               l1 =    BnAddCarry   (RN(0), nd, nl, r);
-               l2 = ___BnAddCarry___(SN(0), nd, nl, r);
-               if(Check(1) || l1 != l2) {
-                       sprintf(e->hist, "%s(n, %d, %d, %d)",
-                                       e->name, nd, nl, r);
-                       if(ShowDiff1(e, l1, l2, "n", nd, nl)) return(1);
-       }       }
-       return(FALSE);
-}
-
-/*
- *     BnAdd
- */
-___BnAdd___(n, nd, nl, m, md, ml, r) BigNum n, m; int nd, nl, md, ml; int r;{
-       BnComplement(m, md, ml);
-       r = BnSubtract(n, nd, ml, m, md, ml, r);
-       BnComplement(m, md, ml);
-       return(BnAddCarry(n, nd + ml, nl - ml, r));
-}
-
-TestBnAdd(e) struct testenv *e; {
-       int nd, nl, md, ml; int r, l1, l2;
-
-       e->depend = "(BnComplement, BnSubtract, BnAddCarry)";
-       ResetTest(1);
-       for(nd = 0; nd <= TESTLENGTH; nd++)
-        for(nl = 0; nl <= TESTLENGTH - nd; nl++)
-         for(md = 0; md <= TESTLENGTH - nl; md++)
-          for(ml = 0; ml <= nl ; ml++)
-           for(r = 0; r < 2; r++) {
-               TestCount++;
-               ResetTest(0);
-               l1 =    BnAdd   (RN(0), nd, nl, RN(1), md, ml, r);
-               l2 = ___BnAdd___(SN(0), nd, nl, SN(1), md, ml, r);
-               if(Check(2) || l1 != l2) {
-                       sprintf(e->hist, "%s(n, %d, %d, m, %d, %d, %d)",
-                                       e->name, nd, nl, md, ml, r);
-                       if(ShowDiff2(e, l1, l2, "n", nd, nl, "m", md, ml))
-                               return(1);
-       }       }
-       return(FALSE);
-}
-
-/*
- *     BnSubtractBorrow
- */
-___BnSubtractBorrow___(n, nd, nl, r) BigNum n; int nd, nl; int r;{
-       if(r == 1) return(1);
-       BnComplement(n, nd, nl);
-       r = BnAddCarry(n, nd, nl, 1);
-       BnComplement(n, nd, nl);
-       if(r == 0) return(1);
-       return(0);
-}
-
-TestBnSubtractBorrow(e) struct testenv *e; {
-       int nd, nl; int r, l1, l2;
-
-       e->depend = "(BnComplement, BnAddCarry)";
-       for(nd = 0; nd <= TESTLENGTH; nd++)
-         for(nl = 0; nl <= TESTLENGTH - nd; nl++)
-           for(r = 0; r < 2; r++) {
-               TestCount++;
-               ResetTest(0);
-               l1 =    BnSubtractBorrow   (RN(0), nd, nl, r);
-               l2 = ___BnSubtractBorrow___(SN(0), nd, nl, r);
-               if(Check(1) || l1 != l2) {
-                       sprintf(e->hist, "%s(n, %d, %d, %d)",
-                                       e->name, nd, nl, r);
-                       if(ShowDiff1(e, l1, l2, "n", nd, nl)) return(1);
-       }       }
-       return(FALSE);
-}
-
-/*
- *     BnSubtract
- */
-___BnSubtract___(n, nd, nl, m, md, ml, r) BigNum n, m; int nd, nl, md, ml; int r;{
-       BnComplement(m, md, ml);
-       r = BnAdd(n, nd, ml, m, md, ml, r);
-       BnComplement(m, md, ml);
-       return(BnSubtractBorrow(n, nd + ml, nl - ml, r));
-}
-
-TestBnSubtract(e) struct testenv *e; {
-       int nd, nl, md, ml; int r, l1, l2;
-
-       e->depend = "(BnComplement, BnAdd, BnSubtractBorrow)";
-       ResetTest(1);
-       for(nd = 0; nd <= TESTLENGTH; nd++)
-        for(nl = 0; nl <= TESTLENGTH - nd; nl++)
-         for(md = 0; md <= TESTLENGTH - nl; md++)
-          for(ml = 0; ml <= nl ; ml++)
-           for(r = 0; r < 2; r++) {    
-               TestCount++;
-               ResetTest(0);
-               l1 =    BnSubtract   (RN(0), nd, nl, RN(1), md, ml, r);
-               l2 = ___BnSubtract___(SN(0), nd, nl, SN(1), md, ml, r);
-               if(Check(2) || l1 != l2) {
-                       sprintf(e->hist, "%s(n, %d, %d, m, %d, %d, %d)",
-                                       e->name, nd, nl, md, ml, r);
-                       if(ShowDiff2(e, l1, l2, "n", nd, nl, "m", md, ml))
-                               return(1);
-       }       }
-       return(FALSE);
-}
-
-/*
- *     BnMultiplyDigit
- */
-___BnMultiplyDigit___(p, pd, pl, n, nd, nl, m, md) BigNum p, n, m; int pd, pl, nd, nl, md; {
-       int r = 0, ret = 0;
-
-       BnAssign(Ntmp2, 0, m, md, 1);
-       BnAssign(NtmpBig, 0, n, nd, nl);
-       BnSetToZero(NtmpBig, nl, 1);
-       while(!BnIsDigitZero(Ntmp2, 0)) {
-               if(BnIsDigitOdd(Ntmp2, 0)) {
-                       r = BnAdd(p, pd, pl, NtmpBig, 0, nl + 1, 0);
-                       if((ret == 0) && (r == 1)) ret = 1;
-                       else if((ret == 1) && (r == 1)) ret = 2;
-               }
-               BnShiftRight(Ntmp2, 0, 1, Ntmp2, 1, 1);
-               BnShiftLeft(NtmpBig, 0, nl + 1, Ntmp2, 1, 1);
-               if(!BnIsDigitZero(Ntmp2, 1)) ret = 3;
-       }
-       return(ret);
-}
-
-TestBnMultiplyDigit(e) struct testenv *e; {
-       int pd, pl, nd, nl, md; int l1, l2;
-
-       e->depend = "(BnSetToZero, BnIsDigitZero, BnIsDigitOdd, BnAdd, BnShiftRight, BnShiftLeft)";
-       ResetTest(1);
-       ResetTest(2);
-       for(pd = 0; pd <= TESTLENGTH; pd++)
-        for(pl = 0; pl <= TESTLENGTH - pd; pl++)
-         for(nd = 0; nd <= TESTLENGTH - pl; nd++)
-          for(nl = 0; nl < pl ; nl++)
-           for(md = 0; md < TESTLENGTH; md++) {
-               TestCount++;
-               ResetTest(0);
-               l1 =    BnMultiplyDigit   (RN(0),pd,pl,RN(1),nd,nl,RN(2),md);
-               l2 = ___BnMultiplyDigit___(SN(0),pd,pl,SN(1),nd,nl,SN(2),md);
-               if(Check(3) || l1 != l2) {
-                       sprintf(e->hist,
-                          "BnMultiplyDigit(p, %d, %d, n, %d, %d, m, %d)",
-                                               pd, pl, nd, nl, md);
-                       if(ShowDiff3(e,l1,l2,"p",pd,pl,"n",nd,nl,"m",md,1))
-                                return(1);
-       }       }
-       return(FALSE);
-}
-
-/*
- *     BnDivideDigit
- */
-TestBnDivideDigit(e) struct testenv *e; {
-       int nd, nl, md, qd, rd, l2;
-
-       e->depend = "(BnSetToZero, BnMultiplyDigit, BnCompareDigits)";
-       ResetTest(2);
-       ResetTest(3);
-       for(nd = 0; nd <= TESTLENGTH - 2; nd++)
-        for(nl = 2; nl <= TESTLENGTH - nd; nl++)
-         for(md = 0; md < TESTLENGTH; md++)
-          for(qd = 0; qd < TESTLENGTH - nl + 1 ; qd++)
-           for(rd = 0; rd < 2; rd++)
-            if((!BnIsDigitZero(RN(3), md)) &&
-                       (BnCompareDigits(RN(2), nd+nl-1, RN(3), md) == -1)) {
-               TestCount++;
-               ResetTest(0);
-               ResetTest(1);
-               BnDivideDigit(RN(0), qd, RN(1), rd, RN(2), nd, nl, RN(3), md);
-               BnAssign(SN(0), qd, RN(0), qd, nl - 1);
-               BnAssign(SN(1), rd, RN(1), rd, 1);
-               BnSetToZero(SN(2), nd, nl);
-               BnAssign(SN(2), nd, SN(1), rd, 1);
-               l2 = BnMultiplyDigit(SN(2),nd,nl, SN(0),qd,nl - 1, SN(3), md);
-               if(Check(4) || l2 != 0) {
-                       sprintf(e->hist,
-                          "BnDivideDigit(q, %d, r, %d, n, %d, %d, m, %d)",
-                                               qd, rd, nd, nl, md);
-                       if(ShowDiff4(e, 0, l2, "q", qd, nl - 1, "r", rd, 1,
-                                       "n", nd, nl, "m", md, 1))
-                               return(TRUE);
-       }       }
-       return(FALSE);
-}
-
-/*
- *     BnMultiply
- */
-___BnMultiply___(p, pd, pl, m, md, ml, n, nd, nl) BigNum p, m, n; int pd, pl, md, ml, nd, nl; {
-       int ret;
-
-        for (ret = 0; nl-- > 0; pd++, nd++, pl--)
-           ret += BnMultiplyDigit (p, pd, pl, m, md, ml, n, nd);
-       return(ret);
-}
-
-TestBnMultiply(e) struct testenv *e; {
-       int pd, pl, nd, nl, md, ml; int l1, l2;
-
-       e->depend = "(BnSetToZero, BnMultiplyDigit)";
-       ResetTest(1);
-       ResetTest(2);
-       for(pd = 0; pd <= TESTLENGTH; pd++)
-        for(pl = 0; pl <= TESTLENGTH - pd && pl <= TESTLENGTH/2; pl++)
-         for(nd = 0; nd <= TESTLENGTH - pl; nd++)
-          for(nl = 0; nl < pl && nl <= TESTLENGTH/3; nl++)
-          {
-           if (nl <= pl-nl)
-           {
-               /* Test squaring */
-               TestCount++;
-               ResetTest(0);
-               l1 =    BnMultiply   (RN(0),pd,pl,RN(1),nd,nl,RN(1),nd,nl);
-               l2 = ___BnMultiply___(SN(0),pd,pl,SN(1),nd,nl,SN(1),nd,nl);
-               if(Check(3) || l1 != l2) {
-                       sprintf(e->hist,
-                          "BnMultiply(p, %d, %d, n, %d, %d, n, %d, %d)",
-                                               pd, pl, nd, nl, nd, nl);
-                       if(ShowDiff3(e,l1,l2,"p",pd,pl,"n",nd,nl,"n",nd,nl))
-                                return(1);
-               }
-
-           }
-           for(md = 0; md <= TESTLENGTH; md++) 
-            for (ml = 0; ml <= pl-nl && ml <= TESTLENGTH/3 && md+ml <= TESTLENGTH; ml++) {
-               TestCount++;
-               ResetTest(0);
-               l1 =    BnMultiply   (RN(0),pd,pl,RN(1),nd,nl,RN(2),md,ml);
-               l2 = ___BnMultiply___(SN(0),pd,pl,SN(1),nd,nl,SN(2),md,ml);
-               if(Check(3) || l1 != l2) {
-                       sprintf(e->hist,
-                          "BnMultiply(p, %d, %d, n, %d, %d, m, %d, %d)",
-                                               pd, pl, nd, nl, md, ml);
-                       if(ShowDiff3(e,l1,l2,"p",pd,pl,"n",nd,nl,"m",md,ml))
-                                return(1);
-       }  }    }
-       return(FALSE);
-}
-
-/*
- *     Main
- */
-typedef struct {
-       int     (*TestFnt)();
-       char    *NameFnt;
-} TESTONE;
-TESTONE AllTest[] = {
-       Generique,                              "Generic Functions",
-       TestBnSetToZero,                        "BnSetToZero",
-       TestBnAssign,                           "BnAssign",
-       TestBnNumDigits,                        "BnNumDigits",
-       TestBnNumLeadingZeroBitsInDigit,        "BnNumLeadingZeroBitsInDigit",
-       TestBnIsDigitZero,                      "BnIsDigitZero",
-       TestBnIsDigitNormalized,                "BnIsDigitNormalized",
-       TestBnIsDigitOdd,                       "BnIsDigitOdd",
-       TestBnCompareDigits,                    "BnCompareDigits",
-       TestBnComplement,                       "BnComplement",
-       TestBnAndDigits,                        "BnAndDigits",
-       TestBnOrDigits,                         "BnOrDigits",
-       TestBnXorDigits,                        "BnXorDigits",
-       TestBnShiftLeft,                        "BnShiftLeft",
-       TestBnShiftRight,                       "BnShiftRight",
-       TestBnAddCarry,                         "BnAddCarry",
-       TestBnAdd,                              "BnAdd",
-       TestBnSubtractBorrow,                   "BnSubtractBorrow",
-       TestBnSubtract,                         "BnSubtract",
-       TestBnMultiplyDigit,                    "BnMultiplyDigit",
-       TestBnDivideDigit,                      "BnDivideDigit",
-       TestBnMultiply,                         "BnMultiply",
-};
-
-main(n, s) int n; char **s; {
-       struct testenv realenv, *e = &realenv;
-       int i, j, nbtest, SizeAllTest;
-
-       /* Initialisations de l'environnement de test. */
-       e->flag = 1;
-       e->depend = "()";
-       /* Allocation des 2 nombres globaux. */
-       Ntmp2 = BnAlloc(2);
-       NtmpBig = BnAlloc(2 * TESTLENGTH);
-       NumbProto = BnAlloc(TESTLENGTH);
-       /* Creation du nombre prototype. */
-       BnSetDigit(NumbProto, 0, 0);            /* Les 2 premiers a` ze'ro. */
-       BnSetDigit(NumbProto, 1, 0);
-       for(i=0; i < TESTLENGTH/4 - 1; i++)     /* Le premier quart est la */
-               BnSetDigit(NumbProto, i + 2, i + 1);    /* suite 1, 2, 3, ...      */
-       /* Le 2nd quart est le 1er shifte de BN_DIGIT_SIZE - 2. 0x4000 0x8000 ...*/
-       BnAssign(NumbProto, QTL + 1, NumbProto, 2, QTL - 1);
-       BnShiftLeft(NumbProto, QTL + 1, QTL - 1, NumbProto, 0, BN_DIGIT_SIZE - 2);
-       /* La 2nd moitie est l'inverse logique de la 1ere */
-       BnAssign(NumbProto, DTL, NumbProto, 0, DTL);
-       BnComplement(NumbProto, DTL, DTL);
-       /* Allocation des nombres utilise's */
-       for(i=0; i < 5; i++) {
-               RN(i) = BnAlloc(TESTLENGTH);
-               SN(i) = BnAlloc(TESTLENGTH);
-       }
-       if(n == 1) {
-               printf("%s [v|a|TestNum]\n", s[0]);
-       }
-       /* On y va */
-       SizeAllTest = (sizeof(AllTest)/sizeof(AllTest[0]));
-       for(i = 1; i < n; i++) {
-               if(s[i][0] == 'm') {
-                       /* 0 = No skip; 1 = skip to next; else STOP */
-                       e->flag = atoi(&s[i][1]);
-               } else if(s[i][0] == 'a') {
-                       for(i = 0; i < SizeAllTest; i++)
-                               dotest(e, i);
-               } else if(s[i][0] == 'v') {
-                       for(j = 0; j < SizeAllTest; j++)
-                               seetest(j);
-               } else {
-                       nbtest = atoi(s[i]);
-                       if((nbtest < 0) || (nbtest >= SizeAllTest))
-                               printf("Test %d is invalid\n", nbtest);
-                       else    dotest(e, nbtest);
-}      }       }
-
-dotest(e, n) struct testenv *e; int n; {
-       seetest(n);
-       TestCount = 0;
-       e->name = AllTest[n].NameFnt;
-       if(((*(AllTest[n].TestFnt)) (e)) && e->flag > 1) exit(0);
-       printf("%d tests were performed\n", TestCount);
-}
-
-seetest(n) int n; {
-       printf("%d.     Testing %s\n", n, AllTest[n].NameFnt);
-}
-
This page took 0.153041 seconds and 4 git commands to generate.