Rev 3265 | Rev 4158 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
1941 | bpr | 1 | !if $wims_read_parm!=slib_header |
2 | !goto proc |
||
3 | !endif |
||
4121 | bpr | 4 | |
5 | !!slib_title=Calculate an approximation interval for a given real |
||
1941 | bpr | 6 | slib_author=Bernadette Perrin-Riou |
7 | slib_example=234765\ |
||
8 | 0.006543\ |
||
9 | 45.987543,5,10 |
||
3265 | bpr | 10 | slib_require=pari |
4121 | bpr | 11 | |
12 | !reset slib_lang_exists_tmp |
||
13 | !readproc help/$lang/slib/text/approximation |
||
14 | !if $slib_lang_exists_tmp!=yes |
||
15 | !readproc help/en/slib/text/approximation |
||
16 | !endif |
||
1941 | bpr | 17 | !exit |
18 | |||
4121 | bpr | 19 | |
20 | !exit |
||
21 | |||
1941 | bpr | 22 | :proc |
23 | !distribute items $wims_read_parm into slib_r,slib_app,slib_tol |
||
24 | !default slib_app=3 |
||
25 | !default slib_tol=1 |
||
26 | slib_r_approx=!exec pari (f(r,n)= l=if(r != 0, floor(log(abs(r))/log(10)),1) ; s =round(10^(-l+n-1)*r) ; [l,s]) ; \ |
||
27 | f($slib_r,$slib_app) |
||
28 | slib_r_app=$[$(slib_r_approx[2])*10^(-$slib_app+1+$(slib_r_approx[1]))] |
||
29 | slib_out=!exec pari slib_err=$slib_tol*10^(-$slib_app+1+$(slib_r_approx[1])) ; 1.*[$slib_r_app-slib_err,$slib_r_app+slib_err] |
||
30 | |||
31 | slib_out=$slib_out,$slib_r_app |