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

Diff for /OpenXM_contrib2/asir2000/engine/dalg.c between version 1.1 and 1.2

version 1.1, 2004/12/02 08:23:25 version 1.2, 2004/12/02 08:39:54
Line 1 
Line 1 
 /*  /*
  * $OpenXM$   * $OpenXM: OpenXM_contrib2/asir2000/engine/dalg.c,v 1.1 2004/12/02 08:23:25 noro Exp $
 */  */
   
 #include "ca.h"  #include "ca.h"
Line 26  typedef struct oDAlg {
Line 26  typedef struct oDAlg {
   
 #define N_DA 11  #define N_DA 11
 #define NEWDAlg(r) ((r)=(DAlg)MALLOC(sizeof(struct oDAlg)),OID(r)=O_N,NID(r)=N_DA)  #define NEWDAlg(r) ((r)=(DAlg)MALLOC(sizeof(struct oDAlg)),OID(r)=O_N,NID(r)=N_DA)
 #define MKDAlg(dp,dn,r) (NEWDAlg(r),(r)->nm = (dp),(r)->dn=(dn))  #define MKDAlg(dp,den,r) (NEWDAlg(r),(r)->nm = (dp),(r)->dn=(den))
   
 static NumberField current_numberfield;  static NumberField current_numberfield;
 extern struct order_spec *dp_current_spec;  extern struct order_spec *dp_current_spec;
   void simpdalg(DAlg da,DAlg *r);
   
 void setfield_dalg(NODE alist)  void setfield_dalg(NODE alist)
 {  {
Line 100  void algtodalg(Alg a,DAlg *r)
Line 101  void algtodalg(Alg a,DAlg *r)
         initd(nf->spec);          initd(nf->spec);
         ptod(ALG,nf->vl,p,&dp);          ptod(ALG,nf->vl,p,&dp);
         MKDAlg(dp,dn,da);          MKDAlg(dp,dn,da);
         *r = da;          simpdalg(da,r);
 }  }
   
 void dalgtoalg(DAlg da,Num *a)  void dalgtoalg(DAlg da,Alg *r)
 {  {
         if ( !current_numberfield )          NumberField nf;
           P p,p1;
           Q inv;
   
           if ( !(nf=current_numberfield) )
                 error("algtodalg : current_numberfield is not set");                  error("algtodalg : current_numberfield is not set");
           dtop(ALG,nf->vl,da->nm,&p);
           invq(da->dn,&inv);
           mulpq(p,(P)inv,&p1);
           MKAlg(p1,*r);
 }  }
   
 void simpdalg(DAlg da,DAlg *r)  void simpdalg(DAlg da,DAlg *r)
 {  {
         if ( !current_numberfield )          NumberField nf;
           DP nm;
           Q dn,dn1;
   
           if ( !(nf=current_numberfield) )
                 error("algtodalg : current_numberfield is not set");                  error("algtodalg : current_numberfield is not set");
           dp_true_nf(nf->ind,da->nm,nf->ps,1,&nm,&dn);
           mulq(da->dn,dn,&dn1);
           MKDAlg(nm,dn1,*r);
 }  }
   
 void adddalg(DAlg a,DAlg b,DAlg *c)  void adddalg(DAlg a,DAlg b,DAlg *c)
Line 127  void subdalg(DAlg a,DAlg b,DAlg *c)
Line 143  void subdalg(DAlg a,DAlg b,DAlg *c)
                 error("algtodalg : current_numberfield is not set");                  error("algtodalg : current_numberfield is not set");
 }  }
   
   void muldalg(DAlg a,DAlg b,DAlg *c)
   {
           if ( !current_numberfield )
                   error("algtodalg : current_numberfield is not set");
   }
   
   
 void divdalg(DAlg a,DAlg b,DAlg *c)  void divdalg(DAlg a,DAlg b,DAlg *c)
 {  {
         if ( !current_numberfield )          if ( !current_numberfield )
Line 151  void pwrdalg(DAlg a,Q b,DAlg *c)
Line 174  void pwrdalg(DAlg a,Q b,DAlg *c)
   
 int cmpgdalg(DAlg a,DAlg b)  int cmpgdalg(DAlg a,DAlg b)
 {  {
         if ( !current_numberfield )  
                 error("algtodalg : current_numberfield is not set");  
 }  }

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

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