xref: /plan9/sys/src/libmp/port/crttest.c (revision 033584b01144b418519c5713cd258b3ca2f7bccf)
17dd7cddfSDavid du Colombier #include "os.h"
27dd7cddfSDavid du Colombier #include <mp.h>
37dd7cddfSDavid du Colombier #include <libsec.h>
47dd7cddfSDavid du Colombier 
57dd7cddfSDavid du Colombier void
testcrt(mpint ** p)67dd7cddfSDavid du Colombier testcrt(mpint **p)
77dd7cddfSDavid du Colombier {
87dd7cddfSDavid du Colombier 	CRTpre *crt;
97dd7cddfSDavid du Colombier 	CRTres *res;
107dd7cddfSDavid du Colombier 	mpint *m, *x, *y;
117dd7cddfSDavid du Colombier 
122d8b52e8SDavid du Colombier 	fmtinstall('B', mpfmt);
137dd7cddfSDavid du Colombier 
147dd7cddfSDavid du Colombier 	// get a modulus and a test number
157dd7cddfSDavid du Colombier 	m = mpnew(1024+160);
167dd7cddfSDavid du Colombier 	mpmul(p[0], p[1], m);
177dd7cddfSDavid du Colombier 	x = mpnew(1024+160);
187dd7cddfSDavid du Colombier 	mpadd(m, mpone, x);
197dd7cddfSDavid du Colombier 
207dd7cddfSDavid du Colombier 	// do the precomputation for crt conversion
217dd7cddfSDavid du Colombier 	crt = crtpre(2, p);
227dd7cddfSDavid du Colombier 
237dd7cddfSDavid du Colombier 	// convert x to residues
247dd7cddfSDavid du Colombier 	res = crtin(crt, x);
257dd7cddfSDavid du Colombier 
267dd7cddfSDavid du Colombier 	// convert back
277dd7cddfSDavid du Colombier 	y = mpnew(1024+160);
287dd7cddfSDavid du Colombier 	crtout(crt, res, y);
297dd7cddfSDavid du Colombier 	print("x %B\ny %B\n", x, y);
307dd7cddfSDavid du Colombier 	mpfree(m);
317dd7cddfSDavid du Colombier 	mpfree(x);
327dd7cddfSDavid du Colombier 	mpfree(y);
337dd7cddfSDavid du Colombier }
347dd7cddfSDavid du Colombier 
357dd7cddfSDavid du Colombier void
main(void)367dd7cddfSDavid du Colombier main(void)
377dd7cddfSDavid du Colombier {
387dd7cddfSDavid du Colombier 	int i;
397dd7cddfSDavid du Colombier 	mpint *p[2];
407dd7cddfSDavid du Colombier 	long start;
417dd7cddfSDavid du Colombier 
427dd7cddfSDavid du Colombier 	start = time(0);
437dd7cddfSDavid du Colombier 	for(i = 0; i < 10; i++){
447dd7cddfSDavid du Colombier 		p[0] = mpnew(1024);
457dd7cddfSDavid du Colombier 		p[1] = mpnew(1024);
467dd7cddfSDavid du Colombier 		DSAprimes(p[0], p[1], nil);
477dd7cddfSDavid du Colombier 		testcrt(p);
487dd7cddfSDavid du Colombier 		mpfree(p[0]);
497dd7cddfSDavid du Colombier 		mpfree(p[1]);
507dd7cddfSDavid du Colombier 	}
51*033584b0SDavid du Colombier 	print("%ld secs with more\n", time(0)-start);
527dd7cddfSDavid du Colombier 	exits(0);
537dd7cddfSDavid du Colombier }
54