我正在编写一个算法来找到一个 nxn 矩阵的逆。让我们以 3x3 矩阵的具体情况为例。
当您手动反转矩阵时,您通常会查找包含一个或多个零的行/列,以使行列式计算更快,因为它消除了您需要计算的项。
按照 C/C++ 中的这个逻辑,如果你用一个或多个零来识别一行/列,你最终会得到以下代码:
float term1 = currentElement * DetOf2x2(...);
// ^
// This is equal to 0.
//
// float term2 = ... and so on.
由于编译器无法知道currentElement
在编译时将为零,因此无法将其优化为类似float term = 0;
的东西,因此浮点乘法将在运行时执行。
我的问题是,这些零值会使浮点乘法更快,还是无论 的值如何,乘法都会花费相同的时间currentElement
?如果在运行时无法优化乘法,那么我可以删除搜索包含零的行/列的逻辑。