I can not extract the final statevector when using a binded Parametric Controlled gate

I'm trying to implement a Parametric Hadamard Test.

I have already my parametric evolution gate $$\exp(-i\theta H)$$ where $$\theta$$ is the parameter.

When I defined the controlled-gate with Gate.control(1) and add it to the main circuit. I'm unable to correctly bind the parameters after and I can not get the state vector after the binded circuit.

thetas = ParameterVector('T', length=1)
it = iter(theta)

qc = QuantumCircuit(3)
qc.initialize(psi_0, [1,2])

qc.h(0)

# Apply control gate

tr_g_k = tr_g(dt=next(it))  # tr_g is the evolution gate $$\exp(-i\theta H)$$
tr_g_c = tr_g_k.control(1)

qc.append(tr_g_c, [0,1,2])

qc.h(0)
# --------------------------------------------------------
# Get the StateVector

qc_b = qc.bind_parameters({theta: [np.pi]})

simulator = Aer.get_backend('aer_simulator')

qc_bt = transpile(qc_b, simulator)

qc_bt.save_statevector()

result = simulator.run(qc_bt).result()
statevector = result.get_statevector(qc_bt)



When running the circuit I get:

TypeError: ParameterExpression with unbound parameters ({ParameterVectorElement(T[0])}) cannot be cast to a float.


I have tried without the control, i.e, only the evolution in the qubit 1 and 2 and it works. I think it's because the control, but so far, I have not been able to solve it.

Thanks for any help !

• Hi Andres, this looks like a bug in Qiskit and I therefore encourage you to post an issue on GitHub: github.com/Qiskit/qiskit-terra. As a temporary workaround, you can try to decompose the circuit and see if that helps: qc_b = qc.decompose().bind_parameters({theta: np.pi}). Dec 14 '21 at 13:34
• Thanks for the reply. I replace the line with: qc_b = qc.decompose().bind_parameters({thetas: [np.pi]}) ( [np.pi]) because otherwise I get the error 'TypeError: object of type 'float' has no len()' ) And I still get the error: CircuitError: 'Cannot bind parameters (T[0]) not present in the circuit.' I have even try with the .to_matrix() method of CircuitStateFn of Opflow, and I get the same error. I'd submitted the bug in GitHub. Thanks again. Dec 14 '21 at 14:19