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 |