@@ -14,7 +14,6 @@ pub struct Body {
1414 pub mass : f64 ,
1515}
1616
17- // translation up to here
1817const N_BODIES : usize = 5 ;
1918const BODIES : [ Body ; N_BODIES ] = [
2019 // sun:
@@ -134,7 +133,6 @@ pub fn advance(bodies: &mut [Body; N_BODIES], dt: f64) {
134133 ( r[ i + 1 ] * r[ i + 1 ] ) . horizontal_sum ( ) ,
135134 ] ) ;
136135 let dmags = f64x2:: splat ( dt) / ( d2s * d2s. sqrt ( ) ) ;
137- // dmags.write_to_slice_unaligned(&mut mag[i..]);
138136 mag[ i] = dmags[ 0 ] ;
139137 mag[ i + 1 ] = dmags[ 1 ] ;
140138 i += 2 ;
@@ -154,12 +152,6 @@ pub fn advance(bodies: &mut [Body; N_BODIES], dt: f64) {
154152 }
155153}
156154
157- // #[inline]
158- // pub unsafe fn write_to_slice_unaligned(slice: &mut SimdF64::<LANES>) {
159- // let target_ptr = slice.get_unchecked_mut(0) as *mut f64x2;
160- // *(target_ptr as *mut f64x2) = SimdF64;
161- // }
162-
163155pub fn run ( n : usize ) -> ( f64 , f64 ) {
164156 let mut bodies = BODIES ;
165157 offset_momentum ( & mut bodies) ;
@@ -172,8 +164,9 @@ pub fn run(n: usize) -> (f64, f64) {
172164 ( energy_before, energy_after)
173165}
174166
175- fn approx_eq_f32 ( a : f32 , b : f32 ) -> bool {
176- ( a - b) . abs ( ) < 0.00000001
167+ // Good enough for demonstration purposes, not going for strictness here.
168+ fn approx_eq_f64 ( a : f64 , b : f64 ) -> bool {
169+ ( a - b) . abs ( ) < 0.00001
177170}
178171
179172#[ cfg( test) ]
@@ -183,9 +176,8 @@ mod tests {
183176 use super :: * ;
184177 const OUTPUT : [ f64 ; 2 ] = [ -0.169075164 , -0.169087605 ] ;
185178 let ( energy_before, energy_after) = super :: run ( 1000 ) ;
186- assert ! ( approx_eq_f32( energy_before as f32 , OUTPUT [ 0 ] as f32 ) ) ;
187- assert ! ( approx_eq_f32( energy_after as f32 , OUTPUT [ 1 ] as f32 ) ) ;
188- // }
179+ assert ! ( approx_eq_f64( energy_before, OUTPUT [ 0 ] ) ) ;
180+ assert ! ( approx_eq_f64( energy_after, OUTPUT [ 1 ] ) ) ;
189181 }
190182}
191183
0 commit comments