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

Diff for /OpenXM_contrib2/asir2000/builtin/gf.c between version 1.14 and 1.15

version 1.14, 2001/10/09 01:36:06 version 1.15, 2002/03/15 02:52:09
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/builtin/gf.c,v 1.13 2001/09/03 07:56:19 noro Exp $   * $OpenXM: OpenXM_contrib2/asir2000/builtin/gf.c,v 1.14 2001/10/09 01:36:06 noro Exp $
 */  */
 #include "ca.h"  #include "ca.h"
 #include "parse.h"  #include "parse.h"
Line 56  struct resf_dlist {
Line 56  struct resf_dlist {
   
 int resf_degtest(int,int *,int,struct resf_dlist *);  int resf_degtest(int,int *,int,struct resf_dlist *);
 void uhensel(P,NODE,int,int,NODE *);  void uhensel(P,NODE,int,int,NODE *);
   void uhensel_incremental(P,NODE,int,int,int,NODE *);
 void resf_hensel(int,P,int,P *,ML *);  void resf_hensel(int,P,int,P *,ML *);
 void resf_dtest(P,ML,int,int *,int *,DCP *);  void resf_dtest(P,ML,int,int *,int *,DCP *);
 void resf_dtest_special(P,ML,int,int *,int *,DCP *);  void resf_dtest_special(P,ML,int,int *,int *,DCP *);
Line 75  void pwr_mod(P,P,V,P,int,N,P *);
Line 76  void pwr_mod(P,P,V,P,int,N,P *);
 void rem_mod(P,P,V,P,int,P *);  void rem_mod(P,P,V,P,int,P *);
   
 void Pnullspace(),Pgcda_mod(),Pftest(),Presfmain(),Ppwr_mod(),Puhensel();  void Pnullspace(),Pgcda_mod(),Pftest(),Presfmain(),Ppwr_mod(),Puhensel();
   void Puhensel_incremental();
 void Psfuhensel();  void Psfuhensel();
   
 void Pnullspace_ff();  void Pnullspace_ff();
Line 98  struct ftab gf_tab[] = {
Line 100  struct ftab gf_tab[] = {
         {"resfmain",Presfmain,4},          {"resfmain",Presfmain,4},
         {"pwr_mod",Ppwr_mod,6},          {"pwr_mod",Ppwr_mod,6},
         {"uhensel",Puhensel,4},          {"uhensel",Puhensel,4},
           {"uhensel_incremental",Puhensel_incremental,5},
         {"sfuhensel",Psfuhensel,4},          {"sfuhensel",Psfuhensel,4},
         {0,0,0},          {0,0,0},
 };  };
Line 151  LIST *rp;
Line 154  LIST *rp;
         MKLIST(*rp,r);          MKLIST(*rp,r);
 }  }
   
   void Puhensel_incremental(arg,rp)
   NODE arg;
   LIST *rp;
   {
           P f;
           NODE mfl,r;
           int mod,bound,start;
   
           f = (P)ARG0(arg);
           mfl = BDY((LIST)ARG1(arg));
           mod = QTOS((Q)ARG2(arg));
           start = QTOS((Q)ARG3(arg));
           bound = QTOS((Q)ARG4(arg));
           uhensel_incremental(f,mfl,mod,start,bound,&r);
           MKLIST(*rp,r);
   }
   
 void uhensel(f,mfl,mod,bound,rp)  void uhensel(f,mfl,mod,bound,rp)
 P f;  P f;
 NODE mfl;  NODE mfl;
Line 178  NODE *rp;
Line 198  NODE *rp;
         v = VR(f);          v = VR(f);
         for ( i = nf-1, top = 0; i >= 0; i-- ) {          for ( i = nf-1, top = 0; i >= 0; i-- ) {
                 lumtop(v,mod,bound,rlist->c[i],&s);                  lumtop(v,mod,bound,rlist->c[i],&s);
                   MKNODE(t,s,top); top = t;
           }
           *rp = top;
   }
   
   void uhensel_incremental(f,mfl,mod,start,bound,rp)
   P f;
   NODE mfl;
   int mod,start,bound;
   NODE *rp;
   {
           ML blist,clist,rlist;
           LUM fl;
           LUM *lblist;
           int nf,i,j,k;
           int **p;
           P s;
           V v;
           NODE t,top;
   
           nf = length(mfl);
           blist = MLALLOC(nf); blist->n = nf; blist->mod = mod;
           lblist = (LUM *)MALLOC(nf*sizeof(LUM));
           for ( i = 0, t = mfl; i < nf; i++, t = NEXT(t) ) {
                   blist->c[i] = (pointer)UMALLOC(UDEG((P)BDY(t)));
                   ptoum(mod,(P)BDY(t),blist->c[i]);
                   W_LUMALLOC((int)UDEG((P)BDY(t)),bound,lblist[i]);
                   ptolum(mod,start,(P)BDY(t),lblist[i]);
                   p = lblist[i]->c;
                   for ( j = DEG(lblist[i]); j >= 0; j-- )
                           for ( k = start; k < bound; k++ )
                                   p[j][k] = 0;
           }
           gcdgen(f,blist,&clist);
           clist->bound = bound;
           W_LUMALLOC((int)UDEG(f),bound,fl);
           ptolum(mod,bound,f,fl);
           henmain_incremental(fl,lblist,clist,nf,mod,start,bound);
           v = VR(f);
           for ( i = nf-1, top = 0; i >= 0; i-- ) {
                   lumtop_unsigned(v,mod,bound,lblist[i],&s);
                 MKNODE(t,s,top); top = t;                  MKNODE(t,s,top); top = t;
         }          }
         *rp = top;          *rp = top;

Legend:
Removed from v.1.14  
changed lines
  Added in v.1.15

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