Subversion Repositories wimsdev

Rev

Rev 7692 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
20 reyssat 1
!if $wims_read_parm!=slib_header
13586 bpr 2
  !goto proc
20 reyssat 3
!endif
4161 bpr 4
 
20 reyssat 5
slib_parms=4\
6
,[data]\
7
,N\
8
,K\
9
,n
10
 
4330 bpr 11
slib_author=Sophie, Lemaire; Bernadette, Perrin-Riou
4161 bpr 12
 
20 reyssat 13
slib_example=[2,4,7],10,5,7
3265 bpr 14
slib_require=pari
20 reyssat 15
!exit
16
 
17
:proc
18
 
19
slib_out=$empty
4330 bpr 20
!distribute item $wims_read_parm into slib_data,slib_N,slib_K,slib_n
20 reyssat 21
 
22
slib_b= $[binomial($slib_N,$slib_n)^(-1)]
23
slib_min= $[max(0,$slib_n+$slib_K-$slib_N)]
24
slib_max= $[min($slib_n,$slib_N)]
25
!if $slib_max<$slib_min
26
	slib_out=0
27
	!exit
28
!endif
29
 
30
slib_data=!declosing $slib_data
31
 
32
slib_cnt=!itemcnt $slib_data
33
slib_minmax=!sort numeric item $slib_data
34
slib_mind=!item 1 of $slib_minmax
35
slib_maxd= !item -1 of $slib_minmax
36
 
37
!if $slib_maxd <$slib_min
38
	slib_out=!values 0 for x=1 to $slib_cnt
39
	!exit
40
!endif
41
!if $slib_mind >=$slib_max
42
	slib_out=!values 1 for x=1 to $slib_cnt
43
	!exit
44
!endif
45
 
7692 bpr 46
slib_valeur=!exec pari vector(ceil($slib_maxd)-$slib_min+1,x,1.*binomial($slib_K,x+$slib_min-1)*binomial($slib_N-$slib_K,$slib_n-x-$slib_min+1)*$slib_b)
20 reyssat 47
 
48
!for slib_x in $slib_data
49
	!if $slib_x<$slib_min
50
		slib_out=!append item 0 to $slib_out
51
	!endif
52
 
53
	!if $slib_x>$slib_max
54
		slib_out=!append item 1 to $slib_out
55
	!endif
56
	!if $slib_x<=$slib_max and $slib_x>=$slib_min
57
		slib_outx=!item 1 to $[$slib_x-$slib_min+1] of $slib_valeur
58
		slib_outx=!replace internal , by + in $slib_outx
59
		slib_out=!append item $[$slib_outx] to $slib_out
60
	!endif
61
!next slib_x
62
 
63
 
64
slib_out=!trim $slib_out