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

Diff for /OpenXM_contrib2/asir2000/parse/quote.c between version 1.8 and 1.13

version 1.8, 2004/03/04 01:41:32 version 1.13, 2004/03/11 09:52:56
Line 1 
Line 1 
 /* $OpenXM: OpenXM_contrib2/asir2000/parse/quote.c,v 1.7 2004/03/03 09:25:30 noro Exp $ */  /* $OpenXM: OpenXM_contrib2/asir2000/parse/quote.c,v 1.12 2004/03/10 05:27:03 noro Exp $ */
   
 #include "ca.h"  #include "ca.h"
 #include "parse.h"  #include "parse.h"
Line 158  void polytoquote(P a,QUOTE *c)
Line 158  void polytoquote(P a,QUOTE *c)
         int n,i,sgn;          int n,i,sgn;
         QUOTE v,r,s,u;          QUOTE v,r,s,u;
   
         if ( !a || (OID(a) == O_N) ) {          if ( !a ) {
                 MKQUOTE(*c,mkfnode(1,I_FORMULA,(pointer)a));                  MKQUOTE(*c,mkfnode(1,I_FORMULA,(pointer)a));
                 return;                  return;
           } else if ( OID(a) == O_N ) {
                   MKQUOTE(*c,mkfnode(1,I_FORMULA,(pointer)a));
                   return;
         }          }
         vartoquote(VR((P)a),&v);          vartoquote(VR((P)a),&v);
         dc = DC((P)a);          dc = DC((P)a);
Line 236  void dctoquote(DCP dc,QUOTE v,QUOTE *q,int *sgn)
Line 239  void dctoquote(DCP dc,QUOTE v,QUOTE *q,int *sgn)
                         objtoquote((Obj)ONE,&r);                          objtoquote((Obj)ONE,&r);
         } else {          } else {
                 objtoquote((Obj)c,&u);                  objtoquote((Obj)c,&u);
                 if ( !NUM(c) && NEXT(DC(c)) ) {                  if ( !NUM(c) && NEXT(DC(c)) && d ) {
                         MKQUOTE(t,mkfnode(1,I_PAREN,BDY(u)));                          MKQUOTE(t,mkfnode(1,I_PAREN,BDY(u)));
                         u = t;                          u = t;
                 }                  }
Line 277  void mptoquote(MP m,int n,QUOTE *r,int *sgn)
Line 280  void mptoquote(MP m,int n,QUOTE *r,int *sgn)
                 s = u;                  s = u;
         }          }
         dl = m->dl;          dl = m->dl;
         if ( !dl->td )          for ( i = n-1, t = 0; i >= 0; i-- ) {
                 *r = s;                  STOQ(dl->d[i],q);
         else {                  f = mkfnode(1,I_FORMULA,q);
                 for ( i = n-1, t = 0; i >= 0; i-- ) {                  MKNODE(t1,f,t);
                         STOQ(dl->d[i],q);                  t = t1;
                         f = mkfnode(1,I_FORMULA,q);  
                         MKNODE(t1,f,t);  
                         t = t1;  
                 }  
                 MKQUOTE(u,mkfnode(1,I_EV,t));  
                 if ( UNIQ(c) )  
                         *r = u;  
                 else  
                         mulquote(CO,s,u,r);  
         }          }
           MKQUOTE(u,mkfnode(1,I_EV,t));
           if ( UNIQ(c) )
                   *r = u;
           else
                   mulquote(CO,s,u,r);
 }  }
   
 void vartoquote(V v,QUOTE *c)  void vartoquote(V v,QUOTE *c)
Line 299  void vartoquote(V v,QUOTE *c)
Line 298  void vartoquote(V v,QUOTE *c)
         P x;          P x;
         PF pf;          PF pf;
         PFAD ad;          PFAD ad;
         QUOTE a,b;          QUOTE a,b,u;
         int i;          int i;
         FUNC f;          FUNC f;
         NODE t,t1;          NODE t,t1;
Line 313  void vartoquote(V v,QUOTE *c)
Line 312  void vartoquote(V v,QUOTE *c)
                 ad = ((PFINS)v->priv)->ad;                  ad = ((PFINS)v->priv)->ad;
                 if ( !strcmp(NAME(pf),"pow") ) {                  if ( !strcmp(NAME(pf),"pow") ) {
                         /* pow(a,b) = a^b */                          /* pow(a,b) = a^b */
                         objtoquote(ad[0].arg,&a); objtoquote(ad[1].arg,&b);                          objtoquote(ad[0].arg,&a);
                         pwrquote(CO,a,b,c);                          x = (P)ad[0].arg;
                           /* check whether x is a variable */
                           if ( x && OID(x)==O_P && !NEXT(DC(x))
                                   && UNIQ(DEG(DC(x))) && UNIQ(COEF(DC(x))) ) {
                                   /* use a as is */
                                   u = a;
                           } else {
                                   /* a => (a) */
                                   MKQUOTE(u,mkfnode(1,I_PAREN,BDY(a)));
                           }
                           objtoquote(ad[1].arg,&b);
                           pwrquote(CO,u,b,c);
                 } else {                  } else {
                         for ( i = 0; i < pf->argc; i++ )                          for ( i = 0; i < pf->argc; i++ )
                                 if ( ad[i].d )                                  if ( ad[i].d )

Legend:
Removed from v.1.8  
changed lines
  Added in v.1.13

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