Class DensityMatrixCpu

Inheritance Relationships

Base Type

Class Documentation

class DensityMatrixCpu : public QuantumStateBase

Public Functions

inline explicit DensityMatrixCpu(UINT qubit_count_)

コンストラクタ

パラメータ

qubit_count_ -- 量子ビット数

inline virtual ~DensityMatrixCpu()

デストラクタ

inline virtual void set_zero_state() override

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

inline virtual void set_zero_norm_state() override

ノルム0の状態 (すべての要素が0の行列にする)

inline virtual void set_computational_basis(ITYPE comp_basis) override

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

パラメータ

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

inline virtual void set_Haar_random_state() override

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

inline virtual void set_Haar_random_state(UINT seed) override

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

inline virtual double get_zero_probability(UINT target_qubit_index) const override

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

量子状態は変更しない。

パラメータ

target_qubit_index --

戻り値

double

inline virtual double get_marginal_probability(std::vector<UINT> measured_values) const override

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

パラメータ

measured_values -- 量子ビット数と同じ長さの0,1,2の配列。0,1はその値が観測され、2は測定をしないことを表す。

戻り値

計算された周辺確率

inline virtual double get_entropy() const override

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

戻り値

エントロピー

inline virtual double get_squared_norm() const override

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

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

戻り値

ノルム

inline virtual double get_squared_norm_single_thread() const override

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

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

戻り値

ノルム

inline virtual void normalize(double squared_norm) override

量子状態を正規化する

パラメータ

norm -- 自身のノルム

inline virtual void normalize_single_thread(double squared_norm) override

量子状態を正規化する

パラメータ

norm -- 自身のノルム

inline virtual DensityMatrixCpu *allocate_buffer() const override

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

戻り値

生成された量子状態

inline virtual DensityMatrixCpu *copy() const override

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

戻り値

自身のディープコピー

inline virtual void load(const QuantumStateBase *_state) override

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

inline virtual void load(const std::vector<CPPCTYPE> &_state) override

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

inline virtual void load(const Eigen::VectorXcd &_state)
inline virtual void load(const ComplexMatrix &_state)
inline virtual void load(const CPPCTYPE *_state) override

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

inline virtual const std::string get_device_name() const override

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

inline virtual void *data() const override

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

inline virtual CPPCTYPE *data_cpp() const override

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

戻り値

複素ベクトルのポインタ

inline virtual CTYPE *data_c() const override

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

戻り値

複素ベクトルのポインタ

inline virtual CTYPE *duplicate_data_c() const override

量子状態をcsimのComplex型の配列として新たに確保する。

戻り値

複素ベクトルのポインタ

inline virtual CPPCTYPE *duplicate_data_cpp() const override

量子状態をC++のstd::complex<double>の配列として新たに確保する

戻り値

複素ベクトルのポインタ

inline virtual void add_state(const QuantumStateBase *state) override

量子状態を足しこむ

inline virtual void add_state_with_coef(CPPCTYPE coef, const QuantumStateBase *state) override

量子状態を足しこむ

inline virtual void add_state_with_coef_single_thread(CPPCTYPE coef, const QuantumStateBase *state) override

量子状態を足しこむ TODO: implement this in single_thread

inline virtual void multiply_coef(CPPCTYPE coef) override

複素数をかける

inline virtual void multiply_elementwise_function(const std::function<CPPCTYPE(ITYPE)>&) override
inline virtual std::vector<ITYPE> sampling(UINT sampling_count) override

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

パラメータ

sampling_count -- [in] サンプリングを行う回数

戻り値

サンプルされた値のリスト

inline virtual std::vector<ITYPE> sampling(UINT sampling_count, UINT random_seed) override
inline virtual std::string to_string() const override

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

戻り値

生成した文字列