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

Diff for /OpenXM_contrib2/asir2000/builtin/user.c between version 1.2 and 1.4

version 1.2, 2004/09/29 08:50:23 version 1.4, 2015/09/03 23:05:36
Line 1 
Line 1 
 /* $OpenXM: OpenXM_contrib2/asir2000/builtin/user.c,v 1.1 2002/08/14 03:51:38 noro Exp $ */  /* $OpenXM: OpenXM_contrib2/asir2000/builtin/user.c,v 1.3 2004/10/06 11:58:51 noro Exp $ */
   
 /* a sample file for adding builtin functions */  /* a sample file for adding builtin functions */
   
Line 8 
Line 8 
 void Ppartial_derivative();  void Ppartial_derivative();
 void partial_derivative(VL vl,P p,V v,P *r);  void partial_derivative(VL vl,P p,V v,P *r);
 void Pzadd(),Pzsub(),Pzmul();  void Pzadd(),Pzsub(),Pzmul();
   void Pcomp_f();
   
 struct ftab user_tab[] = {  struct ftab user_tab[] = {
 /*  /*
Line 16  struct ftab user_tab[] = {
Line 17  struct ftab user_tab[] = {
   {"zadd",Pzadd,2},    {"zadd",Pzadd,2},
   {"zsub",Pzsub,2},    {"zsub",Pzsub,2},
   {"zmul",Pzmul,2},    {"zmul",Pzmul,2},
     {"comp_f",Pcomp_f,2},
   {0,0,0},    {0,0,0},
 };  };
   
 pointer qtoz(Q);  /* compare two [[F,M],...] */
 Q ztoq(pointer);  
 pointer addz(pointer,pointer), subz(pointer,pointer), mulz(pointer,pointer);  void Pcomp_f(NODE arg,Q *rp)
   {
     NODE l1,l2,e1,e2;
     int m1,m2,r;
   
     l1 = BDY((LIST)ARG0(arg));
     l2 = BDY((LIST)ARG1(arg));
     for ( ; l1 && l2; l1 = NEXT(l1), l2 = NEXT(l2) ) {
       e1 = BDY((LIST)BDY(l1));
       e2 = BDY((LIST)BDY(l2));
       r = compp(CO,(P)ARG0(e1),(P)ARG0(e2));
       if ( r ) { STOQ(r,*rp); return; }
       m1 = QTOS((Q)ARG1(e1));
       m2 = QTOS((Q)ARG1(e2));
           r = m1>m2?1:(m1<m2?-1:0);
           if ( r ) { STOQ(r,*rp); return; }
     }
     r = l1?1:(l2?-1:0);
     STOQ(r,*rp);
   }
   
 void Pzadd(NODE arg,Q *rp)  void Pzadd(NODE arg,Q *rp)
 {  {
         pointer z0,z1,z2;          Z z0,z1,z2;
   
         z0 = qtoz((Q)ARG0(arg));          z0 = qtoz((Q)ARG0(arg));
         z1 = qtoz((Q)ARG1(arg));          z1 = qtoz((Q)ARG1(arg));
Line 35  void Pzadd(NODE arg,Q *rp)
Line 57  void Pzadd(NODE arg,Q *rp)
   
 void Pzsub(NODE arg,Q *rp)  void Pzsub(NODE arg,Q *rp)
 {  {
         pointer z0,z1,z2;          Z z0,z1,z2;
   
         z0 = qtoz((Q)ARG0(arg));          z0 = qtoz((Q)ARG0(arg));
         z1 = qtoz((Q)ARG1(arg));          z1 = qtoz((Q)ARG1(arg));
Line 46  void Pzsub(NODE arg,Q *rp)
Line 68  void Pzsub(NODE arg,Q *rp)
   
 void Pzmul(NODE arg,Q *rp)  void Pzmul(NODE arg,Q *rp)
 {  {
         pointer z0,z1,z2;          Z z0,z1,z2;
   
         z0 = qtoz((Q)ARG0(arg));          z0 = qtoz((Q)ARG0(arg));
         z1 = qtoz((Q)ARG1(arg));          z1 = qtoz((Q)ARG1(arg));

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.4

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