42 _v = f32x4{0.0f, 0.0f, 1.0f, 0.0f} * S;
49 [[nodiscard]]
constexpr operator matrix<D>() const noexcept
62 hilet x_mul = _v.xxxx() * _v;
63 hilet y_mul = _v.yyyy() * _v;
64 hilet z_mul = _v.zzzz() * _v;
66 auto twos = f32x4(-2.0f, 2.0f, 2.0f, 0.0f);
67 auto one = f32x4(1.0f, 0.0f, 0.0f, 0.0f);
68 hilet col0 = one + addsub<0b0011>(z_mul.zwxy(), y_mul.yxwz()) * twos;
71 hilet col1 = one + addsub<0b0110>(x_mul.yxwz(), z_mul.wzyx()) * twos;
74 hilet col2 = one + addsub<0b0101>(y_mul.wzyx(), x_mul.zwxy()) * twos;
76 return matrix<D>{col0, col1, col2, one};