Class QuantumStateBase¶
Defined in File state.hpp
Inheritance Relationships¶
Derived Types¶
public DensityMatrixCpu
(Class DensityMatrixCpu)public QuantumStateCpu
(Class QuantumStateCpu)
Class Documentation¶
-
class QuantumStateBase¶
量子状態の基底クラス
Subclassed by DensityMatrixCpu, QuantumStateCpu
Public Functions
-
inline QuantumStateBase(UINT qubit_count_, bool is_state_vector)¶
コンストラクタ
- パラメータ
qubit_count_ -- 量子ビット数
-
inline QuantumStateBase(UINT qubit_count_, bool is_state_vector, UINT device_number_)¶
-
inline virtual ~QuantumStateBase()¶
デストラクタ
-
inline virtual bool is_state_vector() const¶
量子状態が状態ベクトルか密度行列かを判定する
-
virtual void set_zero_state() = 0¶
量子状態を計算基底の0状態に初期化する
-
virtual void set_zero_norm_state() = 0¶
ノルム0の状態 (要素がすべて0のベクトル) にする
-
virtual void set_computational_basis(ITYPE comp_basis) = 0¶
量子状態を
comp_basis
の基底状態に初期化する- パラメータ
comp_basis -- 初期化する基底を表す整数
-
virtual void set_Haar_random_state() = 0¶
量子状態をHaar randomにサンプリングされた量子状態に初期化する
-
virtual void set_Haar_random_state(UINT seed) = 0¶
量子状態をシードを用いてHaar randomにサンプリングされた量子状態に初期化する
-
virtual double get_zero_probability(UINT target_qubit_index) const = 0¶
target_qubit_index
の添え字の量子ビットを測定した時、0が観測される確率を計算する。量子状態は変更しない。
- パラメータ
target_qubit_index --
- 戻り値
double
-
virtual double get_marginal_probability(std::vector<UINT> measured_values) const = 0¶
複数の量子ビットを測定した時の周辺確率を計算する
- パラメータ
measured_values -- 量子ビット数と同じ長さの0,1,2の配列。0,1はその値が観測され、2は測定をしないことを表す。
- 戻り値
計算された周辺確率
-
virtual double get_entropy() const = 0¶
計算基底で測定した時得られる確率分布のエントロピーを計算する。
- 戻り値
エントロピー
-
virtual double get_squared_norm() const = 0¶
量子状態のノルムを計算する
量子状態のノルムは非ユニタリなゲートを作用した時に小さくなる。
- 戻り値
ノルム
-
virtual double get_squared_norm_single_thread() const = 0¶
量子状態のノルムを計算する
量子状態のノルムは非ユニタリなゲートを作用した時に小さくなる。
- 戻り値
ノルム
-
virtual void normalize(double squared_norm) = 0¶
量子状態を正規化する
- パラメータ
norm -- 自身のノルム
-
virtual void normalize_single_thread(double squared_norm) = 0¶
量子状態を正規化する
- パラメータ
norm -- 自身のノルム
-
virtual QuantumStateBase *allocate_buffer() const = 0¶
バッファとして同じサイズの量子状態を作成する。
- 戻り値
生成された量子状態
-
virtual QuantumStateBase *copy() const = 0¶
自身の状態のディープコピーを生成する
- 戻り値
自身のディープコピー
-
virtual void load(const QuantumStateBase *state) = 0¶
state
の量子状態を自身へコピーする。
-
virtual const std::string get_device_name() const = 0¶
量子状態が配置されているメモリを保持するデバイス名を取得する。
-
virtual void *data() const = 0¶
-
virtual CTYPE *data_c() const = 0¶
量子状態をcsimのComplex型の配列として取得する
- 戻り値
複素ベクトルのポインタ
-
virtual CPPCTYPE *duplicate_data_cpp() const = 0¶
量子状態をC++の
std::complex<double>
の配列として新たに確保する- 戻り値
複素ベクトルのポインタ
-
virtual CTYPE *duplicate_data_c() const = 0¶
量子状態をcsimのComplex型の配列として新たに確保する。
- 戻り値
複素ベクトルのポインタ
-
virtual void add_state(const QuantumStateBase *state) = 0¶
量子状態を足しこむ
-
virtual void add_state_with_coef(CPPCTYPE coef, const QuantumStateBase *state) = 0¶
量子状態を係数付きで足しこむ
-
virtual void add_state_with_coef_single_thread(CPPCTYPE coef, const QuantumStateBase *state) = 0¶
量子状態を係数付きで足しこむ
-
inline virtual UINT get_classical_value(UINT index)¶
指定した添え字の古典レジスタの値を取得する。
- パラメータ
index -- セットするレジスタの添え字
- 戻り値
古典レジスタの値
-
inline virtual void set_classical_value(UINT index, UINT val)¶
指定した添え字の古典レジスタに値をセットする
- パラメータ
index -- セットするレジスタの添え字
val -- セットする値
-
inline virtual const std::vector<UINT> get_classical_register() const¶
古典レジスタのベクトルを返す
- 戻り値
古典レジスタ
-
virtual std::vector<ITYPE> sampling(UINT sampling_count) = 0¶
量子状態を測定した際の計算基底のサンプリングを行う
- パラメータ
sampling_count -- [in] サンプリングを行う回数
random_seed -- [in] サンプリングで乱数を振るシード値
- 戻り値
サンプルされた値のリスト
-
virtual std::vector<ITYPE> sampling(UINT sampling_count, UINT random_seed) = 0¶
-
inline virtual std::string to_string() const¶
量子回路のデバッグ情報の文字列を生成する
- 戻り値
生成した文字列
-
inline virtual void *get_cuda_stream() const¶
Public Members
-
const UINT &qubit_count¶
量子ビット数
-
const ITYPE &dim¶
量子状態の次元
-
const std::vector<UINT> &classical_register¶
古典ビットのレジスタ
-
const UINT &device_number¶
Protected Attributes
-
ITYPE _dim¶
-
UINT _qubit_count¶
-
bool _is_state_vector¶
-
std::vector<UINT> _classical_register¶
-
UINT _device_number¶
-
void *_cuda_stream¶
Friends
-
inline friend std::ostream &operator<<(std::ostream &os, const QuantumStateBase &state)¶
量子状態のデバッグ情報を出力する。
- 戻り値
受け取ったストリーム
-
inline friend std::ostream &operator<<(std::ostream &os, const QuantumStateBase *state)¶
量子状態のデバッグ情報を出力する。
- 戻り値
受け取ったストリーム
-
inline QuantumStateBase(UINT qubit_count_, bool is_state_vector)¶