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

Diff for /OpenXM_contrib2/asir2018/engine/nd.c between version 1.14 and 1.15

version 1.14, 2019/03/03 05:21:17 version 1.15, 2019/04/20 06:04:18
Line 1 
Line 1 
 /* $OpenXM: OpenXM_contrib2/asir2018/engine/nd.c,v 1.13 2019/01/14 09:17:34 noro Exp $ */  /* $OpenXM: OpenXM_contrib2/asir2018/engine/nd.c,v 1.14 2019/03/03 05:21:17 noro Exp $ */
   
 #include "nd.h"  #include "nd.h"
   
Line 78  NDV pltondv(VL vl,VL dvl,LIST p);
Line 78  NDV pltondv(VL vl,VL dvl,LIST p);
 void pltozpl(LIST l,Q *cont,LIST *pp);  void pltozpl(LIST l,Q *cont,LIST *pp);
 void ndl_max(UINT *d1,unsigned *d2,UINT *d);  void ndl_max(UINT *d1,unsigned *d2,UINT *d);
 void nmtodp(int mod,NM m,DP *r);  void nmtodp(int mod,NM m,DP *r);
   void ndltodp(UINT *d,DP *r);
 NODE reverse_node(NODE n);  NODE reverse_node(NODE n);
 P ndc_div(int mod,union oNDC a,union oNDC b);  P ndc_div(int mod,union oNDC a,union oNDC b);
 P ndctop(int mod,union oNDC c);  P ndctop(int mod,union oNDC c);
