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

Diff for /OpenXM_contrib2/asir2000/builtin/gr.c between version 1.60 and 1.71

version 1.60, 2005/11/16 23:42:53 version 1.71, 2015/08/14 13:51:54
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/gr.c,v 1.59 2005/02/17 06:27:35 noro Exp $   * $OpenXM: OpenXM_contrib2/asir2000/builtin/gr.c,v 1.70 2015/08/06 10:01:51 fujimoto Exp $
 */  */
 #include "ca.h"  #include "ca.h"
 #include "parse.h"  #include "parse.h"
Line 53 
Line 53 
 #include "ox.h"  #include "ox.h"
   
 #if defined(__GNUC__)  #if defined(__GNUC__)
 #define INLINE inline  #define INLINE static inline
 #elif defined(VISUAL)  #elif defined(VISUAL) || defined(__MINGW32__)
 #define INLINE __inline  #define INLINE __inline
 #else  #else
 #define INLINE  #define INLINE
Line 95  int DP_NFStat = 0;
Line 95  int DP_NFStat = 0;
 LIST Dist = 0;  LIST Dist = 0;
 int NoGCD = 0;  int NoGCD = 0;
 int GenTrace = 0;  int GenTrace = 0;
   int GenSyz = 0;
 int OXCheck = -1;  int OXCheck = -1;
   int OneZeroHomo = 0;
   
 int NoSugar = 0;  int NoSugar = 0;
 static int NoCriB = 0;  static int NoCriB = 0;
Line 104  static int NoMC = 0;
Line 106  static int NoMC = 0;
 static int NoRA = 0;  static int NoRA = 0;
 static int ShowMag = 0;  static int ShowMag = 0;
 static int Stat = 0;  static int Stat = 0;
 static int Denominator = 1;  int Denominator = 1;
 int Top = 0;  int Top = 0;
 int Reverse = 0;  int Reverse = 0;
 static int Max_mag = 0;  static int Max_mag = 0;
Line 407  void dp_gr_main(LIST f,LIST v,Num homo,int modular,int
Line 409  void dp_gr_main(LIST f,LIST v,Num homo,int modular,int
                 fprintf(asir_out,"\nMax_mag=%d, Max_coef=%d\n",Max_mag, Max_coef);                  fprintf(asir_out,"\nMax_mag=%d, Max_coef=%d\n",Max_mag, Max_coef);
 }  }
   
   void dp_interreduce(LIST f,LIST v,int field,struct order_spec *ord,LIST *rp)
   {
           int i,mindex,m,nochk;
           struct order_spec *ord1;
           Q q;
           VL fv,vv,vc;
           NODE fd,fd0,fi,fi0,r,r0,t,subst,x,s,xx;
           NODE ind,ind0;
           LIST trace,gbindex;
           int input_is_dp = 0;
   
           mindex = 0; nochk = 0; dp_fcoeffs = field;
           get_vars((Obj)f,&fv); pltovl(v,&vv); vlminus(fv,vv,&vc);
           NVars = length((NODE)vv); PCoeffs = vc ? 1 : 0; VC = vc;
           CNVars = NVars;
           if ( ord->id && NVars != ord->nv )
                   error("dp_interreduce : invalid order specification");
           initd(ord);
           for ( fd0 = 0, t = BDY(f); t; t = NEXT(t) ) {
                   NEXTNODE(fd0,fd);
                   if ( BDY(t) && OID(BDY(t)) == O_DP ) {
                           dp_sort((DP)BDY(t),(DP *)&BDY(fd)); input_is_dp = 1;
                   } else
                           ptod(CO,vv,(P)BDY(t),(DP *)&BDY(fd));
           }
           if ( fd0 ) NEXT(fd) = 0;
           fi0 = fd0;
           setup_arrays(fd0,0,&s);
           init_stat();
           x = s;
           reduceall(x,&xx); x = xx;
           for ( r0 = 0, ind0 = 0; x; x = NEXT(x) ) {
                   NEXTNODE(r0,r); dp_load((int)BDY(x),&ps[(int)BDY(x)]);
                   if ( input_is_dp )
                           BDY(r) = (pointer)ps[(int)BDY(x)];
                   else
                           dtop(CO,vv,ps[(int)BDY(x)],(P *)&BDY(r));
                   NEXTNODE(ind0,ind);
                   STOQ((int)BDY(x),q); BDY(ind) = q;
           }
           if ( r0 ) NEXT(r) = 0;
           if ( ind0 ) NEXT(ind) = 0;
           MKLIST(*rp,r0);
           MKLIST(gbindex,ind0);
   }
   
 void dp_gr_mod_main(LIST f,LIST v,Num homo,int m,struct order_spec *ord,LIST *rp)  void dp_gr_mod_main(LIST f,LIST v,Num homo,int m,struct order_spec *ord,LIST *rp)
 {  {
         struct order_spec *ord1;          struct order_spec *ord1;
Line 863  NODE gb_f4_mod(NODE f,int m)
Line 911  NODE gb_f4_mod(NODE f,int m)
   
                 /* XXX free redmat explicitly */                  /* XXX free redmat explicitly */
                 for ( k = 0; k < nred; k++ ) {                  for ( k = 0; k < nred; k++ ) {
                         GC_free(BDY(redmat[k]));                          GCFREE(BDY(redmat[k]));
                         GC_free(redmat[k]);                          GCFREE(redmat[k]);
                 }                  }
   
                 get_eg(&tmp0); add_eg(&eg_elim1,&tmp1,&tmp0);                  get_eg(&tmp0); add_eg(&eg_elim1,&tmp1,&tmp0);
Line 927  NODE gb_f4_mod(NODE f,int m)
Line 975  NODE gb_f4_mod(NODE f,int m)
   
                 /* XXX free spmat[] explicitly */                  /* XXX free spmat[] explicitly */
                 for ( j = 0; j < nsp; j++ ) {                  for ( j = 0; j < nsp; j++ ) {
                         GC_free(spmat[j]);                          GCFREE(spmat[j]);
                 }                  }
         }          }
         if ( DP_Print ) {          if ( DP_Print ) {
Line 1608  void reducebase_dehomo(NODE f,NODE *g)
Line 1656  void reducebase_dehomo(NODE f,NODE *g)
                                 NODE node;                                  NODE node;
   
                                 STOQ(r[i],q);                                  STOQ(r[i],q);
                                 node = mknode(4,0,q,0,0);                                  node = mknode(4,NULLP,q,NULLP,NULLP);
                                 MKLIST(hist,node);                                  MKLIST(hist,node);
                                 MKNODE(TraceList,hist,0);                                  MKNODE(TraceList,hist,0);
                         }                          }
