Subversion Repositories wimsdev

Rev

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