From b721a48313f976022acfb1b8cf8cccb0e56ab0f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20Mei=C3=9Fner?= Date: Sun, 16 Oct 2022 12:47:05 +0200 Subject: [PATCH] Uses SIMD for division. --- src/lib.rs | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 5af83d6..aa24afd 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -86,7 +86,7 @@ impl Exp for ppga2d::IdealPoint { ppga2d::Translator { g0: simd::Simd32x3 { f32x3: [1.0, self.g0[0], self.g0[1]], - } + }, } } } @@ -95,11 +95,8 @@ impl Ln for ppga2d::Translator { type Output = ppga2d::IdealPoint; fn ln(self) -> ppga2d::IdealPoint { - ppga2d::IdealPoint { - g0: simd::Simd32x2 { - f32x2: [self.g0[1] / self.g0[0], self.g0[2] / self.g0[0]], - } - } + let result: ppga2d::IdealPoint = self.into(); + result / ppga2d::Scalar { g0: self.g0[0] } } } @@ -110,6 +107,7 @@ impl Powf for ppga2d::Translator { (ppga2d::Scalar { g0: exponent } * self.ln()).exp() } } + impl Exp for ppga2d::Point { type Output = ppga2d::Motor; @@ -244,7 +242,7 @@ impl Exp for ppga3d::IdealPoint { ppga3d::Translator { g0: simd::Simd32x4 { f32x4: [1.0, self.g0[0], self.g0[1], self.g0[2]], - } + }, } } } @@ -253,11 +251,8 @@ impl Ln for ppga3d::Translator { type Output = ppga3d::IdealPoint; fn ln(self) -> ppga3d::IdealPoint { - ppga3d::IdealPoint { - g0: simd::Simd32x3 { - f32x3: [self.g0[1] / self.g0[0], self.g0[2] / self.g0[0], self.g0[3] / self.g0[0]], - } - } + let result: ppga3d::IdealPoint = self.into(); + result / ppga3d::Scalar { g0: self.g0[0] } } }