=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/engine/up_gf2n.c,v retrieving revision 1.1 retrieving revision 1.5 diff -u -p -r1.1 -r1.5 --- OpenXM_contrib2/asir2000/engine/up_gf2n.c 1999/12/03 07:39:08 1.1 +++ OpenXM_contrib2/asir2000/engine/up_gf2n.c 2015/08/08 14:19:41 1.5 @@ -1,4 +1,52 @@ -/* $OpenXM: OpenXM/src/asir99/engine/up_gf2n.c,v 1.1.1.1 1999/11/10 08:12:26 noro Exp $ */ +/* + * Copyright (c) 1994-2000 FUJITSU LABORATORIES LIMITED + * All rights reserved. + * + * FUJITSU LABORATORIES LIMITED ("FLL") hereby grants you a limited, + * non-exclusive and royalty-free license to use, copy, modify and + * redistribute, solely for non-commercial and non-profit purposes, the + * computer program, "Risa/Asir" ("SOFTWARE"), subject to the terms and + * conditions of this Agreement. For the avoidance of doubt, you acquire + * only a limited right to use the SOFTWARE hereunder, and FLL or any + * third party developer retains all rights, including but not limited to + * copyrights, in and to the SOFTWARE. + * + * (1) FLL does not grant you a license in any way for commercial + * purposes. You may use the SOFTWARE only for non-commercial and + * non-profit purposes only, such as academic, research and internal + * business use. + * (2) The SOFTWARE is protected by the Copyright Law of Japan and + * international copyright treaties. If you make copies of the SOFTWARE, + * with or without modification, as permitted hereunder, you shall affix + * to all such copies of the SOFTWARE the above copyright notice. + * (3) An explicit reference to this SOFTWARE and its copyright owner + * shall be made on your publication or presentation in any form of the + * results obtained by use of the SOFTWARE. + * (4) In the event that you modify the SOFTWARE, you shall notify FLL by + * e-mail at risa-admin@sec.flab.fujitsu.co.jp of the detailed specification + * for such modification or the source code of the modified part of the + * SOFTWARE. + * + * THE SOFTWARE IS PROVIDED AS IS WITHOUT ANY WARRANTY OF ANY KIND. FLL + * MAKES ABSOLUTELY NO WARRANTIES, EXPRESSED, IMPLIED OR STATUTORY, AND + * EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT OF THIRD PARTIES' + * RIGHTS. NO FLL DEALER, AGENT, EMPLOYEES IS AUTHORIZED TO MAKE ANY + * MODIFICATIONS, EXTENSIONS, OR ADDITIONS TO THIS WARRANTY. + * UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, TORT, CONTRACT, + * OR OTHERWISE, SHALL FLL BE LIABLE TO YOU OR ANY OTHER PERSON FOR ANY + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, PUNITIVE OR CONSEQUENTIAL + * DAMAGES OF ANY CHARACTER, INCLUDING, WITHOUT LIMITATION, DAMAGES + * ARISING OUT OF OR RELATING TO THE SOFTWARE OR THIS AGREEMENT, DAMAGES + * FOR LOSS OF GOODWILL, WORK STOPPAGE, OR LOSS OF DATA, OR FOR ANY + * DAMAGES, EVEN IF FLL SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF + * SUCH DAMAGES, OR FOR ANY CLAIM BY ANY OTHER PARTY. EVEN IF A PART + * OF THE SOFTWARE HAS BEEN DEVELOPED BY A THIRD PARTY, THE THIRD PARTY + * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, + * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. + * + * $OpenXM: OpenXM_contrib2/asir2000/engine/up_gf2n.c,v 1.4 2001/10/09 01:36:14 noro Exp $ +*/ #include "ca.h" #include @@ -6,10 +54,7 @@ extern int debug_up; extern int up_lazy; extern GEN_UP2 current_mod_gf2n; -void squarep_gf2n(vl,n1,nr) -VL vl; -P n1; -P *nr; +void squarep_gf2n(VL vl,P n1,P *nr) { UP b1,br; @@ -24,9 +69,7 @@ P *nr; } } -void squareup_gf2n(n1,nr) -UP n1; -UP *nr; +void squareup_gf2n(UP n1,UP *nr) { UP r; GF2N *c1,*c; @@ -50,14 +93,11 @@ UP *nr; /* x^(2^n) mod f */ -void powermodup_gf2n(f,xp) -UP f; -UP *xp; +void powermodup_gf2n(UP f,UP *xp) { UP x,t,invf; int k,n; GF2N lm; - struct oEGT eg_sq,eg_rem,eg_mul,eg_inv,eg0,eg1,eg2; n = degup2(current_mod_gf2n->dense); MKGF2N(ONEUP2,lm); @@ -75,10 +115,7 @@ UP *xp; /* g^d mod f */ -void generic_powermodup_gf2n(g,f,d,xp) -UP g,f; -Q d; -UP *xp; +void generic_powermodup_gf2n(UP g,UP f,Q d,UP *xp) { N e; UP x,y,t,invf,s; @@ -113,10 +150,7 @@ UP *xp; /* g+g^2+...+g^(2^(nd-1)) mod f; where e = deg(mod) */ -void tracemodup_gf2n(g,f,d,xp) -UP g,f; -Q d; -UP *xp; +void tracemodup_gf2n(UP g,UP f,Q d,UP *xp) { UP x,t,s,u,invf; int en,i; @@ -137,10 +171,7 @@ UP *xp; *xp = s; } -void tracemodup_gf2n_slow(g,f,d,xp) -UP g,f; -Q d; -UP *xp; +void tracemodup_gf2n_slow(UP g,UP f,Q d,UP *xp) { UP x,t,s,u; int en,i; @@ -159,18 +190,12 @@ UP *xp; *xp = s; } -static struct oEGT eg_trace_tab,eg_trace_mul; - -void tracemodup_gf2n_tab(g,f,d,xp) -UP g,f; -Q d; -UP *xp; +void tracemodup_gf2n_tab(UP g,UP f,Q d,UP *xp) { UP x0,x2,t,s,u; int en,i; UP *tab; GF2N one; - struct oEGT eg1,eg2; en = QTOS(d)*degup2(current_mod_gf2n->dense); remup(g,f,&t); g = t; @@ -198,10 +223,7 @@ UP *xp; *xp = s; } -void square_rem_tab_up_gf2n(f,tab,rp) -UP f; -UP *tab; -UP *rp; +void square_rem_tab_up_gf2n(UP f,UP *tab,UP *rp) { UP s,t,u,n; Num *c; @@ -222,10 +244,7 @@ UP *rp; } } -void powertabup_gf2n(f,xp,tab) -UP f; -UP xp; -UP *tab; +void powertabup_gf2n(UP f,UP xp,UP *tab) { UP y,t,invf; int i,d; @@ -241,25 +260,26 @@ UP *tab; invmodup(t,f->d,&invf); for ( i = 2; i < d; i++ ) { - if ( debug_up ) - fprintf(stderr,"."); - if ( !(i%2) ) + if ( debug_up ){ + fprintf(stderr,"."); +#if defined(__MINGW32__) || defined(__MINGW64__) + fflush(stderr); +#endif + } + if ( !(i%2) ) squareup_gf2n(tab[i/2],&t); - else + else kmulup(tab[i-1],xp,&t); rembymulup_special(t,f,invf,&tab[i]); /* remup(t,f,&tab[i]); */ } } -void find_root_gf2n(f,r) -UP f; -GF2N *r; +void find_root_gf2n(UP f,GF2N *r) { UP g,ut,c,t,h,rem; int n; GF2N rn; - struct oEGT eg0,eg1,eg_trace; n = degup2(current_mod_gf2n->dense); g = f;