Appendix E: Block-Circulant CHM

created: 2026-09-13

updated: 2026-09-20 by W. Bruzda


Not every file in the repository is listed on this page. The collection grows faster than these tables – for the complete set, browse the repository directly.

The matrices collected here come from "Block-Circulant Complex Hadamard Matrices" [175]. They are numerical, not analytic and each one is a solution of the unitarity constraints imposed on a block-circulant pattern, found with fsolve and refined until the residual reaches machine precision.

Two sequences are solved here:

The two sequences are structurally different, which is easy to miss because they are solved the same way. LN is bordered group-developed meaning its core is H(g, h) = F(h - g) over the cyclic group of order N - 1, written Zn × Z2 with n = (N - 1)/2 odd and with F(m, 1) = conj(F(m, 0)). Hence, it is a circulant-core matrix in the sense of Nicoară and Worley [182], although their finiteness theorem concerns a core of prime size and the core here has order N - 1 = 2n with n odd, composite for every N ⩾ 7. The group is recovered from every LN here by CHM_GH/gh_check.py. Appendix F sweeps the same construction over arbitrary groups and these matrices came first and are not listed there. VN is not of that form as it starts from an unbordered circulant matrix of order N and 83 of its 85 matrices of order at most 40 fail a necessary condition for group development that does not depend on how the group is labelled. The two that do not fail are V7,0,7 and V11,0,11, the entries marked below as F7 and F11 in disguise and for those a bordered group-developed representative does exist. The matrices below are not duplicated in Appendix F and the ones its sweep rediscovered (for N = 11, 15, 19) are recorded there as already catalogued and the classes it lists over the same cyclic groups at N = 23 and 27 were checked to be monomially inequivalent to these.

Their interest is that almost every solution turns out to be isolated (defect d = 0) and not of Butson type. For LN one obtains isolated solutions only while for VN other defects occur as well. Since the sequences can be run in essentially any dimension, they provide numerical support for the conjecture that isolated complex Hadamard matrices exist in every dimension – a question left open by the analytic constructions, which supply isolated examples only in special dimensions (Fourier Fp for prime p, S6 and not many others).

For the initial dimensions 11–16 each run returns different values of the parameters and whether the resulting matrices are inequivalent is not known.


filename scheme↑

Every file stores the phase matrix A, so that H = exp(2πi·A) is the complex Hadamard matrix itself:

LH_N_d_L.data   block-circulant, sequence L
VH_N_d_L.data   block-circulant, sequence V

        N = size(H)
        d = defect(H)
        L = #Λ(H), cardinality of the Haagerup set

Both invariants are expensive, so they are recorded only while that is affordable and the name degrades in a fixed way:

N ⩽  40      LH_N_d_L.data     both invariants
N ⩽  60      LH_N_d.data       #Λ too slow to compute
N >  60      LH_N.data         both too slow to compute

A trailing letter distinguishes different solutions that share the same invariants (VH_14_0_687A, ...B, ...) and a trailing word records a property worth keeping (_persymmetric, _BH).


scripts↑

The two generators write a ready-to-run Octave M-file for a given dimension. Running it solves the system and saves the solution under the name above.

$ ./BC_L.sh 11          # writes LH_11.m
$ ./C_V.sh 10           # writes VH_10.m

octave:1> H = LH_11;    # solves, then saves LH_11_0_191.data

bc_name.m builds the file name and is the only helper the generated M-files need. It also calls ud.m for the defect.

LN works only for N = 3 + 4k; the number of parameters is (N - 1)/2. For N > 55 the invariants take too long and the name is shortened automatically.


sequence LN↑

Solvable for N = 3 + 4k only. Every converged solution found so far is isolated.

Both invariants below are computed numerically, from a floating-point representation of H. The Haagerup set is obtained by forming all N4 products HijHklHilHkj and counting how many distinct values remain. The count recorded here is the one produced by bc_name.m, which rounds the real and imaginary parts onto a grid of step 10-6 and counts the occupied cells. That is a quantisation, not a test of distance so two values closer than the step are still counted twice when they fall either side of a cell boundary and two values further apart than the step can share a cell. It is also not the convention used by CHM_tool/lambda, which compares distances and defaults to 10-8. Re-measured with that tool, 16 of the 102 labelled matrices below come out differently at 10-6 and 19 at 10-8 – VH40 reads 15985 here and 16001 there. So the figures for #Λ are labels at a stated resolution, not exact invariants and they may not be compared with another appendix without re-measuring both sides the same way. They are least reliable for large N, where the set is large and its elements lie close together and for any matrix whose residual is not at machine precision – VH_9_0_89C and VH_9_0_89D are stored with a Gram residual near 10-9 rather than 10-15, so their finer counts in particular carry no weight. Read them as characteristics useful for telling these matrices apart, not as exact invariants. The defect, being the rank of a real matrix, is markedly more stable, but it rests on a singular-value threshold of the same kind.

