Class QuantumGateSparseMatrix

Inheritance Relationships

Base Type

Class Documentation

class QuantumGateSparseMatrix : public QuantumGateBase

行列要素で自身が作用する内容を保持するクラス 疎行列を持つ。

Public Functions

QuantumGateSparseMatrix(const std::vector<UINT> &target_qubit_index_list, const SparseComplexMatrix &matrix_element, const std::vector<UINT> &control_qubit_index_list = {})

コンストラクタ

行列要素はコピーされるため、matrixは再利用できるが低速である

パラメータ
  • target_qubit_index_list -- ターゲットとなる量子ビットの添え字のリスト

  • matrix_element -- 行列要素

  • control_qubit_index_list -- コントロールとなる量子ビットのリスト control_valueはすべて1になる。

QuantumGateSparseMatrix(const std::vector<UINT> &target_qubit_index_list, SparseComplexMatrix *matrix_element, const std::vector<UINT> &control_qubit_index_list = {})

コンストラクタ

行列要素はswapされるため、matrixは再利用できないが高速である。

パラメータ
  • target_qubit_index_list -- ターゲットとなる量子ビットの添え字のリスト

  • matrix_element -- 行列要素

  • control_qubit_index_list -- コントロールとなる量子ビットのリスト control_valueはすべて1になる。

QuantumGateSparseMatrix(const std::vector<TargetQubitInfo> &target_qubit_index_list, const SparseComplexMatrix &matrix_element, const std::vector<ControlQubitInfo> &control_qubit_index_list = {})

コンストラクタ

行列要素はコピーされるため、matrixは再利用できるが低速である

パラメータ
  • target_qubit_index_list -- ターゲットとなる量子ビットの情報のリスト

  • matrix_element -- 行列要素

  • control_qubit_index_list -- コントロールとなる量子ビットの情報のリスト

QuantumGateSparseMatrix(const std::vector<TargetQubitInfo> &target_qubit_index_list, SparseComplexMatrix *matrix_element, const std::vector<ControlQubitInfo> &control_qubit_index_list = {})

コンストラクタ

行列要素はswapされるため、matrixは再利用できないが高速である。

パラメータ
  • target_qubit_index_list -- ターゲットとなる量子ビットの情報のリスト

  • matrix_element -- 行列要素

  • control_qubit_index_list -- コントロールとなる量子ビットの情報のリスト

inline virtual ~QuantumGateSparseMatrix()

デストラクタ

virtual void add_control_qubit(UINT qubit_index, UINT control_value)

コントロールの量子ビットを追加する

qubit_indexはゲートのターゲットやコントロールの値に含まれてはいけない。

パラメータ
  • qubit_index -- [in] コントロールの量子ビットの添え字

  • control_value -- [in] 基底のqubit_indexcontrol_valueである場合にのみゲートが作用する。

inline virtual void multiply_scalar(CPPCTYPE value)

ゲート行列にスカラー値をかける

パラメータ

value -- [in] かける値

inline virtual void set_gate_property(UINT gate_property_)

ゲートのプロパティを設定する

パラメータ

gate_property_ -- [in] ゲートのプロパティ値

virtual void update_quantum_state(QuantumStateBase *state) override

量子状態に作用する

パラメータ

state -- [inout] 更新する量子状態

inline virtual QuantumGateSparseMatrix *copy() const override

自身のコピーを作成する

戻り値

コピーされたゲートのインスタンス

inline virtual void set_matrix(ComplexMatrix &matrix) const override

自身の行列要素をセットする

パラメータ

matrix -- [out] 行列要素をセットする行列の参照

virtual std::string to_string() const override

量子回路のデバッグ情報の文字列を生成する

戻り値

生成した文字列

Friends

friend std::ostream &operator<<(std::ostream &os, const QuantumGateSparseMatrix &gate)

ゲートの情報を文字列で出力する

パラメータ
  • os -- 出力するストリーム

  • gate -- 情報の出力を行うゲート

戻り値

受け取ったストリーム

friend std::ostream &operator<<(std::ostream &os, QuantumGateSparseMatrix *gate)

ゲートの情報を文字列で出力する

パラメータ
  • os -- 出力するストリーム

  • gate -- 情報の出力を行うゲート

戻り値

受け取ったストリーム