/* $OpenXM: OpenXM/src/asir-port/cgi/r-fd.rr,v 1.10 2015/03/11 07:28:45 takayama Exp $ */ load("tk_fd.rr")$ import("tk_r.rr")$ import("oh_number.rr")$ import("test_hook.rr")$ /* To put overriden functions */ /* r_d2rat(0.3) --> precision loss in truncation if not ctrl("bigfloat",1) */ ctrl("bigfloat",1)$ def r_d2rat(Y,Prec) { if ((type(Y) ==4)||(type(Y)==5)||(type(Y)==6)) return map(r_d2rat,Y,Prec); if ((type(Y) == 1) && (ntype(Y) >= 1)) { S = rtostr(Y); Y = "eval(("+S+")*exp(0));"; /* print(Y); */ Y = eval_str(Y); /* printf("Y=%a\n",Y); */ /* return oh_number.rats(Y); */ return rats2(Y | prec=Prec); /* temporary */ }else return Y; } def r_ahvec(A,B,C,Y) { if (type(getopt(prec))<0) Prec=20; else Prec=getopt(prec); Y = r_d2rat(Y,Prec); Ans=a_ahvec(A,B,C,Y); /* Fans=map(rtostr,map(tk_fd.tk_number_rattofloat,Ans)); */ Fans=map(deval,Ans); Fans = tk_r.asir2r_c(Fans); return Fans; } def a_ahvec(A,B,C,Y) { R=tk_fd.ahvec_abc(A,B,C,Y|all=1); Gamma=R[1]; Der=R[0]; Z=R[2]*Gamma; Der2 = newvect(length(Der)); for (I=0; I 0.0000001) { printf("error: X = %a, Y=%a\n",X,Y); } } } def a_expect(A,B,C,Y) { E=tk_fd.expectation_abc(A,B,C,Y); return(E); } def r_expect(A,B,C,Y) { if (type(getopt(prec))<0) Prec=20; else Prec=getopt(prec); Y = r_d2rat(Y,Prec); E=a_expect(A,B,C,Y); Fans=map_deval(E); Fans = tk_r.asir2r_c(Fans); return Fans; } def r_ahmat(A,B,C,Y) { if (type(getopt(prec))<0) Prec=20; else Prec=getopt(prec); Y = r_d2rat(Y,Prec); Ans=a_ahmat(A,B,C,Y); Fans=map_deval(Ans); Fans = tk_r.asir2r_c(Fans); return Fans; } def a_ahmat(A,B,C,Y) { return(tk_fd.ahmat_abc(A,B,C,Y)); } def r_log_ahmat(A,B,C,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); Fans=map_deval(Ans); Fans = tk_r.asir2r_c(Fans); return Fans; } def a_log_ahmat(A,B,C,Y) { Ans=tk_fd.log_ahmat_abc(A,B,C,Y); return Ans; } def map_deval(L) { if (type(L) >=4) return(map(map_deval,L)); return(deval(L)); } end$