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

Diff for /OpenXM_contrib2/asir2000/engine/Hgfs.c between version 1.29 and 1.33

version 1.29, 2002/11/22 08:44:57 version 1.33, 2015/08/14 13:51:54
Line 1 
Line 1 
 /* $OpenXM: OpenXM_contrib2/asir2000/engine/Hgfs.c,v 1.28 2002/11/22 07:32:10 noro Exp $ */  /* $OpenXM: OpenXM_contrib2/asir2000/engine/Hgfs.c,v 1.32 2015/08/08 14:19:41 fujimoto Exp $ */
   
 #include "ca.h"  #include "ca.h"
 #include "inline.h"  #include "inline.h"
   
   int debug_sfbfctr;
   
 void lnfsf(int n,UM p0,UM p1,struct p_pair *list,UM np0,UM np1);  void lnfsf(int n,UM p0,UM p1,struct p_pair *list,UM np0,UM np1);
 void extractcoefbm(BM f,int dx,UM r);  void extractcoefbm(BM f,int dx,UM r);
   
Line 609  void sfhensel(int count,P f,V x,V y,int degbound,GFS *
Line 611  void sfhensel(int count,P f,V x,V y,int degbound,GFS *
   
         q = W_UMALLOC(dx);          q = W_UMALLOC(dx);
         rlist = MLALLOC(fn); rlist->n = fn; rlist->bound = bound;          rlist = MLALLOC(fn); rlist->n = fn; rlist->bound = bound;
         fprintf(asir_out,"%d candidates\n",fn);          if ( debug_sfbfctr )
                   fprintf(asir_out,"%d candidates\n",fn);
         init_eg(&eg_hensel);          init_eg(&eg_hensel);
         for ( i = 0; i < fn-1; i++ ) {          for ( i = 0; i < fn-1; i++ ) {
                 fprintf(asir_out,"deg(fm) = %d, deg(gm[%d]) = %d\n",                  if ( debug_sfbfctr )
                           fprintf(asir_out,"deg(fm) = %d, deg(gm[%d]) = %d\n",
                         DEG(fm),i,DEG(gm[i]));                          DEG(fm),i,DEG(gm[i]));
                 init_eg(&eg_hensel_t);                  init_eg(&eg_hensel_t);
                 get_eg(&tmp0);                  get_eg(&tmp0);
Line 624  void sfhensel(int count,P f,V x,V y,int degbound,GFS *
Line 628  void sfhensel(int count,P f,V x,V y,int degbound,GFS *
                 cpyum(hm,fm);                  cpyum(hm,fm);
                 get_eg(&tmp1); add_eg(&eg_hensel_t,&tmp0,&tmp1);                  get_eg(&tmp1); add_eg(&eg_hensel_t,&tmp0,&tmp1);
                 add_eg(&eg_hensel,&tmp0,&tmp1);                  add_eg(&eg_hensel,&tmp0,&tmp1);
                 print_eg("Hensel",&eg_hensel_t);                  if ( debug_sfbfctr) {
                           print_eg("Hensel",&eg_hensel_t);
                           fprintf(asir_out,"\n");
                   }
           }
           if ( debug_sfbfctr) {
                   print_eg("Hensel total",&eg_hensel);
                 fprintf(asir_out,"\n");                  fprintf(asir_out,"\n");
         }          }
         print_eg("Hensel total",&eg_hensel);  
         fprintf(asir_out,"\n");  
         /* finally, fl must be the lift of gm[fn-1] */          /* finally, fl must be the lift of gm[fn-1] */
         rlist->c[i] = fl;          rlist->c[i] = fl;
   
Line 761  void sfhenmain2(BM f,UM g0,UM h0,int dy,BM *gp)
Line 769  void sfhenmain2(BM f,UM g0,UM h0,int dy,BM *gp)
         wa = W_UMALLOC(2*dx); wb = W_UMALLOC(2*dx);  /* XXX */          wa = W_UMALLOC(2*dx); wb = W_UMALLOC(2*dx);  /* XXX */
         eucsfum(w1,w2,wa,wb);          eucsfum(w1,w2,wa,wb);
   
         fprintf(stderr,"dy=%d\n",dy);          if ( debug_sfbfctr)
                   fprintf(stderr,"dy=%d\n",dy);
         for ( k = 1; k <= dy; k++ ) {          for ( k = 1; k <= dy; k++ ) {
                 fprintf(stderr,".");                  if ( debug_sfbfctr)
                           fprintf(stderr,".");
   
                 /* at this point, f = gk*hk mod y^k */                  /* at this point, f = gk*hk mod y^k */
   
Line 819  void sfhenmain2(BM f,UM g0,UM h0,int dy,BM *gp)
Line 829  void sfhenmain2(BM f,UM g0,UM h0,int dy,BM *gp)
                 cpyum(wg1,COEF(gk)[k]);                  cpyum(wg1,COEF(gk)[k]);
                 cpyum(wh1,COEF(hk)[k]);                  cpyum(wh1,COEF(hk)[k]);
         }          }
         fprintf(stderr,"\n");          if ( debug_sfbfctr)
                   fprintf(stderr,"\n");
         *gp = gk;          *gp = gk;
         DEG(f) = dy;          DEG(f) = dy;
         for ( i = 0; i <= dy; i++ )          for ( i = 0; i <= dy; i++ )
Line 865  void sfexgcd_by_hensel(BM g,BM h,int dy,BM *ap,BM *bp)
Line 876  void sfexgcd_by_hensel(BM g,BM h,int dy,BM *ap,BM *bp)
         mulsfbm(a,g,c); mulsfbm(b,h,wz0); addtosfbm(wz0,c);          mulsfbm(a,g,c); mulsfbm(b,h,wz0); addtosfbm(wz0,c);
         COEF(COEF(c)[0])[0] = 0;          COEF(COEF(c)[0])[0] = 0;
   
         fprintf(stderr,"dy=%d\n",dy);          if ( debug_sfbfctr)
                   fprintf(stderr,"dy=%d\n",dy);
         for ( k = 1; k <= dy; k++ ) {          for ( k = 1; k <= dy; k++ ) {
                 fprintf(stderr,".");                  if ( debug_sfbfctr)
                           fprintf(stderr,".");
   
                 /* at this point, a*g+b*h = 1 mod y^k, c = a*g+b*h-1 */                  /* at this point, a*g+b*h = 1 mod y^k, c = a*g+b*h-1 */
   
Line 906  void sfexgcd_by_hensel(BM g,BM h,int dy,BM *ap,BM *bp)
Line 919  void sfexgcd_by_hensel(BM g,BM h,int dy,BM *ap,BM *bp)
                 cpyum(wa1,COEF(a)[k]);                  cpyum(wa1,COEF(a)[k]);
                 cpyum(wb1,COEF(b)[k]);                  cpyum(wb1,COEF(b)[k]);
         }          }
         fprintf(stderr,"\n");          if ( debug_sfbfctr)
                   fprintf(stderr,"\n");
         DEG(a) = dy;          DEG(a) = dy;
         DEG(b) = dy;          DEG(b) = dy;
         *ap = a;          *ap = a;
Line 991  void sfsqfr(P f,DCP *dcp)
Line 1005  void sfsqfr(P f,DCP *dcp)
         } else if ( !NEXT(vl) )          } else if ( !NEXT(vl) )
                 sfusqfr(f,dcp);                  sfusqfr(f,dcp);
         else          else
                 sqfrsf(f,dcp);                  sqfrsf(vl,f,dcp);
 }  }
   
 void sfusqfr(P f,DCP *dcp)  void sfusqfr(P f,DCP *dcp)
