I am trying to implement a Hadamard test on a parametrized sub-circuit $V(\bf{a})$. I create an outer circuit and then append the parametrized $V(\bf{a})$ to it.
def outer_circuit(subcircuit, imaginary=False):
qc = QuantumCircuit(4, 1)
qc.append(subcircuit, qc.qubits)
[...] # operations
return qc
def subcircuit():
a = ParameterVector('a', 9)
m, n = Parameter('m'), Parameter('n')
qc = QuantumCircuit(4, name='V')
[...] # random operations which use parameters
return qc
When I finally contruct the bigger circuit and try to bind the parameters, I get the following error:
operator = subcircuit()
test = outer_circuit(operator)
test.bind_parameters({'a': np.random.rand(9)})
>>
CircuitError: 'Cannot bind parameters (a) not present in the circuit.'
How do I get overcome this problem?