diff --git a/Project.toml b/Project.toml index 99aa433..9fcc3ac 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "TensorAlgebra" uuid = "68bd88dc-f39d-4e12-b2ca-f046b68fcc6a" authors = ["ITensor developers and contributors"] -version = "0.2.1" +version = "0.2.2" [deps] ArrayLayouts = "4c555306-a7a7-4459-81d9-ec55ddd5c99a" diff --git a/benchmark/Project.toml b/benchmark/Project.toml new file mode 100644 index 0000000..b3d6fa8 --- /dev/null +++ b/benchmark/Project.toml @@ -0,0 +1,3 @@ +[deps] +BenchmarkTools = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf" +TensorAlgebra = "68bd88dc-f39d-4e12-b2ca-f046b68fcc6a" diff --git a/benchmark/benchmark_specs/randomTCs.dat b/benchmark/benchmark_specs/randomTCs.dat new file mode 100644 index 0000000..44cc162 --- /dev/null +++ b/benchmark/benchmark_specs/randomTCs.dat @@ -0,0 +1,1000 @@ +C[n,m,a] = A[u,m,n] * B[a,u] & a:120; m:108; u:120; n:120; +C[a,n,m] = A[a,u] * B[u,m,n] & a:120; m:108; u:120; n:108; +C[m,a,n] = A[m,u,n] * B[a,u] & a:120; u:108; m:120; n:108; +C[m,n,a] = A[m,u,n] * B[a,u] & a:120; u:108; m:120; n:108; +C[o,n,a,m] = A[u,o,m,n] * B[a,u] & a:32; m:30; u:32; o:32; n:32; +C[n,m,a,o] = A[u,o,m,n] * B[a,u] & a:32; m:30; u:32; o:32; n:32; +C[m,o,n,a] = A[n,o,m,u] * B[a,u] & a:32; u:32; m:32; o:30; n:32; +C[o,n,a,m] = A[n,o,m,u] * B[a,u] & a:32; u:32; m:30; o:32; n:32; +C[n,m,p,a,o] = A[u,m,n,p,o] * B[u,a] & a:16; m:15; o:16; n:16; p:16; u:16; +C[m,a,o,p,n] = A[u,m,n,p,o] * B[u,a] & a:16; m:16; o:15; n:16; p:16; u:16; +C[p,n,o,m,a] = A[o,p,m,u,n] * B[u,a] & a:16; m:15; o:16; n:16; p:16; u:16; +C[a,p,n,m,o] = A[u,a] * B[o,p,m,u,n] & a:24; m:16; o:16; n:16; p:16; u:16; +C[q,p,o,m,a,n] = A[p,q,m,n,o,u] * B[u,a] & a:8; m:9; o:10; n:10; q:8; p:8; u:8; +C[n,m,a,q,p,o] = A[p,q,m,n,o,u] * B[u,a] & a:8; m:9; o:10; n:8; q:10; p:8; u:8; +C[n,a,p,q,m,o] = A[o,p,m,u,q,n] * B[u,a] & a:8; m:9; o:8; n:8; q:10; p:10; u:8; +C[o,m,q,p,a,n] = A[o,p,m,u,q,n] * B[u,a] & a:8; m:9; o:8; n:10; q:10; p:10; u:8; +C[a,b,m] = A[u,b,a] * B[u,m] & a:120; m:108; b:108; u:120; +C[m,a,b] = A[u,m] * B[u,b,a] & a:108; m:120; b:108; u:120; +C[b,m,a] = A[u,b,a] * B[m,u] & a:108; m:120; b:120; u:120; +C[m,a,b] = A[m,u] * B[u,b,a] & a:108; m:120; b:108; u:120; +C[n,m,b,a] = A[m,u,n] * B[u,a,b] & a:32; u:1152; b:32; m:24; n:32; +C[a,n,m,b] = A[u,a,b] * B[m,u,n] & a:32; u:1152; b:30; m:32; n:32; +C[b,a,n,m] = A[u,a,b] * B[n,u,m] & a:30; u:1152; b:32; m:32; n:32; +C[m,a,n,b] = A[n,u,m] * B[u,a,b] & a:32; u:1152; b:32; m:24; n:32; +C[a,m] = A[v,u,a] * B[v,m,u] & a:120; m:108; u:108; v:120; +C[m,a] = A[v,m,u] * B[v,u,a] & a:108; u:108; m:120; v:120; +C[m,a] = A[u,m,v] * B[v,u,a] & a:108; m:120; u:120; v:120; +C[a,m] = A[v,u,a] * B[u,m,v] & a:120; m:108; u:120; v:120; +C[a,o,b,m,n] = A[b,a,u] * B[u,o,n,m] & a:24; b:16; m:16; o:16; n:16; u:256; +C[b,o,m,n,a] = A[b,a,u] * B[u,o,n,m] & a:15; b:16; m:16; o:16; n:16; u:256; +C[a,b,o,m,n] = A[b,a,u] * B[o,u,n,m] & a:24; b:16; m:16; o:16; n:16; u:270; +C[m,n,a,b,o] = A[o,u,n,m] * B[b,a,u] & a:16; b:16; m:16; o:16; n:15; u:270; +C[n,a,m] = A[u,v,n,m] * B[a,v,u] & a:1152; m:30; n:32; u:32; v:32; +C[a,m,n] = A[a,v,u] * B[u,v,n,m] & a:1152; m:32; n:32; u:32; v:32; +C[n,a,m] = A[m,u,v,n] * B[a,v,u] & a:1152; u:32; n:24; m:32; v:32; +C[a,m,n] = A[a,v,u] * B[m,u,v,n] & a:1152; u:32; n:32; m:32; v:32; +C[o,m,n,b,p,a] = A[n,o,p,u,m] * B[u,a,b] & a:10; b:10; m:9; o:8; n:8; p:10; u:96; +C[o,a,p,b,m,n] = A[n,o,p,u,m] * B[u,a,b] & a:10; b:10; m:9; o:8; n:8; p:10; u:96; +C[b,n,m,a,p,o] = A[u,a,b] * B[n,u,m,o,p] & a:9; b:8; m:10; o:10; n:8; p:10; u:96; +C[a,p,b,n,o,m] = A[u,a,b] * B[n,u,m,o,p] & a:8; b:9; m:10; o:10; n:8; p:10; u:96; +C[a,m,n,o] = A[v,a,u] * B[o,u,m,v,n] & a:240; m:16; o:16; n:16; u:16; v:16; +C[a,n,o,m] = A[v,a,u] * B[o,u,m,v,n] & a:240; m:16; o:16; n:16; u:16; v:16; +C[a,m,n,o] = A[v,a,u] * B[o,v,u,n,m] & a:240; m:16; o:16; n:16; u:16; v:16; +C[a,m,o,n] = A[v,a,u] * B[o,v,u,n,m] & a:240; m:16; o:16; n:16; u:16; v:16; +C[a,m,o,n,p] = A[v,u,a] * B[p,v,n,u,o,m] & a:96; m:10; o:10; n:10; p:8; u:10; v:8; +C[a,p,m,o,n] = A[v,u,a] * B[p,v,n,u,o,m] & a:96; m:10; o:10; n:10; p:8; u:10; v:8; +C[a,m,p,n,o] = A[v,u,a] * B[p,u,v,m,o,n] & a:96; m:10; o:10; n:10; p:8; u:10; v:8; +C[a,m,n,o,p] = A[v,u,a] * B[p,u,v,m,o,n] & a:96; m:10; o:10; n:10; p:8; u:10; v:8; +C[c,m,a,b] = A[b,a,c,u] * B[u,m] & a:30; m:32; c:32; b:32; u:32; +C[b,c,a,m] = A[b,a,c,u] * B[u,m] & a:30; m:32; c:32; b:32; u:32; +C[c,a,m,b] = A[b,a,c,u] * B[m,u] & a:30; m:32; c:32; b:32; u:32; +C[a,m,c,b] = A[b,a,c,u] * B[m,u] & a:32; m:32; c:30; b:32; u:32; +C[n,a,c,m,b] = A[u,n,m] * B[c,b,u,a] & a:16; c:16; b:16; m:15; n:16; u:256; +C[m,n,b,c,a] = A[u,n,m] * B[c,b,u,a] & a:16; c:16; b:16; m:16; n:15; u:256; +C[c,a,n,b,m] = A[c,b,u,a] * B[n,u,m] & a:15; c:16; b:16; m:16; n:16; u:270; +C[c,m,n,b,a] = A[c,b,u,a] * B[n,u,m] & a:15; c:16; b:16; m:16; n:16; u:270; +C[m,b,a] = A[m,u,v] * B[a,b,v,u] & a:32; m:1152; b:32; u:32; v:32; +C[b,m,a] = A[a,b,v,u] * B[m,u,v] & a:24; m:1152; b:32; u:32; v:32; +C[a,m,b] = A[a,b,v,u] * B[u,m,v] & a:32; m:1152; b:30; u:32; v:32; +C[b,m,a] = A[a,b,v,u] * B[u,m,v] & a:24; m:1152; b:32; u:32; v:32; +C[a,o,m,b,n,c] = A[u,b,a,c] * B[n,m,o,u] & a:8; c:9; b:10; m:10; o:10; n:8; u:1000; +C[m,n,c,b,o,a] = A[n,m,o,u] * B[u,b,a,c] & a:10; c:10; b:10; m:8; o:9; n:8; u:1000; +C[o,a,m,n,b,c] = A[u,n,m,o] * B[u,b,a,c] & a:10; c:10; b:10; m:9; o:8; n:10; u:1000; +C[o,a,m,b,n,c] = A[u,n,m,o] * B[u,b,a,c] & a:10; c:10; b:10; m:9; o:8; n:10; u:1000; +C[b,n,a,m] = A[a,u,v,b] * B[n,v,m,u] & a:24; b:32; m:32; n:32; u:32; v:32; +C[n,b,m,a] = A[n,v,m,u] * B[a,u,v,b] & a:32; b:32; m:30; n:32; u:32; v:32; +C[a,m,n,b] = A[a,u,v,b] * B[m,v,u,n] & a:32; b:30; m:32; n:32; u:32; v:32; +C[b,m,a,n] = A[a,u,v,b] * B[m,v,u,n] & a:24; b:32; m:32; n:32; u:32; v:32; +C[a,m] = A[u,a,v,w] * B[v,m,w,u] & a:24; m:32; u:32; w:32; v:32; +C[m,a] = A[v,m,w,u] * B[u,a,v,w] & a:32; u:32; m:24; w:32; v:32; +C[m,a] = A[m,v,u,w] * B[u,a,v,w] & a:32; u:32; m:24; w:32; v:32; +C[a,m] = A[u,a,v,w] * B[m,v,u,w] & a:24; m:32; u:32; w:32; v:32; +C[m,a,b,n,o] = A[m,u,v,o,n] * B[u,b,a,v] & a:16; b:16; m:16; o:15; n:16; u:16; v:16; +C[n,m,a,b,o] = A[m,u,v,o,n] * B[u,b,a,v] & a:16; b:16; m:16; o:15; n:16; u:16; v:16; +C[m,b,n,a,o] = A[v,n,o,u,m] * B[u,b,a,v] & a:16; b:16; m:16; o:15; n:16; u:16; v:16; +C[b,m,a,o,n] = A[u,b,a,v] * B[v,n,o,u,m] & a:15; b:16; m:16; o:16; n:16; u:16; v:16; +C[a,n,m] = A[u,w,a,v] * B[m,n,w,v,u] & a:240; m:16; n:16; u:16; w:16; v:16; +C[a,m,n] = A[u,w,a,v] * B[v,w,u,n,m] & a:240; m:16; n:16; u:16; w:16; v:16; +C[a,n,m] = A[u,w,a,v] * B[m,w,v,n,u] & a:240; m:16; n:16; u:16; w:16; v:16; +C[a,m,n] = A[u,w,a,v] * B[m,w,v,n,u] & a:240; m:16; n:16; u:16; w:16; v:16; +C[o,b,p,a,n,m] = A[n,v,u,p,m,o] * B[a,u,b,v] & a:8; b:10; m:9; o:8; n:8; p:10; u:10; v:10; +C[a,m,p,b,o,n] = A[a,u,b,v] * B[n,v,u,p,m,o] & a:8; b:9; m:10; o:10; n:8; p:10; u:10; v:10; +C[n,o,a,p,m,b] = A[n,p,o,m,u,v] * B[a,u,b,v] & a:8; b:10; m:9; o:10; n:8; p:10; u:10; v:10; +C[a,o,n,m,b,p] = A[a,u,b,v] * B[n,p,o,m,u,v] & a:8; b:9; m:10; o:10; n:8; p:10; u:10; v:10; +C[n,m,a,o] = A[n,v,u,w,o,m] * B[v,w,u,a] & a:972; m:9; o:10; n:8; u:10; w:10; v:8; +C[n,a,m,o] = A[n,v,u,w,o,m] * B[v,w,u,a] & a:972; m:9; o:10; n:8; u:10; w:10; v:8; +C[m,a,n,o] = A[u,v,m,n,w,o] * B[v,w,u,a] & a:972; m:8; o:9; n:10; u:8; w:10; v:8; +C[o,n,a,m] = A[u,v,m,n,w,o] * B[v,w,u,a] & a:972; m:9; o:8; n:10; u:8; w:10; v:8; +C[b,d,c,m,a] = A[u,d,b,c,a] * B[m,u] & a:15; c:16; b:16; d:16; m:16; u:16; +C[c,d,a,m,b] = A[u,d,b,c,a] * B[m,u] & a:15; c:16; b:16; d:16; m:16; u:16; +C[d,m,c,b,a] = A[u,d,b,c,a] * B[u,m] & a:15; c:16; b:16; d:16; m:16; u:16; +C[d,c,b,m,a] = A[u,d,b,c,a] * B[u,m] & a:15; c:16; b:16; d:16; m:16; u:16; +C[n,a,c,b,m,d] = A[m,n,u] * B[a,b,u,d,c] & a:8; c:10; b:10; d:10; m:24; n:8; u:90; +C[d,b,c,a,n,m] = A[a,b,u,d,c] * B[m,n,u] & a:8; c:9; b:10; d:8; m:8; n:10; u:90; +C[m,c,d,n,b,a] = A[u,m,n] * B[a,b,u,d,c] & a:8; c:10; b:10; d:10; m:8; n:9; u:96; +C[c,d,n,m,b,a] = A[a,b,u,d,c] * B[u,m,n] & a:8; c:8; b:9; d:10; m:10; n:10; u:96; +C[m,a,c,b] = A[u,v,m] * B[a,b,v,c,u] & a:16; c:16; b:16; m:240; u:16; v:16; +C[m,b,c,a] = A[u,v,m] * B[a,b,v,c,u] & a:16; c:16; b:16; m:240; u:16; v:16; +C[m,c,b,a] = A[u,m,v] * B[a,b,v,c,u] & a:16; c:16; b:16; m:240; u:16; v:16; +C[m,b,c,a] = A[u,m,v] * B[a,b,v,c,u] & a:16; c:16; b:16; m:240; u:16; v:16; +C[m,b,n,a,c] = A[u,v,m,n] * B[a,v,c,u,b] & a:16; c:16; b:16; m:16; n:15; u:16; v:16; +C[c,n,m,b,a] = A[a,v,c,u,b] * B[u,v,m,n] & a:16; c:16; b:15; m:16; n:16; u:16; v:16; +C[n,a,m,b,c] = A[m,n,v,u] * B[a,v,c,u,b] & a:16; c:16; b:16; m:24; n:16; u:16; v:16; +C[m,a,c,b,n] = A[m,n,v,u] * B[a,v,c,u,b] & a:16; c:16; b:16; m:16; n:15; u:16; v:16; +C[m,b,a] = A[w,u,v,m] * B[w,v,a,u,b] & a:16; b:16; m:240; u:16; w:16; v:16; +C[m,a,b] = A[w,u,v,m] * B[w,v,a,u,b] & a:16; b:16; m:240; u:16; w:16; v:16; +C[m,b,a] = A[u,v,w,m] * B[w,v,a,u,b] & a:16; b:16; m:240; u:16; w:16; v:16; +C[m,a,b] = A[u,v,w,m] * B[w,v,a,u,b] & a:16; b:16; m:240; u:16; w:16; v:16; +C[c,m,o,b,n,a] = A[b,c,v,a,u] * B[u,n,v,o,m] & a:9; c:8; b:8; m:10; o:10; n:10; u:32; v:32; +C[b,m,a,o,c,n] = A[b,c,v,a,u] * B[u,n,v,o,m] & a:9; c:10; b:8; m:10; o:10; n:10; u:32; v:32; +C[m,o,c,b,n,a] = A[u,v,o,m,n] * B[b,c,v,a,u] & a:10; c:10; b:8; m:8; o:9; n:10; u:32; v:32; +C[o,c,a,n,m,b] = A[u,v,o,m,n] * B[b,c,v,a,u] & a:10; c:10; b:8; m:9; o:8; n:10; u:32; v:32; +C[m,a,n,b] = A[v,n,w,u,m] * B[v,u,a,b,w] & a:16; b:16; m:16; n:15; u:16; w:16; v:16; +C[b,a,n,m] = A[v,u,a,b,w] * B[v,n,w,u,m] & a:15; b:16; m:16; n:16; u:16; w:16; v:16; +C[a,m,b,n] = A[v,u,a,b,w] * B[n,w,u,m,v] & a:16; b:15; m:16; n:16; u:16; w:16; v:16; +C[a,n,m,b] = A[v,u,a,b,w] * B[n,w,u,m,v] & a:16; b:15; m:16; n:16; u:16; w:16; v:16; +C[b,o,n,m,a] = A[a,u,v,w,b] * B[n,u,o,m,w,v] & a:24; b:32; m:10; o:10; n:8; u:10; w:10; v:10; +C[o,b,m,n,a] = A[n,u,o,m,w,v] * B[a,u,v,w,b] & a:32; b:32; m:9; o:8; n:8; u:10; w:10; v:10; +C[b,o,a,n,m] = A[a,u,v,w,b] * B[w,u,m,o,v,n] & a:24; b:32; m:10; o:10; n:10; u:10; w:8; v:10; +C[a,m,b,o,n] = A[a,u,v,w,b] * B[w,u,m,o,v,n] & a:32; b:30; m:10; o:10; n:10; u:10; w:8; v:10; +C[a,c,m,b,e,d] = A[u,c,e,b,a,d] * B[m,u] & a:8; c:9; b:10; e:10; d:10; m:8; u:8; +C[m,d,e,a,b,c] = A[m,u] * B[u,c,e,b,a,d] & a:10; c:10; b:10; e:10; d:10; m:24; u:8; +C[b,e,c,d,a,m] = A[u,c,e,b,a,d] * B[u,m] & a:9; c:10; b:8; e:10; d:10; m:8; u:8; +C[a,b,m,c,d,e] = A[u,c,e,b,a,d] * B[u,m] & a:8; c:9; b:10; e:10; d:10; m:8; u:8; +C[c,a,m,b,d] = A[a,d,b,u,v,c] * B[m,v,u] & a:8; c:8; b:9; d:10; m:96; u:10; v:10; +C[d,a,c,m,b] = A[a,d,b,u,v,c] * B[m,v,u] & a:8; c:9; b:10; d:8; m:96; u:10; v:10; +C[m,b,d,c,a] = A[v,u,m] * B[a,d,b,u,v,c] & a:8; c:10; b:10; d:10; m:96; u:10; v:8; +C[m,c,a,b,d] = A[v,u,m] * B[a,d,b,u,v,c] & a:8; c:10; b:10; d:10; m:96; u:10; v:8; +C[m,b,d,c,n,a] = A[u,n,v,m] * B[u,d,a,v,c,b] & a:10; c:10; b:10; d:10; m:8; n:9; u:8; v:10; +C[b,m,a,c,n,d] = A[u,d,a,v,c,b] * B[u,n,v,m] & a:9; c:10; b:8; d:10; m:10; n:10; u:8; v:10; +C[a,d,c,m,b,n] = A[u,d,a,v,c,b] * B[v,m,n,u] & a:8; c:9; b:10; d:10; m:10; n:10; u:8; v:8; +C[a,c,n,m,d,b] = A[u,d,a,v,c,b] * B[v,m,n,u] & a:8; c:9; b:10; d:10; m:10; n:10; u:8; v:8; +C[b,m,a,c] = A[w,v,b,u,c,a] * B[m,v,u,w] & a:9; c:10; b:8; m:1000; u:10; w:8; v:10; +C[c,b,m,a] = A[w,v,b,u,c,a] * B[m,v,u,w] & a:9; c:8; b:10; m:1000; u:10; w:8; v:10; +C[b,a,m,c] = A[w,v,b,u,c,a] * B[w,u,v,m] & a:9; c:10; b:8; m:972; u:10; w:8; v:10; +C[m,a,c,b] = A[w,u,v,m] * B[w,v,b,u,c,a] & a:10; c:10; b:10; m:960; u:10; w:8; v:10; +C[a,n,m,b,c] = A[u,v,a,w,c,b] * B[v,w,n,u,m] & a:8; c:9; b:10; m:32; n:32; u:8; w:10; v:8; +C[a,n,c,m,b] = A[u,v,a,w,c,b] * B[v,w,n,u,m] & a:8; c:9; b:10; m:32; n:32; u:8; w:10; v:8; +C[m,b,n,c,a] = A[v,m,w,u,n] * B[u,v,a,w,c,b] & a:10; c:10; b:10; m:32; n:30; u:8; w:10; v:8; +C[b,n,m,c,a] = A[u,v,a,w,c,b] * B[v,m,w,u,n] & a:9; c:10; b:8; m:32; n:32; u:8; w:10; v:8; +C[n,m,c,o,b,a] = A[m,u,w,v,n,o] * B[v,w,u,b,c,a] & a:10; c:10; b:10; m:8; o:9; n:8; u:10; w:10; v:8; +C[o,m,b,n,a,c] = A[m,u,w,v,n,o] * B[v,w,u,b,c,a] & a:10; c:10; b:10; m:8; o:8; n:9; u:10; w:10; v:8; +C[a,n,b,o,m,c] = A[v,w,u,b,c,a] * B[o,n,w,m,u,v] & a:8; c:9; b:10; m:10; o:8; n:10; u:10; w:10; v:8; +C[n,b,a,m,c,o] = A[o,n,w,m,u,v] * B[v,w,u,b,c,a] & a:10; c:10; b:10; m:9; o:8; n:8; u:10; w:10; v:8; +C[a,n,m] = A[a,u] * B[u,m,n] & a:144; m:128; u:144; n:135; +C[m,a,n] = A[u,m,n] * B[a,u] & a:144; m:144; u:144; n:135; +C[m,a,n] = A[n,m,u] * B[a,u] & a:144; u:135; m:144; n:144; +C[m,n,a] = A[n,m,u] * B[a,u] & a:144; u:135; m:144; n:144; +C[o,m,a,n] = A[m,n,u,o] * B[a,u] & a:40; u:40; m:40; o:40; n:36; +C[a,n,o,m] = A[a,u] * B[m,n,u,o] & a:48; u:40; m:40; o:40; n:40; +C[o,n,m,a] = A[u,m,n,o] * B[a,u] & a:40; m:36; u:40; o:40; n:40; +C[n,m,a,o] = A[u,m,n,o] * B[a,u] & a:40; m:36; u:40; o:40; n:40; +C[p,o,m,n,a] = A[u,p,m,o,n] * B[u,a] & a:16; m:18; o:20; n:20; p:16; u:16; +C[p,n,a,o,m] = A[u,p,m,o,n] * B[u,a] & a:16; m:18; o:20; n:20; p:16; u:16; +C[o,m,p,n,a] = A[o,n,u,p,m] * B[u,a] & a:16; m:18; o:16; n:20; p:20; u:16; +C[n,a,m,o,p] = A[o,n,u,p,m] * B[u,a] & a:16; m:18; o:16; n:16; p:20; u:16; +C[p,a,n,q,m,o] = A[q,o,n,u,m,p] * B[a,u] & a:8; m:12; o:12; n:12; q:8; p:8; u:12; +C[p,o,m,q,n,a] = A[q,o,n,u,m,p] * B[a,u] & a:8; m:12; o:12; n:12; q:8; p:8; u:12; +C[n,o,a,q,p,m] = A[m,u,o,p,q,n] * B[a,u] & a:8; m:8; o:12; n:8; q:12; p:12; u:12; +C[q,o,a,p,m,n] = A[m,u,o,p,q,n] * B[a,u] & a:8; m:8; o:12; n:12; q:8; p:12; u:12; +C[m,a,b] = A[m,u] * B[a,u,b] & a:144; m:144; b:135; u:135; +C[b,a,m] = A[a,u,b] * B[m,u] & a:144; m:144; b:144; u:135; +C[a,m,b] = A[a,u,b] * B[u,m] & a:144; m:128; b:135; u:144; +C[b,a,m] = A[a,u,b] * B[u,m] & a:144; m:128; b:144; u:144; +C[b,n,m,a] = A[u,b,a] * B[m,n,u] & a:36; u:1536; b:40; m:40; n:40; +C[n,m,a,b] = A[m,n,u] * B[u,b,a] & a:40; u:1536; b:40; m:48; n:40; +C[n,b,m,a] = A[u,m,n] * B[u,b,a] & a:40; u:1536; b:40; m:36; n:40; +C[a,n,m,b] = A[u,b,a] * B[u,m,n] & a:40; u:1536; b:36; m:40; n:40; +C[m,a] = A[v,u,m] * B[v,a,u] & a:128; m:144; u:135; v:144; +C[a,m] = A[v,a,u] * B[v,u,m] & a:144; m:128; u:135; v:144; +C[m,a] = A[v,m,u] * B[v,a,u] & a:128; u:135; m:144; v:144; +C[a,m] = A[v,a,u] * B[v,m,u] & a:144; m:128; u:135; v:144; +C[m,o,n,b,a] = A[n,o,u,m] * B[a,b,u] & a:16; b:20; m:16; o:18; n:16; u:324; +C[a,m,n,b,o] = A[a,b,u] * B[n,o,u,m] & a:16; b:18; m:20; o:20; n:16; u:324; +C[b,m,n,a,o] = A[a,b,u] * B[o,u,n,m] & a:24; b:16; m:20; o:16; n:20; u:324; +C[o,m,n,b,a] = A[o,u,n,m] * B[a,b,u] & a:16; b:20; m:18; o:16; n:20; u:324; +C[a,n,m] = A[a,u,v] * B[u,m,v,n] & a:1536; m:40; n:40; u:40; v:40; +C[n,m,a] = A[u,m,v,n] * B[a,u,v] & a:1536; m:36; n:40; u:40; v:40; +C[a,n,m] = A[a,u,v] * B[v,n,u,m] & a:1536; m:40; n:40; u:40; v:40; +C[n,a,m] = A[v,n,u,m] * B[a,u,v] & a:1536; m:36; n:40; u:40; v:40; +C[o,n,a,m,p,b] = A[o,m,u,n,p] * B[b,a,u] & a:12; b:8; m:12; o:8; n:12; p:12; u:128; +C[m,n,b,p,a,o] = A[o,m,u,n,p] * B[b,a,u] & a:12; b:8; m:8; o:8; n:12; p:12; u:128; +C[n,b,m,p,a,o] = A[u,p,o,n,m] * B[b,a,u] & a:12; b:8; m:12; o:12; n:8; p:12; u:128; +C[o,m,n,b,p,a] = A[u,p,o,n,m] * B[b,a,u] & a:12; b:8; m:12; o:8; n:12; p:12; u:128; +C[a,m,n,o] = A[a,v,u] * B[n,v,o,u,m] & a:288; m:20; o:20; n:16; u:20; v:20; +C[m,a,n,o] = A[n,v,o,u,m] * B[a,v,u] & a:320; m:16; o:18; n:16; u:20; v:20; +C[a,m,o,n] = A[a,v,u] * B[v,n,u,o,m] & a:288; m:20; o:20; n:20; u:20; v:16; +C[o,a,n,m] = A[v,n,u,o,m] * B[a,v,u] & a:320; m:18; o:16; n:20; u:20; v:16; +C[p,a,m,n,o] = A[o,p,u,n,v,m] * B[a,v,u] & a:128; m:12; o:8; n:12; p:8; u:12; v:12; +C[p,a,n,m,o] = A[o,p,u,n,v,m] * B[a,v,u] & a:128; m:12; o:8; n:12; p:8; u:12; v:12; +C[a,m,o,p,n] = A[a,v,u] * B[n,m,u,v,p,o] & a:120; m:12; o:12; n:8; p:12; u:12; v:12; +C[a,p,m,n,o] = A[a,v,u] * B[n,m,u,v,p,o] & a:120; m:12; o:12; n:8; p:12; u:12; v:12; +C[m,a,c,b] = A[m,u] * B[a,b,c,u] & a:40; m:48; c:40; b:40; u:40; +C[c,b,m,a] = A[a,b,c,u] * B[m,u] & a:40; m:40; c:40; b:36; u:40; +C[c,b,m,a] = A[a,b,c,u] * B[u,m] & a:40; m:40; c:40; b:36; u:40; +C[c,a,m,b] = A[a,b,c,u] * B[u,m] & a:40; m:40; c:40; b:36; u:40; +C[n,a,b,m,c] = A[n,u,m] * B[c,a,u,b] & a:20; c:16; b:20; m:18; n:16; u:324; +C[c,n,m,a,b] = A[c,a,u,b] * B[n,u,m] & a:18; c:16; b:20; m:20; n:16; u:324; +C[a,m,b,c,n] = A[c,a,u,b] * B[m,n,u] & a:16; c:16; b:18; m:16; n:20; u:324; +C[n,b,a,c,m] = A[m,n,u] * B[c,a,u,b] & a:20; c:16; b:20; m:24; n:16; u:324; +C[b,m,a] = A[u,v,b,a] * B[u,m,v] & a:36; m:1536; b:40; u:40; v:40; +C[a,b,m] = A[u,v,b,a] * B[u,m,v] & a:40; m:1536; b:36; u:40; v:40; +C[m,a,b] = A[v,u,m] * B[u,v,b,a] & a:40; m:1536; b:40; u:40; v:40; +C[b,m,a] = A[u,v,b,a] * B[v,u,m] & a:36; m:1536; b:40; u:40; v:40; +C[m,a,o,c,n,b] = A[m,n,o,u] * B[a,b,c,u] & a:8; c:12; b:12; m:8; o:12; n:12; u:1500; +C[m,c,n,b,o,a] = A[m,n,o,u] * B[a,b,c,u] & a:8; c:12; b:12; m:8; o:12; n:12; u:1500; +C[c,m,b,o,a,n] = A[a,b,c,u] * B[o,m,u,n] & a:8; c:8; b:12; m:12; o:8; n:12; u:1500; +C[o,n,b,a,c,m] = A[o,m,u,n] * B[a,b,c,u] & a:8; c:12; b:12; m:12; o:8; n:12; u:1500; +C[b,m,a,n] = A[a,u,b,v] * B[v,m,u,n] & a:48; b:40; m:40; n:40; u:40; v:40; +C[n,b,m,a] = A[v,m,u,n] * B[a,u,b,v] & a:40; b:40; m:36; n:40; u:40; v:40; +C[n,b,m,a] = A[m,v,u,n] * B[a,u,b,v] & a:40; b:40; m:48; n:40; u:40; v:40; +C[m,n,b,a] = A[m,v,u,n] * B[a,u,b,v] & a:40; b:40; m:40; n:36; u:40; v:40; +C[m,a] = A[m,v,u,w] * B[a,w,u,v] & a:40; u:40; m:48; w:40; v:40; +C[a,m] = A[a,w,u,v] * B[m,v,u,w] & a:48; m:40; u:40; w:40; v:40; +C[m,a] = A[v,w,m,u] * B[a,w,u,v] & a:40; u:40; m:48; w:40; v:40; +C[a,m] = A[a,w,u,v] * B[v,w,m,u] & a:48; m:40; u:40; w:40; v:40; +C[n,o,a,b,m] = A[u,v,n,m,o] * B[a,u,b,v] & a:16; b:18; m:18; o:20; n:16; u:16; v:20; +C[a,b,o,m,n] = A[a,u,b,v] * B[u,v,n,m,o] & a:16; b:18; m:20; o:20; n:20; u:16; v:20; +C[o,a,b,m,n] = A[u,n,v,m,o] * B[a,u,b,v] & a:16; b:18; m:18; o:16; n:20; u:16; v:20; +C[a,b,n,o,m] = A[a,u,b,v] * B[u,n,v,m,o] & a:16; b:18; m:20; o:20; n:20; u:16; v:20; +C[a,m,n] = A[u,v,w,a] * B[v,n,u,w,m] & a:288; m:20; n:20; u:16; w:20; v:16; +C[m,a,n] = A[v,n,u,w,m] * B[u,v,w,a] & a:324; m:16; n:18; u:16; w:20; v:16; +C[m,a,n] = A[u,n,v,m,w] * B[u,v,w,a] & a:324; m:16; n:18; u:16; w:20; v:20; +C[a,m,n] = A[u,v,w,a] * B[u,n,v,m,w] & a:288; m:20; n:20; u:16; w:20; v:20; +C[m,a,o,n,b,p] = A[u,m,n,p,v,o] * B[a,u,b,v] & a:8; b:12; m:8; o:12; n:12; p:12; u:8; v:12; +C[a,o,n,b,p,m] = A[a,u,b,v] * B[u,m,n,p,v,o] & a:8; b:12; m:12; o:12; n:12; p:12; u:8; v:12; +C[o,n,a,p,b,m] = A[m,v,p,o,u,n] * B[a,u,b,v] & a:8; b:12; m:8; o:8; n:12; p:12; u:12; v:12; +C[m,o,p,n,a,b] = A[m,v,p,o,u,n] * B[a,u,b,v] & a:8; b:12; m:8; o:12; n:12; p:12; u:12; v:12; +C[n,o,m,a] = A[n,m,v,u,o,w] * B[a,u,v,w] & a:1536; m:12; o:12; n:8; u:12; w:12; v:12; +C[a,n,o,m] = A[a,u,v,w] * B[n,m,v,u,o,w] & a:1536; m:12; o:12; n:8; u:12; w:12; v:12; +C[m,a,n,o] = A[v,n,w,o,m,u] * B[a,u,v,w] & a:1536; m:8; o:12; n:12; u:12; w:12; v:8; +C[a,m,o,n] = A[a,u,v,w] * B[v,n,w,o,m,u] & a:1536; m:12; o:12; n:12; u:12; w:12; v:8; +C[d,m,b,a,c] = A[b,u,a,d,c] * B[u,m] & a:18; c:20; b:16; d:16; m:16; u:16; +C[b,m,a,c,d] = A[b,u,a,d,c] * B[u,m] & a:18; c:20; b:16; d:20; m:16; u:16; +C[d,b,c,a,m] = A[b,u,a,d,c] * B[m,u] & a:18; c:20; b:16; d:16; m:16; u:20; +C[m,c,d,b,a] = A[m,u] * B[b,u,a,d,c] & a:20; c:20; b:16; d:20; m:24; u:20; +C[b,c,n,d,m,a] = A[u,a,c,d,b] * B[n,m,u] & a:12; c:12; b:8; d:12; m:12; n:8; u:128; +C[d,m,c,a,n,b] = A[u,a,c,d,b] * B[n,m,u] & a:12; c:12; b:12; d:8; m:12; n:8; u:128; +C[b,a,d,m,n,c] = A[u,a,c,d,b] * B[u,n,m] & a:12; c:12; b:8; d:12; m:12; n:12; u:128; +C[n,b,c,m,a,d] = A[u,n,m] * B[u,a,c,d,b] & a:12; c:12; b:12; d:12; m:12; n:8; u:128; +C[b,m,c,a] = A[a,u,b,c,v] * B[u,v,m] & a:16; c:18; b:16; m:324; u:16; v:20; +C[m,b,a,c] = A[u,v,m] * B[a,u,b,c,v] & a:16; c:20; b:20; m:288; u:16; v:20; +C[b,a,m,c] = A[a,u,b,c,v] * B[v,u,m] & a:16; c:18; b:16; m:324; u:20; v:16; +C[c,m,b,a] = A[a,u,b,c,v] * B[v,u,m] & a:16; c:16; b:18; m:324; u:20; v:16; +C[b,m,a,c,n] = A[c,u,b,a,v] * B[m,n,u,v] & a:18; c:16; b:16; m:16; n:18; u:20; v:20; +C[b,c,a,n,m] = A[c,u,b,a,v] * B[m,n,u,v] & a:18; c:16; b:16; m:16; n:18; u:20; v:20; +C[n,b,c,a,m] = A[m,n,v,u] * B[c,u,b,a,v] & a:20; c:16; b:20; m:24; n:16; u:20; v:20; +C[m,c,a,n,b] = A[m,n,v,u] * B[c,u,b,a,v] & a:20; c:16; b:20; m:16; n:18; u:20; v:20; +C[b,m,a] = A[u,b,a,v,w] * B[m,w,v,u] & a:18; b:16; m:320; u:16; w:20; v:20; +C[m,a,b] = A[m,w,v,u] * B[u,b,a,v,w] & a:20; b:20; m:288; u:16; w:20; v:20; +C[a,m,b] = A[u,b,a,v,w] * B[u,v,m,w] & a:16; b:18; m:324; u:16; w:20; v:20; +C[b,m,a] = A[u,b,a,v,w] * B[u,v,m,w] & a:18; b:16; m:324; u:16; w:20; v:20; +C[a,m,c,n,b,o] = A[b,v,c,a,u] * B[u,n,o,m,v] & a:8; c:12; b:8; m:12; o:12; n:12; u:40; v:40; +C[m,o,b,c,n,a] = A[u,n,o,m,v] * B[b,v,c,a,u] & a:12; c:12; b:8; m:8; o:12; n:12; u:40; v:40; +C[n,o,b,m,a,c] = A[u,v,n,m,o] * B[b,v,c,a,u] & a:12; c:12; b:8; m:12; o:12; n:8; u:40; v:40; +C[b,m,a,o,c,n] = A[b,v,c,a,u] * B[u,v,n,m,o] & a:12; c:12; b:8; m:12; o:12; n:12; u:40; v:40; +C[a,b,m,n] = A[a,u,v,w,b] * B[v,u,n,w,m] & a:16; b:18; m:18; n:18; u:20; w:20; v:16; +C[b,a,n,m] = A[a,u,v,w,b] * B[v,u,n,w,m] & a:24; b:16; m:18; n:18; u:20; w:20; v:16; +C[a,b,n,m] = A[a,u,v,w,b] * B[w,n,v,u,m] & a:16; b:18; m:18; n:18; u:20; w:16; v:20; +C[a,n,b,m] = A[a,u,v,w,b] * B[w,n,v,u,m] & a:16; b:18; m:18; n:18; u:20; w:16; v:20; +C[m,o,a,n,b] = A[n,w,m,u,o,v] * B[u,v,w,a,b] & a:40; b:40; m:8; o:12; n:8; u:8; w:12; v:12; +C[m,o,b,a,n] = A[n,w,m,u,o,v] * B[u,v,w,a,b] & a:40; b:40; m:8; o:12; n:8; u:8; w:12; v:12; +C[m,n,b,a,o] = A[o,u,n,w,v,m] * B[u,v,w,a,b] & a:40; b:40; m:8; o:8; n:12; u:8; w:12; v:12; +C[b,o,a,m,n] = A[u,v,w,a,b] * B[o,u,n,w,v,m] & a:36; b:40; m:12; o:8; n:12; u:8; w:12; v:12; +C[m,b,a,d,e,c] = A[u,m] * B[c,b,d,u,e,a] & a:12; c:8; b:12; e:12; d:12; m:24; u:8; +C[m,d,a,b,e,c] = A[u,m] * B[c,b,d,u,e,a] & a:12; c:8; b:12; e:12; d:12; m:24; u:8; +C[b,e,m,c,a,d] = A[c,b,d,u,e,a] * B[m,u] & a:12; c:8; b:8; e:12; d:12; m:8; u:12; +C[m,e,c,d,a,b] = A[m,u] * B[c,b,d,u,e,a] & a:12; c:8; b:12; e:12; d:12; m:24; u:12; +C[a,d,c,b,m] = A[c,a,u,v,d,b] * B[u,m,v] & a:8; c:8; b:12; d:12; m:128; u:8; v:12; +C[d,c,m,a,b] = A[c,a,u,v,d,b] * B[u,m,v] & a:12; c:8; b:12; d:8; m:128; u:8; v:12; +C[d,a,b,c,m] = A[c,a,u,v,d,b] * B[m,v,u] & a:12; c:8; b:12; d:8; m:128; u:12; v:12; +C[d,c,b,a,m] = A[c,a,u,v,d,b] * B[m,v,u] & a:12; c:8; b:12; d:8; m:128; u:12; v:12; +C[c,d,a,b,n,m] = A[v,b,a,d,c,u] * B[u,v,m,n] & a:12; c:8; b:12; d:12; m:12; n:12; u:8; v:8; +C[m,d,n,a,c,b] = A[u,v,m,n] * B[v,b,a,d,c,u] & a:12; c:12; b:12; d:12; m:8; n:12; u:8; v:8; +C[m,c,a,b,d,n] = A[m,v,n,u] * B[v,b,a,d,c,u] & a:12; c:12; b:12; d:12; m:8; n:12; u:12; v:8; +C[n,d,a,c,b,m] = A[m,v,n,u] * B[v,b,a,d,c,u] & a:12; c:12; b:12; d:12; m:24; n:8; u:12; v:8; +C[a,b,m,c] = A[a,u,v,b,w,c] * B[m,v,u,w] & a:8; c:12; b:12; m:1536; u:12; w:12; v:12; +C[b,c,a,m] = A[a,u,v,b,w,c] * B[m,v,u,w] & a:8; c:12; b:8; m:1536; u:12; w:12; v:12; +C[c,b,a,m] = A[a,u,v,b,w,c] * B[v,w,m,u] & a:8; c:8; b:12; m:1500; u:12; w:12; v:8; +C[m,c,b,a] = A[v,w,m,u] * B[a,u,v,b,w,c] & a:8; c:12; b:12; m:1536; u:12; w:12; v:8; +C[c,m,a,n,b] = A[a,u,w,v,c,b] * B[v,u,m,w,n] & a:8; c:8; b:12; m:40; n:40; u:12; w:12; v:8; +C[m,a,b,c,n] = A[v,u,m,w,n] * B[a,u,w,v,c,b] & a:8; c:12; b:12; m:40; n:36; u:12; w:12; v:8; +C[b,m,c,n,a] = A[a,u,w,v,c,b] * B[n,m,w,u,v] & a:8; c:12; b:8; m:40; n:40; u:12; w:12; v:12; +C[b,m,a,c,n] = A[a,u,w,v,c,b] * B[n,m,w,u,v] & a:8; c:12; b:8; m:40; n:40; u:12; w:12; v:12; +C[n,o,b,a,c,m] = A[v,u,n,w,o,m] * B[b,v,c,w,a,u] & a:12; c:12; b:8; m:12; o:12; n:8; u:12; w:12; v:8; +C[a,b,m,n,o,c] = A[b,v,c,w,a,u] * B[v,u,n,w,o,m] & a:8; c:12; b:8; m:12; o:12; n:12; u:12; w:12; v:8; +C[c,b,a,n,o,m] = A[b,v,c,w,a,u] * B[v,n,m,w,u,o] & a:12; c:8; b:8; m:12; o:12; n:12; u:12; w:12; v:8; +C[c,a,m,n,o,b] = A[b,v,c,w,a,u] * B[v,n,m,w,u,o] & a:12; c:8; b:8; m:12; o:12; n:12; u:12; w:12; v:8; +C[a,m,n] = A[u,a] * B[n,u,m] & a:144; m:160; u:160; n:160; +C[m,n,a] = A[n,u,m] * B[u,a] & a:160; m:144; u:160; n:160; +C[n,a,m] = A[u,n,m] * B[u,a] & a:160; m:162; u:160; n:160; +C[a,m,n] = A[u,a] * B[u,n,m] & a:144; m:160; u:160; n:160; +C[a,m,o,n] = A[a,u] * B[u,n,o,m] & a:48; m:48; u:48; o:45; n:45; +C[m,n,a,o] = A[u,n,o,m] * B[a,u] & a:40; m:48; u:48; o:45; n:45; +C[o,n,m,a] = A[m,o,u,n] * B[a,u] & a:40; u:45; m:48; o:48; n:45; +C[n,o,m,a] = A[m,o,u,n] * B[a,u] & a:40; u:45; m:48; o:45; n:48; +C[a,o,n,p,m] = A[u,a] * B[n,u,p,o,m] & a:24; m:20; o:20; n:24; p:20; u:24; +C[o,n,m,a,p] = A[n,u,p,o,m] * B[u,a] & a:20; m:20; o:24; n:24; p:20; u:24; +C[p,o,n,m,a] = A[u,o,m,n,p] * B[u,a] & a:20; m:20; o:20; n:20; p:24; u:24; +C[a,m,p,n,o] = A[u,a] * B[u,o,m,n,p] & a:24; m:20; o:20; n:20; p:20; u:24; +C[p,q,a,n,m,o] = A[u,m,n,o,q,p] * B[a,u] & a:8; m:12; o:12; n:12; q:12; p:16; u:16; +C[m,p,o,n,a,q] = A[u,m,n,o,q,p] * B[a,u] & a:8; m:16; o:12; n:12; q:12; p:12; u:16; +C[q,n,o,p,a,m] = A[u,m,q,o,n,p] * B[a,u] & a:8; m:12; o:12; n:12; q:16; p:12; u:16; +C[m,o,p,q,n,a] = A[u,m,q,o,n,p] * B[a,u] & a:8; m:16; o:12; n:12; q:12; p:12; u:16; +C[b,m,a] = A[b,a,u] * B[m,u] & a:162; m:160; b:160; u:160; +C[m,a,b] = A[m,u] * B[b,a,u] & a:160; m:144; b:160; u:160; +C[b,m,a] = A[b,a,u] * B[u,m] & a:162; m:160; b:160; u:160; +C[m,a,b] = A[u,m] * B[b,a,u] & a:160; m:144; b:160; u:160; +C[a,m,b,n] = A[b,u,a] * B[u,m,n] & a:48; u:1944; b:48; m:48; n:45; +C[a,n,m,b] = A[b,u,a] * B[u,m,n] & a:48; u:1944; b:48; m:48; n:45; +C[a,m,n,b] = A[b,u,a] * B[n,m,u] & a:48; u:1944; b:48; m:45; n:48; +C[b,m,a,n] = A[b,u,a] * B[n,m,u] & a:45; u:1944; b:48; m:45; n:48; +C[m,a] = A[m,v,u] * B[a,u,v] & a:160; u:160; m:144; v:160; +C[a,m] = A[a,u,v] * B[m,v,u] & a:144; m:160; u:160; v:160; +C[m,a] = A[v,m,u] * B[a,u,v] & a:160; u:160; m:144; v:160; +C[a,m] = A[a,u,v] * B[v,m,u] & a:144; m:160; u:160; v:160; +C[a,n,o,m,b] = A[u,a,b] * B[m,o,n,u] & a:24; b:20; m:24; o:20; n:20; u:432; +C[o,m,b,n,a] = A[m,o,n,u] * B[u,a,b] & a:20; b:20; m:24; o:24; n:20; u:432; +C[b,m,a,o,n] = A[u,a,b] * B[n,m,u,o] & a:20; b:24; m:20; o:20; n:24; u:432; +C[n,o,a,m,b] = A[n,m,u,o] * B[u,a,b] & a:20; b:20; m:20; o:20; n:24; u:432; +C[n,a,m] = A[n,u,v,m] * B[v,u,a] & a:1944; m:45; v:48; u:45; n:48; +C[a,n,m] = A[v,u,a] * B[n,u,v,m] & a:1944; m:45; v:48; u:45; n:48; +C[m,n,a] = A[u,n,m,v] * B[v,u,a] & a:1944; m:48; v:48; u:48; n:45; +C[m,a,n] = A[u,n,m,v] * B[v,u,a] & a:1944; m:48; v:48; u:48; n:45; +C[o,m,n,a,p,b] = A[u,p,m,o,n] * B[u,b,a] & a:12; b:12; m:12; o:16; n:12; p:12; u:144; +C[a,p,n,o,b,m] = A[u,b,a] * B[u,p,m,o,n] & a:16; b:12; m:12; o:12; n:12; p:12; u:144; +C[o,p,a,m,n,b] = A[u,m,o,n,p] * B[u,b,a] & a:12; b:12; m:12; o:16; n:12; p:12; u:144; +C[m,n,a,o,b,p] = A[u,m,o,n,p] * B[u,b,a] & a:12; b:12; m:16; o:12; n:12; p:12; u:144; +C[a,m,o,n] = A[a,u,v] * B[u,o,v,n,m] & a:432; m:20; o:20; n:20; u:24; v:20; +C[m,n,o,a] = A[u,o,v,n,m] * B[a,u,v] & a:432; m:24; o:20; n:20; u:24; v:20; +C[o,a,m,n] = A[n,u,m,o,v] * B[a,u,v] & a:432; m:20; o:24; n:24; u:20; v:20; +C[n,a,o,m] = A[n,u,m,o,v] * B[a,u,v] & a:432; m:20; o:20; n:24; u:20; v:20; +C[p,o,a,n,m] = A[v,u,n,o,m,p] * B[a,u,v] & a:144; m:12; o:12; n:12; p:16; u:12; v:16; +C[o,p,m,n,a] = A[v,u,n,o,m,p] * B[a,u,v] & a:144; m:12; o:16; n:12; p:12; u:12; v:16; +C[p,m,n,o,a] = A[v,o,n,p,u,m] * B[a,u,v] & a:144; m:12; o:12; n:12; p:16; u:12; v:16; +C[a,n,o,m,p] = A[a,u,v] * B[v,o,n,p,u,m] & a:144; m:12; o:12; n:12; p:12; u:12; v:16; +C[b,c,a,m] = A[c,b,u,a] * B[u,m] & a:45; m:48; c:48; b:48; u:48; +C[a,b,c,m] = A[c,b,u,a] * B[u,m] & a:48; m:48; c:48; b:45; u:48; +C[c,m,a,b] = A[c,b,u,a] * B[m,u] & a:45; m:40; c:48; b:45; u:45; +C[m,b,a,c] = A[m,u] * B[c,b,u,a] & a:45; m:48; c:48; b:45; u:45; +C[b,a,n,c,m] = A[a,u,c,b] * B[m,n,u] & a:24; c:20; b:24; m:24; n:20; u:432; +C[a,n,c,m,b] = A[a,u,c,b] * B[m,n,u] & a:24; c:20; b:20; m:24; n:20; u:432; +C[n,m,c,a,b] = A[n,u,m] * B[a,u,c,b] & a:24; c:20; b:20; m:20; n:24; u:432; +C[n,b,a,m,c] = A[n,u,m] * B[a,u,c,b] & a:24; c:20; b:20; m:20; n:24; u:432; +C[a,b,m] = A[v,a,u,b] * B[u,v,m] & a:48; m:1944; b:45; u:48; v:48; +C[b,a,m] = A[v,a,u,b] * B[u,v,m] & a:45; m:1944; b:48; u:48; v:48; +C[a,b,m] = A[v,a,u,b] * B[m,u,v] & a:48; m:1944; b:45; u:45; v:48; +C[b,a,m] = A[v,a,u,b] * B[m,u,v] & a:45; m:1944; b:48; u:45; v:48; +C[b,a,o,c,m,n] = A[c,b,u,a] * B[n,m,u,o] & a:12; c:16; b:16; m:12; o:12; n:16; u:1800; +C[n,b,c,a,m,o] = A[n,m,u,o] * B[c,b,u,a] & a:12; c:16; b:12; m:12; o:12; n:16; u:1800; +C[b,c,n,a,o,m] = A[c,b,u,a] * B[u,m,n,o] & a:12; c:16; b:16; m:12; o:12; n:12; u:1800; +C[a,o,n,m,b,c] = A[c,b,u,a] * B[u,m,n,o] & a:16; c:16; b:12; m:12; o:12; n:12; u:1800; +C[b,n,a,m] = A[u,v,a,b] * B[n,v,m,u] & a:45; b:48; m:45; n:48; u:48; v:45; +C[a,m,n,b] = A[u,v,a,b] * B[n,v,m,u] & a:48; b:45; m:45; n:48; u:48; v:45; +C[a,n,m,b] = A[u,v,a,b] * B[m,n,v,u] & a:48; b:45; m:48; n:45; u:48; v:45; +C[b,n,m,a] = A[u,v,a,b] * B[m,n,v,u] & a:45; b:48; m:48; n:45; u:48; v:45; +C[m,a] = A[u,v,w,m] * B[u,a,w,v] & a:48; m:48; u:48; w:45; v:45; +C[a,m] = A[u,a,w,v] * B[u,v,w,m] & a:48; m:48; u:48; w:45; v:45; +C[m,a] = A[u,w,m,v] * B[u,a,w,v] & a:48; m:48; u:48; w:45; v:45; +C[a,m] = A[u,a,w,v] * B[u,w,m,v] & a:48; m:48; u:48; w:45; v:45; +C[n,a,b,m,o] = A[u,v,m,n,o] * B[v,a,u,b] & a:20; b:20; m:20; o:20; n:24; u:24; v:24; +C[n,b,o,a,m] = A[u,v,m,n,o] * B[v,a,u,b] & a:20; b:20; m:20; o:20; n:24; u:24; v:24; +C[n,o,b,a,m] = A[m,n,u,o,v] * B[v,a,u,b] & a:20; b:20; m:24; o:20; n:24; u:20; v:24; +C[m,b,n,a,o] = A[m,n,u,o,v] * B[v,a,u,b] & a:20; b:20; m:24; o:20; n:20; u:20; v:24; +C[n,m,a] = A[v,w,m,n,u] * B[w,v,a,u] & a:432; m:20; n:24; u:20; w:24; v:24; +C[n,a,m] = A[v,w,m,n,u] * B[w,v,a,u] & a:432; m:20; n:24; u:20; w:24; v:24; +C[m,n,a] = A[w,m,v,u,n] * B[w,v,a,u] & a:432; m:24; n:20; u:20; w:24; v:20; +C[n,m,a] = A[w,m,v,u,n] * B[w,v,a,u] & a:432; m:20; n:24; u:20; w:24; v:20; +C[m,a,n,b,o,p] = A[p,v,n,u,o,m] * B[u,b,v,a] & a:12; b:12; m:16; o:12; n:12; p:16; u:16; v:12; +C[b,o,a,n,p,m] = A[u,b,v,a] * B[p,v,n,u,o,m] & a:12; b:8; m:12; o:12; n:12; p:16; u:16; v:12; +C[o,b,n,p,a,m] = A[p,u,n,v,o,m] * B[u,b,v,a] & a:12; b:12; m:12; o:16; n:12; p:16; u:16; v:12; +C[a,p,m,n,b,o] = A[u,b,v,a] * B[p,u,n,v,o,m] & a:8; b:12; m:12; o:12; n:12; p:16; u:16; v:12; +C[m,n,o,a] = A[v,o,m,w,n,u] * B[w,a,v,u] & a:1800; m:16; o:12; n:12; u:12; w:16; v:16; +C[a,n,m,o] = A[w,a,v,u] * B[v,o,m,w,n,u] & a:1800; m:12; o:12; n:12; u:12; w:16; v:16; +C[o,a,n,m] = A[m,u,o,n,v,w] * B[w,a,v,u] & a:1800; m:16; o:16; n:12; u:12; w:16; v:12; +C[n,m,a,o] = A[m,u,o,n,v,w] * B[w,a,v,u] & a:1800; m:16; o:12; n:16; u:12; w:16; v:12; +C[m,d,b,a,c] = A[m,u] * B[b,u,d,c,a] & a:20; c:20; b:24; d:20; m:24; u:20; +C[d,a,b,c,m] = A[b,u,d,c,a] * B[m,u] & a:20; c:20; b:24; d:24; m:24; u:20; +C[b,m,d,a,c] = A[b,u,d,c,a] * B[u,m] & a:20; c:20; b:24; d:20; m:20; u:24; +C[d,b,a,m,c] = A[b,u,d,c,a] * B[u,m] & a:20; c:20; b:24; d:24; m:20; u:24; +C[c,a,m,d,n,b] = A[c,u,b,a,d] * B[u,n,m] & a:12; c:16; b:12; d:12; m:12; n:12; u:144; +C[n,a,c,d,m,b] = A[u,n,m] * B[c,u,b,a,d] & a:12; c:16; b:12; d:12; m:12; n:16; u:144; +C[c,d,m,b,n,a] = A[c,u,b,a,d] * B[u,m,n] & a:12; c:16; b:12; d:12; m:12; n:12; u:144; +C[a,m,b,d,c,n] = A[c,u,b,a,d] * B[u,m,n] & a:16; c:16; b:12; d:12; m:12; n:12; u:144; +C[b,a,m,c] = A[u,a,c,b,v] * B[v,u,m] & a:20; c:20; b:24; m:432; u:24; v:24; +C[b,m,c,a] = A[u,a,c,b,v] * B[v,u,m] & a:20; c:20; b:24; m:432; u:24; v:24; +C[c,a,b,m] = A[u,a,c,b,v] * B[m,u,v] & a:20; c:24; b:20; m:432; u:24; v:20; +C[b,c,a,m] = A[u,a,c,b,v] * B[m,u,v] & a:20; c:20; b:24; m:432; u:24; v:20; +C[m,n,a,c,b] = A[n,v,m,u] * B[a,b,v,u,c] & a:24; c:20; b:20; m:24; n:24; u:20; v:20; +C[n,a,m,c,b] = A[n,v,m,u] * B[a,b,v,u,c] & a:24; c:20; b:20; m:20; n:24; u:20; v:20; +C[m,c,n,b,a] = A[v,m,n,u] * B[a,b,v,u,c] & a:24; c:20; b:20; m:24; n:20; u:20; v:24; +C[c,b,m,a,n] = A[a,b,v,u,c] * B[v,m,n,u] & a:24; c:24; b:20; m:20; n:20; u:20; v:24; +C[a,m,b] = A[a,v,u,b,w] * B[m,u,w,v] & a:24; b:20; m:432; u:20; w:20; v:20; +C[m,a,b] = A[m,u,w,v] * B[a,v,u,b,w] & a:24; b:20; m:432; u:20; w:20; v:20; +C[a,b,m] = A[a,v,u,b,w] * B[u,m,v,w] & a:24; b:20; m:432; u:24; w:20; v:20; +C[m,a,b] = A[u,m,v,w] * B[a,v,u,b,w] & a:24; b:20; m:432; u:24; w:20; v:20; +C[n,b,o,a,m,c] = A[m,u,o,n,v] * B[a,v,b,u,c] & a:16; c:12; b:12; m:16; o:12; n:16; u:45; v:45; +C[o,c,a,b,n,m] = A[m,u,o,n,v] * B[a,v,b,u,c] & a:16; c:12; b:12; m:16; o:16; n:12; u:45; v:45; +C[b,c,n,a,o,m] = A[a,v,b,u,c] * B[v,m,u,o,n] & a:16; c:12; b:16; m:12; o:12; n:12; u:45; v:40; +C[a,o,c,m,n,b] = A[a,v,b,u,c] * B[v,m,u,o,n] & a:16; c:12; b:12; m:12; o:12; n:12; u:45; v:40; +C[n,a,b,m] = A[u,w,n,m,v] * B[a,w,u,v,b] & a:24; b:20; m:20; n:24; u:24; w:20; v:20; +C[b,a,m,n] = A[a,w,u,v,b] * B[u,w,n,m,v] & a:24; b:24; m:20; n:20; u:24; w:20; v:20; +C[a,n,b,m] = A[a,w,u,v,b] * B[w,m,v,n,u] & a:24; b:20; m:20; n:20; u:20; w:24; v:20; +C[n,b,a,m] = A[w,m,v,n,u] * B[a,w,u,v,b] & a:24; b:20; m:20; n:24; u:20; w:24; v:20; +C[m,n,o,b,a] = A[w,n,m,v,o,u] * B[v,u,a,b,w] & a:48; b:45; m:16; o:12; n:12; u:12; w:16; v:16; +C[a,m,o,n,b] = A[v,u,a,b,w] * B[w,n,m,v,o,u] & a:40; b:45; m:12; o:12; n:12; u:12; w:16; v:16; +C[o,b,m,a,n] = A[m,o,n,u,v,w] * B[v,u,a,b,w] & a:48; b:45; m:16; o:16; n:12; u:12; w:12; v:16; +C[m,b,n,o,a] = A[m,o,n,u,v,w] * B[v,u,a,b,w] & a:48; b:45; m:16; o:12; n:12; u:12; w:12; v:16; +C[m,b,c,d,e,a] = A[u,m] * B[b,u,d,a,e,c] & a:12; c:12; b:16; e:12; d:12; m:24; u:16; +C[m,b,a,c,e,d] = A[u,m] * B[b,u,d,a,e,c] & a:12; c:12; b:16; e:12; d:12; m:24; u:16; +C[e,b,d,c,m,a] = A[b,u,d,a,e,c] * B[m,u] & a:12; c:12; b:16; e:16; d:12; m:8; u:12; +C[m,c,a,b,e,d] = A[m,u] * B[b,u,d,a,e,c] & a:12; c:12; b:16; e:12; d:12; m:24; u:12; +C[d,c,a,m,b] = A[u,b,a,c,v,d] * B[u,v,m] & a:12; c:12; b:12; d:16; m:128; u:16; v:12; +C[m,b,c,a,d] = A[u,v,m] * B[u,b,a,c,v,d] & a:12; c:12; b:12; d:12; m:144; u:16; v:12; +C[a,m,b,d,c] = A[u,b,a,c,v,d] * B[m,v,u] & a:16; c:12; b:12; d:12; m:144; u:16; v:12; +C[a,d,b,m,c] = A[u,b,a,c,v,d] * B[m,v,u] & a:16; c:12; b:12; d:12; m:144; u:16; v:12; +C[c,b,a,m,d,n] = A[u,b,v,c,d,a] * B[m,u,v,n] & a:12; c:16; b:12; d:12; m:8; n:12; u:16; v:12; +C[a,c,m,n,d,b] = A[u,b,v,c,d,a] * B[m,u,v,n] & a:16; c:12; b:12; d:12; m:8; n:12; u:16; v:12; +C[b,d,m,a,c,n] = A[u,b,v,c,d,a] * B[v,n,m,u] & a:12; c:12; b:16; d:12; m:12; n:12; u:16; v:16; +C[d,m,a,b,n,c] = A[u,b,v,c,d,a] * B[v,n,m,u] & a:12; c:12; b:12; d:16; m:12; n:12; u:16; v:16; +C[m,c,a,b] = A[v,m,u,w] * B[a,c,v,w,u,b] & a:16; c:12; b:12; m:1800; u:12; w:12; v:16; +C[a,m,c,b] = A[a,c,v,w,u,b] * B[v,m,u,w] & a:16; c:12; b:12; m:1800; u:12; w:12; v:16; +C[c,m,a,b] = A[a,c,v,w,u,b] * B[w,m,u,v] & a:16; c:16; b:12; m:1800; u:12; w:16; v:12; +C[c,a,m,b] = A[a,c,v,w,u,b] * B[w,m,u,v] & a:16; c:16; b:12; m:1800; u:12; w:16; v:12; +C[c,n,a,m,b] = A[b,a,c,w,u,v] * B[w,v,m,n,u] & a:12; c:16; b:16; m:48; n:45; u:12; w:16; v:12; +C[m,b,n,c,a] = A[w,v,m,n,u] * B[b,a,c,w,u,v] & a:12; c:12; b:16; m:40; n:45; u:12; w:16; v:12; +C[a,m,c,n,b] = A[b,a,c,w,u,v] * B[m,w,v,n,u] & a:16; c:12; b:16; m:40; n:45; u:12; w:12; v:12; +C[n,c,a,b,m] = A[m,w,v,n,u] * B[b,a,c,w,u,v] & a:12; c:12; b:16; m:48; n:40; u:12; w:12; v:12; +C[c,o,n,b,m,a] = A[a,v,u,c,w,b] * B[m,u,n,w,o,v] & a:16; c:16; b:12; m:16; o:12; n:12; u:12; w:12; v:12; +C[a,m,b,c,o,n] = A[a,v,u,c,w,b] * B[m,u,n,w,o,v] & a:16; c:12; b:12; m:16; o:12; n:12; u:12; w:12; v:12; +C[n,m,c,o,a,b] = A[o,w,u,n,v,m] * B[a,v,u,c,w,b] & a:16; c:12; b:12; m:12; o:16; n:16; u:12; w:12; v:12; +C[n,o,c,a,m,b] = A[o,w,u,n,v,m] * B[a,v,u,c,w,b] & a:16; c:12; b:12; m:12; o:16; n:16; u:12; w:12; v:12; +C[a,n,m] = A[a,u] * B[u,m,n] & a:192; m:192; u:192; n:192; +C[m,a,n] = A[u,m,n] * B[a,u] & a:192; m:192; u:192; n:192; +C[n,a,m] = A[m,n,u] * B[a,u] & a:192; u:192; m:192; n:192; +C[m,a,n] = A[m,n,u] * B[a,u] & a:192; u:192; m:192; n:192; +C[a,m,n,o] = A[u,a] * B[m,u,o,n] & a:48; u:48; m:48; o:50; n:50; +C[a,o,m,n] = A[u,a] * B[m,u,o,n] & a:48; u:48; m:48; o:50; n:50; +C[a,o,m,n] = A[u,a] * B[n,o,u,m] & a:48; m:50; u:48; o:50; n:48; +C[a,m,o,n] = A[u,a] * B[n,o,u,m] & a:48; m:50; u:48; o:50; n:48; +C[p,m,o,a,n] = A[o,u,m,n,p] * B[a,u] & a:16; m:24; o:24; n:24; p:24; u:24; +C[a,p,n,o,m] = A[a,u] * B[o,u,m,n,p] & a:24; m:24; o:24; n:24; p:24; u:24; +C[n,p,m,a,o] = A[n,m,u,o,p] * B[a,u] & a:16; m:24; o:24; n:24; p:24; u:24; +C[n,o,m,p,a] = A[n,m,u,o,p] * B[a,u] & a:16; m:24; o:24; n:24; p:24; u:24; +C[o,q,p,m,a,n] = A[m,u,o,p,q,n] * B[a,u] & a:16; m:16; o:16; n:15; q:15; p:15; u:15; +C[m,p,o,n,a,q] = A[m,u,o,p,q,n] * B[a,u] & a:16; m:16; o:15; n:15; q:15; p:15; u:15; +C[q,p,m,a,n,o] = A[q,o,m,p,u,n] * B[a,u] & a:16; m:15; o:15; n:15; q:16; p:15; u:15; +C[m,a,q,n,o,p] = A[q,o,m,p,u,n] * B[a,u] & a:16; m:16; o:15; n:15; q:16; p:15; u:15; +C[b,m,a] = A[u,a,b] * B[m,u] & a:192; m:192; b:192; u:192; +C[m,b,a] = A[m,u] * B[u,a,b] & a:192; m:192; b:192; u:192; +C[b,m,a] = A[u,a,b] * B[u,m] & a:192; m:180; b:192; u:192; +C[a,m,b] = A[u,a,b] * B[u,m] & a:192; m:180; b:192; u:192; +C[a,b,m,n] = A[a,u,b] * B[n,m,u] & a:48; u:2500; b:50; m:50; n:48; +C[a,m,n,b] = A[a,u,b] * B[n,m,u] & a:48; u:2500; b:50; m:50; n:48; +C[n,b,a,m] = A[m,n,u] * B[a,u,b] & a:48; u:2500; b:50; m:48; n:48; +C[n,m,b,a] = A[m,n,u] * B[a,u,b] & a:48; u:2500; b:50; m:48; n:48; +C[a,m] = A[a,u,v] * B[v,u,m] & a:192; m:180; u:192; v:192; +C[m,a] = A[v,u,m] * B[a,u,v] & a:192; m:192; u:192; v:192; +C[m,a] = A[m,v,u] * B[a,u,v] & a:192; u:192; m:192; v:192; +C[a,m] = A[a,u,v] * B[m,v,u] & a:192; m:192; u:192; v:192; +C[m,a,n,b,o] = A[m,o,n,u] * B[u,a,b] & a:24; b:24; m:24; o:24; n:24; u:480; +C[a,o,m,b,n] = A[u,a,b] * B[m,o,n,u] & a:24; b:24; m:24; o:24; n:24; u:480; +C[n,m,b,a,o] = A[n,u,o,m] * B[u,a,b] & a:24; b:24; m:24; o:24; n:24; u:480; +C[a,n,o,b,m] = A[u,a,b] * B[n,u,o,m] & a:24; b:24; m:24; o:24; n:24; u:480; +C[a,m,n] = A[u,a,v] * B[n,u,v,m] & a:2592; m:50; v:50; u:48; n:48; +C[m,a,n] = A[n,u,v,m] * B[u,a,v] & a:2500; m:48; v:50; u:48; n:48; +C[a,n,m] = A[u,a,v] * B[v,n,u,m] & a:2592; m:50; n:50; u:48; v:48; +C[a,m,n] = A[u,a,v] * B[v,n,u,m] & a:2592; m:50; n:50; u:48; v:48; +C[b,m,n,o,a,p] = A[a,b,u] * B[m,o,n,p,u] & a:24; b:16; m:16; o:15; n:15; p:15; u:162; +C[p,n,b,a,o,m] = A[m,o,n,p,u] * B[a,b,u] & a:16; b:15; m:16; o:15; n:15; p:16; u:162; +C[o,b,m,n,a,p] = A[u,n,m,o,p] * B[a,b,u] & a:16; b:15; m:15; o:16; n:15; p:15; u:160; +C[m,b,o,n,p,a] = A[u,n,m,o,p] * B[a,b,u] & a:16; b:15; m:16; o:15; n:15; p:15; u:160; +C[m,o,a,n] = A[m,v,n,o,u] * B[v,u,a] & a:480; m:24; o:24; n:24; u:24; v:24; +C[a,n,m,o] = A[v,u,a] * B[m,v,n,o,u] & a:480; m:24; o:24; n:24; u:24; v:24; +C[m,n,o,a] = A[n,v,m,u,o] * B[v,u,a] & a:480; m:24; o:24; n:24; u:24; v:24; +C[n,a,m,o] = A[n,v,m,u,o] * B[v,u,a] & a:480; m:24; o:24; n:24; u:24; v:24; +C[n,p,o,a,m] = A[o,n,m,p,v,u] * B[a,u,v] & a:160; m:15; o:16; n:16; p:15; u:15; v:15; +C[o,a,n,p,m] = A[o,n,m,p,v,u] * B[a,u,v] & a:160; m:15; o:16; n:15; p:15; u:15; v:15; +C[a,n,o,m,p] = A[a,u,v] * B[m,o,u,n,p,v] & a:144; m:16; o:15; n:15; p:15; u:15; v:15; +C[p,a,m,n,o] = A[m,o,u,n,p,v] * B[a,u,v] & a:160; m:16; o:15; n:15; p:16; u:15; v:15; +C[m,b,c,a] = A[u,m] * B[c,b,a,u] & a:50; m:48; c:48; b:50; u:48; +C[m,c,a,b] = A[u,m] * B[c,b,a,u] & a:50; m:48; c:48; b:50; u:48; +C[c,a,b,m] = A[c,b,a,u] * B[m,u] & a:50; m:48; c:48; b:50; u:50; +C[b,m,a,c] = A[c,b,a,u] * B[m,u] & a:50; m:48; c:48; b:48; u:50; +C[m,a,b,n,c] = A[n,m,u] * B[a,u,c,b] & a:24; c:24; b:24; m:24; n:24; u:480; +C[m,b,n,a,c] = A[n,m,u] * B[a,u,c,b] & a:24; c:24; b:24; m:24; n:24; u:480; +C[a,c,m,b,n] = A[a,u,c,b] * B[u,m,n] & a:24; c:24; b:24; m:24; n:24; u:480; +C[m,c,a,b,n] = A[u,m,n] * B[a,u,c,b] & a:24; c:24; b:24; m:24; n:24; u:480; +C[a,b,m] = A[a,u,b,v] * B[m,v,u] & a:48; m:2560; b:50; u:50; v:50; +C[b,m,a] = A[a,u,b,v] * B[m,v,u] & a:48; m:2560; b:48; u:50; v:50; +C[b,a,m] = A[a,u,b,v] * B[v,m,u] & a:48; m:2500; b:48; u:50; v:48; +C[a,m,b] = A[a,u,b,v] * B[v,m,u] & a:48; m:2500; b:50; u:50; v:48; +C[m,o,b,a,n,c] = A[u,m,n,o] * B[a,c,b,u] & a:16; c:15; b:15; m:16; o:15; n:15; u:2400; +C[o,m,b,n,c,a] = A[u,m,n,o] * B[a,c,b,u] & a:16; c:15; b:15; m:15; o:16; n:15; u:2400; +C[o,c,a,n,b,m] = A[u,m,o,n] * B[a,c,b,u] & a:16; c:15; b:15; m:15; o:16; n:15; u:2400; +C[a,m,b,n,c,o] = A[a,c,b,u] * B[u,m,o,n] & a:16; c:15; b:15; m:16; o:15; n:15; u:2400; +C[a,b,m,n] = A[a,v,u,b] * B[u,n,v,m] & a:48; b:50; m:50; n:50; u:48; v:50; +C[n,a,b,m] = A[u,n,v,m] * B[a,v,u,b] & a:48; b:50; m:50; n:48; u:48; v:50; +C[m,n,a,b] = A[n,u,v,m] * B[a,v,u,b] & a:48; b:50; m:48; n:48; u:50; v:50; +C[a,b,m,n] = A[a,v,u,b] * B[n,u,v,m] & a:48; b:50; m:50; n:48; u:50; v:50; +C[a,m] = A[v,w,u,a] * B[m,v,u,w] & a:48; m:48; u:50; w:50; v:48; +C[a,m] = A[v,w,u,a] * B[m,u,w,v] & a:48; m:48; u:50; w:50; v:48; +C[a,m] = A[v,w,u,a] * B[m,w,v,u] & a:48; m:48; u:50; w:50; v:48; +C[a,m] = A[u,v,w,a] * B[m,v,u,w] & a:48; m:48; u:48; w:50; v:50; +C[a,m] = A[u,v,w,a] * B[m,u,w,v] & a:48; m:48; u:48; w:50; v:50; +C[a,m] = A[u,v,w,a] * B[m,w,v,u] & a:48; m:48; u:48; w:50; v:50; +C[a,n,o,m,b] = A[b,v,u,a] * B[n,u,m,o,v] & a:24; b:24; m:24; o:24; n:24; u:24; v:24; +C[b,o,m,n,a] = A[b,v,u,a] * B[n,u,m,o,v] & a:20; b:24; m:24; o:24; n:24; u:24; v:24; +C[n,m,b,a,o] = A[o,v,m,n,u] * B[b,v,u,a] & a:20; b:24; m:24; o:24; n:24; u:24; v:24; +C[n,a,o,b,m] = A[o,v,m,n,u] * B[b,v,u,a] & a:20; b:24; m:24; o:24; n:24; u:24; v:24; +C[a,m,n] = A[a,w,v,u] * B[w,m,u,v,n] & a:480; m:24; n:24; u:24; w:24; v:24; +C[m,a,n] = A[w,m,u,v,n] * B[a,w,v,u] & a:480; m:24; n:24; u:24; w:24; v:24; +C[m,a,n] = A[u,n,w,m,v] * B[a,w,v,u] & a:480; m:24; n:24; u:24; w:24; v:24; +C[n,m,a] = A[u,n,w,m,v] * B[a,w,v,u] & a:480; m:24; n:24; u:24; w:24; v:24; +C[n,a,o,b,p,m] = A[p,n,v,o,m,u] * B[a,u,b,v] & a:16; b:15; m:15; o:15; n:16; p:16; u:15; v:15; +C[b,a,m,n,p,o] = A[a,u,b,v] * B[p,n,v,o,m,u] & a:24; b:16; m:15; o:15; n:15; p:16; u:15; v:15; +C[p,o,m,a,b,n] = A[n,v,u,o,p,m] * B[a,u,b,v] & a:16; b:15; m:15; o:15; n:16; p:16; u:15; v:15; +C[p,o,b,m,n,a] = A[n,v,u,o,p,m] * B[a,u,b,v] & a:16; b:15; m:15; o:15; n:16; p:16; u:15; v:15; +C[a,o,m,n] = A[v,w,u,a] * B[n,m,u,w,o,v] & a:2400; m:15; o:15; n:16; u:15; w:15; v:16; +C[o,n,a,m] = A[n,m,u,w,o,v] * B[v,w,u,a] & a:2400; m:15; o:16; n:16; u:15; w:15; v:16; +C[a,m,o,n] = A[v,w,u,a] * B[u,v,n,o,m,w] & a:2400; m:16; o:15; n:15; u:16; w:15; v:16; +C[m,n,a,o] = A[u,v,n,o,m,w] * B[v,w,u,a] & a:2400; m:16; o:15; n:15; u:16; w:15; v:16; +C[d,m,a,b,c] = A[b,u,d,a,c] * B[m,u] & a:24; c:24; b:24; d:24; m:16; u:24; +C[a,m,c,b,d] = A[b,u,d,a,c] * B[m,u] & a:24; c:24; b:24; d:24; m:16; u:24; +C[a,m,d,b,c] = A[b,u,d,a,c] * B[u,m] & a:24; c:24; b:24; d:24; m:20; u:24; +C[a,m,b,c,d] = A[b,u,d,a,c] * B[u,m] & a:24; c:24; b:24; d:24; m:20; u:24; +C[b,m,c,a,n,d] = A[b,u,d,a,c] * B[m,u,n] & a:15; c:15; b:16; d:15; m:16; n:15; u:162; +C[b,c,a,n,d,m] = A[b,u,d,a,c] * B[m,u,n] & a:15; c:15; b:16; d:15; m:16; n:15; u:162; +C[b,m,c,d,n,a] = A[b,u,d,a,c] * B[m,n,u] & a:15; c:15; b:16; d:15; m:16; n:15; u:162; +C[n,c,d,m,a,b] = A[m,n,u] * B[b,u,d,a,c] & a:15; c:15; b:16; d:15; m:24; n:16; u:162; +C[a,b,c,m] = A[c,b,v,a,u] * B[u,v,m] & a:24; c:24; b:24; m:480; u:24; v:24; +C[c,m,b,a] = A[c,b,v,a,u] * B[u,v,m] & a:24; c:24; b:24; m:480; u:24; v:24; +C[b,m,c,a] = A[c,b,v,a,u] * B[v,m,u] & a:24; c:24; b:24; m:480; u:24; v:24; +C[b,a,c,m] = A[c,b,v,a,u] * B[v,m,u] & a:24; c:24; b:24; m:480; u:24; v:24; +C[n,a,c,m,b] = A[v,n,m,u] * B[v,c,a,u,b] & a:24; c:24; b:24; m:20; n:24; u:24; v:24; +C[m,a,c,n,b] = A[v,n,m,u] * B[v,c,a,u,b] & a:24; c:24; b:24; m:24; n:20; u:24; v:24; +C[n,a,c,m,b] = A[n,u,m,v] * B[v,c,a,u,b] & a:24; c:24; b:24; m:20; n:24; u:24; v:24; +C[a,c,n,b,m] = A[v,c,a,u,b] * B[n,u,m,v] & a:24; c:24; b:24; m:20; n:24; u:24; v:24; +C[b,a,m] = A[a,b,v,u,w] * B[v,w,m,u] & a:24; b:24; m:480; u:24; w:24; v:24; +C[b,m,a] = A[a,b,v,u,w] * B[v,w,m,u] & a:24; b:24; m:480; u:24; w:24; v:24; +C[b,m,a] = A[a,b,v,u,w] * B[v,m,w,u] & a:24; b:24; m:480; u:24; w:24; v:24; +C[m,b,a] = A[v,m,w,u] * B[a,b,v,u,w] & a:24; b:24; m:480; u:24; w:24; v:24; +C[c,a,n,b,o,m] = A[v,u,b,a,c] * B[o,v,m,n,u] & a:15; c:16; b:15; m:15; o:16; n:15; u:48; v:48; +C[n,a,m,o,b,c] = A[o,v,m,n,u] * B[v,u,b,a,c] & a:16; c:15; b:15; m:15; o:16; n:16; u:48; v:48; +C[c,b,m,o,a,n] = A[v,u,b,a,c] * B[u,o,n,v,m] & a:15; c:16; b:15; m:16; o:15; n:15; u:48; v:48; +C[b,m,o,a,n,c] = A[v,u,b,a,c] * B[u,o,n,v,m] & a:15; c:15; b:16; m:16; o:15; n:15; u:48; v:48; +C[n,a,m,b] = A[w,u,n,v,m] * B[v,w,a,u,b] & a:20; b:20; m:24; n:24; u:24; w:24; v:24; +C[b,a,n,m] = A[v,w,a,u,b] * B[w,u,n,v,m] & a:24; b:24; m:20; n:20; u:24; w:24; v:24; +C[n,b,a,m] = A[v,n,m,u,w] * B[v,w,a,u,b] & a:20; b:20; m:24; n:24; u:24; w:24; v:24; +C[m,n,b,a] = A[v,n,m,u,w] * B[v,w,a,u,b] & a:20; b:20; m:24; n:24; u:24; w:24; v:24; +C[n,b,a,o,m] = A[u,w,v,m,o,n] * B[v,b,w,u,a] & a:48; b:48; m:15; o:15; n:16; u:16; w:15; v:16; +C[b,m,a,n,o] = A[v,b,w,u,a] * B[u,w,v,m,o,n] & a:48; b:48; m:16; o:15; n:15; u:16; w:15; v:16; +C[m,n,o,a,b] = A[m,o,w,n,v,u] * B[v,b,w,u,a] & a:48; b:48; m:16; o:15; n:15; u:15; w:15; v:16; +C[n,m,b,o,a] = A[m,o,w,n,v,u] * B[v,b,w,u,a] & a:48; b:48; m:16; o:15; n:16; u:15; w:15; v:16; +C[a,d,b,e,m,c] = A[d,a,b,u,e,c] * B[u,m] & a:16; c:15; b:15; e:15; d:16; m:12; u:16; +C[d,c,m,e,b,a] = A[d,a,b,u,e,c] * B[u,m] & a:15; c:15; b:15; e:15; d:16; m:12; u:16; +C[c,m,e,a,d,b] = A[d,a,b,u,e,c] * B[m,u] & a:15; c:16; b:15; e:15; d:16; m:16; u:15; +C[b,m,c,a,e,d] = A[d,a,b,u,e,c] * B[m,u] & a:15; c:15; b:16; e:15; d:16; m:16; u:15; +C[m,d,a,c,b] = A[u,m,v] * B[b,c,v,u,a,d] & a:15; c:15; b:16; d:15; m:144; u:16; v:15; +C[m,d,b,a,c] = A[u,m,v] * B[b,c,v,u,a,d] & a:15; c:15; b:16; d:15; m:144; u:16; v:15; +C[a,c,m,d,b] = A[b,c,v,u,a,d] * B[m,u,v] & a:16; c:15; b:16; d:15; m:160; u:15; v:15; +C[b,d,m,c,a] = A[b,c,v,u,a,d] * B[m,u,v] & a:15; c:15; b:16; d:15; m:160; u:15; v:15; +C[m,c,a,n,b,d] = A[v,m,n,u] * B[b,a,c,d,v,u] & a:15; c:15; b:16; d:15; m:16; n:15; u:15; v:16; +C[d,c,a,n,b,m] = A[b,a,c,d,v,u] * B[v,m,n,u] & a:15; c:15; b:16; d:16; m:16; n:15; u:15; v:16; +C[c,a,m,b,d,n] = A[b,a,c,d,v,u] * B[m,n,u,v] & a:15; c:16; b:16; d:15; m:16; n:15; u:15; v:15; +C[a,d,n,b,m,c] = A[b,a,c,d,v,u] * B[m,n,u,v] & a:16; c:15; b:16; d:15; m:16; n:15; u:15; v:15; +C[b,a,c,m] = A[c,b,v,u,a,w] * B[w,m,u,v] & a:15; c:16; b:16; m:2400; u:15; w:16; v:15; +C[b,c,m,a] = A[c,b,v,u,a,w] * B[w,m,u,v] & a:15; c:16; b:16; m:2400; u:15; w:16; v:15; +C[m,a,b,c] = A[m,v,w,u] * B[c,b,v,u,a,w] & a:15; c:16; b:15; m:2400; u:15; w:15; v:15; +C[c,m,a,b] = A[c,b,v,u,a,w] * B[m,v,w,u] & a:15; c:16; b:15; m:2400; u:15; w:15; v:15; +C[b,n,a,c,m] = A[w,c,a,u,b,v] * B[n,u,m,v,w] & a:15; c:15; b:16; m:48; n:48; u:15; w:16; v:15; +C[b,n,a,m,c] = A[w,c,a,u,b,v] * B[n,u,m,v,w] & a:15; c:15; b:16; m:48; n:48; u:15; w:16; v:15; +C[n,c,m,b,a] = A[v,n,u,w,m] * B[w,c,a,u,b,v] & a:16; c:15; b:15; m:48; n:48; u:15; w:16; v:16; +C[m,c,n,b,a] = A[v,n,u,w,m] * B[w,c,a,u,b,v] & a:16; c:15; b:15; m:48; n:48; u:15; w:16; v:16; +C[a,n,m,o,c,b] = A[b,c,a,w,v,u] * B[m,n,o,u,v,w] & a:16; c:15; b:16; m:16; o:15; n:15; u:15; w:15; v:15; +C[a,n,c,m,o,b] = A[b,c,a,w,v,u] * B[m,n,o,u,v,w] & a:16; c:15; b:16; m:16; o:15; n:15; u:15; w:15; v:15; +C[b,m,o,a,n,c] = A[b,c,a,w,v,u] * B[u,o,n,m,v,w] & a:15; c:15; b:16; m:16; o:15; n:15; u:16; w:15; v:15; +C[n,c,o,m,a,b] = A[u,o,n,m,v,w] * B[b,c,a,w,v,u] & a:15; c:15; b:16; m:15; o:15; n:16; u:16; w:15; v:15; +C[a,n,m] = A[a,u] * B[u,m,n] & a:216; m:216; u:216; n:216; +C[n,m,a] = A[u,m,n] * B[a,u] & a:216; m:216; u:216; n:216; +C[n,m,a] = A[m,n,u] * B[a,u] & a:216; u:216; m:216; n:216; +C[n,a,m] = A[m,n,u] * B[a,u] & a:216; u:216; m:216; n:216; +C[a,n,m,o] = A[u,a] * B[m,u,n,o] & a:72; u:64; m:64; o:54; n:54; +C[a,o,n,m] = A[u,a] * B[m,u,n,o] & a:72; u:64; m:64; o:54; n:54; +C[a,n,o,m] = A[u,a] * B[o,n,m,u] & a:72; u:64; m:54; o:64; n:54; +C[a,m,n,o] = A[u,a] * B[o,n,m,u] & a:72; u:64; m:54; o:64; n:54; +C[p,n,m,a,o] = A[m,n,o,p,u] * B[a,u] & a:24; m:24; o:25; n:25; p:24; u:25; +C[p,m,o,n,a] = A[m,n,o,p,u] * B[a,u] & a:24; m:24; o:25; n:25; p:24; u:25; +C[m,a,o,p,n] = A[m,o,n,u,p] * B[a,u] & a:24; m:24; o:25; n:25; p:25; u:25; +C[a,o,p,n,m] = A[a,u] * B[m,o,n,u,p] & a:24; m:24; o:25; n:25; p:25; u:25; +C[m,q,n,o,a,p] = A[o,m,p,u,n,q] * B[u,a] & a:16; m:16; o:16; n:15; q:15; p:15; u:16; +C[q,p,m,n,a,o] = A[o,m,p,u,n,q] * B[u,a] & a:16; m:15; o:16; n:15; q:16; p:15; u:16; +C[o,n,q,p,m,a] = A[u,p,n,m,q,o] * B[u,a] & a:16; m:15; o:16; n:15; q:15; p:15; u:16; +C[m,n,o,p,q,a] = A[u,p,n,m,q,o] * B[u,a] & a:16; m:16; o:15; n:15; q:15; p:15; u:16; +C[b,a,m] = A[a,u,b] * B[u,m] & a:216; m:216; b:216; u:216; +C[a,m,b] = A[a,u,b] * B[u,m] & a:216; m:216; b:216; u:216; +C[b,m,a] = A[a,u,b] * B[m,u] & a:216; m:216; b:216; u:216; +C[m,b,a] = A[m,u] * B[a,u,b] & a:216; m:216; b:216; u:216; +C[b,m,n,a] = A[a,u,b] * B[n,u,m] & a:72; u:3240; b:64; m:54; n:64; +C[m,n,a,b] = A[n,u,m] * B[a,u,b] & a:64; u:3240; b:54; m:72; n:64; +C[n,b,a,m] = A[n,m,u] * B[a,u,b] & a:64; u:3240; b:54; m:54; n:64; +C[b,n,a,m] = A[a,u,b] * B[n,m,u] & a:72; u:3240; b:64; m:54; n:64; +C[m,a] = A[v,m,u] * B[v,u,a] & a:216; u:216; m:216; v:216; +C[a,m] = A[v,u,a] * B[v,m,u] & a:216; m:216; u:216; v:216; +C[a,m] = A[v,u,a] * B[u,v,m] & a:216; m:216; u:216; v:216; +C[m,a] = A[u,v,m] * B[v,u,a] & a:216; m:216; u:216; v:216; +C[m,a,o,b,n] = A[m,n,u,o] * B[b,u,a] & a:25; b:24; m:24; o:25; n:25; u:600; +C[n,b,o,m,a] = A[m,n,u,o] * B[b,u,a] & a:25; b:24; m:24; o:25; n:24; u:600; +C[o,a,m,b,n] = A[u,o,n,m] * B[b,u,a] & a:25; b:24; m:25; o:24; n:25; u:600; +C[n,b,o,m,a] = A[u,o,n,m] * B[b,u,a] & a:25; b:24; m:25; o:25; n:24; u:600; +C[m,a,n] = A[m,n,v,u] * B[a,u,v] & a:3240; u:54; v:54; m:64; n:54; +C[a,n,m] = A[a,u,v] * B[m,n,v,u] & a:3240; u:54; v:54; m:64; n:54; +C[m,n,a] = A[v,u,n,m] * B[a,u,v] & a:3240; m:64; n:54; u:54; v:64; +C[a,m,n] = A[a,u,v] * B[v,u,n,m] & a:3240; m:54; n:54; u:54; v:64; +C[m,a,n,p,b,o] = A[u,o,p,n,m] * B[u,b,a] & a:16; b:15; m:16; o:15; n:15; p:15; u:200; +C[m,p,o,b,n,a] = A[u,o,p,n,m] * B[u,b,a] & a:16; b:15; m:16; o:15; n:15; p:15; u:200; +C[b,o,n,m,a,p] = A[u,b,a] * B[o,m,n,p,u] & a:15; b:16; m:15; o:16; n:15; p:15; u:200; +C[n,m,b,p,o,a] = A[o,m,n,p,u] * B[u,b,a] & a:16; b:15; m:15; o:16; n:16; p:15; u:200; +C[o,n,m,a] = A[u,n,v,o,m] * B[u,v,a] & a:600; m:25; o:24; n:25; u:24; v:25; +C[n,o,a,m] = A[u,n,v,o,m] * B[u,v,a] & a:600; m:25; o:25; n:24; u:24; v:25; +C[n,o,a,m] = A[o,m,u,n,v] * B[u,v,a] & a:600; m:25; o:24; n:24; u:24; v:25; +C[a,m,n,o] = A[u,v,a] * B[o,m,u,n,v] & a:600; m:25; o:24; n:25; u:24; v:25; +C[p,n,a,o,m] = A[n,u,p,v,m,o] * B[u,a,v] & a:200; m:15; o:15; n:16; p:16; u:16; v:15; +C[n,o,p,m,a] = A[n,u,p,v,m,o] * B[u,a,v] & a:200; m:15; o:15; n:16; p:15; u:16; v:15; +C[n,m,o,a,p] = A[n,o,u,m,v,p] * B[u,a,v] & a:200; m:15; o:15; n:16; p:15; u:16; v:15; +C[m,o,p,n,a] = A[n,o,u,m,v,p] * B[u,a,v] & a:200; m:16; o:15; n:16; p:15; u:16; v:15; +C[a,c,m,b] = A[a,u,b,c] * B[m,u] & a:64; m:64; c:54; b:54; u:54; +C[c,a,m,b] = A[a,u,b,c] * B[m,u] & a:64; m:64; c:64; b:54; u:54; +C[m,c,b,a] = A[u,m] * B[a,u,b,c] & a:64; m:72; c:54; b:54; u:64; +C[m,b,a,c] = A[u,m] * B[a,u,b,c] & a:64; m:72; c:54; b:54; u:64; +C[c,a,b,m,n] = A[b,a,c,u] * B[n,m,u] & a:25; c:24; b:24; m:25; n:24; u:600; +C[b,m,n,c,a] = A[b,a,c,u] * B[n,m,u] & a:25; c:25; b:24; m:25; n:24; u:600; +C[n,b,m,c,a] = A[m,u,n] * B[b,a,c,u] & a:25; c:25; b:24; m:24; n:24; u:600; +C[c,a,b,n,m] = A[b,a,c,u] * B[m,u,n] & a:25; c:24; b:24; m:24; n:25; u:600; +C[a,m,b] = A[a,u,v,b] * B[u,m,v] & a:64; m:3240; b:54; u:64; v:54; +C[a,b,m] = A[a,u,v,b] * B[u,m,v] & a:64; m:3240; b:54; u:64; v:54; +C[m,b,a] = A[v,u,m] * B[a,u,v,b] & a:64; m:3240; b:54; u:54; v:64; +C[a,m,b] = A[a,u,v,b] * B[v,u,m] & a:64; m:3240; b:54; u:54; v:64; +C[o,c,m,b,a,n] = A[u,n,o,m] * B[a,b,c,u] & a:16; c:15; b:15; m:15; o:16; n:15; u:3072; +C[o,c,n,b,a,m] = A[u,n,o,m] * B[a,b,c,u] & a:16; c:15; b:15; m:15; o:16; n:15; u:3072; +C[o,a,c,n,m,b] = A[o,m,u,n] * B[a,b,c,u] & a:16; c:15; b:15; m:15; o:16; n:15; u:3125; +C[a,m,n,c,o,b] = A[a,b,c,u] * B[o,m,u,n] & a:16; c:15; b:15; m:15; o:16; n:15; u:3125; +C[a,n,b,m] = A[v,u,a,b] * B[v,m,n,u] & a:64; b:54; m:54; n:54; u:54; v:64; +C[b,m,a,n] = A[v,u,a,b] * B[v,m,n,u] & a:54; b:64; m:54; n:54; u:54; v:64; +C[a,n,m,b] = A[v,u,a,b] * B[m,n,u,v] & a:64; b:54; m:64; n:54; u:54; v:64; +C[n,b,m,a] = A[m,n,u,v] * B[v,u,a,b] & a:54; b:54; m:72; n:64; u:54; v:64; +C[a,m] = A[w,u,v,a] * B[m,v,u,w] & a:72; m:64; u:54; w:64; v:54; +C[a,m] = A[w,u,v,a] * B[m,w,v,u] & a:72; m:64; u:54; w:64; v:54; +C[a,m] = A[w,u,v,a] * B[m,u,w,v] & a:72; m:64; u:54; w:64; v:54; +C[a,m] = A[u,v,w,a] * B[m,w,v,u] & a:72; m:64; u:64; w:54; v:54; +C[a,m] = A[u,v,w,a] * B[m,v,u,w] & a:72; m:64; u:64; w:54; v:54; +C[a,m] = A[u,v,w,a] * B[m,u,w,v] & a:72; m:64; u:64; w:54; v:54; +C[a,o,n,m,b] = A[v,b,a,u] * B[m,o,u,v,n] & a:24; b:25; m:24; o:25; n:25; u:25; v:24; +C[b,m,n,a,o] = A[v,b,a,u] * B[m,o,u,v,n] & a:25; b:24; m:24; o:25; n:25; u:25; v:24; +C[n,m,b,o,a] = A[v,o,m,n,u] * B[v,b,a,u] & a:24; b:25; m:25; o:25; n:24; u:25; v:24; +C[a,n,o,b,m] = A[v,b,a,u] * B[v,o,m,n,u] & a:24; b:25; m:24; o:25; n:25; u:25; v:24; +C[a,n,m] = A[u,v,a,w] * B[v,u,m,n,w] & a:600; m:24; n:25; u:24; w:25; v:24; +C[n,m,a] = A[v,u,m,n,w] * B[u,v,a,w] & a:600; m:25; n:24; u:24; w:25; v:24; +C[m,n,a] = A[w,v,n,m,u] * B[u,v,a,w] & a:600; m:24; n:25; u:24; w:24; v:25; +C[a,m,n] = A[u,v,a,w] * B[w,v,n,m,u] & a:600; m:24; n:25; u:24; w:24; v:25; +C[m,p,b,n,o,a] = A[v,o,p,m,u,n] * B[v,a,b,u] & a:16; b:15; m:16; o:15; n:15; p:15; u:15; v:16; +C[b,n,a,m,p,o] = A[v,a,b,u] * B[v,o,p,m,u,n] & a:15; b:16; m:16; o:15; n:15; p:15; u:15; v:16; +C[b,a,o,m,p,n] = A[v,a,b,u] * B[v,p,u,o,n,m] & a:15; b:16; m:16; o:15; n:15; p:15; u:15; v:16; +C[b,n,o,a,p,m] = A[v,a,b,u] * B[v,p,u,o,n,m] & a:15; b:16; m:16; o:15; n:15; p:15; u:15; v:16; +C[m,n,o,a] = A[o,n,m,w,v,u] * B[u,v,w,a] & a:3072; m:16; o:16; n:15; u:16; w:15; v:15; +C[o,m,n,a] = A[o,n,m,w,v,u] * B[u,v,w,a] & a:3072; m:15; o:16; n:15; u:16; w:15; v:15; +C[o,a,m,n] = A[v,o,n,m,w,u] * B[u,v,w,a] & a:3072; m:15; o:16; n:15; u:16; w:15; v:16; +C[n,a,m,o] = A[v,o,n,m,w,u] * B[u,v,w,a] & a:3072; m:15; o:15; n:16; u:16; w:15; v:16; +C[c,a,d,b,m] = A[b,c,d,u,a] * B[u,m] & a:25; c:24; b:24; d:25; m:24; u:24; +C[a,c,m,d,b] = A[b,c,d,u,a] * B[u,m] & a:24; c:25; b:24; d:25; m:24; u:24; +C[m,c,a,d,b] = A[m,u] * B[b,c,d,u,a] & a:25; c:25; b:24; d:25; m:24; u:25; +C[m,b,a,d,c] = A[m,u] * B[b,c,d,u,a] & a:25; c:25; b:24; d:25; m:24; u:25; +C[d,a,b,m,c,n] = A[c,a,u,b,d] * B[m,u,n] & a:15; c:16; b:15; d:16; m:16; n:15; u:200; +C[d,a,b,c,n,m] = A[c,a,u,b,d] * B[m,u,n] & a:15; c:16; b:15; d:16; m:16; n:15; u:200; +C[m,c,b,n,d,a] = A[u,n,m] * B[c,a,u,b,d] & a:15; c:16; b:15; d:15; m:16; n:15; u:200; +C[a,b,n,c,d,m] = A[c,a,u,b,d] * B[u,n,m] & a:16; c:16; b:15; d:15; m:16; n:15; u:200; +C[c,b,m,a] = A[c,a,b,u,v] * B[v,m,u] & a:25; c:24; b:25; m:600; u:25; v:24; +C[c,m,b,a] = A[c,a,b,u,v] * B[v,m,u] & a:25; c:24; b:25; m:600; u:25; v:24; +C[m,a,c,b] = A[u,m,v] * B[c,a,b,u,v] & a:25; c:24; b:25; m:600; u:24; v:25; +C[a,m,c,b] = A[c,a,b,u,v] * B[u,m,v] & a:24; c:24; b:25; m:600; u:24; v:25; +C[m,b,a,c,n] = A[n,v,u,m] * B[c,b,u,v,a] & a:25; c:24; b:25; m:24; n:24; u:25; v:25; +C[b,c,a,n,m] = A[c,b,u,v,a] * B[n,v,u,m] & a:25; c:24; b:24; m:25; n:24; u:25; v:25; +C[b,m,c,a,n] = A[c,b,u,v,a] * B[n,v,m,u] & a:25; c:24; b:24; m:25; n:24; u:25; v:25; +C[n,m,c,a,b] = A[n,v,m,u] * B[c,b,u,v,a] & a:25; c:24; b:25; m:25; n:24; u:25; v:25; +C[b,m,a] = A[a,v,w,b,u] * B[w,u,m,v] & a:24; b:24; m:600; u:25; w:24; v:25; +C[b,a,m] = A[a,v,w,b,u] * B[w,u,m,v] & a:24; b:24; m:600; u:25; w:24; v:25; +C[b,a,m] = A[a,v,w,b,u] * B[v,m,u,w] & a:24; b:24; m:600; u:25; w:25; v:24; +C[m,b,a] = A[v,m,u,w] * B[a,v,w,b,u] & a:24; b:25; m:600; u:25; w:25; v:24; +C[c,m,a,b,n,o] = A[c,b,v,u,a] * B[m,u,v,o,n] & a:15; c:16; b:15; m:16; o:15; n:15; u:54; v:54; +C[o,b,c,n,m,a] = A[m,u,v,o,n] * B[c,b,v,u,a] & a:15; c:16; b:15; m:16; o:16; n:15; u:54; v:54; +C[o,b,n,a,c,m] = A[v,n,o,m,u] * B[c,b,v,u,a] & a:15; c:16; b:15; m:15; o:16; n:15; u:54; v:48; +C[b,n,c,m,o,a] = A[c,b,v,u,a] * B[v,n,o,m,u] & a:15; c:16; b:16; m:16; o:15; n:15; u:54; v:48; +C[n,m,b,a] = A[m,n,w,u,v] * B[b,u,w,v,a] & a:25; b:24; m:24; n:24; u:25; w:25; v:25; +C[n,a,m,b] = A[m,n,w,u,v] * B[b,u,w,v,a] & a:25; b:24; m:24; n:24; u:25; w:25; v:25; +C[a,n,m,b] = A[b,u,w,v,a] * B[m,v,n,w,u] & a:24; b:24; m:24; n:25; u:25; w:25; v:25; +C[m,a,n,b] = A[m,v,n,w,u] * B[b,u,w,v,a] & a:25; b:24; m:24; n:25; u:25; w:25; v:25; +C[b,a,m,o,n] = A[u,b,w,v,a] * B[m,n,u,v,o,w] & a:54; b:48; m:16; o:15; n:15; u:16; w:15; v:15; +C[a,n,o,m,b] = A[u,b,w,v,a] * B[m,n,u,v,o,w] & a:48; b:54; m:16; o:15; n:15; u:16; w:15; v:15; +C[b,m,a,n,o] = A[u,b,w,v,a] * B[u,v,w,o,m,n] & a:54; b:48; m:16; o:15; n:15; u:16; w:15; v:15; +C[a,o,n,b,m] = A[u,b,w,v,a] * B[u,v,w,o,m,n] & a:48; b:54; m:16; o:15; n:15; u:16; w:15; v:15; +C[b,m,e,d,a,c] = A[c,a,b,d,e,u] * B[u,m] & a:15; c:16; b:16; e:15; d:15; m:16; u:16; +C[a,e,d,m,b,c] = A[c,a,b,d,e,u] * B[u,m] & a:16; c:16; b:15; e:15; d:15; m:16; u:16; +C[b,e,c,d,a,m] = A[c,a,b,d,e,u] * B[m,u] & a:15; c:16; b:16; e:15; d:15; m:16; u:15; +C[e,a,d,b,c,m] = A[c,a,b,d,e,u] * B[m,u] & a:15; c:16; b:15; e:16; d:15; m:16; u:15; +C[a,b,d,c,m] = A[c,b,a,u,d,v] * B[m,u,v] & a:16; c:16; b:15; d:15; m:200; u:15; v:15; +C[d,a,b,c,m] = A[c,b,a,u,d,v] * B[m,u,v] & a:15; c:16; b:15; d:16; m:200; u:15; v:15; +C[m,b,c,d,a] = A[u,m,v] * B[c,b,a,u,d,v] & a:15; c:16; b:15; d:15; m:192; u:16; v:15; +C[b,d,m,c,a] = A[c,b,a,u,d,v] * B[u,m,v] & a:15; c:16; b:16; d:15; m:200; u:16; v:15; +C[a,b,n,m,d,c] = A[u,b,v,c,a,d] * B[v,m,n,u] & a:16; c:15; b:15; d:15; m:16; n:15; u:16; v:16; +C[d,a,b,m,c,n] = A[u,b,v,c,a,d] * B[v,m,n,u] & a:15; c:15; b:15; d:16; m:16; n:15; u:16; v:16; +C[a,n,m,b,c,d] = A[u,b,v,c,a,d] * B[m,n,v,u] & a:16; c:15; b:15; d:15; m:16; n:15; u:16; v:15; +C[c,d,m,b,a,n] = A[u,b,v,c,a,d] * B[m,n,v,u] & a:15; c:16; b:15; d:15; m:16; n:15; u:16; v:15; +C[b,a,c,m] = A[w,a,v,c,b,u] * B[v,m,w,u] & a:15; c:15; b:16; m:3072; u:15; w:16; v:16; +C[c,a,m,b] = A[w,a,v,c,b,u] * B[v,m,w,u] & a:15; c:16; b:15; m:3072; u:15; w:16; v:16; +C[c,a,b,m] = A[w,a,v,c,b,u] * B[m,u,w,v] & a:15; c:16; b:15; m:3072; u:15; w:16; v:15; +C[m,c,a,b] = A[m,u,w,v] * B[w,a,v,c,b,u] & a:16; c:15; b:15; m:3072; u:15; w:16; v:15; +C[c,b,n,m,a] = A[v,w,c,u,a,b] * B[v,u,n,w,m] & a:15; c:16; b:15; m:54; n:54; u:15; w:15; v:16; +C[n,a,m,c,b] = A[v,u,n,w,m] * B[v,w,c,u,a,b] & a:16; c:15; b:15; m:54; n:48; u:15; w:15; v:16; +C[c,m,b,n,a] = A[v,w,c,u,a,b] * B[n,w,v,m,u] & a:15; c:16; b:15; m:54; n:48; u:15; w:15; v:16; +C[c,a,n,b,m] = A[v,w,c,u,a,b] * B[n,w,v,m,u] & a:15; c:16; b:15; m:54; n:48; u:15; w:15; v:16; +C[c,m,n,b,o,a] = A[v,w,b,u,c,a] * B[w,n,v,m,u,o] & a:15; c:16; b:15; m:16; o:15; n:15; u:15; w:16; v:16; +C[c,o,n,b,m,a] = A[v,w,b,u,c,a] * B[w,n,v,m,u,o] & a:15; c:16; b:15; m:16; o:15; n:15; u:15; w:16; v:16; +C[n,c,b,a,m,o] = A[m,w,n,u,v,o] * B[v,w,b,u,c,a] & a:16; c:15; b:15; m:16; o:15; n:16; u:15; w:15; v:16; +C[c,b,o,n,a,m] = A[v,w,b,u,c,a] * B[m,w,n,u,v,o] & a:15; c:16; b:15; m:16; o:15; n:15; u:15; w:15; v:16; +C[m,n,a] = A[n,u,m] * B[u,a] & a:256; m:240; u:256; n:256; +C[a,m,n] = A[u,a] * B[n,u,m] & a:240; m:256; u:256; n:256; +C[a,n,m] = A[u,a] * B[m,n,u] & a:240; u:256; m:256; n:256; +C[m,a,n] = A[m,n,u] * B[u,a] & a:256; u:256; m:256; n:243; +C[o,a,n,m] = A[u,n,o,m] * B[u,a] & a:64; m:60; u:64; o:64; n:64; +C[n,a,m,o] = A[u,n,o,m] * B[u,a] & a:64; m:60; u:64; o:64; n:64; +C[n,o,a,m] = A[m,n,u,o] * B[u,a] & a:64; u:64; m:64; o:60; n:64; +C[n,o,m,a] = A[m,n,u,o] * B[u,a] & a:64; u:64; m:64; o:60; n:64; +C[p,a,n,m,o] = A[m,p,o,u,n] * B[a,u] & a:24; m:24; o:27; n:27; p:24; u:27; +C[m,a,o,p,n] = A[m,p,o,u,n] * B[a,u] & a:24; m:24; o:27; n:27; p:27; u:27; +C[n,p,m,a,o] = A[n,u,o,m,p] * B[a,u] & a:24; m:27; o:27; n:24; p:27; u:27; +C[p,o,a,n,m] = A[n,u,o,m,p] * B[a,u] & a:24; m:27; o:27; n:24; p:24; u:27; +C[p,q,a,o,n,m] = A[q,n,o,u,p,m] * B[a,u] & a:16; m:15; o:16; n:16; q:16; p:16; u:16; +C[q,p,a,n,m,o] = A[q,n,o,u,p,m] * B[a,u] & a:16; m:15; o:16; n:16; q:16; p:16; u:16; +C[m,q,p,a,n,o] = A[p,q,m,u,o,n] * B[a,u] & a:16; m:16; o:15; n:16; q:16; p:16; u:16; +C[p,n,m,o,a,q] = A[p,q,m,u,o,n] * B[a,u] & a:16; m:15; o:16; n:16; q:16; p:16; u:16; +C[m,b,a] = A[u,m] * B[u,a,b] & a:256; m:240; b:256; u:256; +C[b,m,a] = A[u,a,b] * B[u,m] & a:243; m:256; b:256; u:256; +C[a,m,b] = A[u,a,b] * B[m,u] & a:256; m:256; b:243; u:256; +C[m,b,a] = A[m,u] * B[u,a,b] & a:256; m:240; b:256; u:256; +C[b,n,m,a] = A[b,a,u] * B[u,m,n] & a:60; u:4000; b:64; m:64; n:64; +C[m,a,b,n] = A[u,m,n] * B[b,a,u] & a:64; u:4000; b:64; m:64; n:60; +C[m,b,n,a] = A[n,u,m] * B[b,a,u] & a:64; u:4050; b:64; m:72; n:64; +C[m,a,b,n] = A[n,u,m] * B[b,a,u] & a:64; u:4050; b:64; m:72; n:64; +C[a,m] = A[u,v,a] * B[v,m,u] & a:240; m:256; u:256; v:256; +C[m,a] = A[v,m,u] * B[u,v,a] & a:256; u:256; m:240; v:256; +C[a,m] = A[u,v,a] * B[v,u,m] & a:240; m:256; u:256; v:256; +C[m,a] = A[v,u,m] * B[u,v,a] & a:256; m:240; u:256; v:256; +C[a,o,b,m,n] = A[u,b,a] * B[m,u,n,o] & a:24; b:27; m:24; o:27; n:27; u:768; +C[o,m,a,b,n] = A[m,u,n,o] * B[u,b,a] & a:24; b:27; m:24; o:24; n:27; u:768; +C[a,m,b,o,n] = A[u,b,a] * B[n,u,o,m] & a:24; b:27; m:27; o:27; n:24; u:768; +C[m,n,o,a,b] = A[n,u,o,m] * B[u,b,a] & a:24; b:27; m:24; o:27; n:24; u:768; +C[a,n,m] = A[a,v,u] * B[m,n,u,v] & a:3888; u:64; v:64; m:64; n:64; +C[n,m,a] = A[m,n,u,v] * B[a,v,u] & a:4000; u:64; v:64; m:72; n:64; +C[m,n,a] = A[m,u,n,v] * B[a,v,u] & a:4000; u:64; v:64; m:64; n:60; +C[a,m,n] = A[a,v,u] * B[m,u,n,v] & a:3888; u:64; v:64; m:64; n:64; +C[n,m,b,p,a,o] = A[p,m,o,u,n] * B[b,u,a] & a:16; b:16; m:15; o:16; n:16; p:16; u:200; +C[o,p,b,m,a,n] = A[p,m,o,u,n] * B[b,u,a] & a:16; b:16; m:15; o:16; n:16; p:16; u:200; +C[p,n,o,m,b,a] = A[n,m,p,o,u] * B[b,u,a] & a:16; b:16; m:15; o:16; n:16; p:16; u:200; +C[n,a,p,b,o,m] = A[n,m,p,o,u] * B[b,u,a] & a:16; b:16; m:15; o:16; n:16; p:16; u:200; +C[o,a,n,m] = A[o,v,n,u,m] * B[u,a,v] & a:768; m:27; o:24; n:27; u:24; v:27; +C[n,o,a,m] = A[o,v,n,u,m] * B[u,a,v] & a:768; m:27; o:24; n:24; u:24; v:27; +C[o,m,a,n] = A[m,v,u,n,o] * B[u,a,v] & a:768; m:24; o:24; n:27; u:24; v:27; +C[n,a,o,m] = A[m,v,u,n,o] * B[u,a,v] & a:768; m:24; o:27; n:24; u:24; v:27; +C[p,n,o,a,m] = A[u,m,n,p,v,o] * B[a,v,u] & a:200; m:15; o:16; n:16; p:16; u:16; v:16; +C[a,n,o,p,m] = A[a,v,u] * B[u,m,n,p,v,o] & a:192; m:16; o:16; n:16; p:16; u:16; v:16; +C[o,p,n,a,m] = A[p,o,m,n,u,v] * B[a,v,u] & a:200; m:15; o:16; n:16; p:16; u:16; v:16; +C[m,a,o,n,p] = A[p,o,m,n,u,v] * B[a,v,u] & a:200; m:16; o:15; n:16; p:16; u:16; v:16; +C[a,b,m,c] = A[b,u,c,a] * B[m,u] & a:64; m:64; c:60; b:64; u:64; +C[b,c,m,a] = A[b,u,c,a] * B[m,u] & a:60; m:64; c:64; b:64; u:64; +C[m,a,c,b] = A[u,m] * B[b,u,c,a] & a:64; m:72; c:64; b:64; u:64; +C[a,c,m,b] = A[b,u,c,a] * B[u,m] & a:64; m:64; c:60; b:64; u:64; +C[b,c,m,a,n] = A[b,u,c,a] * B[n,u,m] & a:27; c:27; b:24; m:27; n:24; u:768; +C[n,m,c,b,a] = A[n,u,m] * B[b,u,c,a] & a:27; c:27; b:24; m:27; n:24; u:768; +C[a,n,c,m,b] = A[b,u,c,a] * B[m,n,u] & a:24; c:27; b:24; m:24; n:27; u:768; +C[a,n,b,m,c] = A[b,u,c,a] * B[m,n,u] & a:24; c:27; b:24; m:24; n:27; u:768; +C[m,a,b] = A[v,m,u] * B[u,v,b,a] & a:64; m:3888; b:64; u:64; v:64; +C[m,a,b] = A[v,u,m] * B[u,v,b,a] & a:64; m:3888; b:64; u:64; v:64; +C[m,a,b] = A[u,m,v] * B[u,v,b,a] & a:64; m:3888; b:64; u:64; v:64; +C[b,m,a] = A[u,v,b,a] * B[m,v,u] & a:60; m:4000; b:64; u:64; v:64; +C[a,m,b] = A[u,v,b,a] * B[m,v,u] & a:64; m:4000; b:60; u:64; v:64; +C[b,o,m,c,a,n] = A[u,c,b,a] * B[m,u,n,o] & a:15; c:16; b:16; m:16; o:16; n:16; u:3456; +C[n,a,c,o,m,b] = A[m,u,n,o] * B[u,c,b,a] & a:16; c:16; b:16; m:16; o:15; n:16; u:3456; +C[c,n,a,o,m,b] = A[u,c,b,a] * B[n,m,u,o] & a:15; c:16; b:16; m:16; o:16; n:16; u:3456; +C[b,c,n,a,o,m] = A[u,c,b,a] * B[n,m,u,o] & a:15; c:16; b:16; m:16; o:16; n:16; u:3456; +C[m,b,a,n] = A[v,n,m,u] * B[b,v,u,a] & a:64; b:64; m:64; n:60; u:64; v:64; +C[b,m,n,a] = A[b,v,u,a] * B[v,n,m,u] & a:60; b:64; m:64; n:64; u:64; v:64; +C[a,b,m,n] = A[b,v,u,a] * B[u,n,m,v] & a:72; b:64; m:64; n:64; u:64; v:64; +C[m,b,a,n] = A[u,n,m,v] * B[b,v,u,a] & a:64; b:64; m:64; n:60; u:64; v:64; +C[a,m] = A[v,u,w,a] * B[u,m,v,w] & a:72; m:64; u:64; w:64; v:64; +C[m,a] = A[u,m,v,w] * B[v,u,w,a] & a:64; m:72; u:64; w:64; v:64; +C[m,a] = A[v,w,m,u] * B[v,u,w,a] & a:64; u:64; m:72; w:64; v:64; +C[a,m] = A[v,u,w,a] * B[v,w,m,u] & a:72; m:64; u:64; w:64; v:64; +C[b,o,a,n,m] = A[u,a,v,b] * B[u,o,n,v,m] & a:27; b:24; m:24; o:27; n:27; u:24; v:27; +C[n,b,m,o,a] = A[u,o,n,v,m] * B[u,a,v,b] & a:24; b:27; m:27; o:27; n:24; u:24; v:27; +C[a,n,o,b,m] = A[u,a,v,b] * B[m,v,u,o,n] & a:24; b:27; m:24; o:27; n:27; u:24; v:27; +C[o,b,n,m,a] = A[m,v,u,o,n] * B[u,a,v,b] & a:24; b:27; m:24; o:24; n:27; u:24; v:27; +C[n,m,a] = A[u,m,w,n,v] * B[u,v,a,w] & a:768; m:27; n:24; u:24; w:27; v:27; +C[n,a,m] = A[u,m,w,n,v] * B[u,v,a,w] & a:768; m:27; n:24; u:24; w:27; v:27; +C[m,n,a] = A[n,m,v,w,u] * B[u,v,a,w] & a:768; m:24; n:24; u:24; w:27; v:27; +C[n,a,m] = A[n,m,v,w,u] * B[u,v,a,w] & a:768; m:27; n:24; u:24; w:27; v:27; +C[b,o,p,n,a,m] = A[v,u,a,b] * B[u,v,p,m,o,n] & a:15; b:16; m:16; o:16; n:16; p:16; u:16; v:16; +C[a,o,m,n,b,p] = A[v,u,a,b] * B[u,v,p,m,o,n] & a:16; b:15; m:16; o:16; n:16; p:16; u:16; v:16; +C[m,o,b,p,a,n] = A[o,v,p,u,n,m] * B[v,u,a,b] & a:16; b:15; m:16; o:16; n:15; p:16; u:16; v:16; +C[n,p,o,m,b,a] = A[o,v,p,u,n,m] * B[v,u,a,b] & a:16; b:15; m:15; o:16; n:16; p:16; u:16; v:16; +C[m,a,o,n] = A[w,n,m,v,o,u] * B[a,w,u,v] & a:3456; m:16; o:15; n:16; u:16; w:16; v:16; +C[m,o,a,n] = A[w,n,m,v,o,u] * B[a,w,u,v] & a:3456; m:16; o:15; n:16; u:16; w:16; v:16; +C[n,a,o,m] = A[m,n,v,u,w,o] * B[a,w,u,v] & a:3456; m:16; o:15; n:16; u:16; w:16; v:16; +C[n,m,o,a] = A[m,n,v,u,w,o] * B[a,w,u,v] & a:3456; m:16; o:15; n:16; u:16; w:16; v:16; +C[m,b,c,a,d] = A[m,u] * B[b,d,u,a,c] & a:27; c:27; b:24; d:27; m:24; u:27; +C[c,b,a,d,m] = A[b,d,u,a,c] * B[m,u] & a:27; c:24; b:24; d:27; m:24; u:27; +C[m,c,a,d,b] = A[u,m] * B[b,d,u,a,c] & a:27; c:27; b:24; d:27; m:24; u:24; +C[b,m,c,a,d] = A[b,d,u,a,c] * B[u,m] & a:27; c:27; b:24; d:27; m:24; u:24; +C[c,b,m,d,a,n] = A[c,a,u,b,d] * B[n,u,m] & a:15; c:16; b:16; d:16; m:16; n:16; u:200; +C[a,b,n,c,d,m] = A[c,a,u,b,d] * B[n,u,m] & a:16; c:16; b:15; d:16; m:16; n:16; u:200; +C[m,c,d,n,b,a] = A[n,m,u] * B[c,a,u,b,d] & a:16; c:16; b:16; d:16; m:24; n:16; u:200; +C[d,c,n,b,a,m] = A[c,a,u,b,d] * B[n,m,u] & a:15; c:16; b:16; d:16; m:16; n:16; u:200; +C[m,b,c,a] = A[m,u,v] * B[c,v,u,a,b] & a:27; c:24; b:27; m:768; u:27; v:27; +C[c,b,m,a] = A[c,v,u,a,b] * B[m,u,v] & a:27; c:24; b:27; m:768; u:27; v:27; +C[a,m,b,c] = A[c,v,u,a,b] * B[v,m,u] & a:24; c:24; b:27; m:768; u:27; v:24; +C[a,c,m,b] = A[c,v,u,a,b] * B[v,m,u] & a:24; c:24; b:27; m:768; u:27; v:24; +C[b,n,a,c,m] = A[b,c,v,a,u] * B[u,n,m,v] & a:27; c:27; b:24; m:24; n:27; u:24; v:27; +C[c,n,a,m,b] = A[b,c,v,a,u] * B[u,n,m,v] & a:27; c:24; b:24; m:24; n:27; u:24; v:27; +C[b,n,m,c,a] = A[b,c,v,a,u] * B[u,m,v,n] & a:27; c:27; b:24; m:24; n:27; u:24; v:27; +C[a,c,m,b,n] = A[b,c,v,a,u] * B[u,m,v,n] & a:24; c:27; b:24; m:24; n:27; u:24; v:27; +C[m,b,a] = A[v,m,w,u] * B[w,a,b,v,u] & a:24; b:27; m:768; u:27; w:24; v:24; +C[b,a,m] = A[w,a,b,v,u] * B[v,m,w,u] & a:27; b:24; m:768; u:27; w:24; v:24; +C[b,a,m] = A[w,a,b,v,u] * B[u,v,w,m] & a:27; b:24; m:768; u:24; w:24; v:27; +C[m,b,a] = A[u,v,w,m] * B[w,a,b,v,u] & a:24; b:27; m:768; u:24; w:24; v:27; +C[b,o,n,a,m,c] = A[b,a,c,v,u] * B[n,m,u,v,o] & a:15; c:16; b:16; m:16; o:16; n:16; u:60; v:60; +C[m,c,n,b,o,a] = A[n,m,u,v,o] * B[b,a,c,v,u] & a:16; c:16; b:16; m:16; o:15; n:16; u:60; v:60; +C[b,c,n,a,o,m] = A[b,a,c,v,u] * B[o,u,v,n,m] & a:15; c:16; b:16; m:16; o:16; n:16; u:60; v:60; +C[n,c,m,a,b,o] = A[o,u,v,n,m] * B[b,a,c,v,u] & a:16; c:16; b:16; m:15; o:16; n:16; u:60; v:60; +C[m,b,n,a] = A[u,n,m,v,w] * B[a,b,u,w,v] & a:24; b:27; m:24; n:27; u:24; w:27; v:27; +C[m,b,a,n] = A[u,n,m,v,w] * B[a,b,u,w,v] & a:24; b:27; m:24; n:27; u:24; w:27; v:27; +C[a,n,m,b] = A[a,b,u,w,v] * B[w,u,m,v,n] & a:24; b:27; m:24; n:27; u:27; w:24; v:27; +C[b,a,m,n] = A[a,b,u,w,v] * B[w,u,m,v,n] & a:24; b:24; m:24; n:27; u:27; w:24; v:27; +C[o,m,n,a,b] = A[u,m,w,v,o,n] * B[v,b,a,w,u] & a:60; b:60; m:15; o:16; n:16; u:16; w:16; v:16; +C[o,a,m,n,b] = A[u,m,w,v,o,n] * B[v,b,a,w,u] & a:60; b:60; m:15; o:16; n:16; u:16; w:16; v:16; +C[o,a,m,n,b] = A[w,o,m,u,v,n] * B[v,b,a,w,u] & a:60; b:60; m:15; o:16; n:16; u:16; w:16; v:16; +C[a,m,b,n,o] = A[v,b,a,w,u] * B[w,o,m,u,v,n] & a:64; b:60; m:16; o:16; n:16; u:16; w:16; v:16; +C[e,d,a,c,b,m] = A[a,d,e,b,c,u] * B[u,m] & a:16; c:15; b:16; e:16; d:16; m:12; u:16; +C[c,m,d,b,a,e] = A[a,d,e,b,c,u] * B[u,m] & a:16; c:16; b:15; e:16; d:16; m:12; u:16; +C[a,c,b,e,m,d] = A[a,d,e,b,c,u] * B[m,u] & a:16; c:15; b:16; e:16; d:16; m:16; u:16; +C[b,e,c,d,m,a] = A[a,d,e,b,c,u] * B[m,u] & a:16; c:15; b:16; e:16; d:16; m:16; u:16; +C[c,d,a,b,m] = A[c,a,d,v,b,u] * B[v,m,u] & a:15; c:16; b:16; d:16; m:200; u:16; v:16; +C[m,a,c,b,d] = A[v,m,u] * B[c,a,d,v,b,u] & a:16; c:16; b:16; d:16; m:192; u:16; v:16; +C[a,b,c,d,m] = A[c,a,d,v,b,u] * B[u,v,m] & a:16; c:16; b:15; d:16; m:200; u:16; v:16; +C[d,a,m,c,b] = A[c,a,d,v,b,u] * B[u,v,m] & a:15; c:16; b:16; d:16; m:200; u:16; v:16; +C[d,c,a,m,b,n] = A[v,b,a,d,u,c] * B[m,u,v,n] & a:15; c:16; b:16; d:16; m:16; n:15; u:16; v:16; +C[m,c,a,n,d,b] = A[m,u,v,n] * B[v,b,a,d,u,c] & a:16; c:16; b:16; d:16; m:16; n:15; u:16; v:16; +C[d,n,a,b,m,c] = A[v,b,a,d,u,c] * B[u,n,m,v] & a:15; c:16; b:16; d:16; m:16; n:15; u:16; v:16; +C[n,c,a,b,d,m] = A[u,n,m,v] * B[v,b,a,d,u,c] & a:16; c:16; b:16; d:16; m:15; n:16; u:16; v:16; +C[m,c,a,b] = A[u,m,w,v] * B[a,v,u,w,b,c] & a:16; c:16; b:16; m:3456; u:16; w:16; v:16; +C[m,b,a,c] = A[u,m,w,v] * B[a,v,u,w,b,c] & a:16; c:16; b:16; m:3456; u:16; w:16; v:16; +C[m,c,b,a] = A[w,u,m,v] * B[a,v,u,w,b,c] & a:16; c:16; b:16; m:3456; u:16; w:16; v:16; +C[c,a,m,b] = A[a,v,u,w,b,c] * B[w,u,m,v] & a:16; c:16; b:15; m:3456; u:16; w:16; v:16; +C[m,n,b,a,c] = A[u,m,v,n,w] * B[a,b,u,c,v,w] & a:16; c:16; b:16; m:64; n:60; u:16; w:16; v:16; +C[a,n,m,b,c] = A[a,b,u,c,v,w] * B[u,m,v,n,w] & a:16; c:15; b:16; m:60; n:60; u:16; w:16; v:16; +C[b,m,n,c,a] = A[a,b,u,c,v,w] * B[v,m,w,u,n] & a:16; c:15; b:16; m:60; n:60; u:16; w:16; v:16; +C[n,a,c,b,m] = A[v,m,w,u,n] * B[a,b,u,c,v,w] & a:16; c:16; b:16; m:60; n:64; u:16; w:16; v:16; +C[c,m,o,a,b,n] = A[u,b,a,v,c,w] * B[v,u,o,m,w,n] & a:15; c:16; b:16; m:16; o:16; n:16; u:16; w:16; v:16; +C[a,n,m,b,o,c] = A[u,b,a,v,c,w] * B[v,u,o,m,w,n] & a:16; c:15; b:16; m:16; o:16; n:16; u:16; w:16; v:16; +C[n,b,o,a,m,c] = A[v,u,n,m,w,o] * B[u,b,a,v,c,w] & a:16; c:16; b:16; m:15; o:16; n:16; u:16; w:16; v:16; +C[b,n,a,o,m,c] = A[u,b,a,v,c,w] * B[v,u,n,m,w,o] & a:15; c:16; b:16; m:16; o:16; n:16; u:16; w:16; v:16; +C[n,a,m] = A[m,u,n] * B[a,u] & a:288; u:300; m:288; n:288; +C[n,m,a] = A[m,u,n] * B[a,u] & a:288; u:300; m:288; n:288; +C[m,a,n] = A[n,m,u] * B[a,u] & a:288; u:300; m:288; n:288; +C[n,a,m] = A[n,m,u] * B[a,u] & a:288; u:300; m:300; n:288; +C[m,o,n,a] = A[m,n,o,u] * B[u,a] & a:72; u:72; m:72; o:72; n:72; +C[o,n,a,m] = A[m,n,o,u] * B[u,a] & a:72; u:72; m:72; o:72; n:72; +C[n,o,a,m] = A[o,n,u,m] * B[u,a] & a:72; m:72; u:72; o:72; n:72; +C[a,m,n,o] = A[u,a] * B[o,n,u,m] & a:72; m:72; u:72; o:72; n:72; +C[o,a,n,m,p] = A[n,o,u,p,m] * B[a,u] & a:32; m:30; o:32; n:32; p:30; u:30; +C[n,p,a,m,o] = A[n,o,u,p,m] * B[a,u] & a:32; m:30; o:30; n:32; p:30; u:30; +C[p,a,n,m,o] = A[m,p,u,o,n] * B[a,u] & a:32; m:32; o:30; n:30; p:32; u:30; +C[p,o,m,a,n] = A[m,p,u,o,n] * B[a,u] & a:32; m:32; o:30; n:30; p:32; u:30; +C[o,m,n,q,a,p] = A[p,n,m,u,o,q] * B[a,u] & a:16; m:18; o:16; n:18; q:18; p:16; u:18; +C[n,p,m,q,o,a] = A[p,n,m,u,o,q] * B[a,u] & a:16; m:18; o:18; n:16; q:18; p:16; u:18; +C[n,m,q,p,a,o] = A[m,u,o,p,n,q] * B[a,u] & a:16; m:16; o:18; n:16; q:18; p:18; u:18; +C[m,n,p,a,o,q] = A[m,u,o,p,n,q] * B[a,u] & a:16; m:16; o:18; n:18; q:18; p:18; u:18; +C[b,a,m] = A[b,u,a] * B[u,m] & a:300; m:300; b:288; u:288; +C[a,b,m] = A[b,u,a] * B[u,m] & a:288; m:300; b:288; u:288; +C[a,m,b] = A[b,u,a] * B[m,u] & a:288; m:288; b:288; u:300; +C[b,a,m] = A[b,u,a] * B[m,u] & a:300; m:288; b:288; u:300; +C[n,a,m,b] = A[m,u,n] * B[b,a,u] & a:72; u:5000; b:72; m:72; n:72; +C[n,a,b,m] = A[m,u,n] * B[b,a,u] & a:72; u:5000; b:72; m:72; n:72; +C[n,m,a,b] = A[u,m,n] * B[b,a,u] & a:72; u:5000; b:72; m:72; n:72; +C[m,a,n,b] = A[u,m,n] * B[b,a,u] & a:72; u:5000; b:72; m:72; n:72; +C[a,m] = A[a,v,u] * B[m,u,v] & a:288; m:288; u:300; v:300; +C[m,a] = A[m,u,v] * B[a,v,u] & a:288; u:300; m:288; v:300; +C[m,a] = A[v,m,u] * B[a,v,u] & a:288; u:300; m:288; v:288; +C[a,m] = A[a,v,u] * B[v,m,u] & a:288; m:300; u:300; v:288; +C[a,m,b,o,n] = A[u,a,b] * B[u,o,m,n] & a:32; b:30; m:30; o:30; n:30; u:864; +C[o,b,m,a,n] = A[u,o,m,n] * B[u,a,b] & a:30; b:30; m:30; o:32; n:30; u:864; +C[n,b,m,a,o] = A[o,n,u,m] * B[u,a,b] & a:30; b:30; m:30; o:32; n:32; u:864; +C[a,o,b,m,n] = A[u,a,b] * B[o,n,u,m] & a:32; b:30; m:30; o:32; n:30; u:864; +C[m,n,a] = A[v,n,m,u] * B[u,v,a] & a:5000; u:72; n:72; m:72; v:72; +C[m,a,n] = A[v,n,m,u] * B[u,v,a] & a:5000; u:72; n:72; m:72; v:72; +C[a,n,m] = A[u,v,a] * B[n,v,u,m] & a:5184; m:72; v:72; u:72; n:72; +C[n,m,a] = A[n,v,u,m] * B[u,v,a] & a:5000; m:72; v:72; u:72; n:72; +C[a,n,o,m,p,b] = A[u,b,a] * B[u,o,n,p,m] & a:16; b:18; m:18; o:18; n:18; p:18; u:256; +C[o,m,n,b,p,a] = A[u,o,n,p,m] * B[u,b,a] & a:18; b:18; m:18; o:16; n:18; p:18; u:256; +C[a,b,m,p,n,o] = A[u,b,a] * B[n,u,m,o,p] & a:16; b:18; m:18; o:18; n:16; p:18; u:256; +C[o,a,p,b,m,n] = A[n,u,m,o,p] * B[u,b,a] & a:18; b:18; m:18; o:16; n:16; p:18; u:256; +C[n,o,a,m] = A[n,v,u,o,m] * B[u,a,v] & a:864; m:30; o:30; n:32; u:32; v:30; +C[o,n,m,a] = A[n,v,u,o,m] * B[u,a,v] & a:864; m:30; o:32; n:32; u:32; v:30; +C[n,o,m,a] = A[u,m,o,v,n] * B[u,a,v] & a:864; m:30; o:30; n:32; u:32; v:30; +C[n,o,a,m] = A[u,m,o,v,n] * B[u,a,v] & a:864; m:30; o:30; n:32; u:32; v:30; +C[a,m,o,p,n] = A[v,a,u] * B[m,v,u,p,o,n] & a:240; m:16; o:18; n:18; p:18; u:18; v:16; +C[a,p,n,o,m] = A[v,a,u] * B[m,v,u,p,o,n] & a:240; m:16; o:18; n:18; p:18; u:18; v:16; +C[a,n,m,o,p] = A[v,a,u] * B[p,n,o,m,v,u] & a:240; m:18; o:18; n:18; p:16; u:18; v:16; +C[a,n,m,p,o] = A[v,a,u] * B[p,n,o,m,v,u] & a:240; m:18; o:18; n:18; p:16; u:18; v:16; +C[c,m,a,b] = A[a,u,c,b] * B[u,m] & a:72; m:72; c:72; b:72; u:72; +C[b,c,a,m] = A[a,u,c,b] * B[u,m] & a:72; m:72; c:72; b:72; u:72; +C[m,b,c,a] = A[m,u] * B[a,u,c,b] & a:72; m:72; c:72; b:72; u:72; +C[c,m,a,b] = A[a,u,c,b] * B[m,u] & a:72; m:72; c:72; b:72; u:72; +C[n,a,m,c,b] = A[n,u,m] * B[a,c,u,b] & a:32; c:30; b:30; m:30; n:32; u:864; +C[b,n,a,m,c] = A[a,c,u,b] * B[n,u,m] & a:32; c:30; b:32; m:30; n:32; u:864; +C[c,n,a,b,m] = A[a,c,u,b] * B[u,m,n] & a:32; c:32; b:30; m:30; n:30; u:864; +C[a,n,m,b,c] = A[a,c,u,b] * B[u,m,n] & a:32; c:30; b:30; m:30; n:30; u:864; +C[m,a,b] = A[v,m,u] * B[a,u,b,v] & a:72; m:5184; b:72; u:72; v:72; +C[b,m,a] = A[a,u,b,v] * B[v,m,u] & a:72; m:5000; b:72; u:72; v:72; +C[a,m,b] = A[a,u,b,v] * B[u,v,m] & a:72; m:5000; b:72; u:72; v:72; +C[m,b,a] = A[u,v,m] * B[a,u,b,v] & a:72; m:5184; b:72; u:72; v:72; +C[m,b,n,a,o,c] = A[m,u,o,n] * B[b,c,a,u] & a:18; c:18; b:16; m:16; o:18; n:18; u:4500; +C[b,m,o,a,c,n] = A[b,c,a,u] * B[m,u,o,n] & a:18; c:18; b:16; m:16; o:18; n:18; u:4500; +C[n,m,c,o,b,a] = A[o,u,m,n] * B[b,c,a,u] & a:18; c:18; b:16; m:18; o:16; n:16; u:4500; +C[c,m,b,n,a,o] = A[b,c,a,u] * B[o,u,m,n] & a:18; c:16; b:16; m:18; o:16; n:18; u:4500; +C[m,n,a,b] = A[v,m,u,n] * B[a,u,v,b] & a:72; b:72; m:72; n:72; u:72; v:72; +C[m,n,b,a] = A[v,m,u,n] * B[a,u,v,b] & a:72; b:72; m:72; n:72; u:72; v:72; +C[b,a,n,m] = A[a,u,v,b] * B[m,n,v,u] & a:72; b:72; m:72; n:72; u:72; v:72; +C[a,n,m,b] = A[a,u,v,b] * B[m,n,v,u] & a:72; b:72; m:72; n:72; u:72; v:72; +C[a,m] = A[a,v,w,u] * B[v,u,w,m] & a:72; m:72; u:72; w:72; v:72; +C[m,a] = A[v,u,w,m] * B[a,v,w,u] & a:72; m:72; u:72; w:72; v:72; +C[a,m] = A[a,v,w,u] * B[w,m,v,u] & a:72; m:72; u:72; w:72; v:72; +C[m,a] = A[w,m,v,u] * B[a,v,w,u] & a:72; u:72; m:72; w:72; v:72; +C[o,a,n,m,b] = A[v,n,u,o,m] * B[a,b,u,v] & a:32; b:30; m:30; o:32; n:30; u:30; v:32; +C[a,o,n,b,m] = A[a,b,u,v] * B[v,n,u,o,m] & a:32; b:30; m:30; o:30; n:30; u:30; v:32; +C[o,b,a,n,m] = A[o,m,v,u,n] * B[a,b,u,v] & a:32; b:30; m:30; o:32; n:30; u:30; v:30; +C[n,b,a,m,o] = A[o,m,v,u,n] * B[a,b,u,v] & a:32; b:30; m:30; o:32; n:32; u:30; v:30; +C[m,a,n] = A[m,v,n,u,w] * B[a,w,v,u] & a:864; m:32; n:30; u:30; w:30; v:30; +C[m,n,a] = A[m,v,n,u,w] * B[a,w,v,u] & a:864; m:32; n:30; u:30; w:30; v:30; +C[a,m,n] = A[a,w,v,u] * B[v,n,w,m,u] & a:864; m:30; n:30; u:30; w:30; v:32; +C[n,a,m] = A[v,n,w,m,u] * B[a,w,v,u] & a:864; m:30; n:32; u:30; w:30; v:32; +C[b,n,p,m,a,o] = A[v,a,b,u] * B[o,m,n,u,p,v] & a:15; b:16; m:18; o:16; n:18; p:18; u:18; v:16; +C[p,b,a,n,m,o] = A[o,m,n,u,p,v] * B[v,a,b,u] & a:16; b:16; m:18; o:16; n:18; p:16; u:18; v:16; +C[m,b,p,o,n,a] = A[o,u,m,n,p,v] * B[v,a,b,u] & a:16; b:16; m:16; o:16; n:18; p:18; u:18; v:16; +C[p,b,n,a,o,m] = A[o,u,m,n,p,v] * B[v,a,b,u] & a:16; b:16; m:18; o:16; n:18; p:16; u:18; v:16; +C[n,m,o,a] = A[m,w,o,v,n,u] * B[v,a,u,w] & a:4500; m:16; o:18; n:16; u:18; w:18; v:16; +C[o,m,n,a] = A[m,w,o,v,n,u] * B[v,a,u,w] & a:4500; m:16; o:16; n:18; u:18; w:18; v:16; +C[m,a,o,n] = A[m,u,n,v,o,w] * B[v,a,u,w] & a:4500; m:16; o:18; n:18; u:18; w:18; v:16; +C[o,m,n,a] = A[m,u,n,v,o,w] * B[v,a,u,w] & a:4500; m:16; o:16; n:18; u:18; w:18; v:16; +C[m,c,b,d,a] = A[u,m] * B[a,d,b,c,u] & a:32; c:30; b:30; d:30; m:24; u:32; +C[m,b,a,c,d] = A[u,m] * B[a,d,b,c,u] & a:32; c:30; b:30; d:30; m:24; u:32; +C[d,a,b,m,c] = A[a,d,b,c,u] * B[m,u] & a:32; c:30; b:30; d:32; m:32; u:30; +C[c,m,a,b,d] = A[a,d,b,c,u] * B[m,u] & a:32; c:32; b:30; d:30; m:32; u:30; +C[m,b,a,c,n,d] = A[n,u,m] * B[c,u,b,d,a] & a:18; c:16; b:18; d:18; m:24; n:16; u:250; +C[n,b,a,m,d,c] = A[n,u,m] * B[c,u,b,d,a] & a:18; c:16; b:18; d:18; m:18; n:16; u:250; +C[d,b,m,a,n,c] = A[c,u,b,d,a] * B[m,n,u] & a:18; c:16; b:18; d:16; m:16; n:18; u:250; +C[m,d,n,a,b,c] = A[m,n,u] * B[c,u,b,d,a] & a:18; c:16; b:18; d:18; m:16; n:18; u:250; +C[a,m,c,b] = A[v,u,c,a,b] * B[m,u,v] & a:32; c:30; b:30; m:864; u:30; v:32; +C[c,b,m,a] = A[v,u,c,a,b] * B[m,u,v] & a:30; c:32; b:30; m:864; u:30; v:32; +C[m,b,a,c] = A[u,m,v] * B[v,u,c,a,b] & a:30; c:30; b:30; m:864; u:32; v:32; +C[a,c,m,b] = A[v,u,c,a,b] * B[u,m,v] & a:32; c:30; b:30; m:864; u:32; v:32; +C[b,n,a,c,m] = A[v,c,a,b,u] * B[u,n,m,v] & a:30; c:30; b:32; m:30; n:30; u:32; v:32; +C[c,n,a,m,b] = A[v,c,a,b,u] * B[u,n,m,v] & a:30; c:32; b:30; m:30; n:30; u:32; v:32; +C[n,m,c,b,a] = A[n,v,u,m] * B[v,c,a,b,u] & a:30; c:30; b:30; m:30; n:32; u:30; v:32; +C[b,m,n,a,c] = A[v,c,a,b,u] * B[n,v,u,m] & a:30; c:30; b:32; m:30; n:32; u:30; v:32; +C[m,b,a] = A[w,u,m,v] * B[b,u,a,v,w] & a:30; b:32; m:864; u:30; w:32; v:30; +C[a,b,m] = A[b,u,a,v,w] * B[w,u,m,v] & a:24; b:32; m:864; u:30; w:32; v:30; +C[b,a,m] = A[b,u,a,v,w] * B[m,w,u,v] & a:30; b:32; m:864; u:30; w:30; v:30; +C[m,a,b] = A[m,w,u,v] * B[b,u,a,v,w] & a:30; b:32; m:864; u:30; w:30; v:30; +C[m,a,o,n,c,b] = A[m,u,o,v,n] * B[c,v,b,u,a] & a:18; c:16; b:18; m:16; o:18; n:18; u:64; v:64; +C[o,n,a,m,b,c] = A[m,u,o,v,n] * B[c,v,b,u,a] & a:18; c:16; b:18; m:16; o:16; n:18; u:64; v:64; +C[c,b,a,n,o,m] = A[c,v,b,u,a] * B[m,o,n,v,u] & a:18; c:16; b:18; m:16; o:18; n:18; u:64; v:64; +C[a,b,o,c,n,m] = A[c,v,b,u,a] * B[m,o,n,v,u] & a:16; c:16; b:18; m:16; o:18; n:18; u:64; v:64; +C[m,a,n,b] = A[w,m,v,n,u] * B[b,u,v,w,a] & a:30; b:32; m:32; n:30; u:30; w:32; v:30; +C[n,b,m,a] = A[w,m,v,n,u] * B[b,u,v,w,a] & a:30; b:32; m:30; n:32; u:30; w:32; v:30; +C[m,n,b,a] = A[w,u,m,v,n] * B[b,u,v,w,a] & a:30; b:32; m:32; n:30; u:30; w:32; v:30; +C[a,b,n,m] = A[b,u,v,w,a] * B[w,u,m,v,n] & a:24; b:32; m:30; n:30; u:30; w:32; v:30; +C[b,o,m,a,n] = A[v,b,a,w,u] * B[u,m,v,o,w,n] & a:60; b:64; m:18; o:18; n:18; u:16; w:18; v:16; +C[n,o,b,m,a] = A[u,m,v,o,w,n] * B[v,b,a,w,u] & a:64; b:64; m:18; o:18; n:16; u:16; w:18; v:16; +C[m,a,n,b,o] = A[u,o,w,n,v,m] * B[v,b,a,w,u] & a:64; b:64; m:16; o:18; n:18; u:16; w:18; v:16; +C[o,a,b,n,m] = A[u,o,w,n,v,m] * B[v,b,a,w,u] & a:64; b:64; m:18; o:16; n:18; u:16; w:18; v:16; +C[e,m,a,b,d,c] = A[u,c,d,b,e,a] * B[u,m] & a:18; c:18; b:18; e:16; d:18; m:16; u:16; +C[b,c,a,m,e,d] = A[u,c,d,b,e,a] * B[u,m] & a:18; c:18; b:16; e:18; d:18; m:16; u:16; +C[e,m,a,d,c,b] = A[u,c,d,b,e,a] * B[m,u] & a:18; c:18; b:18; e:16; d:18; m:16; u:16; +C[e,d,c,b,a,m] = A[u,c,d,b,e,a] * B[m,u] & a:18; c:18; b:18; e:16; d:18; m:16; u:16; +C[m,d,b,c,a] = A[v,m,u] * B[b,d,u,a,v,c] & a:18; c:18; b:16; d:18; m:240; u:18; v:16; +C[m,d,a,b,c] = A[v,m,u] * B[b,d,u,a,v,c] & a:18; c:18; b:16; d:18; m:240; u:18; v:16; +C[m,a,b,c,d] = A[u,v,m] * B[b,d,u,a,v,c] & a:18; c:18; b:16; d:18; m:240; u:16; v:18; +C[m,c,d,b,a] = A[u,v,m] * B[b,d,u,a,v,c] & a:18; c:18; b:16; d:18; m:240; u:16; v:18; +C[n,d,c,m,b,a] = A[v,u,m,n] * B[a,u,v,b,c,d] & a:16; c:18; b:18; d:18; m:15; n:16; u:18; v:16; +C[c,m,b,n,a,d] = A[a,u,v,b,c,d] * B[v,u,m,n] & a:16; c:16; b:18; d:18; m:16; n:16; u:18; v:16; +C[d,a,b,m,c,n] = A[a,u,v,b,c,d] * B[n,m,v,u] & a:16; c:18; b:18; d:16; m:16; n:16; u:18; v:18; diff --git a/benchmark/benchmarks.jl b/benchmark/benchmarks.jl index c8b6279..2fb47cd 100644 --- a/benchmark/benchmarks.jl +++ b/benchmark/benchmarks.jl @@ -2,6 +2,25 @@ using TensorAlgebra using BenchmarkTools SUITE = BenchmarkGroup() -SUITE["rand"] = @benchmarkable rand(10) -# Write your benchmarks here. +const CONTRACTIONS_PATH = joinpath(@__DIR__, "benchmark_specs", "randomTCs.dat") + +include("contractions.jl") + +# Contraction benchmarks +# ---------------------- +contraction_suite = SUITE["contractions"] = BenchmarkGroup() + +Ts = (Float64, ComplexF64) +algs = (TensorAlgebra.Matricize(),) + +for alg in algs + alg_suite = contraction_suite[alg] = BenchmarkGroup() + for T in Ts + alg_suite[T] = BenchmarkGroup() + + for (i, line) in enumerate(eachline(CONTRACTIONS_PATH)) + alg_suite[T][i] = generate_contract_benchmark(line; T, alg) + end + end +end diff --git a/benchmark/contractions.jl b/benchmark/contractions.jl new file mode 100644 index 0000000..67d0f4f --- /dev/null +++ b/benchmark/contractions.jl @@ -0,0 +1,75 @@ +function extract_contract_labels(contraction::AbstractString) + symbolsC = match(r"C\[([^\]]*)\]", contraction) + labelsC = split(symbolsC.captures[1], ","; keepempty=false) + symbolsA = match(r"A\[([^\]]*)\]", contraction) + labelsA = split(symbolsA.captures[1], ","; keepempty=false) + symbolsB = match(r"B\[([^\]]*)\]", contraction) + labelsB = split(symbolsB.captures[1], ","; keepempty=false) + return labelsC, labelsA, labelsB +end + +function generate_contract_benchmark( + line::AbstractString; elt=Float64, alg=default_contract_alg(), do_alpha=true, do_beta=true +) + line_split = split(line, " & ") + @assert length(line_split) == 2 "Invalid line format:\n$line" + contraction, sizes = line_split + + # extract labels + labelsC, labelsA, labelsB = map(Tuple, extract_contract_labels(contraction)) + # pA, pB, pC = TensorOperations.contract_indices( + # tuple(labelsA...), tuple(labelsB...), tuple(labelsC...) + # ) + + # extract sizes + subsizes = Dict{String,Int}() + for (label, sz) in split.(split(sizes, "; "; keepempty=false), Ref(":")) + subsizes[label] = parse(Int, sz) + end + szA = getindex.(Ref(subsizes), labelsA) + szB = getindex.(Ref(subsizes), labelsB) + szC = getindex.(Ref(subsizes), labelsC) + setup_tensors() = (rand(elt, szA...), rand(elt, szB...), rand(elt, szC...)) + + if do_alpha && do_beta + α, β = rand(elt, 2) + return @benchmarkable( + contract!($alg, C, $labelsC, A, $labelsA, B, $labelsB, $α, $β), + setup = ((A, B, C) = $setup_tensors()), + evals = 1 + ) + elseif do_alpha + α = rand(elt) + return @benchmarkable( + contract!($alg, C, $labelsC, A, $labelsA, B, $labelsB, $α), + setup = ((A, B, C) = $setup_tensors()), + evals = 1 + ) + elseif do_beta + β = rand(elt) + return @benchmarkable( + contract!($alg, C, $labelsC, A, $labelsA, B, $labelsB, true, $β), + setup = ((A, B, C) = $setup_tensors()), + evals = 1 + ) + else + return @benchmarkable( + contract!($alg, C, $labelsC, A, $labelsA, B, $labelsB), + setup = ((A, B, C) = $setup_tensors()), + evals = 1 + ) + end +end + +function compute_contract_ops(line::AbstractString) + line_split = split(line, " & ") + @assert length(line_split) == 2 "Invalid line format:\n$line" + _, sizes = line_split + + # extract sizes + subsizes = Dict{String,Int}() + for (label, sz) in split.(split(sizes, "; "; keepempty=false), Ref("=")) + subsizes[label] = parse(Int, sz) + end + return prod(collect(values(subsizes))) +end