QuantumGateSparseMatrix Class Reference

#include <gate_matrix_sparse.hpp>

Inheritance diagram for QuantumGateSparseMatrix:
QuantumGateBase

Public Member Functions

 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)
 
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
 
virtual std::string get_name () const
 

Friends

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

Additional Inherited Members

- Public Attributes inherited from QuantumGateBase
const std::vector< TargetQubitInfo > & target_qubit_list
 
const std::vector< ControlQubitInfo > & control_qubit_list
 
- Protected Member Functions inherited from QuantumGateBase
 QuantumGateBase ()
 
 QuantumGateBase (const QuantumGateBase &obj)
 
QuantumGateBaseoperator= (const QuantumGateBase &rhs)=delete
 
- 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

◆ QuantumGateSparseMatrix() [1/4]

QuantumGateSparseMatrix::QuantumGateSparseMatrix ( const std::vector< UINT > &  target_qubit_index_list,
const SparseComplexMatrix 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になる。

◆ QuantumGateSparseMatrix() [2/4]

QuantumGateSparseMatrix::QuantumGateSparseMatrix ( const std::vector< UINT > &  target_qubit_index_list,
SparseComplexMatrix 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になる。

◆ QuantumGateSparseMatrix() [3/4]

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

コンストラクタ

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

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

◆ QuantumGateSparseMatrix() [4/4]

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

コンストラクタ

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

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

◆ ~QuantumGateSparseMatrix()

virtual QuantumGateSparseMatrix::~QuantumGateSparseMatrix ( )
inlinevirtual

デストラクタ

Member Function Documentation

◆ add_control_qubit()

void QuantumGateSparseMatrix::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* QuantumGateSparseMatrix::copy ( ) const
inlineoverridevirtual

自身のコピーを作成する

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

Implements QuantumGateBase.

◆ multiply_scalar()

virtual void QuantumGateSparseMatrix::multiply_scalar ( CPPCTYPE  value)
inlinevirtual

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

Parameters
[in]valueかける値

◆ set_gate_property()

virtual void QuantumGateSparseMatrix::set_gate_property ( UINT  gate_property_)
inlinevirtual

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

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

◆ set_matrix()

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

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

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

Implements QuantumGateBase.

◆ to_string()

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

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

Returns
生成した文字列

Reimplemented from QuantumGateBase.

◆ update_quantum_state()

void QuantumGateSparseMatrix::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 QuantumGateSparseMatrix gate 
)
friend

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

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

◆ operator<< [2/2]

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

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

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

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