Template Class TwoQubitGateWithoutParamHelper

Class Documentation

template<class AVXImpl>
class TwoQubitGateWithoutParamHelper

A helper class for two-qubit gate without parameters.

Public Types

using Precision = typename AVXImpl::Precision
using ReturnType = typename FuncReturn<decltype(AVXImpl::applyExternalExternal)>::Type
using FuncType = ReturnType (*)(std::complex<Precision>*, size_t, const std::vector<size_t>&, bool)

Public Functions

inline explicit TwoQubitGateWithoutParamHelper(FuncType fallback_func)
inline auto operator()(std::complex<Precision> *arr, const size_t num_qubits, const std::vector<size_t> &wires, bool inverse) const -> ReturnType
requires SymmetricTwoQubitGateWithoutParam<AVXImpl>

A specialization for symmetric two-qubit gates (control and target wires are symmetric), which calls the correct AVX2/512 kernel functions based on wires.

Parameters
  • arr – Pointer to a statevector array

  • num_qubits – Number of qubits

  • wires – Wires the gate applies to

  • inverse – Apply the inverse of the gate when true

inline auto operator()(std::complex<Precision> *arr, const size_t num_qubits, const std::vector<size_t> &wires, bool inverse) const -> ReturnType
requires AsymmetricTwoQubitGateWithoutParam<AVXImpl>

A specialization for asymmetric two-qubit gates (control and target wires are asymmetric), which calls the correct AVX2/512 kernel functions based on wires.

Parameters
  • arr – Pointer to a statevector array

  • num_qubits – Number of qubits

  • wires – Wires the gate applies to

  • inverse – Apply the inverse of the gate when true

Public Static Attributes

static constexpr size_t packed_size = AVXImpl::packed_size_