nxn行列の逆数を見つけるアルゴリズムを書いています。3x3 行列の特定のケースを考えてみましょう。
手動で行列を反転する場合、通常、1 つ以上のゼロを含む行/列を探して、計算する必要がある項を排除するため、行列式の計算を高速化します。
C/C++ でこのロジックに従って、行/列を 1 つ以上のゼロで識別すると、次のコードになります。
float term1 = currentElement * DetOf2x2(...);
// ^
// This is equal to 0.
//
// float term2 = ... and so on.
コンパイラはcurrentElement
コンパイル時にゼロになることを認識できないため、次のように最適化することはできずfloat term = 0;
、実行時に浮動小数点乗算が実行されます。
私の質問は、これらのゼロ値により浮動小数点乗算が高速になるか、または の値に関係なく乗算に同じ時間がかかるcurrentElement
かということです。実行時に乗算を最適化する方法がない場合は、ゼロを含む行/列を検索するロジックを削除できます。