use*_*108 5 sse simd determinants neon
是否存在一种计算低维(约 4)矩阵行列式的方法,该方法适用于 SIMD(霓虹灯、SSE、SSE2)?我正在使用手动膨胀公式,但效果不佳。我在 linux 下一直使用 SSE 到 SSE3 和霓虹灯。矩阵元素都是浮点数。
这是我的 5 美分。
2x2 矩阵的行列式:
这是给读者的练习,应该很容易实现
3x3 矩阵的行列式:
使用标量三重积。这需要智能cross()和dot()实施。这些的食谱随处可见。
4x4 矩阵的行列式:
使用这里的技巧之一。我的代码:
template <class T>
inline T det(matrix<T, 4, 4> const& m) noexcept
{
auto const A(make_matrix<T, 2, 2>(m(0, 0), m(0, 1), m(1, 0), m(1, 1)));
auto const B(make_matrix<T, 2, 2>(m(0, 2), m(0, 3), m(1, 2), m(1, 3)));
auto const C(make_matrix<T, 2, 2>(m(2, 0), m(2, 1), m(3, 0), m(3, 1)));
auto const D(make_matrix<T, 2, 2>(m(2, 2), m(2, 3), m(3, 2), m(3, 3)));
return det(A - B * inv(D) * C) * det(D);
}
Run Code Online (Sandbox Code Playgroud)
5x5+ 矩阵的行列式:
可能会使用上面的技巧。
| 归档时间: |
|
| 查看次数: |
1290 次 |
| 最近记录: |