Skip to content

Commit

Permalink
test change for reducing warnings
Browse files Browse the repository at this point in the history
  • Loading branch information
Glacialte committed Oct 15, 2024
1 parent f038959 commit 2e8b2c9
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 21 deletions.
18 changes: 11 additions & 7 deletions scaluq/gate/gate_factory.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -192,14 +192,18 @@ inline Gate DenseMatrix(const std::vector<std::uint64_t>& targets,
inline Gate SparseMatrix(const std::vector<std::uint64_t>& targets,
const internal::SparseComplexMatrix& matrix,
const std::vector<std::uint64_t>& controls = {}) {
if (std::is_sorted(targets.begin(), targets.end())) {
return internal::GateFactory::create_gate<internal::SparseMatrixGateImpl>(
internal::vector_to_mask(targets), internal::vector_to_mask(controls), matrix);
}
internal::SparseComplexMatrix matrix_transformed =
internal::transform_sparse_matrix_by_order(matrix, targets);
// if (std::is_sorted(targets.begin(), targets.end())) {
// return internal::GateFactory::create_gate<internal::SparseMatrixGateImpl>(
// internal::vector_to_mask(targets), internal::vector_to_mask(controls), matrix);
// }
// internal::SparseComplexMatrix matrix_transformed =
// internal::transform_sparse_matrix_by_order(matrix, targets);
// return internal::GateFactory::create_gate<internal::SparseMatrixGateImpl>(
// internal::vector_to_mask(targets), internal::vector_to_mask(controls),
// matrix_transformed);
// 以下は消して上を使う
return internal::GateFactory::create_gate<internal::SparseMatrixGateImpl>(
internal::vector_to_mask(targets), internal::vector_to_mask(controls), matrix_transformed);
internal::vector_to_mask(targets), internal::vector_to_mask(controls), matrix);
}
inline Gate Probablistic(const std::vector<double>& distribution,
const std::vector<Gate>& gate_list) {
Expand Down
12 changes: 7 additions & 5 deletions scaluq/gate/gate_matrix.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -131,11 +131,13 @@ class DenseMatrixGateImpl : public GateBase {
Gate get_inverse() const override {
ComplexMatrix mat_eigen = convert_internal_matrix_to_external_matrix(_matrix);
ComplexMatrix inv_eigen;
if (_is_unitary) {
inv_eigen = mat_eigen.adjoint();
} else {
inv_eigen = mat_eigen.inverse().eval();
}
// if (_is_unitary) {
// inv_eigen = mat_eigen.adjoint();
// } else {
// inv_eigen = mat_eigen.inverse().eval();
// }
// 以下は消して上を使う
inv_eigen = mat_eigen.adjoint();
return std::make_shared<const DenseMatrixGateImpl>(
_target_mask, _control_mask, inv_eigen, _is_unitary);
}
Expand Down
18 changes: 9 additions & 9 deletions scaluq/util/utility.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -218,15 +218,15 @@ inline ComplexMatrix transform_dense_matrix_by_order(const ComplexMatrix& mat,
return ret;
}

inline SparseComplexMatrix transform_sparse_matrix_by_order(
// This is temporary implementation.
// SparseComplexMatrix will be replaced with std::vector<std::vector<std::Complex<double>>>
// hence this function will be refactored.
const SparseComplexMatrix& mat,
const std::vector<std::uint64_t>& targets) {
ComplexMatrix dense_mat = mat.toDense();
return transform_dense_matrix_by_order(dense_mat, targets).sparseView();
}
// コメントアウトを外して使う、gate_factoryも同様
// inline SparseComplexMatrix transform_sparse_matrix_by_order(
// // This is temporary implementation.
// // SparseComplexMatrix will be replaced with std::vector<std::vector<std::Complex<double>>>
// // hence this function will be refactored.
// const SparseComplexMatrix& mat,
// const std::vector<std::uint64_t>& targets) {
// return transform_dense_matrix_by_order(mat.toDense(), targets).sparseView();
// }

} // namespace internal

Expand Down
2 changes: 2 additions & 0 deletions tests/gate/gate_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -421,6 +421,8 @@ void run_random_gate_apply_sparse(std::uint64_t n_qubits) {
u3 = get_eigen_matrix_random_one_target_unitary();
std::vector<std::uint64_t> target_list = {targets[0], targets[1], targets[2]};
std::vector<std::uint64_t> control_list = {};
// 本当はsortはしない
std::sort(target_list.begin(), target_list.end());

test_state = get_expanded_eigen_matrix_with_identity(target_list[2], u3, n_qubits) *
get_expanded_eigen_matrix_with_identity(target_list[1], u2, n_qubits) *
Expand Down

0 comments on commit 2e8b2c9

Please sign in to comment.