Template Struct ApplyControlledPhaseShift

Struct Documentation

template<typename PrecisionT, size_t packed_size>
struct ApplyControlledPhaseShift

Public Types

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

Public Static Functions

template<size_t rev_wire0, size_t rev_wire1>
static inline consteval auto applyInternalInternalPermutation()

Permutation applying imaginary i to |11>

template<size_t rev_wire0, size_t rev_wire1, class ParamT>
static inline void applyInternalInternal(std::complex<PrecisionT> *arr, size_t num_qubits, bool inverse, ParamT angle)
template<size_t min_rev_wire>
static inline consteval auto applyInternalExternalPermutation()

Permutation applying product i when the target bit is 1.

template<size_t min_rev_wire, class ParamT>
static inline void applyInternalExternal(std::complex<PrecisionT> *arr, size_t num_qubits, size_t max_rev_wire, bool inverse, ParamT angle)
template<class ParamT>
static inline void applyExternalExternal(std::complex<PrecisionT> *arr, const size_t num_qubits, const size_t rev_wire0, const size_t rev_wire1, bool inverse, ParamT angle)

Public Static Attributes

static constexpr auto perm = Permutation::compilePermutation<PrecisionT>(Permutation::swapRealImag(Permutation::identity<packed_size>()))
static constexpr size_t packed_size_ = packed_size
static constexpr bool symmetric = true