Template Struct ApplyControlledPhaseShift

Struct Documentation

template<typename PrecisionT, std::size_t packed_size>
struct ApplyControlledPhaseShift

Public Types

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

Public Static Functions

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

Permutation applying imaginary i to |11>

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

Permutation applying product i when the target bit is 1.

template<std::size_t min_rev_wire, class ParamT>
static inline void applyInternalExternal(std::complex<PrecisionT> *arr, std::size_t num_qubits, std::size_t max_rev_wire, bool inverse, ParamT angle)
template<class ParamT>
static inline void applyExternalExternal(std::complex<PrecisionT> *arr, const std::size_t num_qubits, const std::size_t rev_wire0, const std::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 std::size_t packed_size_ = packed_size
static constexpr bool symmetric = true