/* *********************************************************************
   | The Q language - A C++ extension for programming quantum machines |
   | Copyright (C) 2000 2001 2002 2003 Stefano Bettelli                |
   | <bettelli@irsamc.ups-tlse.fr>                                     |
   | See the COPYING and LICENSE files for license terms.              |
   ********************************************************************* */

STATUS:
=======
- Quantum registers 		OK
- Quantum operator basics	OK
- Controlled operations		OK
- Software swaps		OK
- Error correction codes        preliminary work
- Pseudoclassical operations	nothing yet

ERRORS:
=======
- none currently known, but a proper debug session is still missing

TODO LIST:
==========
- profiling day
- re-think the communication between the quantum device/simulator
  about the number of available qubits.
- solve interdependency of primitives in controlled operations (?)
  as well as reference to a Qop_slicelist in the Qop_slice class.
  This should simplify also the Qop controlled constructor and its
  service routine Qop_slicelist::controlled.
- improve simplification routines and has_equivalent_indexes
- understand why allocators are so slow in the multithreaded version
  (#define QTHREAD_ALLOC std::__default_alloc_template<false, 0>)
- write a test program which is really a test, not an example
- code the circuits described in quant-ph/0205095 in the library

IMPROVEMENTS (to be studied):
=============================
- controlled Qops with only one ancilla
  (? see quant-ph/9503016 and update the digest with a note).
- introduce a framework for error correcting codes
- caching of operator execution
- make any sense of all those pesky exceptions
- namespaces
