Template Struct ApplyPhaseShift

Struct Documentation

template<typename PrecisionT, size_t packed_size>
struct ApplyPhaseShift

Public Types

using Precision = PrecisionT
using PrecisionAVXConcept = typename AVXConcept<PrecisionT, packed_size>::Type

Public Static Functions

static inline constexpr auto applyInternalPermutation(size_t rev_wire)

Permutation for applying i if a bit is 1.

FIXME: clang++-12 currently does not accept consteval here.

static inline auto cosFactor(size_t rev_wire, PrecisionT angle) -> AVXIntrinsicType<PrecisionT, packed_size>

Factor for applying [1, 1, cos(phi/2), cos(phi/2)].

static inline auto isinFactor(size_t rev_wire, PrecisionT angle) -> AVXIntrinsicType<PrecisionT, packed_size>

Factor for applying [0, 0, -sin(phi/2), sin(phi/2)].

template<size_t rev_wire, typename ParamT>
static inline void applyInternal(std::complex<PrecisionT> *arr, const size_t num_qubits, bool inverse, ParamT angle)
template<typename ParamT>
static inline void applyExternal(std::complex<PrecisionT> *arr, const size_t num_qubits, const size_t rev_wire, bool inverse, ParamT angle)

Public Static Attributes

static constexpr size_t packed_size_ = packed_size