Program Listing for File simulator.hpp¶
↰ Return to documentation for file (/home/docs/checkouts/readthedocs.org/user_builds/qulacs-rtd/checkouts/v0.6.7/src/cppsim/simulator.hpp
)
#pragma once
#include <cstdlib>
#include "circuit.hpp"
#include "type.hpp"
class QuantumStateBase;
class HermitianQuantumOperator;
using Observable = HermitianQuantumOperator;
class DllExport QuantumCircuitSimulator {
private:
QuantumCircuit* _circuit;
QuantumStateBase* _state;
QuantumStateBase* _buffer;
bool _own_state = false;
public:
explicit QuantumCircuitSimulator(
QuantumCircuit* circuit, QuantumStateBase* initial_state = NULL);
~QuantumCircuitSimulator();
void initialize_state(ITYPE computationl_basis = 0);
void initialize_random_state();
void initialize_random_state(UINT seed);
void simulate();
void simulate_range(UINT start, UINT end);
CPPCTYPE get_expectation_value(const Observable* observable);
UINT get_gate_count();
void copy_state_to_buffer();
void copy_state_from_buffer();
void swap_state_and_buffer();
const QuantumStateBase* get_state_ptr() const { return _state; }
};