[BACK]Return to r-fd.rr CVS log [TXT][DIR] Up to [local] / OpenXM / src / asir-port / cgi

Diff for /OpenXM/src/asir-port/cgi/r-fd.rr between version 1.8 and 1.9

version 1.8, 2015/02/28 11:39:13 version 1.9, 2015/03/01 04:23:15
Line 1 
Line 1 
 /* $OpenXM: OpenXM/src/asir-port/cgi/r-fd.rr,v 1.7 2015/02/25 04:47:50 takayama Exp $ */  /* $OpenXM: OpenXM/src/asir-port/cgi/r-fd.rr,v 1.8 2015/02/28 11:39:13 takayama Exp $ */
 load("tk_fd.rr")$  load("tk_fd.rr")$
 import("tk_r.rr")$  import("tk_r.rr")$
 import("oh_number.rr")$  import("oh_number.rr")$
   
 /* r_d2rat(0.3)  --> precision loss in truncation if not ctrl("bigfloat",1) */  /* r_d2rat(0.3)  --> precision loss in truncation if not ctrl("bigfloat",1) */
 ctrl("bigfloat",1)$  ctrl("bigfloat",1)$
 def r_d2rat(Y) {  def r_d2rat(Y,Prec) {
   if ((type(Y) ==4)||(type(Y)==5)||(type(Y)==6)) return map(r_d2rat,Y);    if ((type(Y) ==4)||(type(Y)==5)||(type(Y)==6)) return map(r_d2rat,Y,Prec);
   if ((type(Y)  == 1) && (ntype(Y) >= 1)) {    if ((type(Y)  == 1) && (ntype(Y) >= 1)) {
     S = rtostr(Y);  Y = "eval(("+S+")*exp(0));";      S = rtostr(Y);  Y = "eval(("+S+")*exp(0));";
     /* print(Y); */      /* print(Y); */
     Y = eval_str(Y);      Y = eval_str(Y);
     /* printf("Y=%a\n",Y); */      /* printf("Y=%a\n",Y); */
     /* return oh_number.rats(Y); */      /* return oh_number.rats(Y); */
     return rats2(Y);  /* temporary  */      return rats2(Y | prec=Prec);  /* temporary  */
   }else return Y;    }else return Y;
 }  }
 def r_ahvec(A,B,C,Y) {  def r_ahvec(A,B,C,Y) {
   Y = r_d2rat(Y);    if (type(getopt(prec))<0) Prec=20;
     else Prec=getopt(prec);
     Y = r_d2rat(Y,Prec);
   Ans=a_ahvec(A,B,C,Y);    Ans=a_ahvec(A,B,C,Y);
   /*  Fans=map(rtostr,map(tk_fd.tk_number_rattofloat,Ans)); */    /*  Fans=map(rtostr,map(tk_fd.tk_number_rattofloat,Ans)); */
   Fans=map(deval,Ans);    Fans=map(deval,Ans);
Line 39  def a_ahvec(A,B,C,Y) { 
Line 41  def a_ahvec(A,B,C,Y) { 
   
 /* temporary */  /* temporary */
 def rats2(X) {  def rats2(X) {
     if (type(getopt(prec))<0) Prec=20;
     else Prec=getopt(prec);
   if (X == 0) return 0;    if (X == 0) return 0;
   Sign=1;    Sign=1;
   if (X <0) {Sign=-1  ; X = -X;}    if (X <0) {Sign=-1  ; X = -X;}
   Digit = number_floor(eval(log(X)/log(10)));    Digit = number_floor(eval(log(X)/log(10)));
   Num = number_floor((X/(10^Digit))*10^20);    Num = number_floor((X/(10^Digit))*10^Prec);
   return Sign*(Num/(10^20))*(10^Digit);    return Sign*(Num/(10^Prec))*(10^Digit);
 }  }
   
 def checkrats2() {  def checkrats2() {
Line 65  def a_expect(A,B,C,Y) {
Line 69  def a_expect(A,B,C,Y) {
   return(E);    return(E);
 }  }
 def r_expect(A,B,C,Y) {  def r_expect(A,B,C,Y) {
   Y = r_d2rat(Y);    if (type(getopt(prec))<0) Prec=20;
     else Prec=getopt(prec);
   
     Y = r_d2rat(Y,Prec);
   E=a_expect(A,B,C,Y);    E=a_expect(A,B,C,Y);
   Fans=map_deval(E);    Fans=map_deval(E);
   Fans = tk_r.asir2r_c(Fans);    Fans = tk_r.asir2r_c(Fans);
Line 73  def r_expect(A,B,C,Y) {
Line 80  def r_expect(A,B,C,Y) {
 }  }
   
 def r_ahmat(A,B,C,Y) {  def r_ahmat(A,B,C,Y) {
   Y = r_d2rat(Y);    if (type(getopt(prec))<0) Prec=20;
     else Prec=getopt(prec);
     Y = r_d2rat(Y,Prec);
   Ans=a_ahmat(A,B,C,Y);    Ans=a_ahmat(A,B,C,Y);
   Fans=map_deval(Ans);    Fans=map_deval(Ans);
   Fans = tk_r.asir2r_c(Fans);    Fans = tk_r.asir2r_c(Fans);
Line 85  def a_ahmat(A,B,C,Y) { 
Line 94  def a_ahmat(A,B,C,Y) { 
 }  }
   
 def r_log_ahmat(A,B,C,Y) {  def r_log_ahmat(A,B,C,Y) {
   Y = r_d2rat(Y);    if (type(getopt(prec))<0) Prec=20;
     else Prec=getopt(prec);
     Y = r_d2rat(Y,Prec);
   Ans=a_log_ahmat(A,B,C,Y);    Ans=a_log_ahmat(A,B,C,Y);
   Fans=map_deval(Ans);    Fans=map_deval(Ans);
   Fans = tk_r.asir2r_c(Fans);    Fans = tk_r.asir2r_c(Fans);

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

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