# Smallest distance 9 self-dual CSS code?

The level-2 concatenated [[7,1,3]] Steane code, and the 4.8.8 color code are both self-dual [[49,1,9]] codes from the CSS family. Is there a distance 9 self-dual CSS code that has less than 49 qubits?

I assume by "self dual CSS code" you mean one with $$H_X = H_Z = H$$. $$H$$ is the parity check matrix of a classical binary code with parameters $$[n,(n+1)/2,d]$$; this gives you a $$[[n,1,d]]$$ QECC. $$H H^T = 0$$ puts a restriction that the dual of the classical code is self orthogonal. A quick search using GAP/GUAVA over the best known linear codes finds a $$[47,24,11]$$ code which gives you a $$[[47,1,11]]$$ code. $$H$$ displayed below.

 1 1 . . 1 . 1 . . 1 . . 1 1 . 1 1 . . 1 1 . . . 1 . . . . . . . . . . . . . . . . . . . . . .
. 1 1 . . 1 . 1 . . 1 . . 1 1 . 1 1 . . 1 1 . . . 1 . . . . . . . . . . . . . . . . . . . . .
. . 1 1 . . 1 . 1 . . 1 . . 1 1 . 1 1 . . 1 1 . . . 1 . . . . . . . . . . . . . . . . . . . .
. . . 1 1 . . 1 . 1 . . 1 . . 1 1 . 1 1 . . 1 1 . . . 1 . . . . . . . . . . . . . . . . . . .
1 1 . . . 1 1 . 1 1 1 . 1 . . 1 . 1 . . . . . 1 . . . . 1 . . . . . . . . . . . . . . . . . .
1 . 1 . 1 . . 1 . . 1 1 1 . . 1 . . 1 1 1 . . . . . . . . 1 . . . . . . . . . . . . . . . . .
. 1 . 1 . 1 . . 1 . . 1 1 1 . . 1 . . 1 1 1 . . . . . . . . 1 . . . . . . . . . . . . . . . .
. . 1 . 1 . 1 . . 1 . . 1 1 1 . . 1 . . 1 1 1 . . . . . . . . 1 . . . . . . . . . . . . . . .
. . . 1 . 1 . 1 . . 1 . . 1 1 1 . . 1 . . 1 1 1 . . . . . . . . 1 . . . . . . . . . . . . . .
1 1 . . . . . . 1 1 . 1 1 1 1 . . . . . 1 . 1 1 . . . . . . . . . 1 . . . . . . . . . . . . .
1 . 1 . 1 . 1 . . . 1 . . . 1 . 1 . . 1 1 1 . 1 . . . . . . . . . . 1 . . . . . . . . . . . .
1 . . 1 1 1 1 1 . 1 . 1 1 1 . . 1 1 . 1 . 1 1 . . . . . . . . . . . . 1 . . . . . . . . . . .
. 1 . . 1 1 1 1 1 . 1 . 1 1 1 . . 1 1 . 1 . 1 1 . . . . . . . . . . . . 1 . . . . . . . . . .
1 1 1 . 1 1 . 1 1 . . 1 1 . 1 . 1 . 1 . 1 1 . 1 . . . . . . . . . . . . . 1 . . . . . . . . .
1 . 1 1 1 1 . . 1 . . . . . . . 1 1 . . 1 1 1 . . . . . . . . . . . . . . . 1 . . . . . . . .
. 1 . 1 1 1 1 . . 1 . . . . . . . 1 1 . . 1 1 1 . . . . . . . . . . . . . . . 1 . . . . . . .
1 1 1 . . 1 . 1 . 1 1 . 1 1 . 1 1 . 1 . 1 . 1 1 . . . . . . . . . . . . . . . . 1 . . . . . .
1 . 1 1 1 . . . 1 1 1 1 1 . 1 1 . 1 . . 1 1 . 1 . . . . . . . . . . . . . . . . . 1 . . . . .
1 . . 1 . 1 1 . . . 1 1 . . . . . . 1 1 1 1 1 . . . . . . . . . . . . . . . . . . . 1 . . . .
. 1 . . 1 . 1 1 . . . 1 1 . . . . . . 1 1 1 1 1 . . . . . . . . . . . . . . . . . . . 1 . . .
1 1 1 . 1 1 1 1 1 1 . . . . . 1 1 . . 1 . 1 1 1 . . . . . . . . . . . . . . . . . . . . 1 . .
1 . 1 1 1 1 . 1 1 . 1 . 1 1 . 1 . 1 . 1 . . 1 1 . . . . . . . . . . . . . . . . . . . . . 1 .
1 . . . 1 1 . . . 1 1 1 . 1 1 . 1 1 1 . 1 1 1 1 . . . . . . . . . . . . . . . . . . . . . . 1


GAP code :

LoadPackage("guava");
for n in [1..50] do
if(\mod(n,2)=0)then continue;fi;
m:=(n-1)/2;
k:=n-m;
code:=BestKnownLinearCode(n,k,GF(2));
if(code<>fail)then
check:=IsSelfOrthogonalCode(DualCode(code));
Print("n=",n," k=",k," ",check," ",code,"\n");
fi;
od;


results (takes a few seconds) :

n=1 k=1 false a cyclic [1,1,1]0 repetition code over GF(2)
n=3 k=2 false a cyclic [3,2,2]1 Cordaro-Wagner code over GF(2)
n=5 k=3 false a linear [5,3,2]1..2 subcode
n=7 k=4 true a linear [7,4,3]1 punctured code
n=9 k=5 false a linear [9,5,3]2..3 shortened code
n=11 k=6 false a linear [11,6,4]2..4 shortened code
n=13 k=7 false a linear [13,7,4]2..5 subcode
n=15 k=8 false a linear [15,8,4]3..6 subcode
n=17 k=9 false a linear [17,9,5]3..4 punctured code
n=19 k=10 false a linear [19,10,5]3..6 shortened code
n=21 k=11 false a linear [21,11,6]3..7 shortened code
n=23 k=12 true a linear [23,12,7]3 punctured code
n=25 k=13 false a linear [25,13,6]4..9 subcode
n=27 k=14 false a linear [27,14,7]4..7 code defined by generator matrix over GF(2)
n=29 k=15 false a linear [29,15,7]4..10 shortened code
n=31 k=16 false a linear [31,16,8]5..11 shortened code
n=33 k=17 false a linear [33,17,8]5..12 shortened code
n=35 k=18 false a linear [35,18,8]5..13 subcode
n=37 k=19 false a linear [37,19,8]5..14 subcode
Code not yet in library
n=41 k=21 false a linear [41,21,9]6..12 punctured code
n=43 k=22 false a linear [43,22,9]6..14 shortened code
n=45 k=23 false a linear [45,23,10]6..14 shortened code
n=47 k=24 true a linear [47,24,11]6..7 punctured code
Code not yet in library


note there are also solutions for $$n=7$$ and $$n=23$$ with smaller distance. To display the matrix :

n:=47;k:=24;
code:=BestKnownLinearCode(n,k,GF(2));
H:=CheckMat(code);
Display(H);

• It would be fantastic if you add the code you used to find this. Commented Oct 19, 2023 at 19:09
• sure...added that to the answer Commented Oct 19, 2023 at 19:37