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

Diff for /OpenXM_contrib2/asir2000/engine/P.c between version 1.7 and 1.9

version 1.7, 2003/06/24 09:49:36 version 1.9, 2004/03/11 09:52:56
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/P.c,v 1.6 2003/06/19 07:08:19 noro Exp $   * $OpenXM: OpenXM_contrib2/asir2000/engine/P.c,v 1.8 2003/12/23 10:39:57 ohara Exp $
 */  */
 #ifndef FBASE  #ifndef FBASE
 #define FBASE  #define FBASE
Line 460  P *r;
Line 460  P *r;
         }          }
 }  }
   
   /* Euler derivation */
   void ediffp(vl,p,v,r)
   VL vl;
   P p;
   V v;
   P *r;
   {
           P t;
           DCP dc,dcr,dcr0;
   
           if ( !p || NUM(p) )
                   *r = 0;
           else {
                   if ( v == VR(p) ) {
                           for ( dc = DC(p), dcr0 = 0;
                                     dc && DEG(dc); dc = NEXT(dc) ) {
                                   MULPQ(COEF(dc),(P)DEG(dc),&t);
                                   if ( t ) {
                                           NEXTDC(dcr0,dcr);
                                           DEG(dcr) = DEG(dc);
                                           COEF(dcr) = t;
                                   }
                           }
                           if ( !dcr0 )
                                   *r = 0;
                           else {
                                   NEXT(dcr) = 0; MKP(v,dcr0,*r);
                           }
                   } else {
                           for ( dc = DC(p), dcr0 = 0; dc; dc = NEXT(dc) ) {
                                   ediffp(vl,COEF(dc),v,&t);
                                   if ( t ) {
                                           NEXTDC(dcr0,dcr); DEG(dcr) = DEG(dc); COEF(dcr) = t;
                                   }
                           }
                           if ( !dcr0 )
                                   *r = 0;
                           else {
                                   NEXT(dcr) = 0; MKP(VR(p),dcr0,*r);
                           }
                   }
           }
   }
   
 void coefp(p,d,pr)  void coefp(p,d,pr)
 P p;  P p;
 int d;  int d;
Line 528  P p1,p2;
Line 572  P p1,p2;
                 for ( ; v1 != VR(vl) && v2 != VR(vl); vl = NEXT(vl) );                  for ( ; v1 != VR(vl) && v2 != VR(vl); vl = NEXT(vl) );
                 return v1 == VR(vl) ? 1 : -1;                  return v1 == VR(vl) ? 1 : -1;
         }          }
   }
   
   int equalp(vl,p1,p2)
   VL vl;
   P p1,p2;
   {
           DCP dc1,dc2;
           V v1,v2;
   
           if ( !p1 ) {
                   if ( !p2 ) return 1;
                   else return 0;
           }
           /* p1 != 0 */
           if ( !p2 ) return 0;
   
           /* p1 != 0, p2 != 0 */
           if ( NUM(p1) ) {
                   if ( !NUM(p2) ) return 0;
                   /* p1 and p2 are numbers */
                   if ( NID((Num)p1) != NID((Num)p2) ) return 0;
                   if ( !(*cmpnumt[NID(p1),NID(p1)])(p1,p2) ) return 1;
                   return 0;
           }
           if ( VR(p1) != VR(p2) ) return 0;
           for ( dc1 = DC(p1), dc2 = DC(p2);
                   dc1 && dc2; dc1 = NEXT(dc1), dc2 = NEXT(dc2) ) {
                   if ( cmpq(DEG(dc1),DEG(dc2)) ) return 0;
                   else if ( !equalp(vl,COEF(dc1),COEF(dc2)) ) return 0;
           }
           if ( dc1 || dc2 ) return 0;
           else return 1;
 }  }
   
 void csump(vl,p,c)  void csump(vl,p,c)

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

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