PROPUS © Nickolay Balonin and Jennifer Seberry, 6.08.2014 Propus matrix catalogue and on-line algorithms

Definition. An Hadamard matrix H of order n is an n xn matrix with elements ±1 such that H^{T} H=HH^{T} =n I, where I – is the n xn identity matrix and T stands for transposition [1,2]. Propus [3] is a construction method for orthogonal ±1-matrices based on the array

where cells A, B=C, and D, satisfy AA^{T} +BB^{T} +CC^{T} +DD^{T} =cI, c – constant. Symmetric A (minimum) gives symmetric Hadamard matrices. This construction, based on symmetric circulant ±1-matrices, – good Propus . Common Propus is based on the turn of B=C and D.

Common Propusi have a system of holes. 1. Holes Line: orders m=8(4*k-1)=24, 56, 88, .... do not exist, holes.
All "around" n=m/2=12, 28, 44, .. and n=2*m = 48, 112, 176, .. do exist !
So all twin-"C-matrices" 2*(4k-2)=4*(4k-1) do exist: 6*2=12, 10*2=20, .. just 22*2=44 .. just 46*2=92 .. 78*2=156.. so we have to find Propus 156 !
2. Odin line: q=4k-3
All n=2(q+1)=4, 12, 20, 28, .. do exist
Addition: 2*n=8, 24!, 40, 56!, 72, 96!, 104, 120!.. every second order 24, 56, 96, 120.. do not exist, holes, matrices between can exist 8, 40, 72 or not exist 104.
3. Mersenne line: v=4k-1
All n=4v=12, 28, 44, 60, .... do exists ! due 1)
2*n=24, 56, 88, 120, ... do not exist, holes due 1)
4*n=48, 112, 176, 240, .. do exist !
8*n=96, 224, 352, 480, .. do not exist, holes
4. The law of fork ! Addition to 3)
4n+4, 4n-4 = 44/48/52, 108/112/116, 172/176/180, 236/240/244 .. do exist
8n+8, 8n-8 - 88/96/104, 216/224/232, 354/352/360 472/480/488 .. do not exist Between teeth – Fish-Propus !
For example: 88-92(Fish)-96-100(Fish)-104 !!! all forks with fishes :)
Finite Golay lines:
5. 4, 8, 16, 32, 64 do exist, 128=32x4 does not exist !
6. 20, 40, 80 do exist, 160=40x4 does not exist !
7. 52 does exist, 104=26x4 does does not exist !
D-optimal
8. D-optimal design: 86 is the last symmetric solution, so 172 is the last Propus with it.

