while i < N {
let d2s = f64x2::from_array([(r[i] * r[i]).horizontal_sum(), (r[i + 1] * r[i + 1]).horizontal_sum()]);
let dmags = f64x2::splat(dt) / (d2s * d2s.sqrt());
- dmags.write_to_slice_unaligned(&mut mag[i..]);
+ // dmags.write_to_slice_unaligned(&mut mag[i..]);
+ mag[i] = dmags[0];
+ mag[i+1] = dmags[1];
i += 2;
}
}
}
+// #[inline]
+// pub unsafe fn write_to_slice_unaligned(slice: &mut SimdF64::<LANES>) {
+// let target_ptr = slice.get_unchecked_mut(0) as *mut f64x2;
+// *(target_ptr as *mut f64x2) = SimdF64;
+// }
+
pub fn run(n: usize) -> (f64, f64) {
let mut bodies = BODIES;
offset_momentum(&mut bodies);
(energy_before, energy_after)
}
-const OUTPUT: Vec<f64> = vec![-0.169075164, -0.169087605];
+const OUTPUT: [f64; 2] = [-0.169075164, -0.169087605];
#[cfg(test)]
mod tests {
#[test]
}
}
}
+
+
fn main() {
//let n: usize = std::env::args()
//.nth(1)