- Feb 9th (Hong-Ye Hu):
- Add
stabilizer.postselection()
method - Add
MeasureLayer()
class. This will support mid-circuit measurement - Add
Circuit()
class. If there is noMeasurementLayer
,self.unitary=True
, and it should be the same as theCliffordCircuit
class. If measurement is added, it is not unitary.forward(obj)
will perform circuit unitary$U$ and measurements, andbackward()
will perform$U^{\dagger}$ andpostselection
on the states. - Add pyclifford quantum chemistry interface. The code is in
qchem.py
file. With PySCF and Qiskit, user can generate quantum chemistry Hamiltonian in pyclifford format, and calculated mean-field (Hatree-Fock) energy and exact energy.
- Feb 17th (Hong-Ye Hu):
- Add many Pauli/Clifford gates, such as X,Y,Z,H,S,CNOT to circuit.py
- Add 24 single qubit Clifford gate. And user can use C(gate_num, qubits) to specify the single qubit Clifford gate.
- Check
Circuit()
is correct and replaceCliffordCircuit
. - Currently there is no conflict detection for CliffordGate class. So users can assign conflicting Clifford map by using both
gate.set_generator()
andgate.set_forward_map()
. We need to add a conflict detection. (YZYou: there is a priority that when the gate implements the unitary transformation, generator will be used first, otherwise, clifford map.) - Speed up
expectation()
method: possible solution: 1) njit(parallel) 2) use Heisenberg evolution, and calculate expetation of Pauli strings in the zero state 3) test performance of NvidiacuNumerics
, to change numpy arrays.