// NICK'S PROPUSI LIBRARY
n=20; NG=false; examples(n);
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++;
puts('n='+n+' k1='+k1+' k2='+k2+' k3='+k3);
if (NG) {
A=negacirc(a); B=negacirc(b); D=negacirc(d); }else{
A=circ(a); B=circ(b); D=circ(d); }
H=Propus(A,B,D); plots(H);
{{I=H'*H}} putm(I); // putm(H);
function examples(n) {
if (n==4) { // GOOD A=D
a=[-1]; b=[1]; d=[-1];
}
if (n==8) { // GOOD A=D
a=[1,-1]; b=[1,1]; d=[1,-1];
}
if (n==12) { // GOODD // d=a, d[0]=-a[0]
a=[1,1,1]; b=[-1,1,1]; d=[-1,1,1];
}
if (n==16) { // GOOD A=D
a=[-1,1,1,1]; b=[-1,1,1,1]; d=[-1,1,1,1];
}
if (n==20) { // GOODD
a=[1,1,-1,-1,1]; b=[-1,1,1,1,1]; d=[-1,1,-1,-1,1];
}
// *** 24 !
if (n==24) { // W(24,22) GOODD
// n=24 s=4 h/hmin=1.04/1 max=0 tick=5 IS=3,3,3
a=[1,1,1,-1,1,1];
b=[0,-1,1,1,1,-1];
d=[-1,1,1,-1,1,1];
if (NG) {
// n=24 s=4 h/hmin=1/1 max=4 tick=106
a=[1,-1,-1,1,1,-1];
b=[-1,-1,1,-1,1,1];
d=[-1,-1,1,-1,1,1];
}}
if (n==28) { // GOODD
// n=28 s=4 h/hmin=1/1 max=0 tick=2 IS=4,4,4
a=[1,-1,1,-1,-1,1,-1];
b=[1,1,1,-1,-1,1,1];
d=[-1,-1,1,-1,-1,1,-1];
}
if (n==32) { // GOOD A=D !
// n=32 s=2 h/hmin=1/1 max=8 tick=46 IS=4,4,4
a=[1,-1,1,1,1,1,1,-1];
b=[-1,-1,1,1,-1,1,1,-1];
d=[1,-1,1,1,1,1,1,-1];
}
if (n==36) { // GOODD
// n=36 s=2 h/hmin=1/1 max=4 tick=77 IS=5,5,5
a=[1,-1,1,1,1,1,1,1,-1];
b=[-1,1,-1,-1,1,1,-1,-1,1];
d=[-1,-1,1,1,1,1,1,1,-1];
}
// *** 40 !
if (n==40) { // W(40,38) GOODD
// n=40 s=4 h/hmin=1.03/1 max=0 tick=14 IS=5,5,5
a=[1,-1,1,-1,-1,1,-1,-1,1,-1];
b=[0,-1,-1,-1,1,1,1,-1,-1,-1];
d=[-1,-1,1,-1,-1,1,-1,-1,1,-1];
if (NG) {
// n=40 s=4 h/hmin=1.04/1.04 max=4 tick=1121
a=[-1,1,-1,-1,-1,-1,-1,-1,1,-1];
b=[-1,-1,-1,1,-1,-1,1,-1,-1,-1];
d=[1,-1,-1,1,1,1,1,-1,-1,1];
// n=40 s=4 h/hmin=1/1 max=8 tick=20
a=[-1,1,1,-1,-1,1,-1,1,1,-1];
b=[1,1,-1,1,-1,-1,-1,1,1,-1];
d=[1,1,-1,1,-1,-1,-1,-1,-1,-1];
}}
// *** 44 !
if (n==48) { // GOOD
// n=48 s=2 h/hmin=1.01/1.01 max=8 tick=46
a=[-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];
d=[-1,-1,-1,1,1,-1,1,-1,1,1,-1,-1];
}
if (n==52) { // GOODD
// n=52 s=5 h/hmin=1.02/1.02 max=8 tick=106 IS=7,7,7
a=[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];
d=[-1,-1,-1,-1,1,-1,1,1,-1,1,-1,-1,-1];
}
// *** 56 !
if (n==56) { // W(56,54) GOODD
// n=56 s=4 h/hmin=1.02/1.02 max=0 tick=1 IS=7,7,7
a=[1,1,1,1,1,-1,-1,1,-1,-1,1,1,1,1];
b=[0,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];
}
if (n==60) { // GOODD
// n=60 s=2 h/hmin=1/1 max=8 tick=750 IS=8,8,8
a=[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];
d=[-1,-1,1,1,1,-1,1,-1,-1,1,-1,1,1,1,-1];
}
if (n==64) { // GOOD A=D
// tick=27 h=1 max=8 n=64 IS=8,8,8
a=[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];
d=[1,-1,1,-1,-1,1,1,1,1,1,1,1,-1,-1,1,-1];
// n=64 s=2 h/hmin=1/1 max=4 tick=29 IS=8,8,8
a=[-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];
d=[-1,-1,1,-1,1,1,1,1,-1,1,1,1,1,-1,1,-1];
}
// *** 68 !
// *** 72 !
if (n==72) { // W(72,70) GOODD
// n=72 s=4 h/hmin=1.05/1.03 max=8 tick=19100 IS=9,9,9
a=[1,-1,1,1,-1,1,-1,-1,-1,1,-1,-1,-1,1,-1,1,1,-1];
b=[0,-1,-1,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,1,1,-1];
}
if (n==76) { // GOODD
a=[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];
d=[-1,-1,-1,1,1,1,1,-1,1,1,1,1,-1,1,1,1,1,-1,-1];
// n=76 p=37 r=2 Lim=0; tick=50 x1=[20,12]; x2=[25,22];
a=[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];
c=[1,-1,1,1,-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,-1,1,1,-1];
d=minp(d);
}
if (n==80) { // GOOD
a=[-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];
d=[1,-1,1,1,1,-1,-1,1,-1,-1,-1,-1,-1,1,-1,-1,1,1,1,-1];
// n=80 s=4 h/hmin=1.03/1.03 max=12 tick=56 IS=10,10,10
a=[-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];
d=[1,1,-1,-1,-1,-1,1,-1,1,1,-1,1,1,-1,1,-1,-1,-1,-1,1];
}
if (n==84) { // GOODD
a=[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];
d=[-1,1,1,-1,1,1,-1,-1,-1,1,1,1,1,-1,-1,-1,1,1,-1,1,1];
// n=84 p=41 r=3 Lim=0; tick=16 x1=[24,35]; x2=[18,25];
a=[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];
d=[1,1,1,1,1,-1,-1,-1,1,-1,1,1,-1,1,-1,-1,-1,1,1,1,1];
if (0) {
// W(84,82) GOODD
// n=84 s=4 h/hmin=1.04/1.04 max=12 tick=537 IS=11,11,11
a=[-1,-1,-1,-1,1,-1,1,-1,1,1,-1,-1,1,1,-1,1,-1,1,-1,-1,-1];
b=[0,1,1,-1,1,1,-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,-1,1,-1,1,1,1];
d=minp(d);
}}
// *** 88 !
// *** 92 !
// *** 96 !
if (n==100) { // GOODD
a=[1,-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];
d=[-1,-1,-1,-1,1,-1,1,1,-1,1,1,1,-1,-1,1,1,1,-1,1,1,-1,1,-1,-1,-1];
// n=100 s=4 h/hmin=1/1 max=16 tick=2780 IS=13,13,13
a=[1,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];
d=[-1,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==104) { // W(104,102) GOODD
// n=104 s=4 h/hmin=1.01/1.01 max=0 tick=3765 IS=13,13,13
a=[1,1,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=[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];
d=[-1,1,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) { // GOODD
// n=108 s=4 h/hmin=1/1 max=16 tick=1384 IS=14,14,14
a=[1,-1,1,-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];
d=[-1,-1,1,-1,1,-1,-1,1,-1,-1,1,1,1,1,1,1,1,1,-1,-1,1,-1,-1,1,-1,1,-1];
// n=108 p=53 r=3 Lim=0; tick=112 x1=[32,48]; x2=[25,42];
a=[1,-1,1,-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];
d=[1,1,-1,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) { // GOODD
// n=112 s=4 h/hmin=1.02/1.02 max=16 tick=27 IS=14,14,14
a=[-1,-1,1,1,-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];
d=[1,-1,1,1,-1,-1,-1,1,1,-1,1,1,-1,-1,-1,-1,-1,1,1,-1,1,1,-1,-1,-1,1,1,-1];
}
// *** ! 116
// *** ! 120
if (n==124) { // GOODD
// n=124 p=61 r=2 Lim=0; tick=8 x1=[29,28]; x2=[19,52];
a=[1,1,-1,1,-1,-1,-1,-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];
d=[1,-1,1,-1,1,1,1,1,-1,1,-1,-1,1,1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,1,-1,1,-1];
d=minp(d);
}
if (n==128) { // GOODD D = A
if (0) { // ERR
// n=128 s=4 h/hmin=1.02/1.02 max=16 tick=1509 IS=10,2,10 NON
a=[1,-1,1,-1,1,-1,-1,1,-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];
d=[1,-1,1,-1,1,-1,-1,1,-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==148) { // GOODD- D = A
a=[1,1,-1,1,1,1,-1,-1,-1,1,1,-1,1,-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];
d=[-1,1,-1,1,1,1,-1,-1,-1,1,1,-1,1,-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==164) {
// n=164 p=81 r=1 Error=0; tick=2
// x1=[2,0,2,1,1,0,0,1]; x2=[1,2,1,1,1,1,1,0];
a=[1,-1,-1,1,-1,-1,1,-1,1,-1,1,-1,1,1,1,1,1,-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];
d=[1,1,1,-1,1,1,-1,1,-1,1,-1,1,-1,-1,-1,-1,-1,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==180) {
// n=180 p=89 r=3 Lim=0; tick=34 x1=[49,31]; x2=[12,53];
a=[1,1,1,-1,-1,-1,1,-1,-1,1,1,-1,1,1,1,1,1,-1,1,-1,1,-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];
d=[1,-1,-1,1,1,1,-1,1,1,-1,-1,1,-1,-1,-1,-1,-1,1,-1,1,-1,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==196) {
a=[-1,-1,1,1,1,-1,-1,1,1,1,-1,-1,1,-1,-1,1,1,1,-1,1,-1,-1,-1,-1,-1,-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];
d=[1,-1,1,1,1,-1,-1,1,1,1,-1,-1,1,-1,-1,1,1,1,-1,1,-1,-1,-1,-1,-1,-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==204) {
// n=204 p=101 r=3 Lim=0; tick=236 x1=[57,55]; x2=[17,97];
a=[1,-1,1,1,-1,-1,1,-1,1,-1,1,1,1,1,1,-1,-1,-1,-1,1,1,1,-1,1,1,1,1,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];
d=[1,1,-1,-1,1,1,-1,1,-1,1,-1,-1,-1,-1,-1,1,1,1,1,-1,-1,-1,1,-1,-1,-1,-1,-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==220) {
// n=220 p=109 r=2 Lim=0; tick=30 x1=[47,21]; x2=[4,33];
a=[1,-1,1,-1,-1,1,-1,1,1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,1,-1,1,1,1,-1,-1,1,1,-1,-1,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];
d=[1,1,-1,1,1,-1,1,-1,-1,-1,1,1,1,1,-1,1,1,1,1,1,-1,1,-1,-1,-1,1,1,-1,-1,1,1,-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==228) {
// n=228 p=113 r=3 Lim=0; tick=30 x1=[78,44]; x2=[53,86];
a=[1,1,-1,-1,1,-1,-1,-1,1,-1,-1,-1,1,-1,1,1,-1,-1,-1,-1,-1,1,1,-1,1,1,1,1,-1,-1,1,1,1,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];
d=[1,-1,1,1,-1,1,1,1,-1,1,1,1,-1,1,-1,-1,1,1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,1,-1,-1,-1,-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==276) {
// n=276 p=137 r=3 Lim=0; tick=110 x1=[54,101]; x2=[16,102];
a=[1,-1,1,-1,1,1,1,1,-1,1,-1,1,1,-1,-1,-1,-1,1,1,-1,-1,-1,-1,-1,1,1,-1,1,1,-1,-1,-1,1,1,-1,-1,1,1,-1,-1,-1,1,1,-1,1,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,1];
d=[1,1,-1,1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,1,-1,-1,1,1,1,1,1,-1,-1,1,-1,-1,1,1,1,-1,-1,1,1,-1,-1,1,1,1,-1,-1,1,-1,-1,1,1,1,1,1,-1,-1,1,1,1,1,-1,-1,1,-1,1,-1,-1,-1,-1,1,-1,1];
d=minp(d);
}
if (n==300) {
// n=300 p=149 r=3 Lim=0; tick=292 x1=[15,96]; x2=[104,10];
a=[1,1,1,1,-1,-1,1,-1,1,1,1,-1,-1,1,-1,-1,-1,1,-1,1,-1,1,1,-1,1,1,-1,1,-1,-1,1,1,-1,-1,1,1,1,1,1,1,1,1,-1,-1,1,1,-1,-1,1,-1,1,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,-1,1,1,1,-1,1,-1];
d=[-1,1,1,1,-1,-1,1,-1,1,1,1,-1,-1,1,-1,-1,-1,1,-1,1,-1,1,1,-1,1,1,-1,1,-1,-1,1,1,-1,-1,1,1,1,1,1,1,1,1,-1,-1,1,1,-1,-1,1,-1,1,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==316) {
// n=316 p=157 r=2 Lim=0; tick=0 x1=[150,64]; x2=[58,8];
a=[1,-1,-1,1,1,1,-1,1,1,1,-1,-1,1,1,1,1,1,-1,1,-1,1,-1,-1,-1,-1,-1,1,-1,-1,1,1,1,-1,1,1,-1,1,-1,-1,1,1,-1,-1,1,-1,1,1,-1,1,1,1,-1,-1,1,-1,-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,-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,1,1,-1,1,-1,1,-1,-1,-1,-1,-1,1,-1,-1,1,1,1,-1,1,1,-1,1,-1,-1,1,1,-1,-1,1,-1,1,1,-1,1,1,1,-1,-1,1,-1,-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==348) {
// n=348 p=173 r=3 Lim=0; tick=404 x1=[135,43]; x2=[93,45];
a=[1,1,1,1,1,1,1,-1,-1,-1,-1,1,1,-1,-1,-1,1,-1,1,-1,1,-1,-1,1,1,-1,-1,1,-1,-1,1,-1,-1,1,1,-1,1,-1,1,-1,-1,1,-1,1,1,-1,1,-1,-1,1,-1,1,-1,1,1,-1,-1,1,-1,-1,1,-1,-1,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,1,-1,1,1,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,-1,1,-1,1,-1,1,-1,-1,1,1,-1,-1,1,-1,-1,1,-1,-1,1,1,-1,1,-1,1,-1,-1,1,-1,1,1,-1,1,-1,-1,1,-1,1,-1,1,1,-1,-1,1,-1,-1,1,-1,-1,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==364) {
// n=364 p=181 r=2 Lim=0; tick=208 x1=[9,21]; x2=[69,161];
a=[1,1,-1,1,1,1,1,1,1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,-1,1,1,1,1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,1,1,1,-1,-1,-1,1,1,1,1,1,-1,1,1,-1,-1,1,-1,1,-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,-1,-1,1,1,-1,1,-1,1,-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,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,-1,1,1,1,1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,1,1,1,-1,-1,-1,1,1,1,1,1,-1,1,1,-1,-1,1,-1,1,-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==396) {
// n=396 p=197 r=3 Lim=0; tick=72 x1=[43,47]; x2=[89,166];
a=[1,-1,-1,-1,1,1,1,1,-1,-1,1,1,-1,1,1,1,-1,-1,-1,-1,1,-1,1,-1,1,-1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,1,-1,1,1,-1,-1,1,-1,1,-1,-1,1,-1,1,1,-1,1,-1,-1,1,-1,1,-1,-1,1,1,-1,1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,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,-1,1,-1,-1,1,1,1,1,-1,-1,1,1,1,1,1,-1,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,1,-1,-1,-1,-1,1,-1,1,-1,1,-1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,1,-1,1,1,-1,-1,1,-1,1,-1,-1,1,-1,1,1,-1,1,-1,-1,1,-1,1,-1,-1,1,1,-1,1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,1,-1,1,-1,1,-1,-1,-1,-1,1,1,1,-1,1,1,-1,-1,1,1,1,1,-1,-1,-1];
}
}
function Propus(A,B,D) {
var MA,MB,MD;
MA=minp(A); MB=minp(B); MD=minp(D);
H11=square(A,B,B,D); H12=square(B,D,MA,MB);
H21=square(B,MA,D,MB); H22=square(MD,B,B,MA);
return square(H11,H12,H21,H22);
}

24 is HOLE ! OR Common Propus 4N-type !
* 68 Common Propus, MAX DET-alg/ Galois-procedure
88 is HOLE ! see no solutions, can be 4N??
* 92 Common Propus, MAX DET-alg
96 is HOLE ! see no solutions, can be 4N??
100 Simple Propus, MAX DET-alg
* 104 is HOLE! Common Propus 4N-type ! OR W(104,102) MAX DET-alg
================================================================
108 Simple Propus, MAX DET-alg/ Galois-procedure
112 Simple Propus, MAX DET-alg !
* 116 Common Propus (with Olivia)
124 Simple Propus/ Galois-procedure
* 128 Common Propus 4N-type !
? A=D, B=D as 8, 16, 32, 64, or 64 is THE LAST twin Propus
* 132 Common Propus
* 140 Common Propus
148 Simple Propus
? 4x39=156 ?? is not simple Propus
* 152 Common Propus 4N-type !
164 Simple Propus
* 168 Common Propus 4N-type !
* 172 Common Propus (with Olivia)
180 Simple Propus
196 Simple Propus
204 Simple Propus !!!
* 212 Common Propus
220 Simple Propus
228 Simple Propus
276 Simple Propus
* 284 Common Propus
300 Simple Propus
* 308 Common Propus
316 Simple Propus
* 332 Common Propus
348 Simple Propus
364 Simple Propus
396 Simple Propus
* 492 Common Propus
* 500 Common Propus

// GALOIS FIELDS PROCEDURE:
if (tick==0) { n=76;
Flg0=false; GP=false; // COMMON PROPUS
Flgalp=true; Flg1N=n%4!=0; Flg1N=false;
Fphase=true; Maxphase=2; FlgP2=true;
FlgTyp=true; M=10000; R=true; tuning();
}
for (k=0;k<10;k++)
if (R) { setphases();
// ROOTS
x1=gfrand(); x2=equal(x1); getab(x1,p);
if (Flg1N) {
a2=equal(a); b2=equal(b); if (Flg0) a2[0]=0;
}else{
a=a.concat(b); a2=ab2a(a); if (Flg0) a2[0]=0; // a2[v]=0;
x2=gfrand(); getab(x2,p);
a=a.concat(b); b2=ab2a(a); if (Flg0) b2[0]=0; // b2[v]=0;
}
// b2[0]=0;
A=negacirc(a2); B=negacirc(b2);
H=twocircul(A,B); // H=ab2a(H); // N1
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
puts("x1=["+x1+"];"+" x2=["+x2+"];");
puts("a=["+a2+"];"); puts("b=["+b2+"];");
if (1) {
A2=a2ab(A); B2=a2ab(B); Z=eyez(n/4);
S=square(A2); A=S[0]; B=S[1]; C=S[2]; D=S[3];
{{ A=Z*A*Z; B=Z*B*Z; }} // C=Z*C*Z; D=Z*D*Z;
a=A[0]; b=B[0]; b=circshiftback(b,(rows(b)-1)/2);
S=square(B2); A=S[0]; B=S[1]; C=S[2]; D=S[3];
{{ A=Z*A*Z; B=Z*B*Z; }} // C=Z*C*Z; D=Z*D*Z;
c=A[0]; d=B[0]; d=circshiftback(d,(rows(d)-1)/2);
analysis(); // b[0]=0;
if (n%8!=0) {
a=setmaxis(a); b=setmaxis(b); d=setmaxis(d);
IS1=getis(a); IS2=getis(b); IS3=getis(d);
puts('IS='+IS1+','+IS2+','+IS3);
}
putm("a=["+a+"];"); putm("b=["+b+"];"); putm("d=["+d+"];");
// putm("c=["+c+"];"); C=circ(c);
A=circ(a); B=circ(b); D=circ(d);
if (GP) { H=CommonPropus(A,B,D); }else{ H=Propus(A,B,D); }}
{{I=H'*H}} putm(I); putm(H); // H=ab2a(H);
plots(H); sound("5th.wav");
}
function tuning() { p=n; law=n/2;
if (Flg1N) { if (FlgP2) { p=2*p; law=2*law;}
}else{ if (FlgP2) { p=p/2; law=round(law/2); }}
lau=4*law; 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(); Z=eyez(v); vs=v1/2; // !!!!!
}
function setphases() {
pha=0; phu=0; phw=1; 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); 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;
}}
function analysis() {
var ERR; ERR=false;
if (maxabs(sub(b,c))>0) {
if (maxabs(sub(b,d))==0) { d=equal(c); }else{
if (maxabs(sub(c,d))==0) { d=equal(b); b=equal(c); }else{
if (maxabs(sub(a,b))==0) { a=equal(c); }else{
if (maxabs(sub(a,c))==0) { a=equal(b); b=equal(a); }else{
if (maxabs(sub(a,d))==0) { a=equal(b); b=equal(d);
d=equal(c); }else{ ERR=true; puts("PROBLEM MATRIX");
}}}}}}
d2=minp(d);
if (abs(sum(add(a,d)))<abs(sum(add(a,d2)))) d=equal(d2);
return ERR;
}
function Propus(A,B,D) {
var MA,MB,MD;
MA=minp(A); MB=minp(B); MD=minp(D);
H11=square(A,B,B,D); H12=square(B,D,MA,MB);
H21=square(B,MA,D,MB); H22=square(MD,B,B,MA);
return square(H11,H12,H21,H22);
}
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 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;
}

// GALOIS FIELD PROCEDURE: 4 CELLS
if (tick==0) { n=20;
Flg1N=n%4!=0; Flg1N=false; // type of symmetry
Fphase=true; Maxphase=2; FlgP2=false;
Flgalp=true; M=10000; R=true; tuning();
}
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=a2ab(b); d=rowcol(b,v4,v1); c=rowcol(b,0,v41);
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}}
// b=circshiftback(b,vs); // c=circshiftback(d,vs);
// b[0]=0;
// c=equal(b);
A=negacirc(a); B=negacirc(b); // C=negacirc(c);
D=negacirc(d);
// H=twocircul(A,B);
// H=GoethalsSeidel(A,B,C,D);
H=Propus(A,B,D);
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));
{{a=Z*a; b=Z*b; c=Z*c; d=Z*d;}}
if (n%8!=0) {
a=setmaxis(a); b=setmaxis(b); d=setmaxis(d);
IS1=getis(a); IS2=getis(b); IS3=getis(d);
puts('IS='+IS1+','+IS2+','+IS3);
}
d2=minp(d);
if (abs(sum(add(a,d)))<abs(sum(add(a,d2)))) d=equal(d2);
puts("a=["+a+"];"); puts("b=["+b+"];");
puts("c=["+c+"];"); puts("d=["+d+"];");
A=circ(a); B=circ(b); C=circ(c); D=circ(d);
H=Propus(A,B,D);
// H=williamson(a,b);
{{I=H'*H}} putm(I); putm(H); // H=ab2a(H);
plots(H,"XR"); sound("5th.wav");
}
function tuning() { p=n; law=n/2;
if (Flg1N) { if (FlgP2) { p=2*p; law=2*law;}
}else{ if (FlgP2) { p=p/2; law=round(law/2); }}
lau=4*law; 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(); Z=eyez(v); vs=v1/2; // !!!!!
}
function setphases() {
pha=0; phu=0; phw=1; 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); 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;
}}
function Propus(A,B,D) {
var MA,MB,MD;
MA=minp(A); MB=minp(B); MD=minp(D);
H11=square(A,B,B,D); H12=square(B,D,MA,MB);
H21=square(B,MA,D,MB); H22=square(MD,B,B,MA);
return square(H11,H12,H21,H22);
}
function GoethalsSeidel(A,B,C,D) {
var TB,TC,TD,BR,CR,DR,TBR,TCR,TDR;
TB=tr(B); TC=tr(C); TD=tr(D);
BR=flip(B); CR=flip(C); DR=flip(D);
TBR=flip(TB); TDR=flip(TD); TCR=flip(TC);
var H11=square(A,BR,mul(-1,BR),A);
var H12=square(CR,DR,TDR,mul(-1,TCR));
var H21=square(mul(-1,CR),mul(-1,TDR),mul(-1,DR),TCR);
var H22=square(A,TBR,mul(-1,TBR),A);
var H=square(H11,H12,H21,H22);
return H;
}
function GP2(A,B,D) { // GOOD PROPUS
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 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;
}
We observe three methods to find propus-Hadamard matrices: using Williamson matrices , D-optimal designs , Dragomir's and Nick's computer algorithms. Many delightful visual images are included. The special orders n <100 are: n =92 inside the D-optimal design family (case m =23 has no symmetric A, there is other symmetric Propus: Dragomir's page ) and the Common family with special cases: n =88 (non Propus?), 92 (Dragomir's page ), 96 (non Propus?); n =16*k with cells of even orders resolvable as weighing matrices. Look: regular Propus matrices. There is also the possibility that this propus construction may lead to some insight into the existence or non-existence of symmetric conference matrices for some orders.

DOUBLE PROPUS A=–D, B=C GET MORE MATRICES BY WILLIAMSON MATRICES Propus H_{12} and H_{28} Propus H_{36} and H_{60} FAMILY: A=Q+I, C=B, D=Q–I Propus H_{20} and H_{52} GOOD PROPUS BY D-OPTIMAL DESIGN D-optimal design X_{6} and Propus H_{12} D-optimal design X_{14} and Propus H_{28} D-optimal design X_{38} and Propus H_{76} FINITE FAMILY Propus H_{12} and H_{28} (B=C=D rich structure) BY CONFERENCE MATRICES Conference matrix C_{10} and Propus H_{20} Conference matrix C_{26} and Propus H_{52} WITH Q+I, Q–I AND MAX DET BLOCK B=X_{5} or B=X_{13} Conference matrix C_{10} and Propus H_{20} Conference matrix C_{26} and Propus H_{52} EVEN CELLS Propus matrices H_{16} and H_{32}

if (tick==0) {
n=20; v=n/4; m=(v-1)/2; q=2*v+1; // m=2; v=2*m+1;
if (q==27) { gfinit(3,3); }else{ gfinit(q); }
FD=1; FW=-1;
}
F=1; FD=-FD; if (FD==1) FW=-FW;
while (F==1) { x1=gfrand();
Q=gfexp(x1,2,v); // putm("Q="+Q);
M=gfadd(GFe,Q); // putm("Q+1="+M);
// N=gfsub(GFe,Q); putm("Q-1="+N);
a=minp(gfeq(M,Q)); F=rows(a);
}
F=1;
while (F==1) { x2=gfrand();
Q=gfexp(x2,2,v); // putm("Q="+Q);
M=gfadd(GFe,Q); // putm("Q+1="+M);
// N=gfsub(GFe,Q); putm("Q-1="+N);
b=minp(gfeq(M,Q)); F=rows(b);
}
d=equal(a);
if (FD==1) d[0]=-d[0]; if (FW==1) b[0]=0;
puts("n="+n+" q="+q+" x1="+x1+" x2="+x2);
A=circ(a); B=circ(b); D=circ(d);
H=Propus(A,B,D); m=maxabslsm(H);
if (m>0) { restart(0);
}else{
puts("A=["+a2ds(a)+"];");
puts("B=["+a2ds(b)+"];");
puts("a=["+a+"];"); puts("b=["+b+"];"); puts("d=["+d+"];");
{{X=H'*H}} putm(X); plots(H);
}
function gfexp(x,lambda,f) {
var t,C; C=zero(f);
for (t=0;t<f;t++) C[t]=gfpow(x,lambda*t);
return C;
}
function Propus(A,B,D) {
var MA,MB,MD;
MA=minp(A); MB=minp(B); MD=minp(D);
H11=square(A,B,B,D); H12=square(B,D,MA,MB);
H21=square(B,MA,D,MB); H22=square(MD,B,B,MA);
return square(H11,H12,H21,H22);
}
function SkewPropus(A,B,D) {
var MB,MD,P11,P12,P21,P22;
MB=minp(B); MD=minp(D);
P11=square(A,B,MB,A); P12=square(B,D,D,MB);
P21=square(MB,MD,MD,B); P22=square(A,B,MB,A);
return square(P11,P12,P21,P22);
}
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 FIELDS PROCEDURE:
if (tick==0) { n=36;
Flg0=false; GP=false; // COMMON PROPUS
Flgalp=true; Flg1N=n%4!=0; Flg1N=false;
Fphase=true; Maxphase=2; FlgP2=true;
FlgTyp=true; M=10000; R=true; tuning();
}
for (k=0;k<10;k++)
if (R) { setphases();
// ROOTS
x1=gfrand(); x2=equal(x1); getab(x1,p);
if (Flg1N) {
a2=equal(a); b2=equal(b); if (Flg0) a2[0]=0;
}else{
a=a.concat(b); a2=ab2a(a); if (Flg0) a2[0]=0; // a2[v]=0;
x2=gfrand(); getab(x2,p);
a=a.concat(b); b2=ab2a(a); if (Flg0) b2[0]=0; // b2[v]=0;
}
// b2[0]=0;
A=negacirc(a2); B=negacirc(b2);
// H=twocircul(A,B); // H=ab2a(H); // N1
A2=a2ab(A); B2=a2ab(B); Z=eyez(n/4);
S=square(A2); A=S[0]; B=S[1]; C=S[2]; D=S[3];
{{ A=Z*A*Z; B=Z*B*Z; }} // C=Z*C*Z; D=Z*D*Z;
a=A[0]; b=B[0]; b=circshiftback(b,(rows(b)-1)/2);
S=square(B2); A=S[0]; B=S[1]; C=S[2]; D=S[3];
{{ A=Z*A*Z; B=Z*B*Z; }} // C=Z*C*Z; D=Z*D*Z;
c=A[0]; d=B[0]; d=circshiftback(d,(rows(d)-1)/2);
ERR=analysis(); // b[0]=0;
A=circ(a); B=circ(b); D=circ(d);
if (GP) { H=CommonPropus(A,B,D); }else{ H=Propus(A,B,D); }
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
if (ERR) puts("PROBLEM MATRIX");
puts("x1=["+x1+"];"+" x2=["+x2+"];");
puts("a=["+a2+"];"); puts("b=["+b2+"];");
putm("a=["+a+"];"); putm("b=["+b+"];"); putm("d=["+d+"];");
// putm("c=["+c+"];"); C=circ(c);
// A=circ(a); B=circ(b); D=circ(d);
// if (GP) { H=CommonPropus(A,B,D); }else{ H=Propus(A,B,D); }}
{{I=H'*H}} putm(I); putm(H); // H=ab2a(H);
plots(H); sound("5th.wav");
}
function tuning() { p=n; law=n/2;
if (Flg1N) { if (FlgP2) { p=2*p; law=2*law;}
}else{ if (FlgP2) { p=p/2; law=round(law/2); }}
lau=4*law; 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(); Z=eyez(v); vs=v1/2; // !!!!!
}
function setphases() {
pha=0; phu=0; phw=1; 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); 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;
}}
function analysis() {
var ERR; ERR=false;
if (maxabs(sub(b,c))>0) {
if (maxabs(sub(b,d))==0) { d=equal(c); }else{
if (maxabs(sub(c,d))==0) { d=equal(b); b=equal(c); }else{
if (maxabs(sub(a,b))==0) { a=equal(c); }else{
if (maxabs(sub(a,c))==0) { a=equal(b); b=equal(a); }else{
if (maxabs(sub(a,d))==0) { a=equal(b); b=equal(d);
d=equal(c); }else{ ERR=true;
}}}}}}
d2=minp(d);
if (abs(sum(add(a,d)))<abs(sum(add(a,d2)))) d=equal(d2);
return ERR;
}
function Propus(A,B,D) {
var MA,MB,MD;
MA=minp(A); MB=minp(B); MD=minp(D);
H11=square(A,B,B,D); H12=square(B,D,MA,MB);
H21=square(B,MA,D,MB); H22=square(MD,B,B,MA);
return square(H11,H12,H21,H22);
}
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);
}

{{P="H32PSM.xml"}} m=rows(P)/4;
A=rowcol(P,0,m-1,0,m-1); B=rowcol(P,m,2*m-1,0,m-1);
C=rowcol(P,2*m,3*m-1,0,m-1); D=rowcol(P,3*m,4*m-1,0,m-1);
// PROPUS PROPUS PROPUS
P11=square(A,B,C,D);
P12=square(C,D,minp(A),minp(B));
P21=square(B,minp(A),D,minp(C));
P22=square(minp(D),C,B,minp(A));
P=square(P11,P12,P21,P22);
n=rows(P); v=n/4; v2=n/2-1; v3=3*v-1;
a=tr(rowcol(P,0,0,0,v-1)); b=tr(rowcol(P,0,0,v,v2));
c=tr(rowcol(P,0,0,v2+1,v3)); d=tr(rowcol(P,0,0,v3+1,n-1));
putm("a=["+a+"];"); putm("b=["+b+"];"); putm("d=["+d+"];");
{{I=P'*P}} putm(I); plots(P);
1. Jennifer Seberry and Mieko Yamada, Hadamard matrices, sequences, and block designs, in Contemporary Design Theory: A Collection of Surveys, eds. J. H. Dinitz and D. R. Stinson, John Wiley, New York, 1992, pp. 431–560 (PDF ) 2. W.D. Wallis, A.P. Street and Jennifer Seberry Wallis, Combinatorics: Room Squares, Sum-Free Sets, Hadamard Matrices, Lecture Notes in Mathematics, Springer-Verlag, Vol. 292, 1972. 3. N. A. Balonin and Jennifer Seberry, “Visualizing Hadamard Matrices: the Propus Construction”, Australasian Journal of Combinatorics (submitted 6 Aug 2014). 4. N. A. Balonin and Jennifer Seberry, A Review and New Symmetric Conference Matrices //Informatsionno-upravliaiushchie sistemy, 2014, № 4 (71), pp. 2–7. (PDF | WEB ) ELECTRONIC EDITIONS Balonin N. A., Seberry, Jennifer. Visualizing Hadamard Matrices: the Propus Construction, Electronic edition, 2014. N. A. Balonin, Jennifer Seberry Conference Matrices with Two Borders and Four Circulants, Electronic edition, 2014.