# laplace-determinant

recursive determinant computation using Laplace expansion

## Usage

Signature is `(data [, scalar] [, order])` where:

• data is an array which lenght must be a square.
• scalar is an optional object used to compute determinant over any field (see below).
• order defaults to Math.sqrt(data.lenght) and is used internally by recursion sub step.

All code in the examples below is intended to be contained into a single file

Basic usage is to compute determinant of matrices of common numbers.

``````var det = require('laplace-determinant')

// order = 1

det() // 10

// order = 2

det([1, 0,
0, 1]) // 1

det([1, 1,
2, 1]) // -1

// order = 3

det([1, 0, 0,
0, 1, 0,
0, 0, 1]) // 1

det([0,  1, 0,
2, -1, 0,
0,  2, 1]) // -2

// order = 4

det([1, 0, 0, 0,
0, 1, 0, 0,
0, 0, 1, 0,
0, 0, 0, 1]) // 1
``````

The algorithm is recursive, so any order is allowed. If you want to benchmark it and compare this package with other implementations, you are welcome! Just contact me and I will happy to get this kind of useful feedback.

Optional scalar object defaults to common Real field, i.e.

``````scalar = {
addition      : function (a, b) { return a + b },
multiplication: function (a, b) { return a * b },
negation      : function (a) { return -a }
}
``````

It is possible to compute determinant over any field. Consider for example the Boolean algebra.

``````var boole = {
addition      : function (a, b) { return a && b },
multiplication: function (a, b) { return a || b },
negation      : function (a) { return !a }
}

det([true, false,
false, true], boole) // true
``````