尝试用c++创建基础数学库进行学习,遇到了魔法问题...
用这段代码做行列式:
行列式A..D之前声明,
// matrix structure:
struct {
n_type
a, b, c, d,
e, f, g, h,
i, j, k, l,
m, n, o, p;
};
determinantA = a * (f*k*p - f*l*o - g*j*p +
g*l*n + h*j*o - h*k*n);
// b
determinantB = b * (e*k*p - e*l*o - g*i*p +
g*l*m + h*i*o - h*k*m);
// c
determinantC = c * (e*j*p - e*l*n - f*i*p +
f*l*m + h*i*n - h*j*m);
// d
determinantD = d * (e*j*o - e*k*n - f*i*o +
f*k*m + g*i*n - g*j*m);
return (determinantA - determinantB + determinantC - determinantD);
出于某种原因,此代码在某些情况下会产生准确的结果,而在另一些情况下会产生不正确的结果,例如此输入矩阵:mat4( 2, 9, -5, 1, 4, 6, 8, 3, 2, 8,2, 12, 7, 3, 8, 2) 给出不正确的结果 [4008] 与在线计算器结果 [-3468] 相比,它是代码中的错误,还是所有在线计算器(包括 wolfram)都存在错误(疑问)?