Line 3224  void nd_gr(LIST f,LIST v,int m,int homo,int retdp,int 
Line 3225  void nd_gr(LIST f,LIST v,int m,int homo,int retdp,int 
     int *perm;      int *perm;
     EPOS oepos;      EPOS oepos;
     int obpe,oadv,ompos,cbpe;      int obpe,oadv,ompos,cbpe;
       VECT hvect;
   
     nd_module = 0;      nd_module = 0;
     if ( !m && Demand ) nd_demand = 1;      if ( !m && Demand ) nd_demand = 1;
Line 3334  void nd_gr(LIST f,LIST v,int m,int homo,int retdp,int 
Line 3336  void nd_gr(LIST f,LIST v,int m,int homo,int retdp,int 
   if ( !x ) {    if ( !x ) {
     *rp = 0; return;      *rp = 0; return;
   }    }
     if ( nd_gentrace ) {
       MKVECT(hvect,nd_psn);
       for ( i = 0; i < nd_psn; i++ )
          ndltodp(nd_psh[i]->dl,(DP *)&BDY(hvect)[i]);
     }
   if ( !ishomo && homo ) {    if ( !ishomo && homo ) {
        /* dehomogenization */         /* dehomogenization */
     for ( t = x; t; t = NEXT(t) ) ndv_dehomogenize((NDV)BDY(t),ord);      for ( t = x; t; t = NEXT(t) ) ndv_dehomogenize((NDV)BDY(t),ord);
Line 3380  FINAL:
Line 3387  FINAL:
   if ( f4 ) {    if ( f4 ) {
             STOZ(16,bpe);              STOZ(16,bpe);
             STOZ(nd_last_nonzero,last_nonzero);              STOZ(nd_last_nonzero,last_nonzero);
             tr = mknode(5,*rp,(!ishomo&&homo)?ONE:0,BDY(nzlist),bpe,last_nonzero); MKLIST(*rp,tr);              tr = mknode(6,*rp,(!ishomo&&homo)?ONE:0,BDY(nzlist),bpe,last_nonzero,hvect); MKLIST(*rp,tr);
   
         } else {          } else {
             tl1 = reverse_node(tl1); tl2 = reverse_node(tl2);              tl1 = reverse_node(tl1); tl2 = reverse_node(tl2);
             tl3 = reverse_node(tl3);              tl3 = reverse_node(tl3);
Line 3401  FINAL:
Line 3407  FINAL:
             MKLIST(l1,tl1); MKLIST(l2,tl2); MKLIST(l3,t); MKLIST(l4,tl3);              MKLIST(l1,tl1); MKLIST(l2,tl2); MKLIST(l3,t); MKLIST(l4,tl3);
             MKLIST(l5,tl4);              MKLIST(l5,tl4);
             STOZ(nd_bpe,bpe);              STOZ(nd_bpe,bpe);
             tr = mknode(8,*rp,(!ishomo&&homo)?ONE:0,l1,l2,l3,l4,l5,bpe); MKLIST(*rp,tr);              tr = mknode(9,*rp,(!ishomo&&homo)?ONE:0,l1,l2,l3,l4,l5,bpe,hvect); MKLIST(*rp,tr);
         }          }
     }      }
 #if 0  #if 0
Line 3668  void nd_gr_trace(LIST f,LIST v,int trace,int homo,int 
Line 3674  void nd_gr_trace(LIST f,LIST v,int trace,int homo,int 
     int *perm;      int *perm;
     int j,ret;      int j,ret;
     Z jq,bpe;      Z jq,bpe;
       VECT hvect;
   
     nd_module = 0;      nd_module = 0;
     nd_lf = 0;      nd_lf = 0;
Line 3785  void nd_gr_trace(LIST f,LIST v,int trace,int homo,int 
Line 3792  void nd_gr_trace(LIST f,LIST v,int trace,int homo,int 
             else m = get_lprime(++mindex);              else m = get_lprime(++mindex);
             continue;              continue;
         }          }
           if ( nd_gentrace ) {
             MKVECT(hvect,nd_psn);
             for ( i = 0; i < nd_psn; i++ )
                ndltodp(nd_psh[i]->dl,(DP *)&BDY(hvect)[i]);
           }
         if ( !ishomo && homo ) {          if ( !ishomo && homo ) {
             /* dehomogenization */              /* dehomogenization */
             for ( t = cand; t; t = NEXT(t) ) ndv_dehomogenize((NDV)BDY(t),ord);              for ( t = cand; t; t = NEXT(t) ) ndv_dehomogenize((NDV)BDY(t),ord);
Line 3862  void nd_gr_trace(LIST f,LIST v,int trace,int homo,int 
Line 3874  void nd_gr_trace(LIST f,LIST v,int trace,int homo,int 
         MKLIST(l1,tl1); MKLIST(l2,tl2); MKLIST(l3,t); MKLIST(l4,tl3);          MKLIST(l1,tl1); MKLIST(l2,tl2); MKLIST(l3,t); MKLIST(l4,tl3);
     MKLIST(l5,tl4);      MKLIST(l5,tl4);
       STOZ(nd_bpe,bpe);        STOZ(nd_bpe,bpe);
         tr = mknode(8,*rp,(!ishomo&&homo)?ONE:0,l1,l2,l3,l4,l5,bpe); MKLIST(*rp,tr);          tr = mknode(9,*rp,(!ishomo&&homo)?ONE:0,l1,l2,l3,l4,l5,bpe,hvect); MKLIST(*rp,tr);
     }      }
 }  }
   
Line 3922  void nmtodp(int mod,NM m,DP *r)
Line 3934  void nmtodp(int mod,NM m,DP *r)
     NEWMP(mr);      NEWMP(mr);
     mr->dl = ndltodl(nd_nvar,DL(m));      mr->dl = ndltodl(nd_nvar,DL(m));
     mr->c = (Obj)ndctop(mod,m->c);      mr->c = (Obj)ndctop(mod,m->c);
       NEXT(mr) = 0; MKDP(nd_nvar,mr,dp); dp->sugar = mr->dl->td;
       *r = dp;
   }
   
   void ndltodp(UINT *d,DP *r)
   {
       DP dp;
       MP mr;
   
       NEWMP(mr);
       mr->dl = ndltodl(nd_nvar,d);
       mr->c = (Obj)ONE;
     NEXT(mr) = 0; MKDP(nd_nvar,mr,dp); dp->sugar = mr->dl->td;      NEXT(mr) = 0; MKDP(nd_nvar,mr,dp); dp->sugar = mr->dl->td;
     *r = dp;      *r = dp;
 }  }

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

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