Subversion Repositories wimsdev

Rev

Rev 3265 | 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 nonnegative 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 nonnegative 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,10\
15
7,10,Q
3265 bpr 16
slib_require=pari
3307 bpr 17
!exit
20 reyssat 18
:proc
19
!distribute item $wims_read_parm into slib_mm,slib_NN,slib_K
20
 
21
!default slib_mm=2
22
!default slib_NN=$[2*$slib_mm]
23
!default slib_K= R
24
 
25
!if $slib_mm = 1
26
 slib_out = 1
27
!else
28
 slib_cc = !values 1/$slib_mm for x = 1 to $[$slib_mm-1]
29
 
30
 !readproc slib/stat/multinomial 1, $[$slib_NN], $slib_cc
31
 slib_vv= $slib_out
32
 
33
 !if $slib_K issametext Q
34
  slib_out=!exec pari slib_a=Vec([$slib_vv]);vector($slib_mm, x,slib_a[x]/$slib_NN) 
35
 !else
36
  slib_out=!values x/$slib_NN for x in $slib_vv
37
 !endif 
38
!endif
39
 
40
 
41
slib_out =!trim $slib_out