public static double Determinant0(double[,] matrix) { switch (matrix?.GetLength(0)) { case null: return(0); case 1: { return(matrix[0, 0]); } case 2: { return(MatrixDeterminant2x2Tests.Determinant( matrix[0, 0], matrix[0, 1], matrix[1, 0], matrix[1, 1])); } case 3: { return(MatrixDeterminant3x3Tests.Determinant( matrix[0, 0], matrix[0, 1], matrix[0, 2], matrix[1, 0], matrix[1, 1], matrix[1, 2], matrix[2, 0], matrix[2, 1], matrix[2, 2])); } case 4: { return(MatrixDeterminant4x4Tests.Determinant( matrix[0, 0], matrix[0, 1], matrix[0, 2], matrix[0, 3], matrix[1, 0], matrix[1, 1], matrix[1, 2], matrix[1, 3], matrix[2, 0], matrix[2, 1], matrix[2, 2], matrix[2, 3], matrix[3, 0], matrix[3, 1], matrix[3, 2], matrix[3, 3])); } case 5: { return(MatrixDeterminant5x5Tests.Determinant( matrix[0, 0], matrix[0, 1], matrix[0, 2], matrix[0, 3], matrix[0, 4], matrix[1, 0], matrix[1, 1], matrix[1, 2], matrix[1, 3], matrix[1, 4], matrix[2, 0], matrix[2, 1], matrix[2, 2], matrix[2, 3], matrix[2, 4], matrix[3, 0], matrix[3, 1], matrix[3, 2], matrix[3, 3], matrix[3, 4], matrix[4, 0], matrix[4, 1], matrix[4, 2], matrix[4, 3], matrix[4, 4])); } case 6: { return(MatrixDeterminant6x6Tests.Determinant( matrix[0, 0], matrix[0, 1], matrix[0, 2], matrix[0, 3], matrix[0, 4], matrix[0, 5], matrix[1, 0], matrix[1, 1], matrix[1, 2], matrix[1, 3], matrix[1, 4], matrix[1, 5], matrix[2, 0], matrix[2, 1], matrix[2, 2], matrix[2, 3], matrix[2, 4], matrix[2, 5], matrix[3, 0], matrix[3, 1], matrix[3, 2], matrix[3, 3], matrix[3, 4], matrix[3, 5], matrix[4, 0], matrix[4, 1], matrix[4, 2], matrix[4, 3], matrix[4, 4], matrix[4, 5], matrix[5, 0], matrix[5, 1], matrix[5, 2], matrix[5, 3], matrix[5, 4], matrix[5, 5])); } default: return(Determinant(matrix)); } }
public static double Determinant0( double m1x1, double m1x2, double m1x3, double m1x4, double m2x1, double m2x2, double m2x3, double m2x4, double m3x1, double m3x2, double m3x3, double m3x4, double m4x1, double m4x2, double m4x3, double m4x4) { return((m1x1 * MatrixDeterminant3x3Tests.Determinant(m2x2, m2x3, m2x4, m3x2, m3x3, m3x4, m4x2, m4x3, m4x4)) - (m1x2 * MatrixDeterminant3x3Tests.Determinant(m2x1, m2x3, m2x4, m3x1, m3x3, m3x4, m4x1, m4x3, m4x4)) + (m1x3 * MatrixDeterminant3x3Tests.Determinant(m2x1, m2x2, m2x4, m3x1, m3x2, m3x4, m4x1, m4x2, m4x4)) - (m1x4 * MatrixDeterminant3x3Tests.Determinant(m2x1, m2x2, m2x3, m3x1, m3x2, m3x3, m4x1, m4x2, m4x3))); }
public static double InverseDeterminant0( double a, double b, double c, double d, double e, double f, double g, double h, double i, double j, double k, double l, double m, double n, double o, double p) { return(1d / ((a * MatrixDeterminant3x3Tests.Determinant(f, g, h, j, k, l, n, o, p)) - (b * MatrixDeterminant3x3Tests.Determinant(e, g, h, i, k, l, m, o, p)) + (c * MatrixDeterminant3x3Tests.Determinant(e, f, h, i, j, l, m, n, p)) - (d * MatrixDeterminant3x3Tests.Determinant(e, f, g, i, j, k, m, n, o)))); }