Subversion Repositories wimsdev

Rev

Rev 3265 | Rev 4330 | 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
4161 bpr 4
 
20 reyssat 5
slib_parms=4\
6
,[data]\
7
,N\
8
,K\
9
,n
10
 
11
slib_author=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
20
!distribute  item $wims_read_parm into slib_data,slib_N,slib_K,slib_n
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
 
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) 
47
 
48
 
49
!for slib_x in $slib_data
50
	!if $slib_x<$slib_min
51
		slib_out=!append item 0 to $slib_out
52
	!endif
53
 
54
	!if $slib_x>$slib_max
55
		slib_out=!append item 1 to $slib_out
56
	!endif
57
	!if $slib_x<=$slib_max and $slib_x>=$slib_min
58
		slib_outx=!item 1 to $[$slib_x-$slib_min+1] of $slib_valeur
59
		slib_outx=!replace internal , by + in $slib_outx
60
		slib_out=!append item $[$slib_outx] to $slib_out
61
	!endif
62
!next slib_x
63
 
64
 
65
slib_out=!trim $slib_out