Class QuantumStateCpu¶
Defined in File state.hpp
Inheritance Relationships¶
Base Type¶
public QuantumStateBase
(Class QuantumStateBase)
Class Documentation¶
-
class QuantumStateCpu : public QuantumStateBase¶
Public Functions
-
inline explicit QuantumStateCpu(UINT qubit_count_)¶
コンストラクタ
- パラメータ
qubit_count_ -- 量子ビット数
-
inline virtual ~QuantumStateCpu()¶
デストラクタ
-
inline virtual void set_zero_state() override¶
量子状態を計算基底の0状態に初期化する
-
inline virtual void set_zero_norm_state() override¶
量子状態をノルム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 QuantumStateCpu *allocate_buffer() const override¶
バッファとして同じサイズの量子状態を作成する。
- 戻り値
生成された量子状態
-
inline virtual QuantumStateCpu *copy() const override¶
自身の状態のディープコピーを生成する
- 戻り値
自身のディープコピー
-
inline virtual void load(const QuantumStateBase *_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¶
量子状態を足しこむ
-
inline virtual void multiply_elementwise_function(const std::function<CPPCTYPE(ITYPE)> &func) 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 explicit QuantumStateCpu(UINT qubit_count_)¶