QuantumGateMatrix Class Reference

#include <gate_matrix.hpp>

Inheritance diagram for QuantumGateMatrix:
QuantumGateBase

Public Member Functions

 QuantumGateMatrix (const std::vector< UINT > &target_qubit_index_list, const ComplexMatrix &matrix_element, const std::vector< UINT > &control_qubit_index_list={})
 
 QuantumGateMatrix (const std::vector< UINT > &target_qubit_index_list, ComplexMatrix *matrix_element, const std::vector< UINT > &control_qubit_index_list={})
 
 QuantumGateMatrix (const std::vector< TargetQubitInfo > &target_qubit_index_list, const ComplexMatrix &matrix_element, const std::vector< ControlQubitInfo > &control_qubit_index_list={})
 
 QuantumGateMatrix (const std::vector< TargetQubitInfo > &target_qubit_index_list, ComplexMatrix *matrix_element, const std::vector< ControlQubitInfo > &control_qubit_index_list={})
 
virtual ~QuantumGateMatrix ()
 
virtual void add_control_qubit (UINT qubit_index, UINT control_value)
 
virtual void multiply_scalar (CPPCTYPE value)
 
virtual void set_gate_property (UINT gate_property_)
 
virtual void update_quantum_state (QuantumStateBase *state) override
 
virtual QuantumGateBasecopy () const override
 
virtual void set_matrix (ComplexMatrix &matrix) const override
 
virtual std::string to_string () const override
 
- Public Member Functions inherited from QuantumGateBase
virtual ~QuantumGateBase ()
 
std::vector< UINT > get_target_index_list () const
 
std::vector< UINT > get_control_index_list () const
 
bool is_commute (const QuantumGateBase *gate) const
 
bool is_Pauli () const
 
bool is_Clifford () const
 
bool is_Gaussian () const
 
bool is_parametric () const
 
bool is_diagonal () const
 
UINT get_property_value () const
 
bool commute_Pauli_at (UINT qubit_index, UINT pauli_type) const
 

Friends

DllExport std::ostream & operator<< (std::ostream &os, const QuantumGateMatrix &gate)
 
DllExport std::ostream & operator<< (std::ostream &os, QuantumGateMatrix *gate)
 

Additional Inherited Members

- Public Attributes inherited from QuantumGateBase
const std::vector< TargetQubitInfo > & target_qubit_list = _target_qubit_list
 
const std::vector< ControlQubitInfo > & control_qubit_list = _control_qubit_list
 
- Protected Member Functions inherited from QuantumGateBase
 QuantumGateBase ()
 
 QuantumGateBase (const QuantumGateBase &obj)=default
 
QuantumGateBaseoperator= (const QuantumGateBase &rhs)=default
 
- Protected Attributes inherited from QuantumGateBase
std::vector< TargetQubitInfo_target_qubit_list
 
std::vector< ControlQubitInfo_control_qubit_list
 
UINT _gate_property =0
 
std::string _name ="Generic gate"
 

Detailed Description

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

Constructor & Destructor Documentation

◆ QuantumGateMatrix() [1/4]

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

コンストラクタ

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

Parameters
target_qubit_index_listターゲットとなる量子ビットの添え字のリスト
matrix_element行列要素
control_qubit_index_listコントロールとなる量子ビットのリスト control_valueはすべて1になる。

◆ QuantumGateMatrix() [2/4]

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

コンストラクタ

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

Parameters
target_qubit_index_listターゲットとなる量子ビットの添え字のリスト
matrix_element行列要素
control_qubit_index_listコントロールとなる量子ビットのリスト control_valueはすべて1になる。

◆ QuantumGateMatrix() [3/4]

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

コンストラクタ

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

Parameters
target_qubit_index_listターゲットとなる量子ビットの情報のリスト
matrix_element行列要素
control_qubit_index_listコントロールとなる量子ビットの情報のリスト

◆ QuantumGateMatrix() [4/4]

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

コンストラクタ

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

Parameters
target_qubit_index_listターゲットとなる量子ビットの情報のリスト
matrix_element行列要素
control_qubit_index_listコントロールとなる量子ビットの情報のリスト

◆ ~QuantumGateMatrix()

virtual QuantumGateMatrix::~QuantumGateMatrix ( )
inlinevirtual

デストラクタ

Member Function Documentation

◆ add_control_qubit()

void QuantumGateMatrix::add_control_qubit ( UINT  qubit_index,
UINT  control_value 
)
virtual

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

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

Parameters
[in]qubit_indexコントロールの量子ビットの添え字
[in]control_value基底のqubit_indexcontrol_valueである場合にのみゲートが作用する。

◆ copy()

virtual QuantumGateBase* QuantumGateMatrix::copy ( ) const
inlineoverridevirtual

自身のコピーを作成する

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

Implements QuantumGateBase.

◆ multiply_scalar()

virtual void QuantumGateMatrix::multiply_scalar ( CPPCTYPE  value)
inlinevirtual

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

Parameters
[in]valueかける値

◆ set_gate_property()

virtual void QuantumGateMatrix::set_gate_property ( UINT  gate_property_)
inlinevirtual

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

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

◆ set_matrix()

virtual void QuantumGateMatrix::set_matrix ( ComplexMatrix matrix) const
inlineoverridevirtual

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

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

Implements QuantumGateBase.

◆ to_string()

std::string QuantumGateMatrix::to_string ( ) const
overridevirtual

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

Returns
生成した文字列

Reimplemented from QuantumGateBase.

◆ update_quantum_state()

void QuantumGateMatrix::update_quantum_state ( QuantumStateBase state)
overridevirtual

量子状態に作用する

Parameters
[in,out]state更新する量子状態

Implements QuantumGateBase.

Friends And Related Function Documentation

◆ operator<< [1/2]

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

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

Parameters
os出力するストリーム
gate情報の出力を行うゲート
Returns
受け取ったストリーム

◆ operator<< [2/2]

DllExport std::ostream& operator<< ( std::ostream &  os,
QuantumGateMatrix gate 
)
friend

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

Parameters
os出力するストリーム
gate情報の出力を行うゲート
Returns
受け取ったストリーム

The documentation for this class was generated from the following files: