\section{The naive Simulator}

A quite big part of the simulations interesting for students and researchers is not
covered by stabilizer states and stabilizer circuits. In particular the 
phase estimation algorithm is essential for many applications. Being able to simulate
such an algorithm is essential for education.

\subsection{Core Design}

The core of the simulator are states represented as numpy arrays \cite{numpy_array}
as a both fast, safe and handy storage. They can be modified and viewed without overhead
using python and allow fast modification using so-called NumPy ufuncs\cite{numpy_ufunc}.
All gates are implemented as NumPy ufuncs and map an $N$ qbit simulator state consisting 
of a $2^N$ dimensional quantum mechanical state and an $N$ dimensional classical state
to a new $2^N$ dimensional quantum mechanical state and an $N$ dimensional classical state.

A $N$ qbit quantum mechanical state is the outer (kronecker) product of the $N$ single qbuit 
state FIXME: source. The 


