DensityMatrixCpu Class Reference

#include <state_dm.hpp>

Inheritance diagram for DensityMatrixCpu:
QuantumStateBase

Public Member Functions

 DensityMatrixCpu (UINT qubit_count_)
 
virtual ~DensityMatrixCpu ()
 
virtual void set_zero_state () override
 
virtual void set_computational_basis (ITYPE comp_basis) override
 
virtual void set_Haar_random_state () override
 
virtual void set_Haar_random_state (UINT seed) override
 
virtual double get_zero_probability (UINT target_qubit_index) const override
 
virtual double get_marginal_probability (std::vector< UINT > measured_values) const override
 
virtual double get_entropy () const override
 
virtual double get_norm () const override
 
virtual void normalize (double norm) override
 
virtual QuantumStateBaseallocate_buffer () const override
 
virtual QuantumStateBasecopy () const override
 
virtual void load (const QuantumStateBase *_state)
 
virtual void load (const std::vector< CPPCTYPE > &_state)
 
virtual void load (const Eigen::VectorXcd &_state)
 
virtual void load (const ComplexMatrix &_state)
 
virtual void load (const CPPCTYPE *_state)
 
virtual const std::string get_device_name () const override
 
virtual void * data () const override
 
virtual CPPCTYPEdata_cpp () const override
 
virtual CTYPE * data_c () const override
 
virtual void add_state (const QuantumStateBase *state) override
 
virtual void multiply_coef (CPPCTYPE coef) override
 
virtual std::vector< ITYPE > sampling (UINT sampling_count) override
 
virtual std::string to_string () const
 
- Public Member Functions inherited from QuantumStateBase
 QuantumStateBase (UINT qubit_count_, bool is_state_vector)
 
virtual ~QuantumStateBase ()
 
virtual bool is_state_vector () const
 
virtual UINT get_classical_value (UINT index)
 
virtual void set_classical_value (UINT index, UINT val)
 
virtual const std::vector< UINT > get_classical_register () const
 

Additional Inherited Members

- Public Attributes inherited from QuantumStateBase
const UINT & qubit_count
 
const ITYPE & dim
 
const std::vector< UINT > & classical_register
 
- Protected Attributes inherited from QuantumStateBase
ITYPE _dim
 
UINT _qubit_count
 
bool _is_state_vector
 
std::vector< UINT > _classical_register
 

Constructor & Destructor Documentation

◆ DensityMatrixCpu()

DensityMatrixCpu::DensityMatrixCpu ( UINT  qubit_count_)
inline

コンストラクタ

Parameters
qubit_count_量子ビット数

◆ ~DensityMatrixCpu()

virtual DensityMatrixCpu::~DensityMatrixCpu ( )
inlinevirtual

デストラクタ

Member Function Documentation

◆ add_state()

virtual void DensityMatrixCpu::add_state ( const QuantumStateBase state)
inlineoverridevirtual

量子状態を足しこむ

Implements QuantumStateBase.

◆ allocate_buffer()

virtual QuantumStateBase* DensityMatrixCpu::allocate_buffer ( ) const
inlineoverridevirtual

バッファとして同じサイズの量子状態を作成する。

Returns
生成された量子状態

Implements QuantumStateBase.

◆ copy()

virtual QuantumStateBase* DensityMatrixCpu::copy ( ) const
inlineoverridevirtual

自身の状態のディープコピーを生成する

Returns
自身のディープコピー

Implements QuantumStateBase.

◆ data()

virtual void* DensityMatrixCpu::data ( ) const
inlineoverridevirtual

量子状態のポインタをvoid*型として返す

Implements QuantumStateBase.

◆ data_c()

virtual CTYPE* DensityMatrixCpu::data_c ( ) const
inlineoverridevirtual

量子状態をcsimのComplex型の配列として取得する

Returns
複素ベクトルのポインタ

Implements QuantumStateBase.

◆ data_cpp()

virtual CPPCTYPE* DensityMatrixCpu::data_cpp ( ) const
inlineoverridevirtual

量子状態をC++のstd::complex<double>の配列として取得する

Returns
複素ベクトルのポインタ

Implements QuantumStateBase.

◆ get_device_name()

virtual const std::string DensityMatrixCpu::get_device_name ( ) const
inlineoverridevirtual