matrixdefect#Λcomment
LH3,0,303≅ F3 ∈ BH(3, 3)
LH7,0,707≅ F7 ∈ BH(7, 7)
LH11,0,1910191
LH11,0,191A0191
LH11,0,1910191block persymmetric
LH15,0,4630463
LH15,0,463A0463
LH15,0,463B0463
LH19,0,9190919
LH23,0,160701607
LH27,0,257502575
LH27,0,2575A02575
LH31,0,386903869
LH31,0,387103871
LH35,0,554305543
LH35,0,5543A05543
LH39,0,763307633
LH39,0,763507635
LH43,00–
LH43,0A0–
LH47,00–figure
LH47,0A0–
LH51,00–
LH55,00–
LH59,00–
LH63––
LH67––
LH71––
LH75––
LH79––
LH83––
LH87––
LH95––
LH99––
LH103––
LH107––
LH111––
LH115––
LH123––

sequence VN↑

Solvable in any dimension N ⩾ 6. Defects other than zero do occur.

matrixdefect#Λcomment
VH6,4,16416
VH7,0,505
VH7,0,5A05
VH7,0,707≅ F7 ∈ BH(7, 7)
VH7,0,43043
VH7,0,43A043
VH8,0,10010
VH8,0,70070
VH8,5,32532
VH9,0,89089
VH9,0,89A089
VH9,0,89B089
VH9,0,89C089
VH9,0,89D089
VH10,0,1090109
VH10,0,1340134
VH10,0,2510251
VH10,0,251A0251
VH10,8,58858
VH11,0,505
VH11,0,11011≅ F11 ∈ BH(11, 11)
VH11,0,1610161persymmetric
VH11,0,3310331
VH11,0,331A0331
VH11,0,3310331persymmetric
VH12,0,58058
VH12,0,78078
VH12,0,1890189
VH12,0,189A0189
VH12,0,2300230
VH12,0,230A0230
VH12,1,34134
VH12,9,86986
VH12,9,1509150
VH12,9,150A9150
VH13,0,49049
VH13,0,95095
VH13,0,2650265
VH13,0,265A0265
VH13,0,5470547
VH13,0,547A0547
VH13,0,547B0547
VH14,0,909
VH14,0,2970297
VH14,0,3300330
VH14,0,6870687
VH14,0,687A0687
VH14,0,687B0687
VH14,0,687C0687
VH14,0,687D0687
VH15,0,3430343
VH15,0,4070407
VH15,0,8410841
VH15,0,841A0841
VH15,8,16816
VH16,0,4410441
VH16,0,4490449
VH16,0,5380538
VH16,0,102501025
VH16,7,5777577
VH16,13,18813188
VH17,0,122501225
VH18,0,6390639
VH19,0,171101711
VH20,0,200102001
VH21,0,230902309
VH22,0,266302663
VH23,0,303703037
VH24,0,345703457
VH25,0,389903899
VH26,0,439304393
VH27,0,491304913
VH28,0,547905479
VH29,0,609106091
VH30,0,674906749
VH31,0,743707437
VH32,0,818708187
VH33,0,897308973
VH34,0,982509825
VH35,0,10707010707
VH36,0,11661011661
VH37,0,12645012645
VH38,0,13701013701
VH39,0,14795014795
VH40,0,15985015985
VH41,00–
VH42,00–
VH43,00–
VH44,00–
VH45,00–
VH46,00–
VH47,00–
VH48,00–
VH49,00–
VH50,00–
VH50,0A0–
VH51,00–
VH52,00–
VH53,00–
VH54,00–
VH55,00–
VH56,00–
VH57,00–
VH58,00–
VH59,00–
VH60,00–
VH61––
VH62––
VH63––
VH64––
VH65––
VH66––
VH70––
VH80––

Raw runs↑

Kept for the record, under their original names. These did not converge: either the residual is too large for the invariants to mean anything, or the result is not CHM at all. They are not part of the collection above.

fileNF-normcomment
circulant_L5.data51.5e+00not CHM
circulant_V6.data66.7e-07unconverged (invariants unreliable)
circulant_V6_1010.data61.1e+01not CHM
circulant_V6_1020.data66.6e-01not CHM
circulant_L9.data95.9e-01not CHM
circulant_V9_40.data95.8e-07unconverged (invariants unreliable)
circulant_V9_50.data98.1e-06unconverged (invariants unreliable)
circulant_V9_60.data92.0e-06unconverged (invariants unreliable)
circulant_V9_70.data92.2e-05unconverged (invariants unreliable)
circulant_V9_80.data92.0e-05unconverged (invariants unreliable)
circulant_V10.data105.0e-08unconverged (invariants unreliable)
circulant_L23.data231.1e-07unconverged (invariants unreliable)
circulant_V90.data902.3e+02not CHM
circulant_L91.data918.7e+00not CHM
circulant_L119.data1198.6e+00not CHM
circulant_L127.data1271.9e+01not CHM
circulant_V127.data1273.4e+02not CHM

The two random-walk files, rw_L11_1000.data and rw_L13_1000.data, hold a thousand-step walk around L11 and L13, not single matrices.