{VERSION 3 0 "IBM INTEL NT" "3.0" } {USTYLETAB {CSTYLE "Maple Input" -1 0 "Courier" 0 1 255 0 0 1 0 1 0 0 1 0 0 0 0 }{CSTYLE "" -1 18 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }{CSTYLE "" 18 20 "" 0 1 0 0 255 1 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 256 "" 1 12 0 0 0 0 0 2 0 0 0 0 0 0 0 }{CSTYLE "" -1 257 "" 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 }{CSTYLE "" -1 258 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 } {CSTYLE "" -1 259 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 260 "" 1 12 0 0 0 0 0 2 0 0 0 0 0 0 0 }{CSTYLE "" -1 261 "" 1 24 0 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 263 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 264 "" 1 18 0 0 0 0 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 265 "" 1 18 0 0 0 0 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 266 "" 1 18 0 0 0 0 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 267 "" 1 24 0 0 0 0 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 269 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 270 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 271 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 272 "" 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 }{CSTYLE "" -1 273 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 274 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 275 "" 1 18 0 0 0 0 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 276 "" 0 18 0 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 277 "" 1 18 0 0 0 0 0 0 0 0 0 0 0 0 0 }{CSTYLE "" 20 278 "Helvetica" 1 8 0 0 0 0 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 279 "" 1 18 0 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 280 "" 1 18 0 0 0 0 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 281 "" 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 }{CSTYLE "" -1 282 "" 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 }{CSTYLE "" -1 285 "" 0 18 0 0 0 0 0 1 0 0 0 0 0 0 0 }{PSTYLE "Normal" -1 0 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Text Output" -1 2 1 {CSTYLE "" -1 -1 "Courier" 1 10 0 0 255 1 0 0 0 0 0 1 3 0 3 }1 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 } {PSTYLE "Warning" 2 7 1 {CSTYLE "" -1 -1 "" 0 1 0 0 255 1 0 0 0 0 0 0 1 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Error" 7 8 1 {CSTYLE "" -1 -1 "" 0 1 255 0 255 1 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Maple Output" 0 11 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }3 3 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 11 12 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }1 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 257 1 {CSTYLE "" -1 -1 "" 1 24 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }} {SECT 0 {EXCHG {PARA 0 "" 0 "" {TEXT -1 8 " " }{TEXT 267 6 " \+ " }{TEXT 261 57 "Basic procedures for Cyclic, Hamming, Binary Reed- Muller," }{TEXT 285 1 " " }}{PARA 257 "" 0 "" {TEXT 276 45 " \+ BCH, and Golay codes" }}{PARA 0 "" 0 "" {TEXT -1 0 "" } }{PARA 0 "" 0 "" {TEXT -1 64 "1. We construct the parity-check matrix \+ and generator matrix of " }}{PARA 0 "" 0 "" {TEXT -1 42 "(a) the cycli c code of length n over F_p, " }}{PARA 0 "" 0 "" {TEXT -1 81 "(b) the \+ binary Hamming code over GF(2) (which is perfect and 1-error-correctin g)," }}{PARA 0 "" 0 "" {TEXT -1 107 "(c) the binary 1st order Reed-Mul ler code (which is length n=2^m, dimension m+1, minimum distance 2^(m- 1))," }}{PARA 0 "" 0 "" {TEXT -1 97 "(d) the ternary (11,6)-Golay (whi ch is perfect, minimum distance 5, and 2-error-correcting), and " }} {PARA 0 "" 0 "" {TEXT -1 90 "(e) the binary (23,12)-Golay codes (which is perfect, distance 7, and 3-error-correcting)." }}{PARA 0 "" 0 "" {TEXT -1 197 "(The parity check matrix of the binary Hamming code is r elated to the generator matrix of the 1st order Reed-Muller code. Also , the (12,6)-Golay code and the (24,12)-Golay codes are also included. )" }}{PARA 0 "" 0 "" {TEXT 257 0 "" }{TEXT -1 224 "2. We give a progra m which returns all the codewords in a code and all the codewords in i ts dual code, provided the prime p and the generator matrix are given. Another program uses this to give the minimum distanceof a code." }} {PARA 0 "" 0 "" {TEXT -1 179 "3. We give a program which decodes a rec eived word into a codeword using the nearest neighbor algorithm, provi ded the prime p, the distance d, and the generator matrix are given. \+ " }}{PARA 0 "" 0 "" {TEXT -1 65 "4. We give a program for decoding bin ary and p-ary Hamming codes." }}{PARA 0 "" 0 "" {TEXT -1 31 "5. We con struct some BCH codes." }}{PARA 0 "" 0 "" {TEXT -1 76 "6. We give a pr ogram to determine if two binary linear codes are equivalent." }} {PARA 0 "" 0 "" {TEXT -1 79 "7. We give a program to compute the autom orphism group of a binary linear code." }}{PARA 0 "" 0 "" {TEXT -1 0 " " }}{PARA 0 "" 0 "" {TEXT -1 79 "(For some basic cryptological procedu res in MAPLE, see crypto.mpl for example.)" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 103 "There are several other proced ures of minor importance which we leave to the partially documented co de." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 10 "Re ference:" }}{PARA 0 "" 0 "" {TEXT -1 31 " F. MacWilliams and N. Sloane , " }{TEXT 272 36 "The theory of error-correcting codes" }{TEXT -1 21 ", North-Holland, 1977" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 52 "codes0.mws,wdj,6-2-98 and 10-98 and 1-1-99 and 10-99 " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "restart;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 26 "with(linalg):\nwith(padic):" }} {PARA 7 "" 1 "" {TEXT -1 37 "Warning, new definition for fibonacci" }} }{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 38 "read(`d:/maplestuff/codes/codes.mpl`);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%G~~~~~~~~~Basic~coding~theory~commands:G" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#%en~matrix_times_vector_modp,~matrix_m odp,~golay12,~golay11,~G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%R~golay23 ,~golay24,~golay12_check,~golay11_check,~G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%in~golay23_check,~golay24_check,~check_matrix,~generat or_matrix,G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%V~iscyclic,~weight_cod eword,~weight_enumerator_vector,G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#% in~hamming_generator,~hamming_weight,~code_list,~dual_code_list,G" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#%U~decode,~decode_hamming,~RM_generato r,~weight_order,G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%P~weight_lexorde r,~isequivalent,~isequivalent2,~G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#% U~automorphismgroup~...~loaded.~Last~update~12-23-99.G" }}}{EXCHG {PARA 0 "" 0 "" {TEXT 265 13 "Hamming codes" }}}{EXCHG {PARA 0 "" 0 " " {TEXT -1 67 "Parity check matrices of the binary Hamming code of len gth 2^2-1=3:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "hamming_che ck_binary(2);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#-%'matrixG6#7$7%\"\" \"\"\"!F(7%F)F(F(" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 55 "H:=ham ming_check(3,5);\nhamming_check_nonstandard(3,5);\n" }{TEXT -1 110 "Pa rity check matrices (in standard and non-standard form) of the 5-ary H amming code of length (5^3-1)/(5-1)=31" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"HG-%'matrixG6#7%7A\"\"\"\"\"!F+F*\"\"#\"\"$\"\"%F*F,F-F.F+F+ F+F+F*F,F-F.F*F,F-F.F*F,F-F.F*F,F-F.7AF+F*F+F*F*F*F*F+F+F+F+F*F,F-F.F* F*F*F*F,F,F,F,F-F-F-F-F.F.F.F.7AF+F+F*F+F+F+F+F*F*F*F*F*F*F*F*F*F*F*F* F*F*F*F*F*F*F*F*F*F*F*F*" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#-%'matrixG 6#7%7A\"\"!F(\"\"\"F(F(F(F(F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F )F)F)7AF(F)F(F)F)F)F)F(F(F(F(F)\"\"#\"\"$\"\"%F)F)F)F)F+F+F+F+F,F,F,F, F-F-F-F-7AF)F(F(F)F+F,F-F)F+F,F-F(F(F(F(F)F+F,F-F)F+F,F-F)F+F,F-F)F+F, F-" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 28 "H:=hamming_check_bina ry(3);\n" }{TEXT -1 67 "Parity check matrices of the binary Hamming co de of length 2^3-1=7:" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"HG-%'matr ixG6#7%7)\"\"\"\"\"!F+F*F*F+F*7)F+F*F+F*F+F*F*7)F+F+F*F+F*F*F*" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 22 "H:=hamming_check(3,2);" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"HG-%'matrixG6#7%7)\"\"\"\"\"!F+F*F *F+F*7)F+F*F+F*F+F*F*7)F+F+F*F+F*F*F*" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 58 "A generator m atrix of the binary Hamming code of length 3:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "hamming_generator(2,2);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#-%'matrixG6#7#7%\"\"\"F(F(" }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 28 "G1:=hamming_generator(3,2);\n" }{TEXT -1 130 "A gen erator matrix of the binary Hamming code of length 7 (sometimes the tr anspose of this matrix is called the generator matrix):" }}{PARA 11 " " 1 "" {XPPMATH 20 "6#>%#G1G-%'matrixG6#7&7)\"\"\"F*\"\"!F*F+F+F+7)F*F +F*F+F*F+F+7)F+F*F*F+F+F*F+7)F*F*F*F+F+F+F*" }}}{EXCHG {PARA 0 "" 0 " " {TEXT -1 65 "The dual code of this Hamming (7,4) code is a simplex ( 7,3) code." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 21 "dual_code_lis t(G1,2);" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#7*7)\"\"!F%F%F%F%F%F%7)F%F %F%\"\"\"F%F%F'7)F%F%F'F%F%F'F%7)F%F%F'F'F%F'F'7)F%F'F%F%F'F%F%7)F%F'F %F'F'F%F'7)F%F'F'F%F'F'F%7)F%F'F'F'F'F'F'" }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 48 "C1:=c ode_list(G1,2):\nC1:=sort(C1,weight_order);\n" }{TEXT -1 71 "We can pr int out the list of all codewords, sorted according to weight:" }} {PARA 12 "" 1 "" {XPPMATH 20 "6#>%#C1G727)\"\"!F'F'F'F'F'F'7)F'\"\"\"F )F'F'F)F'7)F)F'F'F'F'F)F)7)F)F'F)F'F)F'F'7)F'F)F'F'F)F'F)7)F)F)F'F)F'F 'F'7)F'F'F)F)F'F'F)7)F'F'F'F)F)F)F'7)F)F)F)F'F'F'F)7)F)F)F'F'F)F)F'7)F 'F'F)F'F)F)F)7)F)F'F)F)F'F)F'7)F'F)F'F)F'F)F)7)F'F)F)F)F)F'F'7)F)F'F'F )F)F'F)7)F)F)F)F)F)F)F)" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 32 " weight_enumerator_vector(G1,2);\n" }{TEXT -1 103 "There are 7 code wor ds of weight 3, 7 code words of weight 4, and no code words of weights 1,2, 5 or 6." }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7*\"\"\"\"\"!F%\"\"(F &F%F%F$" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 41 "weight_enumerati on_polynomial(G1,2,x,y);\n" }{TEXT -1 69 "This is the weight enumerato r polynomial of the Hamming (7,4,3)-code." }}{PARA 11 "" 1 "" {XPPMATH 20 "6#,**$)%\"yG\"\"(\"\"\"\"\"\"*&)%\"xG\"\"$F()F&\"\"%F(F'* &)F,F/F()F&F-F(F'*$)F,F'F(F)" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "min_distance(G1,2);\n" }{TEXT -1 59 "The minimum distance of the binary Hamming code of length 3" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\" \"$" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 55 "v1:=[1,1,1,0,0,0,0]; \nmatrix_times_vector_modp(H,v1,2);\n" }{TEXT -1 58 "This received wor d v1 has an error since H*v1 is non-zero." }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#v1G7)\"\"\"F&F&\"\"!F'F'F'" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7%\"\"\"F$F$" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 27 "decode_hamming_binary(v1);\n" }{TEXT -1 49 "This command only work s for binary Hamming codes." }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7)\"\" \"F$F$\"\"!F%F%F$" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "decode (v1,G1,2,3);\n" }{TEXT -1 95 "This command works for any linear code ( 2 is the prime residue, 3 is the distance of the code)." }}{PARA 11 " " 1 "" {XPPMATH 20 "6$%5corrected~codeword:~G7)\"\"\"F%F%\"\"!F&F&F%" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 72 "H:=hamming_check(3,3);\nG:=hamming_generator(3,3 );\nsize_of_code:=3^(10);\n" }{TEXT -1 96 "parity check and generator \+ matrix of Hamming ((p^k-1)/(p-1),(p^k-1)/(p-1)-k,3)-code with k=3,p=3 " }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"HG-%'matrixG6#7%7/\"\"\"\"\"!F +F*\"\"#F*F,F+F+F*F,F*F,7/F+F*F+F*F*F+F+F*F,F*F*F,F,7/F+F+F*F+F+F*F*F* F*F*F*F*F*" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"GG-%'matrixG6#7,7/\" \"#F*\"\"!\"\"\"F+F+F+F+F+F+F+F+F+7/F,F*F+F+F,F+F+F+F+F+F+F+F+7/F*F+F* F+F+F,F+F+F+F+F+F+F+7/F,F+F*F+F+F+F,F+F+F+F+F+F+7/F+F*F*F+F+F+F+F,F+F+ F+F+F+7/F+F,F*F+F+F+F+F+F,F+F+F+F+7/F*F*F*F+F+F+F+F+F+F,F+F+F+7/F,F*F* F+F+F+F+F+F+F+F,F+F+7/F*F,F*F+F+F+F+F+F+F+F+F,F+7/F,F,F*F+F+F+F+F+F+F+ F+F+F," }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%-size_of_codeG\"&\\!f" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 102 "v1:=convert(row(H,1),list)+ [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\nmatrix_times_vector_modp(H,v 1,3);\n" }{TEXT -1 57 "This received word v1 has an error since H*v1 i s non-zero" }{MPLTEXT 1 0 1 "\n" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%# v1G7/\"\"#\"\"!F'\"\"\"F&F(F&F'F'F(F&F(F&" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7%\"\"\"\"\"!F%" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 21 "decode_hamming(v1,3);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7/\" \"\"\"\"!F%F$\"\"#F$F&F%F%F$F&F$F&" }}}{EXCHG {PARA 0 "" 0 "" {TEXT 275 17 "Reed-Muller codes" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "G:=RM_generator(3);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"GG-%'ma trixG6#7&7*\"\"\"F*F*F*F*F*F*F*7*F*\"\"!F,F*F*F,F*F,7*F,F*F,F*F,F*F*F, 7*F,F,F*F,F*F*F*F," }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 124 "This is a \+ generator matrix of the binary 1st order Reed-Muller code of length 8. The matrix for the RM code of length 16 is:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 22 "G_RM:=RM_generator(4);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%%G_RMG-%'matrixG6#7'72\"\"\"F*F*F*F*F*F*F*F*F*F*F*F*F *F*F*72F*\"\"!F,F,F*F*F,F*F,F,F*F*F*F,F*F,72F,F*F,F,F*F,F*F,F*F,F*F*F, F*F*F,72F,F,F*F,F,F*F*F,F,F*F*F,F*F*F*F,72F,F,F,F*F,F,F,F*F*F*F,F*F*F* F*F," }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 49 "C:=code_list(G_RM,2 ):\nC_RM:=sort(C,weight_order);" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%% C_RMG7B72\"\"!F'F'F'F'F'F'F'F'F'F'F'F'F'F'F'72F'F'F'\"\"\"F'F'F'F)F)F) F'F)F)F)F)F'72F'F'F)F'F'F)F)F'F'F)F)F'F)F)F)F'72F'F'F)F)F'F)F)F)F)F'F) F)F'F'F'F'72F'F)F'F'F)F'F)F'F)F'F)F)F'F)F)F'72F'F)F'F)F)F'F)F)F'F)F)F' F)F'F'F'72F'F)F)F'F)F)F'F'F)F)F'F)F)F'F'F'72F'F)F)F)F)F)F'F)F'F'F'F'F' F)F)F'72F)F'F'F'F)F)F'F)F'F'F)F)F)F'F)F'72F)F'F'F)F)F)F'F'F)F)F)F'F'F) F'F'72F)F'F)F'F)F'F)F)F'F)F'F)F'F)F'F'72F)F'F)F)F)F'F)F'F)F'F'F'F)F'F) F'72F)F)F'F'F'F)F)F)F)F'F'F'F)F)F'F'72F)F)F'F)F'F)F)F'F'F)F'F)F'F'F)F' 72F)F)F)F'F'F'F'F)F)F)F)F'F'F'F)F'72F)F)F)F)F'F'F'F'F'F'F)F)F)F)F'F'72 F)F)F)F'F)F)F)F'F'F'F)F'F'F'F'F)72F)F)F'F)F)F'F'F)F)F'F'F)F'F'F'F)72F) F)F'F'F)F'F'F'F'F)F'F'F)F)F)F)72F)F'F)F)F'F)F'F)F'F)F'F'F)F'F'F)72F)F' F)F'F'F)F'F'F)F'F'F)F'F)F)F)72F)F'F'F)F'F'F)F)F'F'F)F'F'F)F)F)72F)F'F' F'F'F'F)F'F)F)F)F)F)F'F'F)72F'F)F)F)F'F'F)F'F)F)F'F'F'F)F'F)72F'F)F)F' F'F'F)F)F'F'F'F)F)F'F)F)72F'F)F'F)F'F)F'F'F)F'F)F'F)F'F)F)72F'F)F'F'F' F)F'F)F'F)F)F)F'F)F'F)72F'F'F)F)F)F'F'F'F'F)F)F)F'F'F)F)72F'F'F)F'F)F' F'F)F)F'F)F'F)F)F'F)72F'F'F'F)F)F)F)F'F'F'F'F)F)F)F'F)72F'F'F'F'F)F)F) F)F)F)F'F'F'F'F)F)72F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "nops(C);" }}{PARA 11 "" 1 "" {XPPMATH 20 " 6#\"#K" }}}{EXCHG {PARA 0 "" 0 "" {TEXT 266 12 "Cyclic codes" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 94 "One can test if g(x) is the genera ting polynomial of a cyclic code of length n over F_p using " }{TEXT 271 18 "iscyclic(g(x),n,p)" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 18 "iscyclic(x+1,7,2);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%%trueG" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "iscyclic(x^2+1,7,2);" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#%&falseG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 22 "iscyclic(x^3+x+ 1,7,2);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%%trueG" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 50 "Enter the generator polynomial of cyclic code and " }{TEXT 258 16 "generator_matrix" }{TEXT -1 48 " will return the cor responding generator matrix." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 29 "G:=generator_matrix(x+1,7,2);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6 #>%\"GG-%'matrixG6#7(7)\"\"\"F*\"\"!F+F+F+F+7)F+F*F*F+F+F+F+7)F+F+F*F* F+F+F+7)F+F+F+F*F*F+F+7)F+F+F+F+F*F*F+7)F+F+F+F+F+F*F*" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 18 "min_distance(G,2);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"\"#" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 43 "The \+ following generator matrix is the same " }{TEXT 273 4 "size" }{TEXT -1 64 " as that of the above Hamming code. Do they yield the same code ?" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 36 "G2:=generator_matrix(x ^3+x^2+1,7,2);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#G2G-%'matrixG6#7& 7)\"\"\"\"\"!F*F*F+F+F+7)F+F*F+F*F*F+F+7)F+F+F*F+F*F*F+7)F+F+F+F*F+F*F *" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 47 "C2:=code_list(G2,2):\n C2:=sort(C2,weight_order);" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%#C2G72 7)\"\"!F'F'F'F'F'F'7)F'F'F'\"\"\"F'F)F)7)F'F'F)F'F)F)F'7)F'F)F'F)F)F'F '7)F'F)F)F'F'F'F)7)F)F'F)F)F'F'F'7)F)F'F'F'F)F'F)7)F)F)F'F'F'F)F'7)F'F 'F)F)F)F'F)7)F'F)F'F'F)F)F)7)F'F)F)F)F'F)F'7)F)F'F)F'F'F)F)7)F)F'F'F)F )F)F'7)F)F)F)F'F)F'F'7)F)F)F'F)F'F'F)7)F)F)F)F)F)F)F)" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "evalb(C1=C2);\n" }{TEXT -1 43 "This cyclic code generated by x^3+x^2+1 is " }{TEXT 274 3 "not" }{TEXT -1 70 " the Hamming code of length 7 and distance 3, over F_2, given abov e. " }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%&falseG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "min_distance(G2,2);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"\"$" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 41 "There is \+ some built-in error checking in " }{TEXT 270 16 "generator_matrix" } {TEXT -1 1 ":" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 28 "generator_ matrix(x^2+1,7,2);" }}{PARA 8 "" 1 "" {TEXT -1 74 "Error, (in generato r_matrix) the polynomial doesn't generate a cyclic code" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 50 "Enter the generator polynomial of cyclic \+ code and " }{TEXT 259 12 "check_matrix" }{TEXT -1 51 " will return the corresponding parity check matrix." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 31 "H:=check_matrix(x^3+x^2+1,7,2);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"HG-%'matrixG6#7%7)\"\"\"F*F*\"\"!F*F+F+7)F+F*F*F*F+ F*F+7)F+F+F*F*F*F+F*" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 55 "v1: =[1,1,1,1,0,0,0];\nmatrix_times_vector_modp(H,v1,2);\n" }{TEXT -1 84 " The word v1 is not in the cyclic code generated by x^3+x^2+1 since H*v 1 is non-zero." }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#v1G7)\"\"\"F&F&F& \"\"!F'F'" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7%\"\"\"F$\"\"!" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 18 "decode(v1,G2,2,2);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$%5corrected~codeword:~G7)\"\"\"\"\"!F%F%F&F& F&" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 54 "check_matrix(x^3+y^2+ 1,7,2);\ncheck_matrix(x^3+1,7,2);\n" }{TEXT 269 12 "check_matrix" } {TEXT -1 33 " has some built-in error checking" }}{PARA 8 "" 1 "" {TEXT -1 54 "Error, (in check_matrix) g should be a polynomial in x" } }{PARA 8 "" 1 "" {TEXT -1 70 "Error, (in check_matrix) the polynomial \+ doesn't generate a cyclic code" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "" 0 "" {TEXT 264 11 "Golay codes" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }{TEXT 260 49 "The generator matr ix for the ternary (12,6) code:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "G:=golay12();" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"GG-%'matr ixG6#7(7.\"\"\"\"\"!F+F+F+F+F+F*F*F*F*F*7.F+F*F+F+F+F+F*F+F*\"\"#F-F*7 .F+F+F*F+F+F+F*F*F+F*F-F-7.F+F+F+F*F+F+F*F-F*F+F*F-7.F+F+F+F+F*F+F*F-F -F*F+F*7.F+F+F+F+F+F*F*F*F-F-F*F+" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "min_distance(G,3);\n" }{TEXT -1 84 "This is very time -consuming on some machines (about 15 seconds on a 300Mhz pentium)." } }{PARA 11 "" 1 "" {XPPMATH 20 "6#\"\"'" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 52 "The parity check matrix for the ternary (12,6) code:" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "H:=golay_check12();" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"HG-%'matrixG6#7(7.\"\"!\"\"#F+F+F+ F+\"\"\"F*F*F*F*F*7.F+F*F+F,F,F+F*F,F*F*F*F*7.F+F+F*F+F,F,F*F*F,F*F*F* 7.F+F,F+F*F+F,F*F*F*F,F*F*7.F+F,F,F+F*F+F*F*F*F*F,F*7.F+F+F,F,F+F*F*F* F*F*F*F," }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 76 "v1:=[1, 2, 2, 2 , 2, 1, 0, 1, 0, 0, 1, 2];\nmatrix_times_vector_modp(H,v1,3);\n" } {TEXT -1 6 "v1 is " }{TEXT 263 3 "not" }{TEXT -1 82 " a codeword in th e (12,6)-Golay code. It has only 1 error (in the first position)." }} {PARA 11 "" 1 "" {XPPMATH 20 "6#>%#v1G7.\"\"\"\"\"#F'F'F'F&\"\"!F&F(F( F&F'" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7(\"\"!\"\"\"F%F%F%F%" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 18 "decode(v1,G,3,5);\n" }{TEXT -1 13 "The decoding:" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$%5corrected~co deword:~G7.\"\"#F%F%F%F%\"\"\"\"\"!F&F'F'F&F%" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 60 "v2:=[1, 1, 2, 2, 2, 1, 0, 1, 0, 0, 1, 2];\ndecod e(v2,G,3,5);\n" }{TEXT -1 31 "Another example, with 2 errors." }} {PARA 11 "" 1 "" {XPPMATH 20 "6#>%#v2G7.\"\"\"F&\"\"#F'F'F&\"\"!F&F(F( F&F'" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$%5corrected~codeword:~G7.\"\"# F%F%F%F%\"\"\"\"\"!F&F'F'F&F%" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }{TEXT 256 57 "The gene rator matrix for the perfect ternary (11,6) code:" }}}{EXCHG {PARA 0 " > " 0 "" {MPLTEXT 1 0 13 "G:=golay11();" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"GG-%'matrixG6#7(7-\"\"\"\"\"!F+F+F+F+F*F*F*F*F*7-F+F*F+F+F+F +F+F*\"\"#F-F*7-F+F+F*F+F+F+F*F+F*F-F-7-F+F+F+F*F+F+F-F*F+F*F-7-F+F+F+ F+F*F+F-F-F*F+F*7-F+F+F+F+F+F*F*F-F-F*F+" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "min_distance(G,3);\n" }{TEXT -1 28 "This is very time -consuming." }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"\"&" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 52 "The parity check matrix for the ternary (11,6) \+ code:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "H:=golay_check11() ;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"HG-%'matrixG6#7'7-\"\"#\"\"!F *\"\"\"F,F*F,F+F+F+F+7-F*F*F+F*F,F,F+F,F+F+F+7-F*F,F*F+F*F,F+F+F,F+F+7 -F*F,F,F*F+F*F+F+F+F,F+7-F*F*F,F,F*F+F+F+F+F+F," }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }{TEXT 256 57 "Th e generator matrix for the perfect binary (23,12) code:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "G:=golay23();" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"GG-%'matrixG6#7.79\"\"\"\"\"!F+F+F+F+F+F+F+F+F+F+F+ F*F*F*F*F*F*F*F*F*F*79F+F*F+F+F+F+F+F+F+F+F+F+F*F*F*F+F*F*F*F+F+F+F*79 F+F+F*F+F+F+F+F+F+F+F+F+F*F*F+F*F*F*F+F+F+F*F+79F+F+F+F*F+F+F+F+F+F+F+ F+F*F+F*F*F*F+F+F+F*F+F*79F+F+F+F+F*F+F+F+F+F+F+F+F*F*F*F*F+F+F+F*F+F* F*79F+F+F+F+F+F*F+F+F+F+F+F+F*F*F*F+F+F+F*F+F*F*F+79F+F+F+F+F+F+F*F+F+ F+F+F+F*F*F+F+F+F*F+F*F*F+F*79F+F+F+F+F+F+F+F*F+F+F+F+F*F+F+F+F*F+F*F* F+F*F*79F+F+F+F+F+F+F+F+F*F+F+F+F*F+F+F*F+F*F*F+F*F*F*79F+F+F+F+F+F+F+ F+F+F*F+F+F*F+F*F+F*F*F+F*F*F*F+79F+F+F+F+F+F+F+F+F+F+F*F+F*F*F+F*F*F+ F*F*F*F+F+79F+F+F+F+F+F+F+F+F+F+F+F*F*F+F*F*F+F*F*F*F+F+F+" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }{TEXT 256 60 "The parity check matrix f or the perfect binary (23,12) code:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "H:=golay_check23();" }}{PARA 11 "" 1 "" {XPPMATH 20 " 6#>%\"HG-%'matrixG6#7-79\"\"!\"\"\"F+F+F+F+F+F+F+F+F+F+F+F*F*F*F*F*F*F *F*F*F*79F+F+F+F*F+F+F+F*F*F*F+F*F*F+F*F*F*F*F*F*F*F*F*79F+F+F*F+F+F+F *F*F*F+F*F+F*F*F+F*F*F*F*F*F*F*F*79F+F*F+F+F+F*F*F*F+F*F+F+F*F*F*F+F*F *F*F*F*F*F*79F+F+F+F+F*F*F*F+F*F+F+F*F*F*F*F*F+F*F*F*F*F*F*79F+F+F+F*F *F*F+F*F+F+F*F+F*F*F*F*F*F+F*F*F*F*F*79F+F+F*F*F*F+F*F+F+F*F+F+F*F*F*F *F*F*F+F*F*F*F*79F+F*F*F*F+F*F+F+F*F+F+F+F*F*F*F*F*F*F*F+F*F*F*79F+F*F *F+F*F+F+F*F+F+F+F*F*F*F*F*F*F*F*F*F+F*F*79F+F*F+F*F+F+F*F+F+F+F*F*F*F *F*F*F*F*F*F*F*F+F*79F+F+F*F+F+F*F+F+F+F*F*F*F*F*F*F*F*F*F*F*F*F*F+" } }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 87 "v1:=[0,0,0,0,0,0,0,0,0,0,0 ,0,0,1,1,1,1,1,1,1,1,1,1];\nmatrix_times_vector_modp(H,v1,2);\n" } {TEXT -1 6 "v1 is " }{TEXT 256 3 "not" }{TEXT -1 83 " a codeword in th e (23,12)-Golay code. It has only 1 error (in the first position)." }} {PARA 11 "" 1 "" {XPPMATH 20 "6#>%#v1G79\"\"!F&F&F&F&F&F&F&F&F&F&F&F& \"\"\"F'F'F'F'F'F'F'F'F'" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7-\"\"!\" \"\"F%F%F%F%F%F%F%F%F%" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 18 "d ecode(v1,G,2,7);\n" }{TEXT -1 92 "This is time-consuming to decode tha n the above Hamming code since the Golay code is larger." }}{PARA 11 " " 1 "" {XPPMATH 20 "6$%5corrected~codeword:~G79\"\"\"\"\"!F&F&F&F&F&F& F&F&F&F&F&F%F%F%F%F%F%F%F%F%F%" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 105 "v2:=[0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0];\nmatrix_ times_vector_modp(H,v2,2);\ndecode(v2,G,2,7);\n" }{TEXT -1 26 "This \" string\" has 3 errors" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#v2G79\"\"! F&F&F&F&F&F&F&F&F&F&F&F&\"\"\"F'F'F'F'F'F'F'F&F&" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7-\"\"!\"\"\"F%F%F%F%F%F%F%F$F$" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$%5corrected~codeword:~G79\"\"\"\"\"!F&F&F&F&F&F&F&F&F&F &F&F%F%F%F%F%F%F%F%F%F%" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 " G:=golay24();\n" }{TEXT -1 47 "The generator matrix for the (24,12)-Go lay code" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"GG-%'matrixG6#7.7:\"\" \"\"\"!F+F+F+F+F+F+F+F+F+F+F+F*F*F*F*F*F*F*F*F*F*F*7:F+F*F+F+F+F+F+F+F +F+F+F+F*F*F*F+F*F*F*F+F+F+F*F+7:F+F+F*F+F+F+F+F+F+F+F+F+F*F*F+F*F*F*F +F+F+F*F+F*7:F+F+F+F*F+F+F+F+F+F+F+F+F*F+F*F*F*F+F+F+F*F+F*F*7:F+F+F+F +F*F+F+F+F+F+F+F+F*F*F*F*F+F+F+F*F+F*F*F+7:F+F+F+F+F+F*F+F+F+F+F+F+F*F *F*F+F+F+F*F+F*F*F+F*7:F+F+F+F+F+F+F*F+F+F+F+F+F*F*F+F+F+F*F+F*F*F+F*F *7:F+F+F+F+F+F+F+F*F+F+F+F+F*F+F+F+F*F+F*F*F+F*F*F*7:F+F+F+F+F+F+F+F+F *F+F+F+F*F+F+F*F+F*F*F+F*F*F*F+7:F+F+F+F+F+F+F+F+F+F*F+F+F*F+F*F+F*F*F +F*F*F*F+F+7:F+F+F+F+F+F+F+F+F+F+F*F+F*F*F+F*F*F+F*F*F*F+F+F+7:F+F+F+F +F+F+F+F+F+F+F+F*F*F+F*F*F+F*F*F*F+F+F+F*" }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 20 "H:=golay_check24();\n" }{TEXT -1 51 "The parity che ck matrix for the (24,12)-Golay code." }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"HG-%'matrixG6#7.7:\"\"!\"\"\"F+F+F+F+F+F+F+F+F+F+F+F*F*F*F*F*F* F*F*F*F*F*7:F+F+F+F*F+F+F+F*F*F*F+F*F*F+F*F*F*F*F*F*F*F*F*F*7:F+F+F*F+ F+F+F*F*F*F+F*F+F*F*F+F*F*F*F*F*F*F*F*F*7:F+F*F+F+F+F*F*F*F+F*F+F+F*F* F*F+F*F*F*F*F*F*F*F*7:F+F+F+F+F*F*F*F+F*F+F+F*F*F*F*F*F+F*F*F*F*F*F*F* 7:F+F+F+F*F*F*F+F*F+F+F*F+F*F*F*F*F*F+F*F*F*F*F*F*7:F+F+F*F*F*F+F*F+F+ F*F+F+F*F*F*F*F*F*F+F*F*F*F*F*7:F+F*F*F*F+F*F+F+F*F+F+F+F*F*F*F*F*F*F* F+F*F*F*F*7:F+F*F*F+F*F+F+F*F+F+F+F*F*F*F*F*F*F*F*F*F+F*F*F*7:F+F*F+F* F+F+F*F+F+F+F*F*F*F*F*F*F*F*F*F*F*F+F*F*7:F+F+F*F+F+F*F+F+F+F*F*F*F*F* F*F*F*F*F*F*F*F*F+F*7:F+F*F+F+F*F+F+F+F*F*F*F+F*F*F*F*F*F*F*F*F*F*F*F+ " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "coldim(G);coldim(H);" } }{PARA 11 "" 1 "" {XPPMATH 20 "6#\"#C" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"#C" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 1 " " }{TEXT 277 11 " BCH codes" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 130 " We shall construct by hand some \+ BCH codes. A BCH code is a cyclic code which included the binary Hammi ng codes as a special case." }}{PARA 0 "" 0 "" {TEXT -1 332 " To const ruct a (binary, narrow) BCH code, you must have a primitive element al pha of degree k over F=GF(2). You must know the minimal polynomials of a sequence of powers of alpha: alpha, alpha^2, ..., alpha^(2t). Take \+ the lcm of these. This new polynomial is the generating polynomial of \+ the BCH code. It has minimum distance 2t+1." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 107 "readlib(lattice):\nminpoly_lattice:=minpoly;\n#li nalg has a minpoly command too\nwith(numtheory):\nreadlib(GF):" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#>%0minpoly_latticeG%(minpolyG" }} {PARA 7 "" 1 "" {TEXT -1 33 "Warning, new definition for order" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 192 "f:=x^4+x+1;\nalias(beta=RootOf(f)):\nFactor(f) mod 2;\nFactor(f,beta) mod 2;\nRoots(f,beta) mod 2;\nfor i from 1 to 19 d o\n pp[i]:=unapply(minpoly_lattice(beta^i,4),_X):\n print(beta^i,pp[i] (x));\nod:" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"fG,(*$)%\"xG\"\"%\" \"\"\"\"\"F(F+F+F+" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#,(*$)%\"xG\"\"% \"\"\"\"\"\"F&F)F)F)" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#**,(%\"xG\"\" \"%%betaGF&F&F&F&,(F%F&*$)F'\"\"#\"\"\"F&F&F&F&,&F%F&F'F&F&,&F%F&F)F&F &" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7&7$,&*$)%%betaG\"\"#\"\"\"\"\"\" F+F+F+7$F(F+7$,&F(F+F+F+F+7$F&F+" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$%% betaG,(*$)%\"xG\"\"%\"\"\"\"\"\"F'F*F*F*" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$*$)%%betaG\"\"#\"\"\",*\"\"\"F)%\"xG!\"\"*$)F*F&F'F&*$)F*\"\"%F' F)" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$*$)%%betaG\"\"$\"\"\",,\"\"\"F)% \"xGF)*$)F*\"\"#F'F&*$)F*F&F'F&*$)F*\"\"%F'F)" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$*$)%%betaG\"\"%\"\"\",,\"\"\"F)%\"xG\"\"$*$)F*\"\"#F'\" \"'*$)F*F+F'F&*$)F*F&F'F)" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$*$)%%beta G\"\"&\"\"\",*\"\"\"F)%\"xG!\"%*$)F*\"\"#F'F&*$)F*\"\"%F'F)" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$*$)%%betaG\"\"'\"\"\",,\"\"\"F)%\"xG\"\"&*$) F*\"\"#F'F+*$)F*\"\"$F'!\"$*$)F*\"\"%F'F)" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$*$)%%betaG\"\"(\"\"\",,\"\"\"F)%\"xG!\"'*$)F*\"\"#F'\"# 9*$)F*\"\"$F'!\"(*$)F*\"\"%F'F)" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$*$) %%betaG\"\")\"\"\",,\"\"\"F)%\"xG\"\"$*$)F*\"\"#F'\"#9*$)F*F+F'!\"%*$) F*\"\"%F'F)" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$*$)%%betaG\"\"*\"\"\",, \"\"\"F)%\"xGF)*$)F*\"\"#F'\"#@*$)F*\"\"$F'F1*$)F*\"\"%F'F)" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$*$)%%betaG\"#5\"\"\",,\"\"\"F)%\"xG!\"'*$)F* \"\"#F'\"#F*$)F*\"\"$F'F&*$)F*\"\"%F'F)" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$*$)%%betaG\"#6\"\"\",,\"\"\"F)%\"xG\"#7*$)F*\"\"#F'\"#W*$)F*\"\" $F'F&*$)F*\"\"%F'F)" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$*$)%%betaG\"#7 \"\"\",,\"\"\"F)%\"xG!#:*$)F*\"\"#F'\"#d*$)F*\"\"$F'F)*$)F*\"\"%F'F)" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$*$)%%betaG\"#8\"\"\",,\"\"\"F)%\"xG \"#9*$)F*\"\"#F'\"#y*$)F*\"\"$F'!#8*$)F*\"\"%F'F)" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$*$)%%betaG\"#9\"\"\",,\"\"\"F)%\"xG!\")*$)F*\"\"#F'\"$9 \"*$)F*\"\"$F'!#@*$)F*\"\"%F'F)" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$*$) %%betaG\"#:\"\"\",,\"\"\"F)%\"xG!\"%*$)F*\"\"#F'\"$e\"*$)F*\"\"$F'!#7* $)F*\"\"%F'F)" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$*$)%%betaG\"#;\"\"\", ,\"\"\"F)%\"xG\"#>*$)F*\"\"#F'\"$A#*$)F*\"\"$F'\"#7*$)F*\"\"%F'F)" }} {PARA 11 "" 1 "" {XPPMATH 20 "6$*$)%%betaG\"#<\"\"\",,\"\"\"F)%\"xG!#L *$)F*\"\"#F'\"$1$*$)F*\"\"$F'\"#M*$)F*\"\"%F'F)" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$*$)%%betaG\"#=\"\"\",,\"\"\"F)%\"xG\"#T*$)F*\"\"#F'\"$P %*$)F*\"\"$F'\"#L*$)F*\"\"%F'F)" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$*$) %%betaG\"#>\"\"\"*$)%\"xG\"\"%F'" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 117 "GenPoly:=x->Lcm(seq(pp[j](x),j=1..4)) mod 2:\nGenPol y(x);\nQuo(x^(15)-1,GenPoly(x),x) mod 2;\niscyclic(GenPoly(x),15,2);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#,,*$)%\"xG\"\"%\"\"\"\"\"\"F)F)*$)F& \"\"'F(F)*$)F&\"\"(F(F)*$)F&\"\")F(F)" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#,**$)%\"xG\"\"(\"\"\"\"\"\"*$)F&\"\"'F(F)*$)F&\"\"%F(F)F)F)" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#%%trueG" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 93 "In other words, GenPoly(x) is indeed the generating polyn omial for some cyclic code over F_2." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 148 "G:=generator_matrix(GenPoly(x),15,2);\nlinalg[rowdim ](G);\nlinalg[coldim](G);\nH:=check_matrix(GenPoly(x),15,2);\nlinalg[r owdim](H);\nlinalg[coldim](H);\n" }{TEXT -1 32 "This code is 2-error c orrecting." }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"GG-%'matrixG6#7)71\" \"\"\"\"!F+F+F*F+F*F*F*F+F+F+F+F+F+71F+F*F+F+F+F*F+F*F*F*F+F+F+F+F+71F +F+F*F+F+F+F*F+F*F*F*F+F+F+F+71F+F+F+F*F+F+F+F*F+F*F*F*F+F+F+71F+F+F+F +F*F+F+F+F*F+F*F*F*F+F+71F+F+F+F+F+F*F+F+F+F*F+F*F*F*F+71F+F+F+F+F+F+F *F+F+F+F*F+F*F*F*" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"\"(" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"#:" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\" HG-%'matrixG6#7*71\"\"\"F*\"\"!F*F+F+F+F*F+F+F+F+F+F+F+71F+F*F*F+F*F+F +F+F*F+F+F+F+F+F+71F+F+F*F*F+F*F+F+F+F*F+F+F+F+F+71F+F+F+F*F*F+F*F+F+F +F*F+F+F+F+71F+F+F+F+F*F*F+F*F+F+F+F*F+F+F+71F+F+F+F+F+F*F*F+F*F+F+F+F *F+F+71F+F+F+F+F+F+F*F*F+F*F+F+F+F*F+71F+F+F+F+F+F+F+F*F*F+F*F+F+F+F* " }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"\")" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"#:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 195 "f:=x^6+x^3+1;\nalias(beta=R ootOf(f)):\nIrreduc(f) mod 2;\nFactor(f,beta) mod 2;\nRoots(f,beta) mo d 2;\nfor i from 1 to 12 do\n pp[i]:=unapply(minpoly_lattice(beta^i,6) ,_X):\n print(beta^i,pp[i](x));\nod:" }}{PARA 11 "" 1 "" {XPPMATH 20 " 6#>%\"fG,(*$)%\"xG\"\"'\"\"\"\"\"\"*$)F(\"\"$F*F+F+F+" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%%trueG" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#*.,(%\" xG\"\"\"*$)%%betaG\"\"%\"\"\"F&F)F&F&,&F%F&F'F&F&,&F%F&*$)F)\"\"&F+F&F &,&F%F&F)F&F&,(F%F&F.F&*$)F)\"\"#F+F&F&,&F%F&F3F&F&" }}{PARA 11 "" 1 " " {XPPMATH 20 "6#7(7$*$)%%betaG\"\"&\"\"\"\"\"\"7$*$)F'\"\"%F)F*7$F'F* 7$,&F,F*F'F*F*7$,&F%F**$)F'\"\"#F)F*F*7$F4F*" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$%%betaG,(*$)%\"xG\"\"'\"\"\"\"\"\"*$)F'\"\"$F)F*F*F*" } }{PARA 11 "" 1 "" {XPPMATH 20 "6$*$)%%betaG\"\"#\"\"\",(*$)%\"xG\"\"'F '\"\"\"*$)F+\"\"$F'F-F-F-" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$*$)%%beta G\"\"$\"\"\",(\"\"\"F)%\"xGF)*$)F*\"\"#F'F)" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$*$)%%betaG\"\"%\"\"\",(*$)%\"xG\"\"'F'\"\"\"*$)F+\"\"$F 'F-F-F-" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$*$)%%betaG\"\"&\"\"\",(*$)% \"xG\"\"'F'\"\"\"*$)F+\"\"$F'F-F-F-" }}{PARA 11 "" 1 "" {XPPMATH 20 "6 $*$)%%betaG\"\"'\"\"\",(\"\"\"F)%\"xGF)*$)F*\"\"#F'F)" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$*$)%%betaG\"\"(\"\"\",(*$)%\"xG\"\"'F'\"\"\"*$)F+ \"\"$F'F-F-F-" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$*$)%%betaG\"\")\"\"\" ,(*$)%\"xG\"\"'F'\"\"\"*$)F+\"\"$F'F-F-F-" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$*$)%%betaG\"\"*\"\"\",&!\"\"\"\"\"%\"xGF*" }}{PARA 11 " " 1 "" {XPPMATH 20 "6$*$)%%betaG\"#5\"\"\",(*$)%\"xG\"\"'F'\"\"\"*$)F+ \"\"$F'F-F-F-" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$*$)%%betaG\"#6\"\"\", (*$)%\"xG\"\"'F'\"\"\"*$)F+\"\"$F'F-F-F-" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$*$)%%betaG\"#7\"\"\",(\"\"\"F)%\"xGF)*$)F*\"\"#F'F)" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 83 "GenPoly:=x->Lcm(seq(pp[j](x),j=1..8 )) mod 2:\nGenPoly(x);\niscyclic(GenPoly(x),63,2);" }}{PARA 11 "" 1 " " {XPPMATH 20 "6#,4*$)%\"xG\"\"'\"\"\"\"\"\"*$)F&\"\"(F(F)*$)F&\"\")F( F)*$)F&\"\"$F(F)*$)F&\"\"%F(F)*$)F&\"\"&F(F)F)F)F&F)*$)F&\"\"#F(F)" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#%%trueG" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 126 "In other words, GenPoly(x) is indeed the generating poly nomial for some cyclic code over F_2. This code is 4-error correcting. " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 109 "G:=generator_matrix(Ge nPoly(x),63,2):\nlinalg[rowdim](G);\nlinalg[coldim](G);\nH:=check_matr ix(GenPoly(x),63,2);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"#b" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"#j" }}{PARA 12 "" 1 "" {XPPMATH 278 "6#>% \"HG-%'matrixG6#7*7[o\"\"\"F*\"\"!F+F+F+F+F+F+F*F*F+F+F+F+F+F+F+F*F*F+ F+F+F+F+F+F+F*F*F+F+F+F+F+F+F+F*F*F+F+F+F+F+F+F+F*F*F+F+F+F+F+F+F+F*F* F+F+F+F+F+F+F+7[oF+F*F*F+F+F+F+F+F+F+F*F*F+F+F+F+F+F+F+F*F*F+F+F+F+F+F +F+F*F*F+F+F+F+F+F+F+F*F*F+F+F+F+F+F+F+F*F*F+F+F+F+F+F+F+F*F*F+F+F+F+F +F+7[oF+F+F*F*F+F+F+F+F+F+F+F*F*F+F+F+F+F+F+F+F*F*F+F+F+F+F+F+F+F*F*F+ F+F+F+F+F+F+F*F*F+F+F+F+F+F+F+F*F*F+F+F+F+F+F+F+F*F*F+F+F+F+F+7[oF+F+F +F*F*F+F+F+F+F+F+F+F*F*F+F+F+F+F+F+F+F*F*F+F+F+F+F+F+F+F*F*F+F+F+F+F+F +F+F*F*F+F+F+F+F+F+F+F*F*F+F+F+F+F+F+F+F*F*F+F+F+F+7[oF+F+F+F+F*F*F+F+ F+F+F+F+F+F*F*F+F+F+F+F+F+F+F*F*F+F+F+F+F+F+F+F*F*F+F+F+F+F+F+F+F*F*F+ F+F+F+F+F+F+F*F*F+F+F+F+F+F+F+F*F*F+F+F+7[oF+F+F+F+F+F*F*F+F+F+F+F+F+F +F*F*F+F+F+F+F+F+F+F*F*F+F+F+F+F+F+F+F*F*F+F+F+F+F+F+F+F*F*F+F+F+F+F+F +F+F*F*F+F+F+F+F+F+F+F*F*F+F+7[oF+F+F+F+F+F+F*F*F+F+F+F+F+F+F+F*F*F+F+ F+F+F+F+F+F*F*F+F+F+F+F+F+F+F*F*F+F+F+F+F+F+F+F*F*F+F+F+F+F+F+F+F*F*F+ F+F+F+F+F+F+F*F*F+7[oF+F+F+F+F+F+F+F*F*F+F+F+F+F+F+F+F*F*F+F+F+F+F+F+F +F*F*F+F+F+F+F+F+F+F*F*F+F+F+F+F+F+F+F*F*F+F+F+F+F+F+F+F*F*F+F+F+F+F+F +F+F*F*" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }{TEXT 279 1 " " }{TEXT 280 33 "When are linear codes equivalent?" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 " " 0 "" {TEXT -1 39 "We must load the group21_v5.mpl package" }}{PARA 0 "" 0 "" {TEXT -1 47 "(see http://web.usna.navy.mil/~wdj/symm_gp.htm) " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 72 "with(combinat):\nwith(g roup):\nread(`d:/maplestuff/group/group21_v5.mpl`);" }}{PARA 7 "" 1 " " {TEXT -1 37 "Warning, new definition for fibonacci" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%C~~~Basic~group~theory~commands:~~~G" }}{PARA 11 " " 1 "" {XPPMATH 20 "6#%gogp_elements,~elements_order,~conjugation,~con jugacy_class,~conjugacy_classesG" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%_ pconjugacy_classes_reps,~gp_table,~abs_gp_table,~mulperm_power,~swap,~ permcol_matrix,G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%goperm_value,~per m_sign,~permute_vector_left,~permute_vector_right,~mult_list,G" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#%[pmult_sets,~is_subset,~is_sublist,~l eft_coset_reps,~right_coset_reps,~stabilizer,G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%]pcartesian_product,~cartesian_power,~conj_type,~conj_ to_part,~part_to_conj,~induce,G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%fo innerprod,~is_reducible,~array_to_disjcyc,~list_to_disjcyc,~array_to_l ist,~G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%_olist_to_array~...~loaded. ~group21_v5.mpl~MAPLEV5,~last~updated~12-99G" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 187 "G 1:=hamming_generator(3,2);\nC1:=code_list(G1,2):\nC1:=sort(C1,weight_l exorder);\nGausselim(G1) mod 2;\nG2:=generator_matrix(x^3+x^2+1,7,2); \nC2:=code_list(G2,2):\nC2:=sort(C2,weight_lexorder);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#G1G-%'matrixG6#7&7)\"\"\"F*\"\"!F*F+F+F+7)F*F+F *F+F*F+F+7)F+F*F*F+F+F*F+7)F*F*F*F+F+F+F*" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%#C1G727)\"\"!F'F'F'F'F'F'7)\"\"\"F)F'F)F'F'F'7)F)F'F) F'F)F'F'7)F)F'F'F'F'F)F)7)F'F)F)F'F'F)F'7)F'F)F'F'F)F'F)7)F'F'F)F)F'F' F)7)F'F'F'F)F)F)F'7)F)F)F)F'F'F'F)7)F)F)F'F'F)F)F'7)F)F'F)F)F'F)F'7)F) F'F'F)F)F'F)7)F'F)F)F)F)F'F'7)F'F)F'F)F'F)F)7)F'F'F)F'F)F)F)7)F)F)F)F) F)F)F)" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#-%'matrixG6#7&7)\"\"\"F(\"\" !F(F)F)F)7)F)F(F(F(F(F)F)7)F)F)F(F(F)F)F(7)F)F)F)F(F(F(F)" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#G2G-%'matrixG6#7&7)\"\"\"\"\"!F*F*F+F+F+7)F+ F*F+F*F*F+F+7)F+F+F*F+F*F*F+7)F+F+F+F*F+F*F*" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%#C2G727)\"\"!F'F'F'F'F'F'7)\"\"\"F)F'F'F'F)F'7)F)F'F) F)F'F'F'7)F)F'F'F'F)F'F)7)F'F)F)F'F'F'F)7)F'F)F'F)F)F'F'7)F'F'F)F'F)F) F'7)F'F'F'F)F'F)F)7)F)F)F)F'F)F'F'7)F)F)F'F)F'F'F)7)F)F'F)F'F'F)F)7)F) F'F'F)F)F)F'7)F'F)F)F)F'F)F'7)F'F)F'F'F)F)F)7)F'F'F)F)F)F'F)7)F)F)F)F) F)F)F)" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 54 "The following program ( on a 350Mz pentium II) returns " }{TEXT 281 4 "true" }{TEXT -1 191 ", \+ if the binary linear code C1 with generator matrix G1 is equivalent to the binary linear code C2 with gen matrix G2 plus an associated colum n permutation for the second matrix, and returns " }{TEXT 282 5 "false " }{TEXT -1 12 " otherwise. " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 43 "t0:=time():\nisequivalent(G1,G2);\ntime()-t0;" }}{PARA 11 "" 1 " " {XPPMATH 20 "6#%VUses~group21_v5.mpl.~Please~be~patient~for~output~. ..G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7$%%trueG7#7&\"\"%\"\"&\"\"(\" \"'" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#$\"&J%=!\"$" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 178 "The foll owing program does the same thing as the program above but uses a diff erent algorithm. (Usually this second algorithm seems to be faster bu t obviously not in this case.)" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 44 "t0:=time():\nisequivalent2(G1,G2);\ntime()-t0;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%VUses~group21_v5.mpl.~Please~be~patient~for~outpu t~...G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7$%%trueG7$7'\"\"\"\"\"#\"\" &\"\"$\"\"%7$\"\"'\"\"(" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#$\"&%*=%!\" $" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 64 "Next, we compute the automor phism group of a binary linear code." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 50 "G1:=matrix([[1,1,0,1,0],[1,1,1,0,1],[1,1,0,1,0]]);" } }{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#G1G-%'matrixG6#7%7'\"\"\"F*\"\"!F* F+7'F*F*F*F+F*F)" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 45 "t0:=tim e():\nautomorphismgroup(G1);\ntime()-t0;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%VUses~group21_v5.mpl.~Please~be~patient~for~output~...G" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#7&7\"7#7$\"\"$\"\"&7#7$\"\"\"\"\"#7$F* F&" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#$\"%:Q!\"$" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{MARK "0 1 0" 23 }{VIEWOPTS 1 1 0 1 1 1803 }