This folder contains code based on the methods of arXiv:1611.08012 by N. Chancellor, A. Kissenger, J. Roffe, S. Zohren, and D. Horsman
feel free to reuse/modify but please attribute the source and cite our paper in any published work
All code in this folder was written by Nicholas Chancellor

We have created two versions of the code, one in GNU Octave, and one in Python 3, both sets of code provide the same functionality and which to use comes down to user preference. The Python code additionally includes a Jupyter notebook explaining how to use the code, at the time this code was written Jupyter could be obtained free of charge from http://jupyter.org/ . All results for arXiv:1611.08012 were obtained using the GNU Octave code, along with a wrapper script for parallelization which has not been included. 

The programs given here provides a utility to search for CPC codes of arbitrary code distance (in the form of CPC matrices) using random search, and to process the resulting codes both by turning the matrices into latex arrays and by converting them into stabilizer tables. We make no claim that random search is the optimal way to find these codes, in fact we strongly suspect that huge gains could be made by using more sophisticated numerical searching algorithms. This code is meant to provide proof-of-principle of the CPC idea, and allows a utility for others to experiment with simple codes found using the CPC formalism without having to understand our paper and produce the code themselves*.


* Note that this statement of intended purpose does NOT imply that we provide any kind of warranty on our code, which we do not.
