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 |