@@ -14,7 +14,6 @@ pub struct Body {
14
14
pub mass : f64 ,
15
15
}
16
16
17
- // translation up to here
18
17
const N_BODIES : usize = 5 ;
19
18
const BODIES : [ Body ; N_BODIES ] = [
20
19
// sun:
@@ -134,7 +133,6 @@ pub fn advance(bodies: &mut [Body; N_BODIES], dt: f64) {
134
133
( r[ i + 1 ] * r[ i + 1 ] ) . horizontal_sum ( ) ,
135
134
] ) ;
136
135
let dmags = f64x2:: splat ( dt) / ( d2s * d2s. sqrt ( ) ) ;
137
- // dmags.write_to_slice_unaligned(&mut mag[i..]);
138
136
mag[ i] = dmags[ 0 ] ;
139
137
mag[ i + 1 ] = dmags[ 1 ] ;
140
138
i += 2 ;
@@ -154,12 +152,6 @@ pub fn advance(bodies: &mut [Body; N_BODIES], dt: f64) {
154
152
}
155
153
}
156
154
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
-
163
155
pub fn run ( n : usize ) -> ( f64 , f64 ) {
164
156
let mut bodies = BODIES ;
165
157
offset_momentum ( & mut bodies) ;
@@ -172,8 +164,9 @@ pub fn run(n: usize) -> (f64, f64) {
172
164
( energy_before, energy_after)
173
165
}
174
166
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
177
170
}
178
171
179
172
#[ cfg( test) ]
@@ -183,9 +176,8 @@ mod tests {
183
176
use super :: * ;
184
177
const OUTPUT : [ f64 ; 2 ] = [ -0.169075164 , -0.169087605 ] ;
185
178
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 ] ) ) ;
189
181
}
190
182
}
191
183
0 commit comments