[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.24 and 1.26

version 1.24, 2002/09/30 06:13:07 version 1.26, 2002/10/25 02:43:40
Line 1 
Line 1 
 /* $OpenXM: OpenXM_contrib2/asir2000/engine/Hgfs.c,v 1.23 2002/09/27 08:40:48 noro Exp $ */  /* $OpenXM: OpenXM_contrib2/asir2000/engine/Hgfs.c,v 1.25 2002/10/23 07:54:58 noro Exp $ */
   
 #include "ca.h"  #include "ca.h"
 #include "inline.h"  #include "inline.h"
Line 16  int comp_dum(DUM a,DUM b)
Line 16  int comp_dum(DUM a,DUM b)
                 return 0;                  return 0;
 }  }
   
 void fctrsf(P p,DCP *dcp)  void ufctrsf(P p,DCP *dcp)
 {  {
         int n,i,j,k;          int n,i,j,k;
         DCP dc,dc0;          DCP dc,dc0;
Line 669  int sfberle(VL vl,P f,int count,GFS *ev,DCP *dcp)
Line 669  int sfberle(VL vl,P f,int count,GFS *ev,DCP *dcp)
                         ptosfum(f0,wf); cpyum(wf,wf1);                          ptosfum(f0,wf); cpyum(wf,wf1);
                         diffsfum(wf1,wf2); gcdsfum(wf1,wf2,gcd);                          diffsfum(wf1,wf2); gcdsfum(wf1,wf2,gcd);
                         if ( DEG(gcd) == 0 ) {                          if ( DEG(gcd) == 0 ) {
                                 fctrsf(f0,&dc);                                  ufctrsf(f0,&dc);
                                 for ( dct = NEXT(dc), i = 0; dct; dct = NEXT(dct), i++ );                                  for ( dct = NEXT(dc), i = 0; dct; dct = NEXT(dct), i++ );
                                 if ( i < fn ) {                                  if ( i < fn ) {
                                         dc0 = dc; fn = i; fm = m;                                          dc0 = dc; fn = i; fm = m;
Line 1011  void sfbfctr(P f,V x,V y,int degbound,DCP *dcp)
Line 1011  void sfbfctr(P f,V x,V y,int degbound,DCP *dcp)
                 }                  }
         }          }
         *dcp = dc;          *dcp = dc;
   }
   
   /* returns shifted f, shifted factors and the eval pt */
   
   void sfbfctr_shift(P f,V x,V y,int degbound,GFS *evp,P *sfp,DCP *dcp)
   {
           ML list;
           P sf;
           GFS ev;
           DCP dc,dct;
           int dx,dy;
   
           /* sf(x) = f(x+ev) = list->c[0]*list->c[1]*... */
           sfhensel(5,f,x,degbound,&ev,&sf,&list);
           if ( list->n == 0 )
                   error("sfbfctr_shift : short of evaluation points");
           else if ( list->n == 1 ) {
                   /* f is irreducible */
                   NEWDC(dc); DEG(dc) = ONE; COEF(dc) = f; NEXT(dc) = 0;
                   *evp = 0;
                   *sfp = f;
                   *dcp = dc;
           } else {
                   sfdtest(sf,list,x,y,dcp);
                   *evp = ev;
                   *sfp = sf;
           }
 }  }
   
 /* f = f(x,y) = list->c[0]*list->c[1]*... mod y^(list->bound+1) */  /* f = f(x,y) = list->c[0]*list->c[1]*... mod y^(list->bound+1) */

Legend:
Removed from v.1.24  
changed lines
  Added in v.1.26

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