Program Listing for File gate_matrix_sparse.hpp¶
↰ Return to documentation for file (/home/docs/checkouts/readthedocs.org/user_builds/qulacs-rtd/checkouts/v0.6.7/src/cppsim/gate_matrix_sparse.hpp
)
#pragma once
#include "gate.hpp"
#include "type.hpp"
class DllExport QuantumGateSparseMatrix : public QuantumGateBase {
private:
// list of elements of unitary matrix as 1D array with length dim*dim (only
// for dense gate))
SparseComplexMatrix _matrix_element;
public:
QuantumGateSparseMatrix(const std::vector<UINT>& target_qubit_index_list,
const SparseComplexMatrix& matrix_element,
const std::vector<UINT>& control_qubit_index_list = {});
QuantumGateSparseMatrix(const std::vector<UINT>& target_qubit_index_list,
SparseComplexMatrix* matrix_element,
const std::vector<UINT>& control_qubit_index_list = {});
QuantumGateSparseMatrix(
const std::vector<TargetQubitInfo>& target_qubit_index_list,
const SparseComplexMatrix& matrix_element,
const std::vector<ControlQubitInfo>& control_qubit_index_list = {});
QuantumGateSparseMatrix(
const std::vector<TargetQubitInfo>& target_qubit_index_list,
SparseComplexMatrix* matrix_element,
const std::vector<ControlQubitInfo>& control_qubit_index_list = {});
virtual ~QuantumGateSparseMatrix(){};
virtual void add_control_qubit(UINT qubit_index, UINT control_value);
virtual void multiply_scalar(CPPCTYPE value) { _matrix_element *= value; }
virtual void set_gate_property(UINT gate_property_) {
_gate_property = gate_property_;
}
virtual void update_quantum_state(QuantumStateBase* state) override;
virtual QuantumGateSparseMatrix* copy() const override {
return new QuantumGateSparseMatrix(*this);
};
virtual void set_matrix(ComplexMatrix& matrix) const override {
matrix = this->_matrix_element.toDense();
}
virtual std::string to_string() const override;
boost::property_tree::ptree to_ptree() const override;
friend DllExport std::ostream& operator<<(
std::ostream& os, const QuantumGateSparseMatrix& gate);
friend DllExport std::ostream& operator<<(
std::ostream& os, QuantumGateSparseMatrix* gate);
};