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=[0.2,0.4,0.7],10,5,7
14
!exit
15
 
16
:proc
17
 
18
!distribute  item $wims_read_parm into slib_data,slib_N,slib_K,slib_n
19
 
20
slib_out=
21
slib_data=!declosing $slib_data
22
 
23
slib_cnt= !itemcnt $slib_data
24
slib_b= $[binomial($slib_N,$slib_n)^(-1)]
25
slib_min= $[max(0,$slib_n+$slib_K-$slib_N)]
26
slib_max= $[min($slib_n,$slib_K)]
27
!if $slib_max<$slib_min
28
	slib_out=0
29
	!exit
30
!endif
31
slib_out=
32
slib_PP=!values binomial($slib_K,x)*binomial($slib_N-$slib_K,$slib_n-x)*$slib_b for x = $slib_min to $slib_max
33
!for slib_i in $slib_data
7692 bpr 34
  !if $slib_i =1
20 reyssat 35
   slib_out=!append item  $[$slib_max -$slib_min+1] to $slib_out
36
  !else
13586 bpr 37
	  slib_P=0
38
	  !for slib_k= 1 to $[$slib_max -$slib_min+1]
39
		  slib_a=!item $slib_k of $slib_PP
40
		  slib_P=$[$slib_P+$slib_a]
41
		  !if $slib_P>= $slib_i
42
		  	slib_out=!append item  $[$slib_k-1] to $slib_out
43
		  	!break
44
		  !endif
45
	  !next slib_k
46
  !endif
20 reyssat 47
!next slib_i
48
 
49
slib_out=!trim $slib_out