qsim:: StateSpaceAVX

#include <statespace_avx.h>

Object containing context and routines for AVX state-vector manipulations.

Summary

State is a vectorized sequence of eight real components followed by eight imaginary components. Eight single-precison floating numbers can be loaded into an AVX register.

Inheritance

Inherits from: qsim::StateSpace< StateSpaceAVX< For >, For, float >

Constructors and Destructors

StateSpaceAVX (ForArgs &&... args)

Public types

MeasurementResult using
typename Base::MeasurementResult
State using
typename Base::State
fp_type using
typename Base::fp_type

Public functions

Add (const State & src, State & dest) const
bool
BulkSetAmpl (State & state, uint64_t mask, uint64_t bits, const std::complex< fp_type > & val, bool exclude) const
void
BulkSetAmpl (State & state, uint64_t mask, uint64_t bits, fp_type re, fp_type im, bool exclude) const
void
Collapse (const MeasurementResult & mr, State & state) const
void
FindMeasuredBits (unsigned m, double r, uint64_t mask, const State & state) const
uint64_t
InnerProduct (const State & state1, const State & state2) const
std::complex< double >
InternalToNormalOrder (State & state) const
void
Multiply (fp_type a, State & state) const
void
NormalToInternalOrder (State & state) const
void
PartialNorms (const State & state) const
std::vector< double >
RealInnerProduct (const State & state1, const State & state2) const
double
Sample (const State & state, uint64_t num_samples, unsigned seed) const
std::vector< uint64_t >
SetAllZeros (State & state) const
void
SetStateUniform (State & state) const
void
SetStateZero (State & state) const
void

Public static functions

GetAmpl (const State & state, uint64_t i)
std::complex< fp_type >
MinSize (unsigned num_qubits)
uint64_t
SetAmpl (State & state, uint64_t i, const std::complex< fp_type > & ampl)
void
SetAmpl (State & state, uint64_t i, fp_type re, fp_type im)
void

Public types

MeasurementResult

typename Base::MeasurementResult MeasurementResult

State

typename Base::State State

fp_type

typename Base::fp_type fp_type

Public functions

Add

bool Add(
  const State & src,
  State & dest
) const 

BulkSetAmpl

void BulkSetAmpl(
  State & state,
  uint64_t mask,
  uint64_t bits,
  const std::complex< fp_type > & val,
  bool exclude
) const 

BulkSetAmpl

void BulkSetAmpl(
  State & state,
  uint64_t mask,
  uint64_t bits,
  fp_type re,
  fp_type im,
  bool exclude
) const 

Collapse

void Collapse(
  const MeasurementResult & mr,
  State & state
) const 

FindMeasuredBits

uint64_t FindMeasuredBits(
  unsigned m,
  double r,
  uint64_t mask,
  const State & state
) const 

InnerProduct

std::complex< double > InnerProduct(
  const State & state1,
  const State & state2
) const 

InternalToNormalOrder

void InternalToNormalOrder(
  State & state
) const 

Multiply

void Multiply(
  fp_type a,
  State & state
) const 

NormalToInternalOrder

void NormalToInternalOrder(
  State & state
) const 

PartialNorms

std::vector< double > PartialNorms(
  const State & state
) const 

RealInnerProduct

double RealInnerProduct(
  const State & state1,
  const State & state2
) const 

Sample

std::vector< uint64_t > Sample(
  const State & state,
  uint64_t num_samples,
  unsigned seed
) const 

SetAllZeros

void SetAllZeros(
  State & state
) const 

SetStateUniform

void SetStateUniform(
  State & state
) const 

SetStateZero

void SetStateZero(
  State & state
) const 

StateSpaceAVX

 StateSpaceAVX(
  ForArgs &&... args
)

Public static functions

GetAmpl

std::complex< fp_type > GetAmpl(
  const State & state,
  uint64_t i
)

MinSize

uint64_t MinSize(
  unsigned num_qubits
)

SetAmpl

void SetAmpl(
  State & state,
  uint64_t i,
  const std::complex< fp_type > & ampl
)

SetAmpl

void SetAmpl(
  State & state,
  uint64_t i,
  fp_type re,
  fp_type im
)