TWO BORDERS FOUR CIRCULANT MATRICES © Nickolay Balonin and Jennifer Seberry, 1.05.2014 Conference matrix catalogue and on-line algorithms

N. A. Balonin, Jennifer Seberry Conference Matrices with Two Borders and Four Circulants , Electronic edition, 2014. N. A. Balonin, Jennifer Seberry A Review and New Symmetric Conference Matrices //Informatsionno-upravliaiushchie sistemy, 2014, № 4 (71), pp. 2–7. Observe a construction method for orthogonal (±1, 0)-matrices based on the array (a core), taken with two borders, where cells A (symmetry), B, C, and D, satisfy AA^{T} +BB^{T} +CC^{T} +DD^{T} =(n –1)I:

Two borders and four A,B,C,D-cells CORE [S G;G^{T} –S], S=[A B;B^{T} A], G=[C D;F(D) E(C)]; we will call sequence of cells: A, B, C, D, E=C, F=circshift(D), situated as shown, the curl of Seberry (Lokon, Vichr). The solution depend on the curl resolvance: could be the poor and the rich (matrices with circulated entries) cell-construction. In different to column separation of Walsh-matrices we see a kind of cell separation motivated by sign-frequence (look C_{18} ).

// CONFERENCE MATRIX TWO BORDER FOUR CORE
n=26; v=(n-2)/4; example(v,0);
k1=0; k2=0; k3=0; k4=0;
for (i=0;i<rows(a);i++) if (a[i]==-1) k1++;
for (i=0;i<rows(b);i++) if (b[i]==-1) k2++;
for (i=0;i<rows(c);i++) if (c[i]==-1) k3++;
for (i=0;i<rows(d);i++) if (d[i]==-1) k4++;
puts('n='+n+' k1='+k1+' k2='+k2+' k3='+k3+' k4='+k4);
puts("a=["+a+"];");
puts("b=["+b+"];");
puts("c=["+c+"];");
puts("d=["+d+"];");
// H=CommonPropus(A,B,D);
H=Shadow(a,b,c,d);
{{I=H'*H}} putm(I); mesh(H);
function example(v,k) {
sh=0; sh2=0;
if (v==1) {
a=[0]; b=[-1]; c=[1]; d=[-1];
}
if (v==2) { sh=1;
a=[0,1]; b=[-1,-1]; c=[-1,1]; d=[-1,1];
}
if (v==3) { sh=0;
a=[0,-1,-1];
b=[-1,1,1];
c=[-1,1,1];
d=[-1,-1,1];
}
if (v==4) { sh=3;
a=[0,-1,1,-1];
b=[1,1,-1,-1];
c=[1,-1,-1,-1];
d=[1,1,1,-1];
}
if (v==6) { sh=1;
a=[0,1,-1,1,-1,1];
b=[-1,1,-1,-1,1,-1];
c=[-1,-1,1,1,1,1];
d=[-1,-1,-1,-1,1,1];
}
if (v==7) { sh=3;
a=[0,-1,1,1,1,1,-1];
b=[1,-1,-1,-1,1,-1,-1];
c=[-1,1,-1,-1,-1,1,1];
d=[-1,-1,1,1,1,-1,1];
}
if (v==9) { sh=5;
a=[0,-1,-1,1,1,1,1,-1,-1];
b=[-1,1,-1,1,-1,1,-1,-1,1];
c=[1,1,1,-1,1,1,-1,-1,1];
d=[-1,1,1,-1,-1,1,-1,-1,-1];
}
if (v==10) { sh=1;
a=[0,-1,1,-1,-1,1,-1,-1,1,-1];
b=[1,1,1,-1,-1,-1,-1,1,1,1];
c=[-1,1,1,-1,-1,-1,1,-1,1,-1];
d=[1,-1,1,-1,1,1,1,-1,-1,1];
}
if (v==12) { sh=1;
a=[0,-1,1,1,1,-1,1,-1,1,1,1,-1];
b=[1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,1];
c=[1,1,-1,-1,-1,-1,1,-1,1,1,-1,1];
d=[-1,1,-1,-1,1,-1,1,1,1,1,-1,-1];
}
if (v==13) { sh=4;
a=[0,1,-1,-1,-1,-1,1,1,-1,-1,-1,-1,1];
b=[1,-1,1,1,1,1,1,1,-1,1,-1,-1,-1];
c=[1,1,-1,-1,1,-1,-1,-1,1,1,-1,1,-1];
d=[1,-1,1,-1,-1,1,1,1,-1,1,1,-1,-1];
}
if (v==15) { sh=1; sh2=-1;
a=[0,1,1,1,-1,1,-1,-1,-1,-1,1,-1,1,1,1];
b=[-1,1,-1,-1,1,1,-1,-1,-1,-1,1,1,-1,-1,1];
c=[1,-1,-1,1,1,1,-1,1,-1,1,1,1,1,-1,-1];
d=[-1,1,1,-1,-1,-1,-1,1,-1,1,-1,-1,-1,1,1];
}
}
function Shadow(a,b,c,d) {
A=circul(a); B=circul(b);
C=circul(c); D=circul(d);
F=circshift(D,sh); Eu=circshift(C,sh2);
S=square(A,B,tr(B),A);
G=square(C,D,F,Eu);
H=square(S,G,tr(G),minp(S));
H=border(H,0,1,-1); H=border(H,0);
return H;
}
function CommonPropus(A,B,D) {
var H11,H12,H21,H22,TB,TD,BR,DR,TBR,TDR,MA,MTBR,MTDR;
TB=tr(B); TD=tr(D); BR=flip(B);
DR=flip(D); TBR=flip(TB); TDR=flip(TD);
MA=minp(A); MTBR=minp(TBR); MTDR=minp(TDR);
H11=square(A,BR,BR,TDR); H12=square(BR,DR,MA,MTBR);
H21=square(BR,MA,DR,MTBR); H22=square(MTDR,TBR,TBR,MA);
return square(H11,H12,H21,H22);
}

{{C="C54B2ABCD.xml"}} mesh(C);
n=rows(C); v=(n-2)/4; g=C[2]; g=rowcol(g,2,n-1);
a=rowcol(g,0,v-1); puts("a=["+a+"];");
b=rowcol(g,v,2*v-1); puts("b=["+b+"];");
c=rowcol(g,2*v,3*v-1); puts("c=["+c+"];");
d=rowcol(g,3*v,4*v-1); puts("d=["+d+"];");
{{I=C'*C}} putm(I);
// putm(C);

// BY SHADOW SEQUENCES
// 8,12,16,[20],24,28,[32],36,40,[44],48,52,[56],60,[64!],
// [68],72,[76],80,[84!],88,[92],96,100,108,112,120 и 124
n=14; v=(n-2)/2; examples(2*v,0); // {{a=-a}}
// ВЫВОД ПОСЛЕДОВАТЕЛЬНОСТЕЙ
k1=0; k2=0;
for (i=0;i<rows(a);i++) if (a[i]==-1) k1++;
for (i=0;i<rows(b);i++) if (b[i]==-1) k2++;
// puts("n="+n+"; k1="+k1+"; k2="+k2+";");
putm("a=["+a+"];"); putm("b=["+b+"];");
a2=a2ab(a); b2=a2ab(b); v=v/2;
a=rowcol(a2,0,v-1); b=rowcol(a2,v,2*v-1);
c=rowcol(b2,0,v-1); d=rowcol(b2,v,2*v-1);
k1=0; k2=0; k3=0; k4=0;
for (i=0;i<rows(a);i++) if (a[i]==-1) k1++;
for (i=0;i<rows(b);i++) if (b[i]==-1) k2++;
for (i=0;i<rows(c);i++) if (c[i]==-1) k3++;
for (i=0;i<rows(d);i++) if (d[i]==-1) k4++;
puts('n='+n+' k1='+k1+' k2='+k2+' k3='+k3+' k4='+k4);
puts("a=["+a+"];"); puts("b=["+b+"];");
puts("c=["+c+"];"); puts("d=["+d+"];");
sh=1; sh2=0;
H=Shadow(a,b,c,d); {{I=H'*H}} putm(I);
plots(H,"XR");
// mesh(H);
function Shadow(a,b,c,d) {
A=circul(a); B=circul(b);
C=circul(c); D=circul(d);
F=circshift(D,sh); Eu=circshift(C,sh2);
S=square(A,B,tr(B),A);
G=square(C,D,F,Eu);
H=square(S,G,tr(G),minp(S));
H=border(H,0,1,-1); H=border(H,0);
return H;
}
function CommonPropus(A,B,D) {
var H11,H12,H21,H22,TB,TD,BR,DR,TBR,TDR,MA,MTBR,MTDR;
TB=tr(B); TD=tr(D); BR=flip(B);
DR=flip(D); TBR=flip(TB); TDR=flip(TD);
MA=minp(A); MTBR=minp(TBR); MTDR=minp(TDR);
H11=square(A,BR,BR,TDR); H12=square(BR,DR,MA,MTBR);
H21=square(BR,MA,DR,MTBR); H22=square(MTDR,TBR,TBR,MA);
return square(H11,H12,H21,H22);
}
function examples(n,k) {
if (n==8) { //
a=[0,-1,1,-1];
b=[1,-1,-1,1];
}
if (n==12) { //
a=[0,1,-1,-1,-1,1];
b=[-1,-1,1,-1,1,1];
}
if (n==16) { //
a=[0,1,-1,-1,1,-1,-1,1];
b=[1,1,1,-1,1,-1,-1,-1];
}
if (n==24) { //
a=[0,-1,1,1,-1,-1,1,-1,-1,1,1,-1];
b=[1,-1,1,1,1,1,-1,-1,-1,-1,1,-1];
}
if (n==28) {
a=[0,-1,-1,1,1,-1,1,-1,1,-1,1,1,-1,-1];
b=[1,1,-1,-1,-1,-1,1,-1,1,1,1,1,-1,-1];
}
if (n==36) {
a=[0,1,-1,1,1,-1,1,-1,-1,-1,-1,-1,1,-1,1,1,-1,1];
b=[-1,-1,1,-1,-1,-1,1,1,1,-1,-1,-1,1,1,1,-1,1,1];
}
if (n==40) {
a=[0,-1,-1,-1,1,1,-1,1,-1,1,1,1,-1,1,-1,1,1,-1,-1,-1];
b=[1,1,1,1,-1,1,-1,-1,1,1,-1,-1,1,1,-1,1,-1,-1,-1,-1];
}
if (n==48) {
a=[0,1,-1,-1,1,-1,1,1,1,-1,-1,-1,1,-1,-1,-1,1,1,1,-1,1,-1,-1,1];
b=[-1,-1,1,-1,-1,-1,-1,-1,1,1,-1,1,-1,1,-1,-1,1,1,1,1,1,-1,1,1];
}
if (n==52) {
a=[0,1,-1,1,1,-1,-1,1,1,1,-1,-1,-1,-1,-1,-1,-1,1,1,1,-1,-1,1,1,-1,1];
b=[1,-1,-1,1,1,-1,1,-1,-1,-1,-1,1,-1,1,-1,1,1,1,1,-1,1,-1,-1,1,1,-1];
}
if (n==60) {
a=[0,-1,-1,-1,-1,1,1,1,1,-1,1,-1,-1,1,1,-1,1,1,-1,-1,1,-1,1,1,1,1,-1,-1,-1,-1];
b=[1,-1,1,-1,-1,-1,1,1,-1,-1,-1,1,-1,-1,1,-1,1,1,-1,1,1,1,-1,-1,1,1,1,-1,1,-1];
}
if (n==72) {
a=[0,-1,1,1,1,-1,1,1,-1,-1,-1,-1,-1,1,-1,1,1,-1,1,-1,1,1,-1,1,-1,-1,-1,-1,-1,1,1,-1,1,1,1,-1];
b=[1,1,1,-1,-1,-1,-1,1,-1,-1,-1,1,-1,-1,1,1,-1,1,-1,1,-1,-1,1,1,-1,1,1,1,-1,1,1,1,1,-1,-1,-1];
}
if (n==80) { //
a=[0,1,-1,1,1,1,-1,-1,-1,1,1,-1,1,1,-1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,1,-1,1,1,-1,1,1,-1,-1,-1,1,1,1,-1,1];
b=[1,1,1,-1,1,-1,-1,1,1,-1,-1,1,-1,1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,-1,1,-1,1,1,-1,-1,1,1,-1,1,-1,-1,-1];
}
if (n==88) { // n=88
a=[0,-1,-1,1,-1,1,1,-1,-1,1,-1,-1,-1,1,1,-1,-1,-1,1,1,1,1,1,1,1,1,1,-1,-1,-1,1,1,-1,-1,-1,1,-1,-1,1,1,-1,1,-1,-1];
b=[1,-1,-1,-1,-1,-1,1,1,-1,-1,1,-1,1,-1,1,-1,-1,1,-1,1,1,1,-1,-1,-1,1,-1,1,1,-1,1,-1,1,-1,1,1,-1,-1,1,1,1,1,1,-1];
}
if (n==96) { // n=96
a=[0,-1,-1,1,-1,1,-1,1,1,-1,-1,1,-1,1,1,-1,-1,1,1,-1,-1,-1,1,1,1,1,1,-1,-1,-1,1,1,-1,-1,1,1,-1,1,-1,-1,1,1,-1,1,-1,1,-1,-1];
b=[-1,-1,-1,-1,1,-1,1,-1,-1,-1,-1,1,-1,-1,-1,1,-1,-1,1,1,1,1,1,-1,1,-1,-1,-1,-1,-1,1,1,-1,1,1,1,-1,1,1,1,1,-1,1,-1,1,1,1,1];
}
if (n==100) { // n=100
a=[0,-1,-1,-1,-1,1,-1,1,1,-1,-1,1,1,1,1,1,-1,-1,1,-1,-1,-1,1,1,1,-1,1,1,1,-1,-1,-1,1,-1,-1,1,1,1,1,1,-1,-1,1,1,-1,1,-1,-1,-1,-1];
b=[1,-1,1,-1,1,-1,-1,1,-1,1,1,1,1,-1,1,1,-1,-1,1,1,1,1,-1,-1,1,-1,1,1,-1,-1,-1,-1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,1,1,-1,1,-1,1,-1];
}
if (n==108) { // n=108
a=[0,1,-1,1,1,1,1,-1,1,1,-1,-1,-1,-1,1,-1,1,1,-1,1,-1,-1,-1,1,1,-1,-1,-1,-1,-1,1,1,-1,-1,-1,1,-1,1,1,-1,1,-1,-1,-1,-1,1,1,-1,1,1,1,1,-1,1];
b=[1,1,1,1,1,-1,1,1,1,-1,-1,1,-1,1,-1,-1,-1,1,-1,1,1,-1,-1,1,-1,-1,-1,1,1,1,-1,1,1,-1,-1,1,-1,1,1,1,-1,1,-1,1,1,-1,-1,-1,1,-1,-1,-1,-1,-1];
}
if (n==112) { // n=112
a=[0,-1,-1,1,-1,1,1,-1,-1,-1,1,1,-1,-1,1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,1,-1,1,-1,-1,-1,1,-1,-1,1,1,-1,-1,-1,1,1,-1,1,-1,-1];
b=[-1,-1,1,-1,-1,1,1,1,-1,1,-1,-1,-1,-1,1,1,1,-1,1,-1,1,1,-1,-1,-1,-1,1,-1,1,-1,1,1,1,1,-1,-1,1,-1,1,-1,-1,-1,1,1,1,1,-1,1,-1,-1,-1,1,1,-1,1,1];
}
if (n==120) { // n=120
a=[0,-1,-1,1,-1,-1,1,-1,1,-1,1,-1,1,1,-1,-1,-1,-1,1,1,1,-1,-1,1,1,-1,-1,1,1,1,1,1,1,1,-1,-1,1,1,-1,-1,1,1,1,-1,-1,-1,-1,1,1,-1,1,-1,1,-1,1,-1,-1,1,-1,-1];
b=[-1,-1,1,-1,-1,-1,1,-1,1,1,1,1,-1,1,1,-1,-1,-1,-1,1,-1,1,-1,-1,-1,-1,-1,1,1,-1,1,-1,-1,1,1,1,1,1,-1,1,-1,1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,1,1,1,-1,1,1];
}
if (n==124) { // Dragomir
a=[0,1,1,-1,-1,1,1,1,-1,1,1,1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,1,-1,1,1,1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,1,1,1,1,-1,1,1,1,-1,-1,1,1];
b=[1,-1,1,-1,1,1,1,-1,-1,1,-1,-1,1,1,-1,-1,-1,-1,-1,1,-1,1,1,-1,1,-1,-1,1,-1,-1,-1,1,1,1,-1,1,1,-1,1,-1,-1,1,-1,1,1,1,1,1,-1,-1,1,1,-1,1,1,-1,-1,-1,1,-1,1,-1];
}
if (n==136) { // Dragomir
a=[0,-1,1,-1,-1,-1,1,-1,1,-1,-1,-1,1,1,-1,-1,1,1,-1,1,-1,1,1,-1,1,1,1,1,1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,1,1,1,1,1,1,-1,1,1,-1,1,-1,1,1,-1,-1,1,1,-1,-1,-1,1,-1,1,-1,-1,-1,1,-1];
b=[1,-1,-1,-1,1,1,1,1,-1,1,-1,1,1,1,1,-1,1,1,-1,-1,-1,-1,1,1,-1,1,1,-1,1,1,-1,-1,-1,1,-1,1,1,1,-1,-1,1,-1,-1,1,-1,-1,1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,1,-1,-1,-1,-1,1,1,1,-1];
}
} The solution depend on the curl resolvance: A is circulant and symmetry matrix of the left square, the right square G=[C D;D* C] based on the two flip-inversed (or shifted) sequences, D* is a few times shifted circulant cell. This form reflects a Fourier's-type basis of the orthogonal matrices (in some sense, these matrices reflect some gross-object taken in the tune details when we go to the big orders: something like the photos with the more big resolution).

Matrices C_{6} and C_{10} Matrices C_{14} and C_{18} Matrices C_{26} and C_{30} Matrices C_{38} and C_{42} Matriсes C_{50} and C_{54} Matrix C_{62} and C_{100} MATRICES WITH CIRCULATED ENTRIES

The rich construction based on circulant and back-circulant cells leads to the matrix portraits with the two centers of circulation of entries. The poor and rich structures look like block-permutated to eath-other, but column- and row-permutations of B and C cells at S it does not answer the permutation of –B at –S.

The solution depend on the curl resolvance: A is circulant and symmetry matrix of the left square, the right square G=[C D;F C*] based on the two flip-inversed (or inversed or/and shifted) sequences for C and D, F=mirror(D), E=C* is a few times shifted (for orders 18, 26, 42, ..) back-circulant cell mirror(C). Matrix C_{26} is a special case, by it has symmetry accordingly both diagonals cell B (so it has a mirror symmetry of F=RDR or E=RCR, and it has a simple solution also).

Matrices C_{6} and C_{10} Matrices C_{14} and C_{18} Matrices C_{26} , two versions Matrices C_{30} , two versions Matrices C_{38} , two versions Matrices C_{42} , two versions Matrices C_{50} and C_{54} Matrix C_{62} Kernel of integral operator THE STRUCTURAL SINGULAR POINTS | THE C66 PROBLEM VISUAL MATLAB PROGRAM

% VISUAL MATLAB PROGRAM
% SHADOW MATRICES
n=16, v=n/4, m=(v-2)/2
z=8*round(n/8)-n, if z>0, m=(v-1)/2, end
h=one(n/2), h=[h; -h], g=one(n+1), G=0
% [z m]=?;
X=3, M=1000
For t Do 1000, if X>0,
Do 1000, if X>0,
a=randseq(m), if z=0,
a=[0 a randseq(1) fliplr(a)]
else, a=[0 a fliplr(a)], end
b=randseq(v), c=randseq(v),
d=-fliplr(c), e=circshift(d),
% d=randseq(v), % e=randseq(v)
A=circ(a), B=circ(b)
C=circ(c), D=circ(d),
E=circ(e), % F=circ(f)
% [a;b;c;d;e]=?J;
H=SQR, % H=?C;
X=maxabslsm(H), % F=?
if M>X, M=X, G=H, end
end end
[t M]=?, G=?C
end end
% H=ab2a(H)
H'*H=?,
H=?C;
[a;b;c;d;e]=?J;
function: H=SQR
X=[A B; B' A],
% Y=circ([c d]), Y=a2ab(Y)
Y=[C D; E C], % Y=ab2a(Y), X=ab2a(X)
H=[X Y;Y' -X']
H=[0 h'; h H], H=[0 g'; g H]
function: H=WILLIAMSON
H=[A B C D;-B A -D C;-C D A -B;-D -C B A]
function: H=GS
matrices: BR,CR,DR,BTR,CTR,DTR
BR=flip(B), BTR=fliplr(B)
CR=flip(B), CTR=fliplr(B)
DR=flip(B), DTR=fliplr(B)
H=[A BR CR DR;-BR A DTR -CTR;-CR -DTR A BTR;-DR CTR -BTR A]
Common Propus gives no need matrix

// Common Propus test
n=52; v=n/4; example(n,0);
k1=0; k2=0; k3=0;
for (i=0;i<rows(a);i++) if (a[i]==-1) k1++;
for (i=0;i<rows(b);i++) if (b[i]==-1) k2++;
for (i=0;i<rows(d);i++) if (d[i]==-1) k3++;
a=setmaxis(a); b=setmaxis(b); d=setmaxis(d);
IS1=getis(a); IS2=getis(b); IS3=getis(d);
puts('n='+n+' k1='+k1+' k2='+k2+' k3='+k3+' IS='+IS1+','+IS2+','+IS3);
puts("a=["+a+"];"); puts("b=["+b+"];"); puts("d=["+d+"];");
A=circ(a); B=circ(b); D=circ(d);
H=CommonPropus(A,B,D);
e=one(v);
//e1=e.concat(minp(e)).concat(e).concat(minp(e));
//e2=e.concat(e).concat(minp(e)).concat(minp(e));
//H=square(0,tr(e1),e2,H); H=border(H);
{{I=H'*H}} putm(I); mesh(H);
function example(n,k) {
if (n==12) {
a=[0,-1,-1]; b=[-1,1,1]; d=[-1,-1,1];
}
if (n==52) {
a=[0,-1,-1,-1,-1,1,1,1,1,-1,-1,-1,-1];
b=[-1,1,-1,1,-1,-1,1,1,1,-1,1,1,-1];
d=[1,1,-1,1,-1,1,1,1,-1,-1,1,-1,1];
}
}
function getis(a) {
// get index of symmetry
var i,v,F,IS; v=rows(a); F=true; IS=1;
for (i=1;i<=round(v/2);i++) if (F) { IS=i; F=a[i]==a[v-i]; }
return IS;
}
function setmaxis(x) {
// set maximal index of symmetry
var i,v,a,b,F,IS,ISM;
a=equal(x); b=equal(x); ISM=getis(a); v=rows(a);
for (i=1;i<v;i++) { a=circshift(a); IS=getis(a);
if (IS>ISM) { b=equal(a); ISM=IS;}}
return b;
}
function CommonPropus(A,B,D) {
var H11,H12,H21,H22,TB,TD,BR,DR,TBR,TDR,MA,MTBR,MTDR;
TB=tr(B); TD=tr(D); BR=flip(B);
DR=flip(D); TBR=flip(TB); TDR=flip(TD);
MA=minp(A); MTBR=minp(TBR); MTDR=minp(TDR);
H11=square(A,BR,BR,TDR); H12=square(BR,DR,MA,MTBR);
H21=square(BR,MA,DR,MTBR); H22=square(MTDR,TBR,TBR,MA);
return square(H11,H12,H21,H22);
}

// GALOIS FIELD PROCEDURE: 4 CELLS
if (tick==0) { n=16+4*0;
Flg1N=n%4!=0; Flg1N=true; // type of symmetry
Fphase=false; Maxphase=6; FlgP2=false;
Flgalp=true; M=10000; R=true; tuning();
Z=eyez(n/4);
}
for (k=0;k<10;k++)
if (R) { setphases();
// ROOTS
x1=gfrand(); // x1=[41,14]; // 44
x2=equal(x1); getab(x1,p);
if (Flg1N) {
b=circshift(b,randint(v));
b=a2ab(b); d=rowcol(b,v4,v1); c=rowcol(b,0,v41);
// a=circshift(a,randint(v));
a=a2ab(a); b=rowcol(a,v4,v1); a=rowcol(a,0,v41);
// a[0]=0; // b[0]=0;
}else{
c=equal(a); d=equal(b);
x1=gfrand(); // x1=[5,3]; // 44
getab(x1,p);
// a[0]=0; // a[v]=0; // b[0]=0; // b[v]=0;
}
{{a=Z*a; b=Z*b; c=Z*c; d=Z*d}}
H=Shadow(c,d,a,b);
m=maxabslsm(H);
if (M>=m) { M=m; if (M==0) R=false; X1=x1; X2=x2; }
}
// INFORMATION
puts("n="+n+" p="+p+" r="+GFr+" Lim="+M+"; tick="+tick);
// puts("x1=["+X1+"]; x2=["+X2+"];");
// RESTART
if (M>0) {
//////////////////////
FlgP2=!FlgP2; tuning();
restart(0) }else{ // FINISH
text="pha="+pha+"; phu="+phu+"; phw="+phw+";"; puts(text);
puts("x1=["+x1+"];"+" x2=["+x2+"];"); Z=eyez(rows(a));
puts("a=["+a+"];"); puts("b=["+b+"];");
puts("c=["+c+"];"); puts("d=["+d+"];");
{{I=H'*H}} putm(I); putm(H); // H=ab2a(H);
plots(H,"XR"); sound("5th.wav");
}
function Shadow(a,b,c,d) {
a[0]=0;
A=circul(a); B=circul(b);
C=circul(c); D=circul(d);
F=circshift(D,1);
S=square(A,B,tr(B),A);
G=square(C,D,F,C);
S=ab2a(S); G=ab2a(G);
H=square(S,G,tr(G),minp(S));
H=border(H,0,1,-1); H=border(H,0);
return H;
}
function tuning() { p=n/2; law=n/2;
if (Flg1N) {
if (FlgP2) { p=n+2; law=law+3;} }else{ p=n+2;
// if (FlgP2) { p=p/2; law=round(law/2); }
}
lau=4*law+1; p=p-1; gfinit(p,2); if (p==27) gfinit(3,6);
v=n/4; v4=v; if (Flg1N) v=n/2; v1=v-1; v2=2*v; v41=v4-1;
setphases(); vs=v1/2; // !!!!!
}
function setphases() {
pha=randint(v); phu=randint(v); phw=randint(v);
// if ((p+1)%4!=0) phw=2;
if (!Fphase) phw=randint(Maxphase);
pwu=lau+phu; pww=law-phw; pwa=law+pha;
}
function getab(x,p) {
var i,i2,u,w,U,W,W1,W2;
a=one(v); b=one(v); i2=0;
u=gfpow(x,pwu); U=gfexp(u,v1);
w=gfpow(x,pww); W=gfexp(w,v2);
if (Flgalp) {
// alp=gfpow(x,pwa);
alp=gfadd(x,GFe);
// alp=gfadd(alp,GFe);
// alp=gfadd(alp,GFe);
// alp=gfpow(alp,pwa);
// alp=gfadd(alp,GFe);
W=gfmul(alp,W); }
for (i=0;i<v;i++) {
W1=W[i2]; i2++; W2=W[i2]; i2++;
if (gfeq(gfadd(W1,gfpow(W1,p)),U)) a[i]=-1;
if (gfeq(gfadd(W2,gfpow(W2,p)),U)) b[i]=-1;
}}

RECONSTRUCTION C26

n=26;
pexamples(n); v=(n/2-1)/2;
// puts("a=["+a+"];"); puts("b=["+b+"];");
H=twocircul(a,b); plots(H,"XR"); // {{I=H'*H}} putm(I);
pa=rowcol(a,1,v); pb=rowcol(a,v+1,2*v);
pc=rowcol(b,1,v); pd=rowcol(b,v+1,2*v);
puts("pa=["+pa+"];"); // puts("pb=["+pb+"];"); // b=flip(a)
puts("pc=["+pc+"];"); // puts("pd=["+pd+"];"); // d=flip(c)
v=(n-2)/2; examples(2*v,0); // {{a=-a}}
// ВЫВОД ПОСЛЕДОВАТЕЛЬНОСТЕЙ
k1=0; k2=0;
for (i=0;i<rows(a);i++) if (a[i]==-1) k1++;
for (i=0;i<rows(b);i++) if (b[i]==-1) k2++;
// puts("n="+n+"; k1="+k1+"; k2="+k2+";");
// putm("a=["+a+"];"); putm("b=["+b+"];");
a2=a2ab(a); b2=a2ab(b); v=v/2;
a=rowcol(a2,0,v-1); b=rowcol(a2,v,2*v-1);
c=rowcol(b2,0,v-1); d=rowcol(b2,v,2*v-1);
k1=0; k2=0; k3=0; k4=0;
for (i=0;i<rows(a);i++) if (a[i]==-1) k1++;
for (i=0;i<rows(b);i++) if (b[i]==-1) k2++;
for (i=0;i<rows(c);i++) if (c[i]==-1) k3++;
for (i=0;i<rows(d);i++) if (d[i]==-1) k4++;
// puts('n='+n+' k1='+k1+' k2='+k2+' k3='+k3+' k4='+k4);
puts("a=["+a+"];"); // puts("b=["+b+"];");
puts("c=["+c+"];"); // puts("d=["+d+"];"); d=-flip(c)
sh=1; sh2=0; H=Shadow(a,b,c,d);
k=2;
{{pa2=-a}} pa2[0]=-1; pa2=circshift(pa2,k); pb2=flip(pa2);
{{pc2=c}} pc2=circshiftback(pc2,k); pd2=flip(pc2);
puts("pa=["+pa2+"];"); // puts("pb=["+pb2+"];");
puts("pc=["+pc2+"];"); // puts("pd=["+pd2+"];");
a=[0].concat(pa2).concat(pb2);
b=[-1].concat(pc2).concat(pd2);
H=twocircul(a,b); plots(H,"XR");
{{I=H'*H}} putm(I);
function Shadow(a,b,c,d) {
A=circul(a); B=circul(b);
C=circul(c); D=circul(d);
F=circshift(D,sh); Eu=circshift(C,sh2);
S=square(A,B,tr(B),A);
G=square(C,D,F,Eu);
H=square(S,G,tr(G),minp(S));
H=border(H,0,1,-1); H=border(H,0);
return H;
}
function CommonPropus(A,B,D) {
var H11,H12,H21,H22,TB,TD,BR,DR,TBR,TDR,MA,MTBR,MTDR;
TB=tr(B); TD=tr(D); BR=flip(B);
DR=flip(D); TBR=flip(TB); TDR=flip(TD);
MA=minp(A); MTBR=minp(TBR); MTDR=minp(TDR);
H11=square(A,BR,BR,TDR); H12=square(BR,DR,MA,MTBR);
H21=square(BR,MA,DR,MTBR); H22=square(MTDR,TBR,TBR,MA);
return square(H11,H12,H21,H22);
}
function examples(n,k) {
if (n==8) { //
a=[0,-1,1,-1];
b=[1,-1,-1,1];
}
if (n==12) { //
a=[0,1,-1,-1,-1,1];
b=[-1,-1,1,-1,1,1];
}
if (n==16) { //
a=[0,1,-1,-1,1,-1,-1,1];
b=[1,1,1,-1,1,-1,-1,-1];
}
if (n==24) { //
a=[0,-1,1,1,-1,-1,1,-1,-1,1,1,-1];
b=[1,-1,1,1,1,1,-1,-1,-1,-1,1,-1];
}
if (n==28) {
a=[0,-1,-1,1,1,-1,1,-1,1,-1,1,1,-1,-1];
b=[1,1,-1,-1,-1,-1,1,-1,1,1,1,1,-1,-1];
}
if (n==36) {
a=[0,1,-1,1,1,-1,1,-1,-1,-1,-1,-1,1,-1,1,1,-1,1];
b=[-1,-1,1,-1,-1,-1,1,1,1,-1,-1,-1,1,1,1,-1,1,1];
}
if (n==40) {
a=[0,-1,-1,-1,1,1,-1,1,-1,1,1,1,-1,1,-1,1,1,-1,-1,-1];
b=[1,1,1,1,-1,1,-1,-1,1,1,-1,-1,1,1,-1,1,-1,-1,-1,-1];
}
if (n==48) {
a=[0,1,-1,-1,1,-1,1,1,1,-1,-1,-1,1,-1,-1,-1,1,1,1,-1,1,-1,-1,1];
b=[-1,-1,1,-1,-1,-1,-1,-1,1,1,-1,1,-1,1,-1,-1,1,1,1,1,1,-1,1,1];
}
if (n==52) {
a=[0,1,-1,1,1,-1,-1,1,1,1,-1,-1,-1,-1,-1,-1,-1,1,1,1,-1,-1,1,1,-1,1];
b=[1,-1,-1,1,1,-1,1,-1,-1,-1,-1,1,-1,1,-1,1,1,1,1,-1,1,-1,-1,1,1,-1];
}
if (n==60) {
a=[0,-1,-1,-1,-1,1,1,1,1,-1,1,-1,-1,1,1,-1,1,1,-1,-1,1,-1,1,1,1,1,-1,-1,-1,-1];
b=[1,-1,1,-1,-1,-1,1,1,-1,-1,-1,1,-1,-1,1,-1,1,1,-1,1,1,1,-1,-1,1,1,1,-1,1,-1];
}
if (n==72) {
a=[0,-1,1,1,1,-1,1,1,-1,-1,-1,-1,-1,1,-1,1,1,-1,1,-1,1,1,-1,1,-1,-1,-1,-1,-1,1,1,-1,1,1,1,-1];
b=[1,1,1,-1,-1,-1,-1,1,-1,-1,-1,1,-1,-1,1,1,-1,1,-1,1,-1,-1,1,1,-1,1,1,1,-1,1,1,1,1,-1,-1,-1];
}
if (n==80) { //
a=[0,1,-1,1,1,1,-1,-1,-1,1,1,-1,1,1,-1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,1,-1,1,1,-1,1,1,-1,-1,-1,1,1,1,-1,1];
b=[1,1,1,-1,1,-1,-1,1,1,-1,-1,1,-1,1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,-1,1,-1,1,1,-1,-1,1,1,-1,1,-1,-1,-1];
}
if (n==88) { // n=88
a=[0,-1,-1,1,-1,1,1,-1,-1,1,-1,-1,-1,1,1,-1,-1,-1,1,1,1,1,1,1,1,1,1,-1,-1,-1,1,1,-1,-1,-1,1,-1,-1,1,1,-1,1,-1,-1];
b=[1,-1,-1,-1,-1,-1,1,1,-1,-1,1,-1,1,-1,1,-1,-1,1,-1,1,1,1,-1,-1,-1,1,-1,1,1,-1,1,-1,1,-1,1,1,-1,-1,1,1,1,1,1,-1];
}
if (n==96) { // n=96
a=[0,-1,-1,1,-1,1,-1,1,1,-1,-1,1,-1,1,1,-1,-1,1,1,-1,-1,-1,1,1,1,1,1,-1,-1,-1,1,1,-1,-1,1,1,-1,1,-1,-1,1,1,-1,1,-1,1,-1,-1];
b=[-1,-1,-1,-1,1,-1,1,-1,-1,-1,-1,1,-1,-1,-1,1,-1,-1,1,1,1,1,1,-1,1,-1,-1,-1,-1,-1,1,1,-1,1,1,1,-1,1,1,1,1,-1,1,-1,1,1,1,1];
}
if (n==100) { // n=100
a=[0,-1,-1,-1,-1,1,-1,1,1,-1,-1,1,1,1,1,1,-1,-1,1,-1,-1,-1,1,1,1,-1,1,1,1,-1,-1,-1,1,-1,-1,1,1,1,1,1,-1,-1,1,1,-1,1,-1,-1,-1,-1];
b=[1,-1,1,-1,1,-1,-1,1,-1,1,1,1,1,-1,1,1,-1,-1,1,1,1,1,-1,-1,1,-1,1,1,-1,-1,-1,-1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,1,1,-1,1,-1,1,-1];
}
if (n==108) { // n=108
a=[0,1,-1,1,1,1,1,-1,1,1,-1,-1,-1,-1,1,-1,1,1,-1,1,-1,-1,-1,1,1,-1,-1,-1,-1,-1,1,1,-1,-1,-1,1,-1,1,1,-1,1,-1,-1,-1,-1,1,1,-1,1,1,1,1,-1,1];
b=[1,1,1,1,1,-1,1,1,1,-1,-1,1,-1,1,-1,-1,-1,1,-1,1,1,-1,-1,1,-1,-1,-1,1,1,1,-1,1,1,-1,-1,1,-1,1,1,1,-1,1,-1,1,1,-1,-1,-1,1,-1,-1,-1,-1,-1];
}
if (n==112) { // n=112
a=[0,-1,-1,1,-1,1,1,-1,-1,-1,1,1,-1,-1,1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,1,-1,1,-1,-1,-1,1,-1,-1,1,1,-1,-1,-1,1,1,-1,1,-1,-1];
b=[-1,-1,1,-1,-1,1,1,1,-1,1,-1,-1,-1,-1,1,1,1,-1,1,-1,1,1,-1,-1,-1,-1,1,-1,1,-1,1,1,1,1,-1,-1,1,-1,1,-1,-1,-1,1,1,1,1,-1,1,-1,-1,-1,1,1,-1,1,1];
}
if (n==120) { // n=120
a=[0,-1,-1,1,-1,-1,1,-1,1,-1,1,-1,1,1,-1,-1,-1,-1,1,1,1,-1,-1,1,1,-1,-1,1,1,1,1,1,1,1,-1,-1,1,1,-1,-1,1,1,1,-1,-1,-1,-1,1,1,-1,1,-1,1,-1,1,-1,-1,1,-1,-1];
b=[-1,-1,1,-1,-1,-1,1,-1,1,1,1,1,-1,1,1,-1,-1,-1,-1,1,-1,1,-1,-1,-1,-1,-1,1,1,-1,1,-1,-1,1,1,1,1,1,-1,1,-1,1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,1,1,1,-1,1,1];
}
if (n==124) { // Dragomir
a=[0,1,1,-1,-1,1,1,1,-1,1,1,1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,1,-1,1,1,1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,1,1,1,1,-1,1,1,1,-1,-1,1,1];
b=[1,-1,1,-1,1,1,1,-1,-1,1,-1,-1,1,1,-1,-1,-1,-1,-1,1,-1,1,1,-1,1,-1,-1,1,-1,-1,-1,1,1,1,-1,1,1,-1,1,-1,-1,1,-1,1,1,1,1,1,-1,-1,1,1,-1,1,1,-1,-1,-1,1,-1,1,-1];
}
if (n==136) { // Dragomir
a=[0,-1,1,-1,-1,-1,1,-1,1,-1,-1,-1,1,1,-1,-1,1,1,-1,1,-1,1,1,-1,1,1,1,1,1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,1,1,1,1,1,1,-1,1,1,-1,1,-1,1,1,-1,-1,1,1,-1,-1,-1,1,-1,1,-1,-1,-1,1,-1];
b=[1,-1,-1,-1,1,1,1,1,-1,1,-1,1,1,1,1,-1,1,1,-1,-1,-1,-1,1,1,-1,1,1,-1,1,1,-1,-1,-1,1,-1,1,1,1,-1,-1,1,-1,-1,1,-1,-1,1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,1,-1,-1,-1,-1,1,1,1,-1];
}
}
// LIBRARY OF 2C-PALEY MATRICES
function pexamples(n) {
if (n==6) { // Paley
a=[0,-1,-1]; b=[-1,1,1];
}
if (n==10) { // Paley
a=[0,1,-1,-1,1]; b=[-1,1,1,1,1];
}
if (n==14) { // Paley
a=[0,-1,1,1,1,1,-1]; b=[1,1,-1,1,1,-1,1];
}
if (n==18) { // Paley
a=[0,-1,-1,-1,1,1,-1,-1,-1]; b=[-1,-1,1,-1,1,1,-1,1,-1];
}
if (n==20) { // Paley
a=[0,1,-1,-1,-1,-1,-1,1,-1,-1,1,1,-1,-1,-1,1,-1,1,-1,-1];
}
if (n==26) { // Paley
a=[0,1,-1,-1,-1,1,-1,-1,1,-1,-1,-1,1];
b=[-1,1,-1,-1,1,1,1,1,1,1,-1,-1,1];
}
if (n==30) { // Paley
a=[0,-1,1,-1,1,1,-1,-1,-1,-1,1,1,-1,1,-1];
b=[-1,-1,1,1,-1,1,1,1,1,1,1,-1,1,1,-1];
}
if (n==38) { // Paley
a=[0,-1,1,1,-1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,1,1,-1];
b=[-1,-1,-1,1,1,1,-1,1,-1,1,1,-1,1,-1,1,1,1,-1,-1];
}
if (n==42) { // Paley
a=[0,-1,1,-1,1,1,-1,-1,1,1,1,1,1,1,-1,-1,1,1,-1,1,-1];
b=[-1,1,-1,-1,-1,-1,1,-1,-1,1,1,1,1,-1,-1,1,-1,-1,-1,-1,1];
}
if (n==50) { // Paley 50
a=[0,1,-1,-1,1,-1,-1,-1,1,1,1,1,-1,-1,1,1,1,1,-1,-1,-1,1,-1,-1,1];
b=[-1,1,1,-1,-1,1,-1,1,-1,1,1,1,1,1,1,1,1,-1,1,-1,1,-1,-1,1,1];
}
if (n==54) { // Paley 54
a=[0,-1,1,1,-1,1,-1,-1,-1,1,-1,-1,1,1,1,1,-1,-1,1,-1,-1,-1,1,-1,1,1,-1];
b=[1,1,1,1,-1,1,1,1,-1,-1,-1,1,-1,1,1,-1,1,-1,-1,-1,1,1,1,-1,1,1,1];
}
if (n==62) { // Paley 62
a=[0,-1,1,-1,1,1,1,1,-1,1,-1,-1,1,1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,1,-1,1,-1];
b=[-1,-1,1,-1,-1,-1,1,1,1,1,1,-1,1,1,-1,1,1,-1,1,1,-1,1,1,1,1,1,-1,-1,-1,1,-1];
}
if (n==74) { // Paley 74
a=[0,-1,-1,1,1,1,-1,1,-1,-1,-1,1,-1,-1,-1,-1,1,1,-1,-1,1,1,-1,-1,-1,-1,1,-1,-1,-1,1,-1,1,1,1,-1,-1];
b=[1,1,-1,-1,-1,-1,1,-1,-1,1,-1,-1,1,-1,1,-1,1,1,1,1,1,1,-1,1,-1,1,-1,-1,1,-1,-1,1,-1,-1,-1,-1,1];
}
if (n==82) { // Paley 82
a=[0,-1,-1,1,1,1,1,-1,1,-1,1,-1,-1,1,1,-1,1,-1,-1,-1,1,1,-1,-1,-1,1,-1,1,1,-1,-1,1,-1,1,-1,1,1,1,1,-1,-1];
b=[-1,-1,1,-1,-1,-1,1,1,-1,-1,-1,-1,-1,1,-1,-1,1,-1,1,1,1,1,1,1,-1,1,-1,-1,1,-1,-1,-1,-1,-1,1,1,-1,-1,-1,1,-1];
}
if (n==90) { // Paley 90
a=[0,-1,1,-1,1,-1,-1,-1,-1,1,1,1,1,1,1,1,-1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,-1,1,1,1,1,1,1,1,-1,-1,-1,-1,1,-1,1,-1];
b=[1,-1,1,1,-1,-1,-1,-1,1,1,1,-1,1,-1,1,1,-1,1,1,1,-1,-1,1,1,-1,-1,1,1,1,-1,1,1,-1,1,-1,1,1,1,-1,-1,-1,-1,1,1,-1];
}
if (n==98) { // Paley 98
a=[0,-1,1,1,1,-1,-1,1,1,1,-1,-1,1,-1,-1,1,1,1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,-1,1,1,1,-1,-1,1,-1,-1,1,1,1,-1,-1,1,1,1,-1];
b=[1,-1,1,-1,1,1,-1,-1,1,-1,1,1,-1,1,1,1,1,1,1,-1,-1,-1,1,-1,1,1,-1,1,-1,-1,-1,1,1,1,1,1,1,-1,1,1,-1,1,-1,-1,1,1,-1,1,-1];
}
if (n==102) { // Paley 102
a=[0,-1,1,-1,-1,-1,-1,1,1,-1,1,-1,-1,-1,1,1,-1,1,1,1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,1,-1,1,1,1,-1,1,1,-1,-1,-1,1,-1,1,1,-1,-1,-1,-1,1,-1];
b=[-1,-1,-1,1,-1,-1,1,1,-1,-1,-1,1,1,1,-1,1,-1,1,1,-1,1,-1,-1,1,1,1,1,1,1,-1,-1,1,-1,1,1,-1,1,-1,1,1,1,-1,-1,-1,1,1,-1,-1,1,-1,-1];
}
if (n==110) { // Paley 110
a=[0,-1,-1,1,-1,-1,-1,1,-1,-1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,1,1,1,1,-1,1,-1,-1,1,1,1,-1,-1,-1,-1,1,-1,-1,-1,1,-1,-1];
b=[-1,1,1,-1,1,1,-1,1,1,1,-1,-1,-1,-1,-1,-1,1,1,-1,1,-1,1,-1,1,-1,-1,-1,1,1,-1,-1,-1,1,-1,1,-1,1,-1,1,1,-1,-1,-1,-1,-1,-1,1,1,1,-1,1,1,-1,1,1];
}
if (n==114) { // Paley 114
a=[0,-1,-1,1,1,1,1,-1,-1,1,-1,1,-1,1,-1,-1,1,1,1,-1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,-1,1,1,1,-1,-1,1,-1,1,-1,1,-1,-1,1,1,1,1,-1,-1];
b=[1,1,-1,1,-1,-1,-1,1,-1,1,-1,-1,1,-1,1,1,-1,-1,1,1,1,-1,-1,-1,-1,1,-1,-1,1,1,-1,-1,1,-1,-1,-1,-1,1,1,1,-1,-1,1,1,-1,1,-1,-1,1,-1,1,-1,-1,-1,1,-1,1];
}
if (n==122) { // Paley 122
a=[0,1,-1,1,-1,-1,1,1,1,1,1,-1,-1,-1,1,1,-1,1,-1,1,1,1,1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,-1,-1,1,1,1,1,-1,1,-1,1,1,-1,-1,-1,1,1,1,1,1,-1,-1,1,-1,1];
b=[-1,1,-1,-1,1,1,1,-1,1,1,-1,1,-1,-1,1,1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,1,1,1,1,-1,1,1,1,-1,1,-1,-1,-1,1,1,1,-1,1,1,-1,-1,1,-1,1,1,-1,1,1,1,-1,-1,1];
}
if (n==132) {
// n=132 p=131 r=1 Lim=0; tick=0
// pha=0; phu=0; phw=1; x1=[42,62]; x2=[42,62];
a=[0,-1,-1,1,-1,-1,-1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,-1,1,1,-1,1,1,-1,1,1,-1,-1,1,-1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,1,1,1,-1,-1,-1,1,-1,-1,-1,1,-1,-1];
b=[-1,-1,-1,1,1,-1,1,-1,-1,-1,-1,-1,1,1,1,-1,1,1,-1,1,-1,1,-1,-1,-1,-1,-1,1,1,-1,-1,1,-1,1,-1,1,1,-1,-1,1,1,1,1,1,-1,1,-1,1,-1,-1,1,-1,-1,-1,1,1,1,1,1,-1,1,-1,-1,1,1,1];
}
return a;
}

TWO CIRCULANT MATRICES | CONVERTOR PNG-EPS