IQPansatz#

class discopy.quantum.circuit.IQPansatz(n_qubits, params)[source]#

Bases: Circuit

Build an IQP ansatz on n qubits, if n = 1 returns an Euler decomposition

>>> pprint = lambda c: print(str(c).replace(' >>', '\n  >>'))
>>> pprint(IQPansatz(3, [[0.1, 0.2], [0.3, 0.4]]))
H @ Id(2)
  >> Id(1) @ H @ Id(1)
  >> Id(2) @ H
  >> CRz(0.1) @ Id(1)
  >> Id(1) @ CRz(0.2)
  >> H @ Id(2)
  >> Id(1) @ H @ Id(1)
  >> Id(2) @ H
  >> CRz(0.3) @ Id(1)
  >> Id(1) @ CRz(0.4)
>>> print(IQPansatz(1, [0.3, 0.8, 0.4]))
Rx(0.3) >> Rz(0.8) >> Rx(0.4)