diff options
| author | gnzlbg <gnzlbg@users.noreply.github.com> | 2017-10-27 17:55:29 +0200 |
|---|---|---|
| committer | Alex Crichton <alex@alexcrichton.com> | 2017-10-27 11:55:29 -0400 |
| commit | 69d2ad85f3e361a7c61cf4aa8697c39bf70b6afc (patch) | |
| tree | bf9458f6c0ca622176bc0e5d802fb28c4f03a2a5 /library/stdarch/examples | |
| parent | 5869eca3e9062ad75535a81cfa70cf06de6baa1f (diff) | |
| download | rust-69d2ad85f3e361a7c61cf4aa8697c39bf70b6afc.tar.gz rust-69d2ad85f3e361a7c61cf4aa8697c39bf70b6afc.zip | |
[ci] check formatting (#64)
* [ci] check formatting * [rustfmt] reformat the whole library
Diffstat (limited to 'library/stdarch/examples')
| -rw-r--r-- | library/stdarch/examples/nbody.rs | 121 | ||||
| -rw-r--r-- | library/stdarch/examples/play.rs | 8 |
2 files changed, 73 insertions, 56 deletions
diff --git a/library/stdarch/examples/nbody.rs b/library/stdarch/examples/nbody.rs index 3f6e7ccffe9..a9baa74ff76 100644 --- a/library/stdarch/examples/nbody.rs +++ b/library/stdarch/examples/nbody.rs @@ -26,7 +26,8 @@ impl Frsqrt for f64x2 { let u = unsafe { vendor::_mm_rsqrt_ps( - f32x4::new(t.extract(0), t.extract(1), 0., 0.)).as_f64x4() + f32x4::new(t.extract(0), t.extract(1), 0., 0.), + ).as_f64x4() }; f64x2::new(u.extract(0), u.extract(1)) } @@ -36,11 +37,12 @@ impl Frsqrt for f64x2 { use self::stdsimd::vendor; unsafe { vendor::vrsqrte_f32(self.as_f32x2()).as_f64x2() } } - #[cfg(not(any(all(any(target_arch = "x86", target_arch = "x86_64"), + #[cfg(not(any(all(any(target_arch = "x86", + target_arch = "x86_64"), target_feature = "sse"), - all(any(target_arch = "arm", target_arch = "aarch64"), - target_feature = "neon") - )))] + all(any(target_arch = "arm", + target_arch = "aarch64"), + target_feature = "neon"))))] { self.replace(0, 1. / self.extract(0).sqrt()); self.replace(1, 1. / self.extract(1).sqrt()); @@ -57,9 +59,9 @@ struct Body { } impl Body { - fn new(x0: f64, x1: f64, x2: f64, - v0: f64, v1: f64, v2: f64, - mass: f64) -> Body { + fn new( + x0: f64, x1: f64, x2: f64, v0: f64, v1: f64, v2: f64, mass: f64 + ) -> Body { Body { x: [x0, x1, x2], _fill: 0.0, @@ -91,7 +93,7 @@ fn advance(bodies: &mut [Body; N_BODIES], dt: f64) { let mut i = 0; for j in 0..N_BODIES { - for k in j+1..N_BODIES { + for k in j + 1..N_BODIES { for m in 0..3 { r[i][m] = bodies[j].x[m] - bodies[k].x[m]; } @@ -102,14 +104,15 @@ fn advance(bodies: &mut [Body; N_BODIES], dt: f64) { i = 0; while i < N { for m in 0..3 { - dx[m] = f64x2::new(r[i][m], r[i+1][m]); + dx[m] = f64x2::new(r[i][m], r[i + 1][m]); } dsquared = dx[0] * dx[0] + dx[1] * dx[1] + dx[2] * dx[2]; distance = dsquared.frsqrt(); for _ in 0..2 { - distance = distance * f64x2::splat(1.5) - - ((f64x2::splat(0.5) * dsquared) * distance) * (distance * distance) + distance = distance * f64x2::splat(1.5) + - ((f64x2::splat(0.5) * dsquared) * distance) + * (distance * distance) } dmag = f64x2::splat(dt) / dsquared * distance; dmag.store(&mut mag, i); @@ -119,7 +122,7 @@ fn advance(bodies: &mut [Body; N_BODIES], dt: f64) { i = 0; for j in 0..N_BODIES { - for k in j+1..N_BODIES { + for k in j + 1..N_BODIES { for m in 0..3 { bodies[j].v[m] -= r[i][m] * bodies[k].mass * mag[i]; bodies[k].v[m] += r[i][m] * bodies[j].mass * mag[i]; @@ -138,15 +141,19 @@ fn energy(bodies: &[Body; N_BODIES]) -> f64 { let mut e = 0.0; for i in 0..N_BODIES { let bi = &bodies[i]; - e += bi.mass * (bi.v[0] * bi.v[0] + bi.v[1] * bi.v[1] + bi.v[2] * bi.v[2]) / 2.0; - for j in i+1..N_BODIES { + e += bi.mass + * (bi.v[0] * bi.v[0] + bi.v[1] * bi.v[1] + bi.v[2] * bi.v[2]) + / 2.0; + for j in i + 1..N_BODIES { let bj = &bodies[j]; let mut dx = [0.0; 3]; for k in 0..3 { dx[k] = bi.x[k] - bj.x[k]; } let mut distance = 0.0; - for &d in &dx { distance += d * d } + for &d in &dx { + distance += d * d + } e -= bi.mass * bj.mass / distance.sqrt() } } @@ -156,48 +163,54 @@ fn energy(bodies: &[Body; N_BODIES]) -> f64 { fn main() { let mut bodies: [Body; N_BODIES] = [ /* sun */ - Body::new(0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, - SOLAR_MASS), + Body::new(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, SOLAR_MASS), /* jupiter */ - Body::new(4.84143144246472090e+00, - -1.16032004402742839e+00, - -1.03622044471123109e-01 , - 1.66007664274403694e-03 * DAYS_PER_YEAR, - 7.69901118419740425e-03 * DAYS_PER_YEAR, - -6.90460016972063023e-05 * DAYS_PER_YEAR , - 9.54791938424326609e-04 * SOLAR_MASS - ), + Body::new( + 4.84143144246472090e+00, + -1.16032004402742839e+00, + -1.03622044471123109e-01, + 1.66007664274403694e-03 * DAYS_PER_YEAR, + 7.69901118419740425e-03 * DAYS_PER_YEAR, + -6.90460016972063023e-05 * DAYS_PER_YEAR, + 9.54791938424326609e-04 * SOLAR_MASS, + ), /* saturn */ - Body::new(8.34336671824457987e+00, - 4.12479856412430479e+00, - -4.03523417114321381e-01 , - -2.76742510726862411e-03 * DAYS_PER_YEAR, - 4.99852801234917238e-03 * DAYS_PER_YEAR, - 2.30417297573763929e-05 * DAYS_PER_YEAR , - 2.85885980666130812e-04 * SOLAR_MASS - ), + Body::new( + 8.34336671824457987e+00, + 4.12479856412430479e+00, + -4.03523417114321381e-01, + -2.76742510726862411e-03 * DAYS_PER_YEAR, + 4.99852801234917238e-03 * DAYS_PER_YEAR, + 2.30417297573763929e-05 * DAYS_PER_YEAR, + 2.85885980666130812e-04 * SOLAR_MASS, + ), /* uranus */ - Body::new(1.28943695621391310e+01, - -1.51111514016986312e+01, - -2.23307578892655734e-01 , - 2.96460137564761618e-03 * DAYS_PER_YEAR, - 2.37847173959480950e-03 * DAYS_PER_YEAR, - -2.96589568540237556e-05 * DAYS_PER_YEAR , - 4.36624404335156298e-05 * SOLAR_MASS - ), + Body::new( + 1.28943695621391310e+01, + -1.51111514016986312e+01, + -2.23307578892655734e-01, + 2.96460137564761618e-03 * DAYS_PER_YEAR, + 2.37847173959480950e-03 * DAYS_PER_YEAR, + -2.96589568540237556e-05 * DAYS_PER_YEAR, + 4.36624404335156298e-05 * SOLAR_MASS, + ), /* neptune */ - Body::new(1.53796971148509165e+01, - -2.59193146099879641e+01, - 1.79258772950371181e-01 , - 2.68067772490389322e-03 * DAYS_PER_YEAR, - 1.62824170038242295e-03 * DAYS_PER_YEAR, - -9.51592254519715870e-05 * DAYS_PER_YEAR , - 5.15138902046611451e-05 * SOLAR_MASS - ) - ]; - - let n: usize = std::env::args().nth(1).expect("need one arg").parse().unwrap(); + Body::new( + 1.53796971148509165e+01, + -2.59193146099879641e+01, + 1.79258772950371181e-01, + 2.68067772490389322e-03 * DAYS_PER_YEAR, + 1.62824170038242295e-03 * DAYS_PER_YEAR, + -9.51592254519715870e-05 * DAYS_PER_YEAR, + 5.15138902046611451e-05 * SOLAR_MASS, + ), + ]; + + let n: usize = std::env::args() + .nth(1) + .expect("need one arg") + .parse() + .unwrap(); offset_momentum(&mut bodies); println!("{:.9}", energy(&bodies)); diff --git a/library/stdarch/examples/play.rs b/library/stdarch/examples/play.rs index 5cbbdd44d52..26ce5dd8124 100644 --- a/library/stdarch/examples/play.rs +++ b/library/stdarch/examples/play.rs @@ -27,8 +27,12 @@ mod example { unsafe { vendor::_mm_cmpestri( - vneedle, needle_len as i32, vhaystack, hay_len as i32, - vendor::_SIDD_CMP_EQUAL_ORDERED) as usize + vneedle, + needle_len as i32, + vhaystack, + hay_len as i32, + vendor::_SIDD_CMP_EQUAL_ORDERED, + ) as usize } } |
