Rev 8775 | 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 |
4 | |||
4161 | bpr | 5 | |
20 | reyssat | 6 | slib_parms=3\ |
7 | ,m\ |
||
8 | 0,mu\ |
||
9 | 1,sigma |
||
10 | |||
4330 | bpr | 11 | slib_author=Adeline, Grelot; Bernadette, PERRIN-RIOU |
4161 | bpr | 12 | |
4482 | bpr | 13 | slib_example=5,0,2 |
20 | reyssat | 14 | !exit |
15 | |||
16 | :proc |
||
17 | !distribute item $wims_read_parm into slib_m,slib_mu,slib_sigma |
||
18 | !default slib_mu=0 |
||
19 | !default slib_sigma=1 |
||
20 | |||
8775 | bpr | 21 | slib_m2= $[floor(($slib_m)/2)] |
20 | reyssat | 22 | slib_U1=!random 10^-20,1 repeat $[$slib_m2+1] |
23 | slib_U2=!random 0,1 repeat $[$slib_m2+1] |
||
24 | |||
25 | slib_w=!values sqrt(-2*log(x)) for x in $slib_U1 |
||
26 | slib_w1=!values cos(2*Pi*x) for x in $slib_U2 |
||
27 | slib_w2=!values sin(2*Pi*x) for x in $slib_U2 |
||
28 | |||
29 | slib_V=$empty |
||
30 | !for slib_i=1 to $[$slib_m2 +1] |
||
13586 | bpr | 31 | slib_v=!item $slib_i of $slib_w |
32 | slib_v1=!item $slib_i of $slib_w1 |
||
33 | slib_v2=!item $slib_i of $slib_w2 |
||
34 | slib_v1=$[$slib_sigma*$slib_v1*$slib_v+$slib_mu] |
||
35 | slib_v2=$[$slib_sigma*$slib_v2*$slib_v+$slib_mu] |
||
20 | reyssat | 36 | |
13586 | bpr | 37 | !if $slib_i<=$slib_m2 |
38 | slib_V=!append item $slib_v1 to $slib_V |
||
39 | slib_V=!append item $slib_v2 to $slib_V |
||
40 | !endif |
||
41 | !if $slib_i>$slib_m2 and $[2*$slib_m2]!=$slib_m |
||
42 | slib_V=!append item $slib_v1 to $slib_V |
||
43 | !endif |
||
20 | reyssat | 44 | !next slib_i |
45 | |||
7692 | bpr | 46 | !if $slib_m >1 |
13586 | bpr | 47 | slib_V=!shuffle $slib_V |
20 | reyssat | 48 | !endif |
49 | |||
50 | slib_out=!trim $slib_V |