Class QuantumGateDiagonalMatrix¶
Defined in File gate_matrix_diagonal.hpp
Inheritance Relationships¶
Base Type¶
public QuantumGateBase
(Class QuantumGateBase)
Class Documentation¶
-
class QuantumGateDiagonalMatrix : public QuantumGateBase¶
行列要素で自身が作用する内容を保持するクラス 対角行列を持つ。
Public Functions
-
QuantumGateDiagonalMatrix(const std::vector<UINT> &target_qubit_index_list, const ComplexVector &matrix_element, const std::vector<UINT> &control_qubit_index_list = {})¶
コンストラクタ
行列要素はコピーされるため、matrixは再利用できるが低速である
- パラメータ
target_qubit_index_list -- ターゲットとなる量子ビットの添え字のリスト
matrix_element -- 行列要素
control_qubit_index_list -- コントロールとなる量子ビットのリスト
control_value
はすべて1になる。
-
QuantumGateDiagonalMatrix(const std::vector<UINT> &target_qubit_index_list, ComplexVector *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になる。
-
QuantumGateDiagonalMatrix(const std::vector<TargetQubitInfo> &target_qubit_index_list, const ComplexVector &matrix_element, const std::vector<ControlQubitInfo> &control_qubit_index_list = {})¶
コンストラクタ
行列要素はコピーされるため、matrixは再利用できるが低速である
- パラメータ
target_qubit_index_list -- ターゲットとなる量子ビットの情報のリスト
matrix_element -- 行列要素
control_qubit_index_list -- コントロールとなる量子ビットの情報のリスト
-
QuantumGateDiagonalMatrix(const std::vector<TargetQubitInfo> &target_qubit_index_list, ComplexVector *matrix_element, const std::vector<ControlQubitInfo> &control_qubit_index_list = {})¶
コンストラクタ
行列要素はswapされるため、matrixは再利用できないが高速である。
- パラメータ
target_qubit_index_list -- ターゲットとなる量子ビットの情報のリスト
matrix_element -- 行列要素
control_qubit_index_list -- コントロールとなる量子ビットの情報のリスト
-
inline virtual ~QuantumGateDiagonalMatrix()¶
デストラクタ
-
virtual void add_control_qubit(UINT qubit_index, UINT control_value)¶
コントロールの量子ビットを追加する
qubit_index
はゲートのターゲットやコントロールの値に含まれてはいけない。- パラメータ
qubit_index -- [in] コントロールの量子ビットの添え字
control_value -- [in] 基底の
qubit_index
がcontrol_value
である場合にのみゲートが作用する。
-
inline virtual void set_gate_property(UINT gate_property_)¶
ゲートのプロパティを設定する
- パラメータ
gate_property_ -- [in] ゲートのプロパティ値
-
virtual void update_quantum_state(QuantumStateBase *state) override¶
量子状態に作用する
- パラメータ
state -- [inout] 更新する量子状態
-
inline virtual QuantumGateDiagonalMatrix *copy() const override¶
自身のコピーを作成する
- 戻り値
コピーされたゲートのインスタンス
-
inline virtual QuantumGateDiagonalMatrix *get_inverse(void) 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 QuantumGateDiagonalMatrix &gate)¶
ゲートの情報を文字列で出力する
- パラメータ
os -- 出力するストリーム
gate -- 情報の出力を行うゲート
- 戻り値
受け取ったストリーム
-
friend std::ostream &operator<<(std::ostream &os, QuantumGateDiagonalMatrix *gate)¶
ゲートの情報を文字列で出力する
- パラメータ
os -- 出力するストリーム
gate -- 情報の出力を行うゲート
- 戻り値
受け取ったストリーム
-
QuantumGateDiagonalMatrix(const std::vector<UINT> &target_qubit_index_list, const ComplexVector &matrix_element, const std::vector<UINT> &control_qubit_index_list = {})¶