Rev 20 | Rev 4158 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
20 | reyssat | 1 | !if $wims_read_parm!=slib_header |
2 | !goto proc |
||
3 | !endif |
||
4 | slib_title=Range |
||
5 | slib_parms=1\ |
||
6 | ,x1,y1,x2,y2,...list of points |
||
7 | slib_author=Bernadette PERRIN-RIOU |
||
8 | slib_out= reasonable range A,B,C,D such that all points\ |
||
9 | of the list are in the range [A,B] times [C,D] with B - A = D - C |
||
10 | slib_comment= |
||
11 | slib_example= 1,2,0,2 |
||
3265 | bpr | 12 | slib_require=pari |
20 | reyssat | 13 | !exit |
14 | |||
15 | :proc |
||
16 | slib_out= |
||
17 | |||
18 | slib_liste=$wims_read_parm |
||
19 | |||
20 | slib_N = !itemcnt $slib_liste |
||
21 | slib_Y =!values 2*x for x = 1 to $[$slib_N/2] |
||
22 | slib_X =!values 2*x-1 for x = 1 to $[$slib_N/2] |
||
23 | |||
24 | slib_listeX = $(slib_liste[$slib_X]) |
||
25 | slib_listeY = $(slib_liste[$slib_Y]) |
||
26 | slib_u = !sort numeric items $slib_listeX |
||
27 | slib_rangex1 = $[$(slib_u[1])] |
||
28 | slib_rangex2 = $[$(slib_u[-1])] |
||
29 | slib_u = !sort numeric items $slib_listeY |
||
30 | slib_rangey1 = $[$(slib_u[1])] |
||
31 | slib_rangey2 = $[$(slib_u[-1])] |
||
32 | slib_dif= !exec pari max($slib_rangex2-($slib_rangex1), $slib_rangey2-($slib_rangey1))/2 |
||
33 | slib_xrange = $[($slib_rangex1+ $slib_rangex2)/2] |
||
34 | slib_rangex2 = $[$slib_xrange + $slib_dif] |
||
35 | slib_rangex1 = $[$slib_xrange - $slib_dif] |
||
36 | slib_yrange = $[($slib_rangey1+ $slib_rangey2)/2] |
||
37 | slib_rangey2 = $[$slib_yrange + $slib_dif] |
||
38 | slib_rangey1 = $[$slib_yrange - $slib_dif] |
||
39 | |||
40 | slib_out = $slib_rangex1,$slib_rangex2,$slib_rangey1,$slib_rangey2 |