## Determinant of a matrix in JS

I’m currently reading Deep Learning, from Ian Goodfellow, Yoshua Bengio and Aaron Courville. While reading I got interested in calculating the determinant of a square matrix, I know there are many existing libraries to do that but the algorithm looked simply enough to give it a try.

Here’s my solution:

```
```function det(m) {
var size = Math.sqrt(m.length);
if (size % 1 !== 0) {
return null;
}
if (size === 2) {
return m[0] * m[3] - m[1] * m[2];
}
return m.slice(0, size).reduce(function(t, v, i) {
var sub = [];
for (var r = size; r < m.length; r += size) {
sub = sub.concat(
m.slice(r, r + i),
m.slice(r + i + 1, r + size)
);
}
return t + (i % 2 === 0 ? -1 : 1) * v * det(sub);
}, 0);
}

The idea is to use a single array to define a matrix and the extract the length from using Math.sqrt, eg:

```
```var matrix = [
1, 2, 3,
4, 5, 6,
6, 7, 8
];
var d = det(matrix); // 0

A running example can be found on JSFiddle.

Tags: determinant, matrix