[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.7

version 1.3, 2000/08/22 05:04:03 version 1.7, 2001/06/07 04:54:40
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.6 2001/05/02 09:03:53 noro Exp $
 */  */
 #include "ca.h"  #include "ca.h"
   
Line 294  Q *qp;
Line 294  Q *qp;
         wm = W_UMALLOC(m+n);          wm = W_UMALLOC(m+n);
   
         for ( q = ONE, t = 0, c = 0, index = 0; ; ) {          for ( q = ONE, t = 0, c = 0, index = 0; ; ) {
                 mod = lprime[index++];                  mod = get_lprime(index++);
                 if ( !mod )  
                         error("henzq1 : lprime[] exhausted.");  
                 if ( !rem(NM((Q)LC(g)),mod) || !rem(NM((Q)LC(h)),mod) )                  if ( !rem(NM((Q)LC(g)),mod) || !rem(NM((Q)LC(h)),mod) )
                         continue;                          continue;
                 ptomp(mod,g,&tg); ptomp(mod,h,&th);                  ptomp(mod,g,&tg); ptomp(mod,h,&th);
Line 342  Q *qp;
Line 340  Q *qp;
                 mulp(CO,gc0,(P)q,&c); gc0 = c; mulp(CO,hc0,(P)q,&c); hc0 = c;                  mulp(CO,gc0,(P)q,&c); gc0 = c; mulp(CO,hc0,(P)q,&c); hc0 = c;
         }          }
         for ( index = 0; ; ) {          for ( index = 0; ; ) {
                 mod = lprime[index++];                  mod = get_lprime(index++);
                 if ( !mod )  
                         error("henzq1 : lprime[] exhausted.");  
                 if ( !rem(NM((Q)zzz),mod) ||                  if ( !rem(NM((Q)zzz),mod) ||
                         !rem(NM((Q)LC(g)),mod) ||                          !rem(NM((Q)LC(g)),mod) ||
                         !rem(NM((Q)LC(h)),mod) )                          !rem(NM((Q)LC(h)),mod) )
Line 516  Q n,m,m2,*nr;
Line 512  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 630  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 638  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 803  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 811  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 822  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 830  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 841  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 849  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.7

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