Template Class StateVectorBase¶
Defined in File StateVectorBase.hpp
Inheritance Relationships¶
Derived Types¶
public Pennylane::LightningGPU::StateVectorCudaBase< double, StateVectorCudaManaged< double > >
(Template Class StateVectorCudaBase)public Pennylane::LightningGPU::StateVectorCudaBase< double, StateVectorCudaMPI< double > >
(Template Class StateVectorCudaBase)public Pennylane::LightningQubit::StateVectorLQubit< double, StateVectorLQubitManaged< double > >
(Template Class StateVectorLQubit)public Pennylane::LightningQubit::StateVectorLQubit< double, StateVectorLQubitRaw< double > >
(Template Class StateVectorLQubit)public Pennylane::LightningQubit::StateVectorLQubit< PrecisionT, Derived >
(Template Class StateVectorLQubit)
Class Documentation¶
-
template<class PrecisionT, class Derived>
class StateVectorBase¶ State-vector base class.
This class combines a data array managed by a derived class (CRTP) and implementations of gate operations. The bound data is assumed to be complex, and is required to be in either 32-bit (64-bit
complex<float>
) or 64-bit (128-bitcomplex<double>
) floating point representation. As this is the base class, we do not add default template arguments.- Template Parameters
T – Floating point precision of underlying statevector data.
Derived – Type of a derived class
Subclassed by Pennylane::LightningGPU::StateVectorCudaBase< double, StateVectorCudaManaged< double > >, Pennylane::LightningGPU::StateVectorCudaBase< double, StateVectorCudaMPI< double > >, Pennylane::LightningQubit::StateVectorLQubit< double, StateVectorLQubitManaged< double > >, Pennylane::LightningQubit::StateVectorLQubit< double, StateVectorLQubitRaw< double > >, Pennylane::LightningQubit::StateVectorLQubit< PrecisionT, Derived >
Public Types
-
using ComplexT = std::complex<PrecisionT>¶
StateVector complex precision type.
Public Functions
-
inline explicit StateVectorBase(std::size_t num_qubits)¶
Constructor used by derived classes.
- Parameters
num_qubits – Number of qubits
-
inline auto getNumQubits() const -> std::size_t¶
Get the number of qubits represented by the statevector data.
- Returns
std::size_t
-
inline auto getTotalNumQubits() const -> std::size_t¶
Get the total number of qubits of the simulated system.
- Returns
std::size_t
-
inline std::size_t getLength() const¶
Get the size of the statevector.
- Returns
The size of the statevector
-
inline auto getData() -> decltype(auto)¶
Get the data pointer of the statevector.
- Returns
A pointer to the statevector data
-
inline auto getData() const -> decltype(auto)¶
-
inline void applyOperation(const std::string &opName, const std::vector<std::size_t> &wires, bool adjoint = false, const std::vector<PrecisionT> ¶ms = {})¶
Apply a single gate to the state-vector.
- Parameters
opName – Gate’s name.
wires – Wires to apply gate to.
adjoint – Indicates whether to use adjoint of gate.
params – Optional parameter list for parametric gates.
-
inline void applyOperations(const std::vector<std::string> &ops, const std::vector<std::vector<std::size_t>> &ops_wires, const std::vector<bool> &ops_adjoint, const std::vector<std::vector<PrecisionT>> &ops_params)¶
Apply multiple gates to the state-vector.
- Parameters
ops – Vector of gate names to be applied in order.
ops_wires – Vector of wires on which to apply index-matched gate name.
ops_adjoint – Indicates whether gate at matched index is to be inverted.
ops_params – Optional parameter data for index matched gates.
-
inline void applyOperations(const std::vector<std::string> &ops, const std::vector<std::vector<std::size_t>> &ops_wires, const std::vector<bool> &ops_adjoint)¶
Apply multiple gates to the state-vector.
- Parameters
ops – Vector of gate names to be applied in order.
ops_wires – Vector of wires on which to apply index-matched gate name.
ops_adjoint – Indicates whether gate at matched index is to be inverted.
-
inline auto applyGenerator(const std::string &opName, const std::vector<std::size_t> &wires, bool adjoint = false) -> PrecisionT¶
Apply a single generator to the state-vector.
- Parameters
opName – Name of generator to apply.
wires – Wires the generator applies to.
adjoint – Indicates whether to use adjoint of operator.
-
inline void applyMatrix(const ComplexT *matrix, const std::vector<std::size_t> &wires, bool inverse = false)¶
Apply a given matrix directly to the statevector using a raw matrix pointer vector.
- Parameters
matrix – Pointer to the array data (in row-major format).
wires – Wires to apply gate to.
inverse – Indicate whether inverse should be taken.
Protected Attributes
-
std::size_t num_qubits_ = {0}¶