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

Diff for /OpenXM_contrib2/asir2018/builtin/algnum.c between version 1.1 and 1.2

version 1.1, 2018/09/19 05:45:05 version 1.2, 2018/09/28 08:20:27
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: OpenXM_contrib2/asir2018/builtin/algnum.c,v 1.1 2018/09/19 05:45:05 noro Exp $
 */  */
 #include "ca.h"  #include "ca.h"
 #include "parse.h"  #include "parse.h"
Line 181  void Pdalgtoup(NODE arg,LIST *r)
Line 181  void Pdalgtoup(NODE arg,LIST *r)
   Z q;    Z q;
   
   pos = dalgtoup((DAlg)ARG0(arg),&up,&dn);    pos = dalgtoup((DAlg)ARG0(arg),&up,&dn);
   STOQ(pos,q);    STOZ(pos,q);
   b = mknode(3,up,dn,q);    b = mknode(3,up,dn,q);
   MKLIST(*r,b);    MKLIST(*r,b);
 }  }
Line 195  void Pget_field_defpoly(NODE arg,DAlg *r)
Line 195  void Pget_field_defpoly(NODE arg,DAlg *r)
   DP d;    DP d;
   
   nf = get_numberfield();    nf = get_numberfield();
   d = nf->ps[QTOS((Q)ARG0(arg))];    d = nf->ps[ZTOS((Q)ARG0(arg))];
   MKDAlg(d,ONE,*r);    MKDAlg(d,ONE,*r);
 }  }
   
Line 206  void Pget_field_generator(NODE arg,DAlg *r)
Line 206  void Pget_field_generator(NODE arg,DAlg *r)
   MP m;    MP m;
   DP d;    DP d;
   
   index = QTOS((Q)ARG0(arg));    index = ZTOS((Q)ARG0(arg));
   n = get_numberfield()->n;    n = get_numberfield()->n;
   NEWDL(dl,n);    NEWDL(dl,n);
   for ( i = 0; i < n; i++ ) dl->d[i] = 0;    for ( i = 0; i < n; i++ ) dl->d[i] = 0;
Line 506  Alg *rp;
Line 506  Alg *rp;
   if ( a && (OID(a) != O_N || NID(a) != N_Q || !INT(a)) )    if ( a && (OID(a) != O_N || NID(a) != N_Q || !INT(a)) )
     *rp = 0;      *rp = 0;
   else {    else {
     n = ACNT-QTOS(a)-1;      n = ACNT-ZTOS(a)-1;
     for ( vl = ALG; vl && n; vl = NEXT(vl), n-- );      for ( vl = ALG; vl && n; vl = NEXT(vl), n-- );
     if ( vl ) {      if ( vl ) {
       MKV(vl->v,x); MKAlg(x,*rp);        MKV(vl->v,x); MKAlg(x,*rp);
Line 529  Obj *rp;
Line 529  Obj *rp;
   if ( a && (OID(a) != O_N || NID(a) != N_Q || !INT(a)) )    if ( a && (OID(a) != O_N || NID(a) != N_Q || !INT(a)) )
     *rp = 0;      *rp = 0;
   else {    else {
     n = ACNT-QTOS(a)-1;      n = ACNT-ZTOS(a)-1;
     for ( vl = ALG; vl && n; vl = NEXT(vl), n-- );      for ( vl = ALG; vl && n; vl = NEXT(vl), n-- );
     if ( vl ) {      if ( vl ) {
       MKV(vl->v,x); MKAlg(x,b); algtorat((Num)b,rp);        MKV(vl->v,x); MKAlg(x,b); algtorat((Num)b,rp);
Line 657  void invalg_le(Alg a,LIST *r)
Line 657  void invalg_le(Alg a,LIST *r)
   
   /* setup */    /* setup */
   ptozp(ap,1,&c,&p);    ptozp(ap,1,&c,&p);
   STOQ(2,two); create_order_spec(0,(Obj)two,&spec); initd(spec);    STOZ(2,two); create_order_spec(0,(Obj)two,&spec); initd(spec);
   for ( n = 0, tvl = vl; tvl; tvl = NEXT(tvl), n++ );    for ( n = 0, tvl = vl; tvl; tvl = NEXT(tvl), n++ );
   ps = (DP *)ALLOCA(n*sizeof(DP));    ps = (DP *)ALLOCA(n*sizeof(DP));
   
Line 668  void invalg_le(Alg a,LIST *r)
Line 668  void invalg_le(Alg a,LIST *r)
   ptod(ALG,vl,p,&dp);    ptod(ALG,vl,p,&dp);
   /* index list */    /* index list */
   for ( b = 0, i = 0; i < n; i++ ) {    for ( b = 0, i = 0; i < n; i++ ) {
     STOQ(i,iq); MKNODE(b1,(pointer)iq,b); b = b1;      STOZ(i,iq); MKNODE(b1,(pointer)iq,b); b = b1;
   }    }
   /* simplification */    /* simplification */
   dp_true_nf(b,dp,ps,1,&nm,(P *)&dn);    dp_true_nf(b,dp,ps,1,&nm,(P *)&dn);
Line 707  void invalg_le(Alg a,LIST *r)
Line 707  void invalg_le(Alg a,LIST *r)
     MKNODE(b1,(pointer)h1,hist); hist = b1;      MKNODE(b1,(pointer)h1,hist); hist = b1;
   
     /* dn0 = LCM(dn0,h1->dn) */      /* dn0 = LCM(dn0,h1->dn) */
     gcdz(dn0,h1->dn,&ng); divz(dn0,ng,&nq);      gcdz(dn0,h1->dn,&ng); divsz(dn0,ng,&nq);
     mulz(nq,h1->dn,&nl); absz(nl,&dn0);      mulz(nq,h1->dn,&nl); absz(nl,&dn0);
   }    }
   /* create a matrix */    /* create a matrix */

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

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