diff --git a/glm/detail/func_geometric_simd.inl b/glm/detail/func_geometric_simd.inl index dfe3f4c9..2076dae0 100644 --- a/glm/detail/func_geometric_simd.inl +++ b/glm/detail/func_geometric_simd.inl @@ -105,7 +105,7 @@ namespace detail { GLM_FUNC_QUALIFIER static float call(vec<4, float, Q> const& v) { - return compute_dot, float, true>::call(v, v); + return sqrt(compute_dot, float, true>::call(v, v)); } }; @@ -126,9 +126,7 @@ namespace detail { #if GLM_ARCH & GLM_ARCH_ARMV8_BIT float32x4_t v = vmulq_f32(x.data, y.data); - v = vpaddq_f32(v, v); - v = vpaddq_f32(v, v); - return vgetq_lane_f32(v, 0); + return vaddvq_f32(v); #else // Armv7a with Neon float32x4_t p = vmulq_f32(x.data, y.data); float32x2_t v = vpadd_f32(vget_low_f32(p), vget_high_f32(p));