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

Diff for /OpenXM_contrib2/asir2000/engine/E.c between version 1.3 and 1.6

version 1.3, 2000/08/22 05:04:03 version 1.6, 2001/05/02 09:03:53
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/engine/E.c,v 1.2 2000/08/21 08:31:24 noro Exp $   * $OpenXM: OpenXM_contrib2/asir2000/engine/E.c,v 1.5 2001/04/20 03:10:36 noro Exp $
 */  */
 #include "ca.h"  #include "ca.h"
   
Line 516  Q n,m,m2,*nr;
Line 516  Q n,m,m2,*nr;
         }          }
 }  }
   
   /*
           extract d-homogeneous part with respect to vl - {v}
   */
   
   void exthpc_generic(vl,p,d,v,pr)
   VL vl;
   P p;
   int d;
   V v;
   P *pr;
   {
           P w,x,t,t1,a,xd;
           V v0;
           DCP dc;
   
           if ( d < 0 || !p )
                   *pr = 0;
           else if ( NUM(p) )
                   if ( d == 0 )
                           *pr = p;
                   else
                           *pr = 0;
           else if ( v == VR(p) )
                   exthpc(vl,v,p,d,pr);
           else {
                   v0 = VR(p);
                   for ( MKV(v0,x), dc = DC(p), w = 0; dc; dc = NEXT(dc) ) {
                           exthpc_generic(vl,COEF(dc),d-QTOS(DEG(dc)),v,&t);
                           pwrp(vl,x,DEG(dc),&xd);
                           mulp(vl,xd,t,&t1); addp(vl,w,t1,&a); w = a;
                   }
                   *pr = w;
           }
   }
   
 void exthp(vl,p,d,pr)  void exthp(vl,p,d,pr)
 VL vl;  VL vl;
 P p;  P p;
Line 599  int getdeg(v,p)
Line 634  int getdeg(v,p)
 V v;  V v;
 P p;  P p;
 {  {
         int m;          int m,t;
         DCP dc;          DCP dc;
   
         if ( !p || NUM(p) )          if ( !p || NUM(p) )
Line 607  P p;
Line 642  P p;
         else if ( v == VR(p) )          else if ( v == VR(p) )
                 return ( deg(v,p) );                  return ( deg(v,p) );
         else {          else {
                 for ( dc = DC(p), m = 0; dc; dc = NEXT(dc) )                  for ( dc = DC(p), m = 0; dc; dc = NEXT(dc) ) {
                         m = MAX(m,getdeg(v,COEF(dc)));                          t = getdeg(v,COEF(dc));
                           m = MAX(m,t);
                   }
                 return ( m );                  return ( m );
         }          }
 }  }
Line 770  int dbound(v,f)
Line 807  int dbound(v,f)
 V v;  V v;
 P f;  P f;
 {  {
         int m;          int m,t;
         DCP dc;          DCP dc;
   
         if ( !f )          if ( !f )
Line 778  P f;
Line 815  P f;
         else if ( v != VR(f) )          else if ( v != VR(f) )
                 return homdeg(f);                  return homdeg(f);
         else {          else {
                 for ( dc = DC(f), m = 0; dc; dc = NEXT(dc) )                  for ( dc = DC(f), m = 0; dc; dc = NEXT(dc) ) {
                         m = MAX(m,homdeg(COEF(dc)));                          t = homdeg(COEF(dc));
                           m = MAX(m,t);
                   }
                 return ( m );                  return ( m );
         }          }
 }  }
Line 787  P f;
Line 826  P f;
 int homdeg(f)  int homdeg(f)
 P f;  P f;
 {  {
         int m;          int m,t;
         DCP dc;          DCP dc;
   
         if ( !f )          if ( !f )
Line 795  P f;
Line 834  P f;
         else if ( NUM(f) )          else if ( NUM(f) )
                 return( 0 );                  return( 0 );
         else {          else {
                 for ( dc = DC(f), m = 0; dc; dc = NEXT(dc) )                  for ( dc = DC(f), m = 0; dc; dc = NEXT(dc) ) {
                         m = MAX(m,QTOS(DEG(dc))+homdeg(COEF(dc)));                          t = QTOS(DEG(dc))+homdeg(COEF(dc));
                           m = MAX(m,t);
                   }
                 return ( m );                  return ( m );
         }          }
 }  }
Line 804  P f;
Line 845  P f;
 int minhomdeg(f)  int minhomdeg(f)
 P f;  P f;
 {  {
         int m;          int m,t;
         DCP dc;          DCP dc;
   
         if ( !f )          if ( !f )
Line 812  P f;
Line 853  P f;
         else if ( NUM(f) )          else if ( NUM(f) )
                 return( 0 );                  return( 0 );
         else {          else {
                 for ( dc = DC(f), m = homdeg(f); dc; dc = NEXT(dc) )                  for ( dc = DC(f), m = homdeg(f); dc; dc = NEXT(dc) ) {
                         m = MIN(m,QTOS(DEG(dc))+minhomdeg(COEF(dc)));                          t = QTOS(DEG(dc))+minhomdeg(COEF(dc));
                           m = MIN(m,t);
                   }
                 return ( m );                  return ( m );
         }          }
 }  }

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

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