量子状態が配置されているメモリを保持するデバイス名を取得する。

Implements QuantumStateBase.

◆ get_entropy()

virtual double DensityMatrixCpu::get_entropy ( ) const
inlineoverridevirtual

計算基底で測定した時得られる確率分布のエントロピーを計算する。

Returns
エントロピー

Implements QuantumStateBase.

◆ get_marginal_probability()

virtual double DensityMatrixCpu::get_marginal_probability ( std::vector< UINT >  measured_values) const
inlineoverridevirtual

複数の量子ビットを測定した時の周辺確率を計算する

Parameters
measured_values量子ビット数と同じ長さの0,1,2の配列。0,1はその値が観測され、2は測定をしないことを表す。
Returns
計算された周辺確率

Implements QuantumStateBase.

◆ get_norm()

virtual double DensityMatrixCpu::get_norm ( ) const
inlineoverridevirtual

量子状態のノルムを計算する

量子状態のノルムは非ユニタリなゲートを作用した時に小さくなる。

Returns
ノルム

Implements QuantumStateBase.

◆ get_zero_probability()

virtual double DensityMatrixCpu::get_zero_probability ( UINT  target_qubit_index) const
inlineoverridevirtual

target_qubit_indexの添え字の量子ビットを測定した時、0が観測される確率を計算する。

量子状態は変更しない。

Parameters
target_qubit_index
Returns
double

Implements QuantumStateBase.

◆ load() [1/5]

virtual void DensityMatrixCpu::load ( const QuantumStateBase _state)
inlinevirtual

stateの量子状態を自身へコピーする。

Implements QuantumStateBase.

◆ load() [2/5]

virtual void DensityMatrixCpu::load ( const std::vector< CPPCTYPE > &  _state)
inlinevirtual

stateの量子状態を自身へコピーする。

Implements QuantumStateBase.

◆ load() [3/5]

virtual void DensityMatrixCpu::load ( const Eigen::VectorXcd &  _state)
inlinevirtual

◆ load() [4/5]

virtual void DensityMatrixCpu::load ( const ComplexMatrix _state)
inlinevirtual

◆ load() [5/5]

virtual void DensityMatrixCpu::load ( const CPPCTYPE _state)
inlinevirtual

stateの量子状態を自身へコピーする。

Implements QuantumStateBase.

◆ multiply_coef()

virtual void DensityMatrixCpu::multiply_coef ( CPPCTYPE  coef)
inlineoverridevirtual

複素数をかける

Implements QuantumStateBase.

◆ normalize()

virtual void DensityMatrixCpu::normalize ( double  norm)
inlineoverridevirtual

量子状態を正規化する

Parameters
norm自身のノルム

Implements QuantumStateBase.

◆ sampling()

virtual std::vector<ITYPE> DensityMatrixCpu::sampling ( UINT  sampling_count)
inlineoverridevirtual

量子状態を測定した際の計算基底のサンプリングを行う

Parameters
[in]sampling_countサンプリングを行う回数
Returns
サンプルされた値のリスト

Implements QuantumStateBase.

◆ set_computational_basis()

virtual void DensityMatrixCpu::set_computational_basis ( ITYPE  comp_basis)
inlineoverridevirtual

量子状態をcomp_basisの基底状態に初期化する

Parameters
comp_basis初期化する基底を表す整数

Implements QuantumStateBase.

◆ set_Haar_random_state() [1/2]

virtual void DensityMatrixCpu::set_Haar_random_state ( )
inlineoverridevirtual

量子状態をHaar randomにサンプリングされた量子状態に初期化する

Implements QuantumStateBase.

◆ set_Haar_random_state() [2/2]

virtual void DensityMatrixCpu::set_Haar_random_state ( UINT  seed)
inlineoverridevirtual

量子状態をシードを用いてHaar randomにサンプリングされた量子状態に初期化する

Implements QuantumStateBase.

◆ set_zero_state()

virtual void DensityMatrixCpu::set_zero_state ( )
inlineoverridevirtual

量子状態を計算基底の0状態に初期化する

Implements QuantumStateBase.

◆ to_string()

virtual std::string DensityMatrixCpu::to_string ( ) const
inlinevirtual

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

Returns
生成した文字列

Reimplemented from QuantumStateBase.


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