Skip to main content

intt_batch_scalar

Function intt_batch_scalar 

Source
fn intt_batch_scalar<M>(a: &mut [MInt<M>], width: usize)
Examples found in repository?
crates/competitive/src/math/number_theoretic_transform.rs (line 318)
314fn intt_scalar<M>(a: &mut [MInt<M>])
315where
316    M: Montgomery32NttModulus,
317{
318    intt_batch_scalar(a, 1);
319}
320
321fn intt_batch<M>(a: &mut [MInt<M>], width: usize)
322where
323    M: Montgomery32NttModulus,
324{
325    #[cfg(target_arch = "x86_64")]
326    {
327        match batch_ntt_simd_backend(a.len(), width) {
328            SimdBackend::Avx512 => {
329                // SAFETY: backend detection checked all required AVX-512 features.
330                unsafe { ntt_simd::intt_batch_avx512::<_, false>(a, width) };
331                return;
332            }
333            SimdBackend::Avx2 => {
334                // SAFETY: backend detection checked AVX2.
335                unsafe { ntt_simd::intt_batch_avx2::<_, false>(a, width) };
336                return;
337            }
338            SimdBackend::Scalar => {}
339        }
340    }
341    intt_batch_scalar(a, width);
342}