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

Diff for /OpenXM_contrib2/asir2000/parse/puref.c between version 1.6 and 1.7

version 1.6, 2004/03/11 09:52:56 version 1.7, 2004/08/18 00:50:37
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/parse/puref.c,v 1.5 2003/05/20 06:15:01 noro Exp $   * $OpenXM: OpenXM_contrib2/asir2000/parse/puref.c,v 1.6 2004/03/11 09:52:56 noro Exp $
 */  */
 #include "ca.h"  #include "ca.h"
 #include "parse.h"  #include "parse.h"
Line 284  void derivr(VL vl,Obj a,V v,Obj *b)
Line 284  void derivr(VL vl,Obj a,V v,Obj *b)
         }          }
 }  }
   
   void gen_pwrr(VL vl,Obj a,Obj d,Obj *r)
   {
           if ( INT(d) )
                   pwrr(vl,a,d,r);
           else
                   mkpow(vl,a,d,r);
   }
   
 void substr(VL vl,int partial,Obj a,V v,Obj b,Obj *c)  void substr(VL vl,int partial,Obj a,V v,Obj b,Obj *c)
 {  {
         Obj nm,dn,t;          Obj nm,dn,t;
Line 338  void substpr(VL vl,int partial,Obj p,V v0,Obj p0,Obj *
Line 346  void substpr(VL vl,int partial,Obj p,V v0,Obj p0,Obj *
                 for ( c = 0, dc = DC((P)p); dc; dc = NEXT(dc) ) {                  for ( c = 0, dc = DC((P)p); dc; dc = NEXT(dc) ) {
                         substpr(vl,partial,(Obj)COEF(dc),v0,p0,&t);                          substpr(vl,partial,(Obj)COEF(dc),v0,p0,&t);
                         if ( DEG(dc) ) {                          if ( DEG(dc) ) {
                                 pwrp(vl,x,DEG(dc),(P *)&s); mulr(vl,s,t,&m);                                  gen_pwrr(vl,(Obj)x,(Obj)DEG(dc),&s);
                                   mulr(vl,s,t,&m);
                                 addr(vl,m,c,&a); c = a;                                  addr(vl,m,c,&a); c = a;
                         } else {                          } else {
                                 addr(vl,t,c,&a); c = a;                                  addr(vl,t,c,&a); c = a;
Line 352  void substpr(VL vl,int partial,Obj p,V v0,Obj p0,Obj *
Line 361  void substpr(VL vl,int partial,Obj p,V v0,Obj p0,Obj *
                 else                  else
                         c = (Obj)COEF(dc);                          c = (Obj)COEF(dc);
                 for ( d = DEG(dc), dc = NEXT(dc); dc; d = DEG(dc), dc = NEXT(dc) ) {                  for ( d = DEG(dc), dc = NEXT(dc); dc; d = DEG(dc), dc = NEXT(dc) ) {
                                 subq(d,DEG(dc),(Q *)&t); pwrr(vl,p0,t,&s); mulr(vl,s,c,&m);                                  subq(d,DEG(dc),(Q *)&t);
                                   gen_pwrr(vl,p0,t,&s); mulr(vl,s,c,&m);
                                 if ( !partial )                                  if ( !partial )
                                         substpr(vl,partial,(Obj)COEF(dc),v0,p0,&t);                                          substpr(vl,partial,(Obj)COEF(dc),v0,p0,&t);
                                 else                                  else
Line 360  void substpr(VL vl,int partial,Obj p,V v0,Obj p0,Obj *
Line 370  void substpr(VL vl,int partial,Obj p,V v0,Obj p0,Obj *
                                 addr(vl,m,t,&c);                                  addr(vl,m,t,&c);
                 }                  }
                 if ( d ) {                  if ( d ) {
                         pwrr(vl,p0,(Obj)d,&t); mulr(vl,t,c,&m);                          gen_pwrr(vl,p0,(Obj)d,&t);
                           mulr(vl,t,c,&m);
                         c = m;                          c = m;
                 }                  }
                 *pr = c;                  *pr = c;
Line 658  void substfp(VL vl,Obj p,PF u,PF f,Obj *pr)
Line 669  void substfp(VL vl,Obj p,PF u,PF f,Obj *pr)
                         for ( c = 0; dc; dc = NEXT(dc) ) {                          for ( c = 0; dc; dc = NEXT(dc) ) {
                                 substfp(vl,(Obj)COEF(dc),u,f,&t);                                  substfp(vl,(Obj)COEF(dc),u,f,&t);
                                 if ( DEG(dc) ) {                                  if ( DEG(dc) ) {
                                         pwrp(vl,x,DEG(dc),(P *)&s); mulr(vl,s,t,&m);                                          gen_pwrr(vl,(Obj)x,(Obj)DEG(dc),&s);
                                           mulr(vl,s,t,&m);
                                         addr(vl,m,c,&a); c = a;                                          addr(vl,m,c,&a); c = a;
                                 } else {                                  } else {
                                         addr(vl,t,c,&a); c = a;                                          addr(vl,t,c,&a); c = a;
Line 668  void substfp(VL vl,Obj p,PF u,PF f,Obj *pr)
Line 680  void substfp(VL vl,Obj p,PF u,PF f,Obj *pr)
                         substfv(vl,v,u,f,&p0);                          substfv(vl,v,u,f,&p0);
                         substfp(vl,(Obj)COEF(dc),u,f,&c);                          substfp(vl,(Obj)COEF(dc),u,f,&c);
                         for ( d = DEG(dc), dc = NEXT(dc); dc; d = DEG(dc), dc = NEXT(dc) ) {                          for ( d = DEG(dc), dc = NEXT(dc); dc; d = DEG(dc), dc = NEXT(dc) ) {
                                         subq(d,DEG(dc),(Q *)&t); pwrr(vl,p0,t,&s); mulr(vl,s,c,&m);                                          subq(d,DEG(dc),(Q *)&t);
                                           gen_pwrr(vl,p0,t,&s); mulr(vl,s,c,&m);
                                         substfp(vl,(Obj)COEF(dc),u,f,&t); addr(vl,m,t,&c);                                          substfp(vl,(Obj)COEF(dc),u,f,&t); addr(vl,m,t,&c);
                         }                          }
                         if ( d ) {                          if ( d ) {
                                 pwrr(vl,p0,(Obj)d,&t); mulr(vl,t,c,&m);                                  gen_pwrr(vl,p0,(Obj)d,&t); mulr(vl,t,c,&m);
                                 c = m;                                  c = m;
                         }                          }
                 }                  }

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.7

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