Skip to content

Commit 875dc15

Browse files
Copied input vector to not modify the users input
1 parent eef6c5e commit 875dc15

File tree

2 files changed

+5
-3
lines changed

2 files changed

+5
-3
lines changed

include/mqt-core/algorithms/StatePreparation.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,6 @@ namespace qc {
3737
* not a power of two.
3838
**/
3939
[[nodiscard]] auto
40-
createStatePreparationCircuit(std::vector<std::complex<double>>& amplitudes,
40+
createStatePreparationCircuit(const std::vector<std::complex<double>>& amplitudes,
4141
double eps = 1e-10) -> QuantumComputation;
4242
} // namespace qc

src/algorithms/StatePreparation.cpp

+4-2
Original file line numberDiff line numberDiff line change
@@ -268,9 +268,11 @@ gatesToUncompute(std::vector<std::complex<double>>& amplitudes,
268268
}
269269

270270
auto createStatePreparationCircuit(
271-
std::vector<std::complex<double>>& amplitudes, double eps)
271+
const std::vector<std::complex<double>>& amplitudes, double eps)
272272
-> QuantumComputation {
273273

274+
auto amplitudesCopy = amplitudes;
275+
274276
if (!isNormalized(amplitudes, eps)) {
275277
throw std::invalid_argument{
276278
"Using State Preparation with Amplitudes that are not normalized"};
@@ -284,7 +286,7 @@ auto createStatePreparationCircuit(
284286
}
285287
const auto numQubits = static_cast<size_t>(std::log2(amplitudes.size()));
286288
QuantumComputation toZeroCircuit =
287-
gatesToUncompute(amplitudes, numQubits, eps);
289+
gatesToUncompute(amplitudesCopy, numQubits, eps);
288290

289291
// invert circuit
290292
toZeroCircuit.invert();

0 commit comments

Comments
 (0)