Line 1204  void sfdtest(P f,ML list,V x,V y,DCP *dcp)
Line 1218  void sfdtest(P f,ML list,V x,V y,DCP *dcp)
                 }                  }
         }          }
   
         fprintf(stderr,"np = %d\n",np);          if ( debug_sfbfctr)
                   fprintf(stderr,"np = %d\n",np);
         dtok = 0;          dtok = 0;
         for ( g = f, k = 1, dcf = dcf0 = 0, win[0] = 1, --np, z = 0; ; z++ ) {          for ( g = f, k = 1, dcf = dcf0 = 0, win[0] = 1, --np, z = 0; ; z++ ) {
                 if ( !(z % 1000) ) fprintf(stderr,".");                  if ( debug_sfbfctr && !(z % 1000) ) fprintf(stderr,".");
                 dt = sfdegtest(dy,bound,d1c,k,win);                  dt = sfdegtest(dy,bound,d1c,k,win);
                 if ( dt )                  if ( dt )
                         dtok++;                          dtok++;
Line 1272  void sfdtest(P f,ML list,V x,V y,DCP *dcp)
Line 1287  void sfdtest(P f,ML list,V x,V y,DCP *dcp)
                                 for ( i = 0, ++k; i < k; i++ )                                  for ( i = 0, ++k; i < k; i++ )
                                         win[i] = i + 1;                                          win[i] = i + 1;
         }          }
         fprintf(stderr,"total %d, omitted by degtest %d\n",z,z-dtok);          if ( debug_sfbfctr )
                   fprintf(stderr,"total %d, omitted by degtest %d\n",z,z-dtok);
         NEXTDC(dcf0,dcf); COEF(dcf) = g;          NEXTDC(dcf0,dcf); COEF(dcf) = g;
         DEG(dcf) = ONE; NEXT(dcf) = 0; *dcp = dcf0;          DEG(dcf) = ONE; NEXT(dcf) = 0; *dcp = dcf0;
 }  }

Legend:
Removed from v.1.29  
changed lines
  Added in v.1.33

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