#pragma once #include #include "maths/complex.h" enum PsiSimdCapability { PSI_SIMD_NONE, PSI_SIMD_AVX2, PSI_SIMD_AVX512, PSI_SIMD_NEON, }; enum PsiSimdCapability psi_detect_simd(void); const char* psi_simd_name(enum PsiSimdCapability cap); void psi_apply_single_qubit_gate_simd(struct PsiComplex* state, const struct PsiComplex gate[2][2], size_t target, size_t num_qubits); void psi_apply_single_qubit_gate_simd_parallel(struct PsiComplex* state, const struct PsiComplex gate[2][2], size_t target, size_t num_qubits);