use cubecl::prelude::*;
#[cube(launch)]
pub fn complex_multiply_kernel<F: Float>(
a_re: &Array<Line<F>>, a_im: &Array<Line<F>>, b_re: &Array<Line<F>>, b_im: &Array<Line<F>>, result_re: &mut Array<Line<F>>, result_im: &mut Array<Line<F>>, ) {
let idx = ABSOLUTE_POS;
if idx < a_re.len() {
let a_re_val = a_re[idx];
let a_im_val = a_im[idx];
let b_re_val = b_re[idx];
let b_im_val = b_im[idx];
result_re[idx] = a_re_val * b_re_val - a_im_val * b_im_val;
result_im[idx] = a_re_val * b_im_val + a_im_val * b_re_val;
}
}