#include <gate.hpp>

Inheritance diagram for QuantumGateBase:
ClsPauliGate ClsPauliRotationGate QuantumGate_Adaptive QuantumGate_CPTP QuantumGate_Instrument QuantumGate_OneControlOneTarget QuantumGate_OneQubit QuantumGate_OneQubitRotation QuantumGate_Probabilistic QuantumGate_TwoQubit QuantumGateMatrix

Public Member Functions

virtual ~QuantumGateBase ()
 
std::vector< UINT > get_target_index_list () const
 
std::vector< UINT > get_control_index_list () const
 
virtual void update_quantum_state (QuantumStateBase *state)=0
 
virtual QuantumGateBasecopy () const =0
 
virtual void set_matrix (ComplexMatrix &matrix) const =0
 
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 to_string () const
 

Public Attributes

const std::vector< TargetQubitInfo > & target_qubit_list = _target_qubit_list
 
const std::vector< ControlQubitInfo > & control_qubit_list = _control_qubit_list
 

Protected Member Functions

 QuantumGateBase ()
 
 QuantumGateBase (const QuantumGateBase &obj)=default
 
QuantumGateBaseoperator= (const QuantumGateBase &rhs)=default
 

Protected Attributes

std::vector< TargetQubitInfo_target_qubit_list
 
std::vector< ControlQubitInfo_control_qubit_list
 
UINT _gate_property =0
 
std::string _name ="Generic gate"
 

Friends

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

Detailed Description

量子ゲートの基底クラス

Constructor & Destructor Documentation

◆ QuantumGateBase() [1/2]

QuantumGateBase::QuantumGateBase ( )
inlineprotected

◆ QuantumGateBase() [2/2]

QuantumGateBase::QuantumGateBase ( const QuantumGateBase obj)
protecteddefault

◆ ~QuantumGateBase()

virtual QuantumGateBase::~QuantumGateBase ( )
inlinevirtual

デストラクタ

Member Function Documentation

◆ commute_Pauli_at()

bool QuantumGateBase::commute_Pauli_at ( UINT  qubit_index,
UINT  pauli_type 
) const

ゲートがある添え字の量子ビットにおいて、与えられたパウリ演算子と可換かどうかを判定する。

Parameters
qubit_index量子ビットの添え字
pauli_type比較するパウリ演算子。(I,X,Y,Z)が(0,1,2,3)に対応する。
Returns
true 可換である
false 可換ではない

◆ copy()

virtual QuantumGateBase* QuantumGateBase::copy ( ) const
pure virtual

◆ get_control_index_list()

std::vector<UINT> QuantumGateBase::get_control_index_list ( ) const
inline

コントロール量子ビットの添え字のリストを取得する

Returns
量子ビットの添え字のリスト

◆ get_property_value()

UINT QuantumGateBase::get_property_value ( ) const

ゲートのプロパティ値を取得する

ゲートのプロパティ値はゲートがパウリかどうかなどのゲート全体の性質の情報を持つ

Returns
プロパティ値

◆ get_target_index_list()

std::vector<UINT> QuantumGateBase::get_target_index_list ( ) const
inline

ターゲット量子ビットの添え字のリストを取得する

Returns
量子ビットの添え字のリスト

◆ is_Clifford()

bool QuantumGateBase::is_Clifford ( ) const

ゲートがクリフォードゲートかどうかを判定する

Returns
true クリフォードゲートである
false クリフォードゲートではない

◆ is_commute()

bool QuantumGateBase::is_commute ( const QuantumGateBase gate) const

与えれたゲートgateと自身が可換かを判定する

非可換であると判定されても、実際には可換であることもある。 可換と判定された場合は必ず可換である。

Parameters
gate可換か比較するゲート
Returns
true 可換である
false 非可換である

◆ is_diagonal()

bool QuantumGateBase::is_diagonal ( ) const

ゲート行列が対角行列かどうかを判定する

Returns
true 対角行列である
false 対角行列ではない

◆ is_Gaussian()

bool QuantumGateBase::is_Gaussian ( ) const

ゲートがFermionic Gaussianかどうかを判定する

Returns
true Fermionic Gaussianである
false Fermionic Gaussianではない

◆ is_parametric()

bool QuantumGateBase::is_parametric ( ) const

ゲートがparametricかどうかを判定する

Returns
true parametricである
false parametricではない

◆ is_Pauli()

bool QuantumGateBase::is_Pauli ( ) const

ゲートがパウリゲートかどうかを判定する

Returns
true パウリゲートである
false パウリゲートではない

◆ operator=()

QuantumGateBase& QuantumGateBase::operator= ( const QuantumGateBase rhs)
protecteddefault

◆ set_matrix()

virtual void QuantumGateBase::set_matrix ( ComplexMatrix matrix) const
pure virtual

◆ to_string()

std::string QuantumGateBase::to_string ( ) const
virtual

量子ゲートのデバッグ情報の文字列を生成する

Returns
生成した文字列

Reimplemented in QuantumGateMatrix.

◆ update_quantum_state()

virtual void QuantumGateBase::update_quantum_state ( QuantumStateBase state)
pure virtual

Friends And Related Function Documentation

◆ operator<< [1/2]

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

量子回路のデバッグ情報を出力する。

Returns
受け取ったストリーム

◆ operator<< [2/2]

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

量子回路のデバッグ情報を出力する。

Returns
受け取ったストリーム

Member Data Documentation

◆ _control_qubit_list

std::vector<ControlQubitInfo> QuantumGateBase::_control_qubit_list
protected

◆ _gate_property

UINT QuantumGateBase::_gate_property =0
protected

property of whole gate (e.g. Clifford or Pauli)

◆ _name

std::string QuantumGateBase::_name ="Generic gate"
protected

◆ _target_qubit_list

std::vector<TargetQubitInfo> QuantumGateBase::_target_qubit_list
protected

◆ control_qubit_list

const std::vector<ControlQubitInfo>& QuantumGateBase::control_qubit_list = _control_qubit_list

コントロール量子ビットのリスト

◆ target_qubit_list

const std::vector<TargetQubitInfo>& QuantumGateBase::target_qubit_list = _target_qubit_list

ターゲット量子ビットのリスト


The documentation for this class was generated from the following files:
  • /Users/tenninyan/Soft/qunasys/qulacs/src/cppsim/gate.hpp
  • /Users/tenninyan/Soft/qunasys/qulacs/src/cppsim/gate.cpp