3

Steane's $ [[7,1,3]] $ code is a well known CSS code which is self-dual and doubly even. Indeed the entire family of $ [[2^{2m+1}-1,1,2^{m+1}-1]] $ quantum punctured Reed-Muller codes mentioned in equation (7.230) of http://theory.caltech.edu/~preskill/ph229/notes/chap7.pdf is self-dual and doubly even.

The $ [[23,1,7]] $ Golay code is another well known CSS code which is self-dual and doubly even.

The $ [[15,1,3]] $ quantum Reed-Muller code is a well known CSS code which is doubly even but not self dual ($ X $ type stabilizers have weight $ 8 $ while the $ Z $ type stabilizers have weight $ 4 $). Indeed the entire family of $ [[2^{k+1}-1,1,3]] $ codes mentioned here Eastin Knill Theorem and groups of transversal gates is doubly even but not self dual.

Shor's $ [[9,1,3]] $ code is a well known CSS code which is not self-dual and not doubly even.

What is an example of a well known CSS code which is not doubly even but is self dual? Or are those all uninteresting? (EDIT thanks to DaftWullie: When I say well known I mean it has some interesting or good properties that make it well known. For example it would be good if the code had distance $ d\geq 3 $ although $ d=2 $ could still be interesting if other stuff about the code stands out).

1 Answers1

1

Take the classical single parity check codes on $4a+2$ bits. These have distance 2 and parity check matrix $H=[1,1,\cdots,1]$; as classical codes $H^T H=0$ and the weights of $H$ are obviously not multiples of 4. So taking $H_X=H_Z=H$ should work.

Here's an example of $[[21,1,5]]$ code which is even but not doubly even : $H=H_X=H_Z=$

[ [  1,  1,  1,  0,  0,  1,  0,  0,  1,  0,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 ],
  [  0,  0,  0,  1,  1,  1,  0,  1,  1,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,  0,  0 ],
  [  0,  1,  1,  0,  0,  0,  0,  1,  0,  0,  0,  1,  1,  1,  0,  0,  0,  0,  0,  0,  0 ],
  [  0,  0,  1,  0,  0,  0,  1,  1,  1,  1,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0 ],
  [  0,  0,  0,  0,  0,  0,  1,  0,  1,  0,  1,  0,  1,  1,  0,  1,  0,  0,  0,  0,  0 ],
  [  0,  0,  0,  0,  1,  1,  0,  1,  0,  0,  1,  1,  1,  1,  1,  1,  1,  0,  0,  0,  0 ],
  [  0,  0,  0,  0,  0,  1,  0,  1,  0,  1,  1,  0,  0,  1,  0,  0,  0,  1,  0,  0,  0 ],
  [  0,  0,  0,  0,  0,  0,  0,  1,  0,  1,  0,  0,  1,  0,  0,  1,  1,  0,  1,  0,  0 ],
  [  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  1,  1,  1,  0,  1,  1,  1,  1,  1,  1,  0 ],
  [  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  1,  0,  1,  1,  1,  0,  0,  1 ] ]

The logicals for the code $L=L_X=L_Z$=

[ [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0 ] ]

Here's the GAP code used in the search

LoadPackage("guava","0",false);
TestA:=function(n)local code,H,T,k,w,dim,DminC,DminD,wgt;
 for k in [2..n-1] do 
  code:=BestKnownLinearCode(n,k,GF(2));
  #uncomment this to show for k=10 code is shortened golay
  #if(k=10)then
  #code:=BinaryGolayCode();
  #code:=ShortenedCode(code,[1,2]);
  #fi;
  code:=DualCode(code);
  code:=EvenWeightSubcode(code);
  dim:=Dimension(code);
  Print("n=",String(n,-3)," k=",String(k,-3)," dim=",String(dim,-3));
  if(dim>0)then 
   H:=GeneratorMat(code);T:=H*TransposedMat(H);
   if(T=0*T)then 
    DminC:=MinimumDistance(code);
    DminD:=MinimumDistance(DualCode(code));
    Print(" dC=",DminC);Print(" dD=",DminD);
    H:=List(H,x->List(x,Int)); # convert from GF(2) matrix to binary matrix
    wgt:=Collected(List(H,Sum));Print(" weights=");for w in wgt do Print(w[1],",");od;
    if(DminC>2 and DminD>2)then Print("\n");Print("H=\n");PrintArray(H);fi;
   fi;
  fi;
  Print("\n");
 od;
return code;
end;

Here's a log of running it for n=21

gap> code21:=TestA(21);;
n=21  k=2   dim=18 
n=21  k=3   dim=17 
n=21  k=4   dim=16 
n=21  k=5   dim=15 
n=21  k=6   dim=14 
n=21  k=7   dim=13 
n=21  k=8   dim=12 
n=21  k=9   dim=11 
n=21  k=10  dim=10  dC=6 dD=5 weights=6,10,
H=
[ [  1,  1,  1,  0,  0,  1,  0,  0,  1,  0,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 ],
  [  0,  0,  0,  1,  1,  1,  0,  1,  1,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,  0,  0 ],
  [  0,  1,  1,  0,  0,  0,  0,  1,  0,  0,  0,  1,  1,  1,  0,  0,  0,  0,  0,  0,  0 ],
  [  0,  0,  1,  0,  0,  0,  1,  1,  1,  1,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0 ],
  [  0,  0,  0,  0,  0,  0,  1,  0,  1,  0,  1,  0,  1,  1,  0,  1,  0,  0,  0,  0,  0 ],
  [  0,  0,  0,  0,  1,  1,  0,  1,  0,  0,  1,  1,  1,  1,  1,  1,  1,  0,  0,  0,  0 ],
  [  0,  0,  0,  0,  0,  1,  0,  1,  0,  1,  1,  0,  0,  1,  0,  0,  0,  1,  0,  0,  0 ],
  [  0,  0,  0,  0,  0,  0,  0,  1,  0,  1,  0,  0,  1,  0,  0,  1,  1,  0,  1,  0,  0 ],
  [  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  1,  1,  1,  0,  1,  1,  1,  1,  1,  1,  0 ],
  [  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  1,  0,  1,  1,  1,  0,  0,  1 ] ]

n=21 k=11 dim=9
n=21 k=12 dim=8
n=21 k=13 dim=7
n=21 k=14 dim=6
n=21 k=15 dim=5
n=21 k=16 dim=4
n=21 k=17 dim=3
n=21 k=18 dim=2
n=21 k=19 dim=1 dC=20 dD=1 weights=20, n=21 k=20 dim=0

unknown
  • 2,405
  • 1
  • 8
  • 21