Rev 8560 | Rev 12678 | 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 |
||
4158 | bpr | 4 | |
4351 | bpr | 5 | slib_author=Bernadette, Perrin-Riou |
4158 | bpr | 6 | |
20 | reyssat | 7 | slib_example=6\ |
8 | 6,7 |
||
3265 | bpr | 9 | slib_require=pari |
20 | reyssat | 10 | !exit |
11 | |||
12 | :proc |
||
13 | !reset slib_m, slib_n |
||
8560 | bpr | 14 | !distribute item $wims_read_parm into slib_n, slib_m |
20 | reyssat | 15 | !default slib_m =!randint $[floor(1.5*$slib_n)], $[2*$slib_n] |
16 | slib_sommet=!values x for x=1 to $slib_n |
||
17 | slib_u=!exec pari matrix($slib_n,$slib_n,slib_i,slib_j,if(slib_j ==slib_i,slib_i)) |
||
18 | |||
8560 | bpr | 19 | slib_u=!translate internal ; to $\ |
20 | reyssat | 20 | $ in $slib_u |
21 | slib_S=1 |
||
22 | slib_euler=$slib_S |
||
23 | !for slib_k=2 to $slib_m |
||
12676 | bpr | 24 | slib_s=!line $slib_S of $slib_u |
25 | slib_bonsom=!listcomplement $slib_s in $slib_sommet |
||
26 | !if $slib_bonsom <> $empty |
||
27 | slib_a = !randitem $slib_bonsom |
||
28 | !else |
||
29 | !goto end |
||
30 | !endif |
||
31 | slib_u=!translate internal $\ |
||
20 | reyssat | 32 | $ to ; in $slib_u |
12676 | bpr | 33 | slib_u=!exec pari {slib_M=Mat([$slib_u]); slib_M[$slib_a,$slib_S]=$slib_S ; slib_M[$slib_S,$slib_a]=$slib_a;print(slib_M)} |
34 | slib_u=!translate internal ; to $\ |
||
20 | reyssat | 35 | $ in $slib_u |
12676 | bpr | 36 | slib_euler=$slib_euler, $slib_a |
37 | slib_S=$slib_a |
||
20 | reyssat | 38 | !next slib_k |
39 | |||
40 | slib_manquant=!listcomplement $slib_euler in $slib_sommet |
||
41 | !if $slib_manquant <> $empty |
||
12676 | bpr | 42 | !for slib_a in $slib_manquant |
43 | slib_u=!translate internal $\ |
||
20 | reyssat | 44 | $ to ; in $slib_u |
12676 | bpr | 45 | slib_u=!exec pari {slib_M=Mat([$slib_u]); slib_M[$slib_a,$slib_S]=$slib_S ; slib_M[$slib_S,$slib_a]=$slib_a;print(slib_M)} |
46 | slib_euler=$slib_euler, $slib_a |
||
47 | slib_S=$slib_a |
||
48 | !next slib_a |
||
7692 | bpr | 49 | !endif |
20 | reyssat | 50 | :end |
51 | |||
52 | slib_m=!itemcnt $slib_euler |
||
53 | |||
54 | slib_u = !nonempty lines $slib_u |
||
8560 | bpr | 55 | slib_u=!translate internal $\ |
20 | reyssat | 56 | $ to ; in $slib_u |
57 | |||
58 | slib_p = !shuffle $slib_n |
||
8560 | bpr | 59 | slib_pp =!item $slib_p of $slib_sommet |
20 | reyssat | 60 | slib_euler1= |
61 | !for slib_i in $slib_euler |
||
12676 | bpr | 62 | slib_pos=!positionof item $slib_i in $slib_p |
63 | slib_euler1=!append item $slib_pos to $slib_euler1 |
||
20 | reyssat | 64 | !next slib_i |
65 | slib_euler=$slib_euler1 |
||
66 | slib_G=!exec pari slib_p = [$slib_p]; slib_M=Mat([$slib_u]); slib_M=matrix($slib_n,$slib_n,slib_i,slib_j,if(slib_i !=slib_j && slib_M[slib_i,slib_j] != 0,1)) ;\ |
||
67 | matrix($slib_n,$slib_n,slib_i,slib_j,slib_M[slib_p[slib_i],slib_p[slib_j]]) |
||
68 | |||
7692 | bpr | 69 | slib_out=[$slib_G],[$slib_euler] |