[BACK]Return to up_gf2n.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / engine

Diff for /OpenXM_contrib2/asir2000/engine/up_gf2n.c between version 1.2 and 1.5

version 1.2, 2000/08/21 08:31:28 version 1.5, 2015/08/08 14:19:41
Line 23 
Line 23 
  * shall be made on your publication or presentation in any form of the   * shall be made on your publication or presentation in any form of the
  * results obtained by use of the SOFTWARE.   * results obtained by use of the SOFTWARE.
  * (4) In the event that you modify the SOFTWARE, you shall notify FLL by   * (4) In the event that you modify the SOFTWARE, you shall notify FLL by
  * e-mail at risa-admin@flab.fujitsu.co.jp of the detailed specification   * 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   * for such modification or the source code of the modified part of the
  * SOFTWARE.   * SOFTWARE.
  *   *
Line 45 
Line 45 
  * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,   * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,
  * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.   * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.
  *   *
  * $OpenXM: OpenXM_contrib2/asir2000/engine/up_gf2n.c,v 1.1.1.1 1999/12/03 07:39:08 noro Exp $   * $OpenXM: OpenXM_contrib2/asir2000/engine/up_gf2n.c,v 1.4 2001/10/09 01:36:14 noro Exp $
 */  */
 #include "ca.h"  #include "ca.h"
 #include <math.h>  #include <math.h>
Line 54  extern int debug_up;
Line 54  extern int debug_up;
 extern int up_lazy;  extern int up_lazy;
 extern GEN_UP2 current_mod_gf2n;  extern GEN_UP2 current_mod_gf2n;
   
 void squarep_gf2n(vl,n1,nr)  void squarep_gf2n(VL vl,P n1,P *nr)
 VL vl;  
 P n1;  
 P *nr;  
 {  {
         UP b1,br;          UP b1,br;
   
Line 72  P *nr;
Line 69  P *nr;
         }          }
 }  }
   
 void squareup_gf2n(n1,nr)  void squareup_gf2n(UP n1,UP *nr)
 UP n1;  
 UP *nr;  
 {  {
         UP r;          UP r;
         GF2N *c1,*c;          GF2N *c1,*c;
Line 98  UP *nr;
Line 93  UP *nr;
   
 /* x^(2^n) mod f */  /* x^(2^n) mod f */
   
 void powermodup_gf2n(f,xp)  void powermodup_gf2n(UP f,UP *xp)
 UP f;  
 UP *xp;  
 {  {
         UP x,t,invf;          UP x,t,invf;
         int k,n;          int k,n;
         GF2N lm;          GF2N lm;
         struct oEGT eg_sq,eg_rem,eg_mul,eg_inv,eg0,eg1,eg2;  
   
         n = degup2(current_mod_gf2n->dense);          n = degup2(current_mod_gf2n->dense);
         MKGF2N(ONEUP2,lm);          MKGF2N(ONEUP2,lm);
Line 123  UP *xp;
Line 115  UP *xp;
   
 /* g^d mod f */  /* g^d mod f */
   
 void generic_powermodup_gf2n(g,f,d,xp)  void generic_powermodup_gf2n(UP g,UP f,Q d,UP *xp)
 UP g,f;  
 Q d;  
 UP *xp;  
 {  {
         N e;          N e;
         UP x,y,t,invf,s;          UP x,y,t,invf,s;
Line 161  UP *xp;
Line 150  UP *xp;
   
 /* g+g^2+...+g^(2^(nd-1)) mod f; where e = deg(mod) */  /* g+g^2+...+g^(2^(nd-1)) mod f; where e = deg(mod) */
   
 void tracemodup_gf2n(g,f,d,xp)  void tracemodup_gf2n(UP g,UP f,Q d,UP *xp)
 UP g,f;  
 Q d;  
 UP *xp;  
 {  {
         UP x,t,s,u,invf;          UP x,t,s,u,invf;
         int en,i;          int en,i;
Line 185  UP *xp;
Line 171  UP *xp;
         *xp = s;          *xp = s;
 }  }
   
 void tracemodup_gf2n_slow(g,f,d,xp)  void tracemodup_gf2n_slow(UP g,UP f,Q d,UP *xp)
 UP g,f;  
 Q d;  
 UP *xp;  
 {  {
         UP x,t,s,u;          UP x,t,s,u;
         int en,i;          int en,i;
Line 207  UP *xp;
Line 190  UP *xp;
         *xp = s;          *xp = s;
 }  }
   
 static struct oEGT eg_trace_tab,eg_trace_mul;  void tracemodup_gf2n_tab(UP g,UP f,Q d,UP *xp)
   
 void tracemodup_gf2n_tab(g,f,d,xp)  
 UP g,f;  
 Q d;  
 UP *xp;  
 {  {
         UP x0,x2,t,s,u;          UP x0,x2,t,s,u;
         int en,i;          int en,i;
         UP *tab;          UP *tab;
         GF2N one;          GF2N one;
         struct oEGT eg1,eg2;  
   
         en = QTOS(d)*degup2(current_mod_gf2n->dense);          en = QTOS(d)*degup2(current_mod_gf2n->dense);
         remup(g,f,&t); g = t;          remup(g,f,&t); g = t;
Line 246  UP *xp;
Line 223  UP *xp;
         *xp = s;          *xp = s;
 }  }
   
 void square_rem_tab_up_gf2n(f,tab,rp)  void square_rem_tab_up_gf2n(UP f,UP *tab,UP *rp)
 UP f;  
 UP *tab;  
 UP *rp;  
 {  {
         UP s,t,u,n;          UP s,t,u,n;
         Num *c;          Num *c;
Line 270  UP *rp;
Line 244  UP *rp;
         }          }
 }  }
   
 void powertabup_gf2n(f,xp,tab)  void powertabup_gf2n(UP f,UP xp,UP *tab)
 UP f;  
 UP xp;  
 UP *tab;  
 {  {
         UP y,t,invf;          UP y,t,invf;
         int i,d;          int i,d;
Line 289  UP *tab;
Line 260  UP *tab;
         invmodup(t,f->d,&invf);          invmodup(t,f->d,&invf);
   
         for ( i = 2; i < d; i++ ) {          for ( i = 2; i < d; i++ ) {
                 if ( debug_up )            if ( debug_up ){
                         fprintf(stderr,".");              fprintf(stderr,".");
                 if ( !(i%2) )  #if defined(__MINGW32__) || defined(__MINGW64__)
               fflush(stderr);
   #endif
             }
             if ( !(i%2) )
                         squareup_gf2n(tab[i/2],&t);                          squareup_gf2n(tab[i/2],&t);
                 else            else
                         kmulup(tab[i-1],xp,&t);                          kmulup(tab[i-1],xp,&t);
                 rembymulup_special(t,f,invf,&tab[i]);                  rembymulup_special(t,f,invf,&tab[i]);
 /*              remup(t,f,&tab[i]); */  /*              remup(t,f,&tab[i]); */
         }          }
 }  }
   
 void find_root_gf2n(f,r)  void find_root_gf2n(UP f,GF2N *r)
 UP f;  
 GF2N *r;  
 {  {
         UP g,ut,c,t,h,rem;          UP g,ut,c,t,h,rem;
         int n;          int n;
         GF2N rn;          GF2N rn;
         struct oEGT eg0,eg1,eg_trace;  
   
         n = degup2(current_mod_gf2n->dense);          n = degup2(current_mod_gf2n->dense);
         g = f;          g = f;

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.5

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>