# Functions

## cramer_solution

</>
``````pub fn cramer_solution(coefficients: List(List(Float)), constants: List(
Float,
)) -> Result(List(Float), String)``````

The solution of a system of linear equations by using Cramer’s formula.

``````Coefficients = [
[1.0, 3.0, -2.0],
[3.0, 5.0, 6.0],
[2.0, 4.0, 3.0]
],
Constants = [5.0, 7.0, 8.0],
emel@math@algebra:cramer_solution(Coefficients, Constants).
% {ok, [-15.0, 8.0, 2.0]}
``````

## determinant

</>
``pub fn determinant(matrix: List(List(Float))) -> Float``

A value that can be computed from the elements of a square `matrix`. Geometrically, it can be viewed as the scaling factor of the linear transformation described by the `matrix`.

``````Matrix = [
[3.0, 8.0],
[4.0, 6.0]
],
emel@math@algebra:determinant(Matrix).
% -14.0
``````

## first_minor

</>
``````pub fn first_minor(matrix: List(List(Float)), i: Int, j: Int) -> List(
List(Float),
)``````

The `first_minor` of a `matrix` obtained by removing just the `i`-row and the `j`-column from the `matrix`. It is required for calculating cofactors, which in turn are useful for computing both the determinant and the inverse of square matrices. `i` and `j` are zero based.

``````Matrix = [
[5.0, -7.0, 2.0, 2.0],
[0.0, 3.0, 0.0, -4.0],
[-5.0, -8.0, 0.0, 3.0],
[0.0, 5.0, 0.0, -6.0],
],
I = 0,
J = 2,
emel@math@algebra:first_minor(Matrix, I, J).
% [
%   [0.0, 3.0, -4.0],
%   [-5.0, -8.0, 3.0],
%   [0.0, 5.0, -6.0]
% ]
``````

## transpose

</>
``pub fn transpose(matrix: List(List(a))) -> List(List(a))``

A matrix whose rows are the columns of the original.

``````Matrix = [
[6.0, 1.0, 1.0],
[4.0, -2.0, 5.0],
[2.0, 8.0, 7.0]
],
emel@math@algebra:transpose(Matrix).
% [
%   [6.0, 4.0, 2.0],
%   [1.0, -2.0, 8.0],
%   [1.0, 5.0, 7.0]
% ]
``````