Skip to main content

interleaved_complex_mul_assign

Function interleaved_complex_mul_assign 

Source
pub fn interleaved_complex_mul_assign<T, A, const CONJ_B: bool>(
    a: &mut [T],
    b: &[T],
) -> Result<(), SimdError>
where T: Scalar, A: SimdArch + SimdKernel<T>,
Expand description

Multiplies interleaved complex values in-place using architecture A.

a and b must have identical even lengths. The operation is value preserving with respect to scalar complex multiplication over adjacent primitive lane pairs:

a[k] = a[k] * b[k] when CONJ_B == false, and a[k] = a[k] * conj(b[k]) when CONJ_B == true.

ยงExamples

use hermes_simd::{interleaved_complex_mul_assign, Scalar};

let mut lhs = [1.0_f64, 2.0, 3.0, -1.0];
let rhs = [4.0_f64, -2.0, 0.5, 5.0];

interleaved_complex_mul_assign::<f64, Scalar, false>(&mut lhs, &rhs).unwrap();

assert_eq!(lhs, [8.0, 6.0, 6.5, 14.5]);