Determinant
Calculates determinant of a matrix. Destroys the matrix.
Time: O(N³) 15 lines somewhat tested
content/numerical/Determinant.h ā Simon Lindholm, source: folklore
double det(vector<vector<double>>& a) {
int n = sz(a); double res = 1;
rep(i,0,n) {
int b = i;
rep(j,i+1,n) if (fabs(a[j][i]) > fabs(a[b][i])) b = j;
if (i != b) swap(a[i], a[b]), res *= -1;
res *= a[i][i];
if (res == 0) return 0;
rep(j,i+1,n) {
double v = a[j][i] / a[i][i];
if (v != 0) rep(k,i+1,n) a[j][k] -= v * a[i][k];
}
}
return res;
}