Skip to content

Commit 52f893c

Browse files
authored
fix append (#112)
1 parent 7628aaa commit 52f893c

File tree

3 files changed

+15
-19
lines changed

3 files changed

+15
-19
lines changed

src/circuit/instruction.hpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@ class Instruction {
7070
num_clbits_ = other.num_clbits_;
7171
params_ = other.params_;
7272
label_ = other.label_;
73+
map_ = other.map_;
74+
is_standard_gate_ = other.is_standard_gate_;
7375
}
7476

7577
/// @brief Return name of the instruction
@@ -135,12 +137,12 @@ class Instruction {
135137
/// @return number of parameters
136138
virtual uint_t num_params(void) const
137139
{
138-
return 0;
140+
return params_.size();
139141
}
140142

141143
/// @brief Return gate enum for Qiskit C-API
142144
/// @return QkGate enum for this instruciton
143-
virtual QkGate gate_map(void) const
145+
QkGate gate_map(void) const
144146
{
145147
return map_;
146148
}

src/circuit/quantumcircuit_def.hpp

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -605,8 +605,8 @@ class QuantumCircuit {
605605
/// @param op a gate to be added
606606
/// @param qubits a list of qubits to be mapped
607607
/// @param params a list of parameters
608-
void append(const Instruction& op, const reg_t& qubits, const std::vector<double> params);
609-
void append(const Instruction& op, const std::vector<std::uint32_t>& qubits, const std::vector<double> params);
608+
void append(const Instruction& op, const reg_t& qubits);
609+
void append(const Instruction& op, const std::vector<std::uint32_t>& qubits);
610610

611611
/// @brief append a gate at the end of the circuit
612612
/// @param inst an instruction to be added
@@ -615,13 +615,7 @@ class QuantumCircuit {
615615
void append(const Instruction& op, const uint_t qubit)
616616
{
617617
reg_t qubits({qubit});
618-
std::vector<double> params;
619-
append(op, qubits, params);
620-
}
621-
void append(const Instruction& op, const reg_t& qubits)
622-
{
623-
std::vector<double> params;
624-
append(op, qubits, params);
618+
append(op, qubits);
625619
}
626620

627621

src/circuit/quantumcircuit_impl.hpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -933,17 +933,17 @@ void QuantumCircuit::compose(QuantumCircuit& circ, const reg_t& qubits, const re
933933
}
934934
}
935935

936-
void QuantumCircuit::append(const Instruction& op, const reg_t& qubits, const std::vector<double> params)
936+
void QuantumCircuit::append(const Instruction& op, const reg_t& qubits)
937937
{
938-
if (op.num_qubits() == qubits.size() && op.num_params() == params.size()) {
938+
if (op.num_qubits() == qubits.size()) {
939939
std::vector<std::uint32_t> vqubits(qubits.size());
940940
for (int_t i = 0; i< qubits.size(); i++) {
941941
vqubits[i] = (std::uint32_t)qubits[i];
942942
}
943943
pre_add_gate();
944944
if (op.is_standard_gate()) {
945-
if (params.size() > 0)
946-
qk_circuit_gate(rust_circuit_.get(), op.gate_map(), vqubits.data(), params.data());
945+
if (op.num_params() > 0)
946+
qk_circuit_gate(rust_circuit_.get(), op.gate_map(), vqubits.data(), op.params().data());
947947
else
948948
qk_circuit_gate(rust_circuit_.get(), op.gate_map(), vqubits.data(), nullptr);
949949
} else {
@@ -958,13 +958,13 @@ void QuantumCircuit::append(const Instruction& op, const reg_t& qubits, const st
958958
}
959959
}
960960

961-
void QuantumCircuit::append(const Instruction& op, const std::vector<std::uint32_t>& qubits, const std::vector<double> params)
961+
void QuantumCircuit::append(const Instruction& op, const std::vector<std::uint32_t>& qubits)
962962
{
963-
if (op.num_qubits() == qubits.size() && op.num_params() == params.size()) {
963+
if (op.num_qubits() == qubits.size()) {
964964
pre_add_gate();
965965
if (op.is_standard_gate()) {
966-
if (params.size() > 0)
967-
qk_circuit_gate(rust_circuit_.get(), op.gate_map(), qubits.data(), params.data());
966+
if (op.num_params() > 0)
967+
qk_circuit_gate(rust_circuit_.get(), op.gate_map(), qubits.data(), op.params().data());
968968
else
969969
qk_circuit_gate(rust_circuit_.get(), op.gate_map(), qubits.data(), nullptr);
970970
} else {

0 commit comments

Comments
 (0)