Subversion Repositories wimsdev

Rev

Rev 20 | Rev 4161 | 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=Generation of a discrete law with positive coefficients
5
slib_parms=2\
6
  2,m\
7
  2*m,N\
8
  R, K
9
 
10
slib_author=S. Lemaire and Bernadette Perrin-Riou
11
slib_out=random  data of m>=2 positive  real numbers  p_1,p_2,..p_m of
12
sum 1 such that p_i*N are integers, (N>m). Outputs\
13
are real (K=R) or rational (K=Q)
14
slib_example= 5, 100\
15
7,10,Q
3265 bpr 16
slib_require=pari
20 reyssat 17
!exit
18
 
19
:proc
20
!distribute item $wims_read_parm into slib_mm,slib_NN,slib_K
21
 
22
!default slib_mm=2
23
!default slib_NN=$[2*$slib_mm]
24
!default slib_K= R
25
 
26
!if $slib_mm = 1
27
 slib_out =1
28
!else
29
 slib_cc = !values 1/$slib_mm for x = 1 to $[$slib_mm-1]
30
 
31
 !readproc slib/stat/multinomial 1, $[$slib_NN-$slib_mm], $slib_cc
32
 slib_vv= $slib_out
33
 
34
 !if $slib_K issametext Q
35
  slib_out=!exec pari slib_a=Vec([$slib_vv]);vector($slib_mm, x,(slib_a[x]+1)/$slib_NN) 
36
 !else
37
  slib_out=!values (x+1)/$slib_NN for x in $slib_vv
38
 !endif 
39
!endif
40
slib_out =!trim $slib_out