Line 1700  NODE gb(NODE f,int m,NODE subst)
Line 1748  NODE gb(NODE f,int m,NODE subst)
         Max_coef = 0;          Max_coef = 0;
         prev = 1;          prev = 1;
         doing_f4 = 0;          doing_f4 = 0;
           init_denomlist();
         if ( m ) {          if ( m ) {
                 psm = (DP *)MALLOC(pslen*sizeof(DP));                  psm = (DP *)MALLOC(pslen*sizeof(DP));
                 for ( i = 0; i < psn; i++ )                  for ( i = 0; i < psn; i++ )
Line 1760  skip_nf:
Line 1809  skip_nf:
                         get_eg(&tpz0);                          get_eg(&tpz0);
                         prim_part(nf,0,&h);                          prim_part(nf,0,&h);
                         get_eg(&tpz1); add_eg(&eg_pz,&tpz0,&tpz1);                          get_eg(&tpz1); add_eg(&eg_pz,&tpz0,&tpz1);
                           add_denomlist(BDY(h)->c);
                         get_eg(&tnp0);                          get_eg(&tnp0);
                         if ( Demand && skip_nf_flag )                          if ( Demand && skip_nf_flag )
                                 nh = newps_nosave(h,m,subst);                                  nh = newps_nosave(h,m,subst);
Line 2272  void dp_set_flag(Obj name,Obj value)
Line 2322  void dp_set_flag(Obj name,Obj value)
                 GenTrace = v;                  GenTrace = v;
         else if ( !strcmp(n,"OXCheck") )          else if ( !strcmp(n,"OXCheck") )
                 OXCheck = v;                  OXCheck = v;
           else if ( !strcmp(n,"GenSyz") )
                   GenSyz = v;
           else if ( !strcmp(n,"OneZeroHomo") )
                   OneZeroHomo = v;
 }  }
   
 void dp_make_flaglist(LIST *list)  void dp_make_flaglist(LIST *list)
Line 2298  void dp_make_flaglist(LIST *list)
Line 2352  void dp_make_flaglist(LIST *list)
         STOQ(DP_NFStat,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"NFStat"); MKNODE(n1,name,n); n = n1;          STOQ(DP_NFStat,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"NFStat"); MKNODE(n1,name,n); n = n1;
         STOQ(OXCheck,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"OXCheck"); MKNODE(n1,name,n); n = n1;          STOQ(OXCheck,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"OXCheck"); MKNODE(n1,name,n); n = n1;
         STOQ(GenTrace,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"GenTrace"); MKNODE(n1,name,n); n = n1;          STOQ(GenTrace,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"GenTrace"); MKNODE(n1,name,n); n = n1;
           STOQ(GenSyz,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"GenSyz"); MKNODE(n1,name,n); n = n1;
         STOQ(PtozpRA,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"PtozpRA"); MKNODE(n1,name,n); n = n1;          STOQ(PtozpRA,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"PtozpRA"); MKNODE(n1,name,n); n = n1;
         STOQ(ShowMag,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"ShowMag"); MKNODE(n1,name,n); n = n1;          STOQ(ShowMag,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"ShowMag"); MKNODE(n1,name,n); n = n1;
         STOQ(Top,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"Top"); MKNODE(n1,name,n); n = n1;          STOQ(Top,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"Top"); MKNODE(n1,name,n); n = n1;
Line 2515  void _dp_nf_z(NODE b,DP g,DP *ps,int full,int multiple
Line 2570  void _dp_nf_z(NODE b,DP g,DP *ps,int full,int multiple
                                 if ( GenTrace ) {                                  if ( GenTrace ) {
                                         /* u = cr*rp + (-cred)*shift*red */                                          /* u = cr*rp + (-cred)*shift*red */
                                         STOQ((int)BDY(l),cq);                                          STOQ((int)BDY(l),cq);
                                         node = mknode(4,cr,cq,0,0);                                          node = mknode(4,cr,cq,NULLP,NULLP);
                                         mulq(cred,rc,&rcred);                                          mulq(cred,rc,&rcred);
                                         chsgnnum((Num)rcred,(Num *)&mrcred);                                          chsgnnum((Num)rcred,(Num *)&mrcred);
                                         muldc(CO,shift,(P)mrcred,(DP *)&ARG2(node));                                          muldc(CO,shift,(P)mrcred,(DP *)&ARG2(node));

Legend:
Removed from v.1.60  
changed lines
  Added in v.1.71

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