List of files:
--------------
config.dbl            The 10 qubit static imperfections used in quant-ph/0407262
                      in a binary format which is used by the program.
config.txt            The same as human readable file
husimi-initial.dbl    Binary Husimi distribution of the initial state in the chaotic regime,
                      generated by the program. Such files can be converted into graphic files
                      using the mathematica notebook plot.nb.
plot.nb               A mathematica 5.1 notebook. Converts binary Husimis into graphics and plots
                      fidelity files.
husimi-initial.eps    The resulting Husimi *.eps file.
fidelity.txt          Calculation of the fidelity without error correction, gives the lowest curve
                      in the left plot of figure 3 in quant-ph/0407262.
readme.txt            This file...
parec.cpp             The main program file
qregbase.cpp          Contains the main object
qregbase.h
gatelist.cpp          Contains the quantum algorithms Sawtooth map and Tent map
gatelist.h

This package contains a program which does the calculations presented in quant-ph/0407262.
It uses the NAG Fortran Library to generate random numbers, but this could easily be changed.
To compile it type:
g++ parec.cpp gatelist.cpp qregbase.cpp -lnag -lg2c
whereas -lnag and -lg2c is needed for the NAG-Library.

Program overview:
-----------------
The basic object is qregbase. It contains a quantum register with a certain number of qubits
and all necessary functions like quantum gates. It is initialized like

qregbase reg(10, "/home/user/");

where 10 would be the number of qubits and the path tells where to save and load files.
A member of qregbase is the gatelist object gl which is defined in gatelist.h.
It is a list of one and two qubit quantum gates
(Single qubit gates: Not, Hadamard, Phase )
(Two qubit gates: CNot, CPhase, Swap )
which can be set to contain a certain
quantum algorithm, e.g.

reg.gl.tent(1.7, 2.*pi/dim);

for the tent map with parameters as in quant-ph/0407262.
x iterations of such a algorithm can than be simulated with

reg.sim_g(x);

For the PAREC - method a quantum algorithm has to be translated into a set of gates
as in equation (5) in quant-ph/0407262.
This is done by

reg.convgl();

which generates a list of such gates in the qregbase member object hverlauf which is of type thverlauf.
Finally such a list is simulated with PAREC correction by the command

reg.sim_parec_h(x, ngeff);

where ngeff gives the number of Hamiltonian gates after which a PAREC step is applied.
(This last point is different from quant-ph/0407262 -- where corrections steps have been applied after
ngeff translated standard gates -- but somehow more logical.)

If you have any questions don't hesitate to ask the author:
oliver.kern@physik.tu-darmstadt.de

Oliver Kern, Darmstadt, 8 Dec. 2005