Subversion Repositories wimsdev

Rev

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]