Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/bjoern-hempel/js-analysis
This javascript library do some analysis calculations (matrix, vector, etc.).
https://github.com/bjoern-hempel/js-analysis
analysis javascript mathematics
Last synced: 5 days ago
JSON representation
This javascript library do some analysis calculations (matrix, vector, etc.).
- Host: GitHub
- URL: https://github.com/bjoern-hempel/js-analysis
- Owner: bjoern-hempel
- License: mit
- Created: 2018-05-12T23:09:50.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2018-06-19T22:26:08.000Z (over 6 years ago)
- Last Synced: 2024-11-07T03:44:25.274Z (about 2 months ago)
- Topics: analysis, javascript, mathematics
- Language: JavaScript
- Homepage:
- Size: 280 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Javascript Numerical Analysis Library
This javascript library provides some numerical analysis calculation functions.
## 0. Preparations
This library needs an external git repository:
* [js-testing-framework](https://github.com/bjoern-hempel/js-testing-framework)
### 0.1 Checkout this project with submodules
```bash
user$ git clone [email protected]:bjoern-hempel/js-analysis.git && cd js-analysis
user$ git submodule init
user$ git submodule update
```## 1. Vectors
Create vectors and do some calculations with them. It uses the library `sources/js/vector.js`.
### 1.1 Some basics
#### 1.1.1 Create a vector
Vector.constructor(array)
@param
{Array}
array
An one-dimensional array that represents the vector.
@returns
{Vector}
##### 1.1.1.1 Example (Create from given array)
```javascript
var vector = new Vector([1, 2, 3]);
console.log(JSON.stringify(vector.array)); // prints [1,2,3]
```### 1.2 Properties
#### 1.2.1 Size of the vector
Vector.size
@returns
{Integer}
Returns number of elements that this vector consists of.
##### 1.2.1.1 Example
```javascript
var vector = new Vector([1, 2, 3]);
console.log(vector.size); // prints 3
```#### 1.2.2 Length of the vector
Vector.length
@returns
{Number}
Returns the length of this vector.
##### 1.2.2.1 Example
```javascript
var vector = new Vector([1, 2, 3]);
console.log(vector.length); // prints 3,741657386773941
```#### 1.2.3 Array of the vector
Vector.array
@returns
{Array}
Returns the array representation of this vector.
##### 1.2.3.1 Example
```javascript
var vector = new Vector([1, 2, 3]);
console.log(JSON.stringify(vector.array)); // prints [1,2,3]
```### 1.3 Calculations
#### 1.3.1 **Calculation mode:** Change or copy the used vector
Normally all calculations refer to the used vector. That means that all calculations will change the vector to which the calculations are performed.
##### 1.3.1.1 "Change" example:
The following example applies the calculation to the first vector (`vector1`).
```javascript
/* create two matrices */
var vector1 = new Vector([1, 2, 3]);
var vector2 = new Vector([2, 4, 6]);/* do the calculation */
vector1.add(vector2);/* The vector vector1 now contains the value [3,6,9]!
* The old value [1,2,3] has changed.
* The vector vector2 is unchanged.
*/
console.log(JSON.stringify(vector1.array)); // prints [3,6,9]
console.log(JSON.stringify(vector2.array)); // prints [2,4,6]
```##### 1.3.1.2 "Copy" example:
If you want to keep the values from the used vector `vector1`, you can do a copy from the calculation result. Just add another parameter to the calculation function (the copy parameter):
```javascript
/* create two matrices */
var vector1 = new Vector([1, 2, 3]);
var vector2 = new Vector([2, 4, 6]);/* Do the calculation and copy the result to vector3.
* The first parameter must contain the value true.
*/
var vector3 = vector1.add(true, vector2);/* The vector vector1 is unchanged.
* The vector vector2 is unchanged.
* The vector vector3 now contains the calculation result [3,6,9]!
*/
console.log(JSON.stringify(vector1.array)); // prints [1,2,3]
console.log(JSON.stringify(vector2.array)); // prints [2,4,6]
console.log(JSON.stringify(vector3.array)); // prints [3,6,9]
```#### 1.3.2 Add two vectors
Vector.add([copy], vector)
@param
{Boolean}
copy
(optional)
@param
{Vector}
vector
@returns
{Vector}
##### 1.3.2.1 Example
```javascript
var vector1 = new Vector([1, 2, 3]);
var vector2 = new Vector([2, 4, 6]);
vector1.add(vector2);
console.log(JSON.stringify(vector1.array)); // prints [3,6,9]
```#### 1.3.3 Subtract two vectors
Vector.subtract([copy], vector)
@param
{Boolean}
copy
(optional)
@param
{Vector}
vector
@returns
{Vector}
##### 1.3.3.1 Example
```javascript
var vector1 = new Vector([1, 2, 3]);
var vector2 = new Vector([2, 4, 6]);
vector1.subtract(vector2);
console.log(JSON.stringify(vector1.array)); // prints [-1,-2,-3]
```#### 1.3.4 Dot Product (Inner Product)
Vector.dotProduct([copy], vector)
@param
{Boolean}
copy
(optional) The copy parameter has no effect in here.
@param
{Vector}
vector
@returns
{Number}
##### 1.3.4.1 Example 1
```javascript
var vector1 = new Vector([1, 2, 3]);
var vector2 = new Vector([2, 4, 6]);
var product = vector1.dotProduct(vector2);
console.log(product); // prints 28
```##### 1.3.4.1 Example 2
```javascript
var vector1 = new Vector([1, 2, 3, 4]);
var vector2 = new Vector([2, 4, 6, 8]);
var product = vector1.dotProduct(vector2);
console.log(product); // prints 60
```#### 1.3.5 Vector Product (Cross Product)
Vector.vectorProduct([copy], vector, [vector2, [vector3, [...]]])
@param
{Boolean}
copy
(optional)
@param
{Vector}
vector
@param
{Vector}
vector2
(optional)
@param
{Vector}
vector3
(optional)
@returns
{Vector}
##### 1.3.5.1 Example 1
```javascript
var vector1 = new Vector([1, 2, 3]);
var vector2 = new Vector([-1, 5, -2]);
var vector3 = vector1.vectorProduct(true, vector2);
console.log(JSON.stringify(vector4.array)); // prints [-19,-1,7]
```##### 1.3.5.2 Example 2
```javascript
var vector1 = new Vector([1, 2, 3, 4]);
var vector2 = new Vector([-1, 5, -2, 1]);
var vector3 = new Vector([0, 4, 2, 10]);
var vector4 = vector1.vectorProduct(true, vector2, vector3);
console.log(JSON.stringify(vector4.array)); // prints [-110,0,50,-10]
```##### 1.3.5.3 Example 3
```javascript
var vector1 = new Vector([1, 2, 3, 4, 5]);
var vector2 = new Vector([-1, 5, -2, 1, 0]);
var vector3 = new Vector([0, 4, 2, 10, -9]);
var vector4 = new Vector([7, 3, -5, 20, -3]);
var vector5 = vector1.vectorProduct(true, vector2, vector3, vector4);
console.log(JSON.stringify(vector5.array)); // prints [-6223,-2318,-1519,2329,1220]
```#### 1.3.6 Row multiplication from two vectors
Vector.rowMultiply([copy], vector)
@param
{Boolean}
copy
(optional)
@param
{Vector}
vector
@returns
{Vector}
##### 1.3.6.1 Example
```javascript
var vector1 = new Vector([1, 2, 3, 4]);
var vector2 = new Vector([2, 4, 6, 8]);
vector1.rowMultiply(vector2);
console.log(JSON.stringify(vector1.array)); // prints [2,6,18,32]
```#### 1.3.7 Dyadic Product (Outer Product) from two vectors
Vector.multiplyDyadic([copy], vector)
@param
{Boolean}
copy
(optional) The copy parameter has no effect in here.
@param
{Vector}
vector
@returns
{Matrix}
##### 1.3.7.1 Example
```javascript
var vector1 = new Vector([1, 2, 3, 4]);
var vector2 = new Vector([2, 4, 6, 8]);
var matrix = vector1.rowMultiply(multiplyDyadic);
console.log(JSON.stringify(matrix.array)); // prints [[2,4,6,8],[4,8,12,16],[6,12,18,24],[8,16,24,32]]
```### 1.4 Manipulate the vector
#### 1.4.1 Change a value
Vector.changeCell([copy], index, value)
@param
{Boolean}
copy
(optional)
@param
{Integer}
index
@param
{Number}
value
@returns
{Vector}
##### 1.4.1.1 Example
```javascript
var vector = new Vector([1, 2, 3]);
vector.changeCell(0, -1);
console.log(JSON.stringify(vector.array)); // prints [-1,2,3]
```#### 1.4.2 Add a value
Coming soon..
#### 1.4.3 Delete a value
Coming soon..
## 2. Matrices
Create vectors and do some calculations with them. It uses the library `sources/js/vector.js`.
### 2.1 Some basics
#### 2.1.1 Create a matrix
Matrix.constructor(array)
@param
{Array}
array
A two-dimensional array that represents the matrix.
@returns
{Matrix}
##### 2.1.1.1 Example 1 (Create from given array)
```javascript
var matrix = new Matrix([[1, 2, 3], [4, 5, 6]]);
console.log(JSON.stringify(matrix.array)); // prints [[1,2,3],[4,5,6]]
```##### 2.1.1.2 Example 2 (Create from given vector)
```javascript
var vector = new Vector([1, 2, 3]);
var matrix = new Matrix(vector);
console.log(JSON.stringify(matrix.array)); // prints [[1],[2],[3]]
```##### 2.1.1.3 Example 3 (Create from given vectors)
```javascript
var vector1 = new Vector([1, 2, 3]);
var vector2 = new Vector([4, 5, 6]);
var vector3 = new Vector([7, 8, 9]);
var matrix = new Matrix(vector1, vector2, vector3);
console.log(JSON.stringify(matrix.array)); // prints [[1,4,7],[2,5,8],[3,6,9]]
```### 2.2 Properties
#### 2.2.1 Size of the matrix
Matrix.size
@returns
{Array}
Returns the number of rows and cols that this matrix consists of.
##### 2.2.1.1 Example
```javascript
var matrix = new Matrix([[1, 2, 3], [4, 5, 6]]);
console.log(JSON.stringify(vector.size)); // prints [2,3]
```#### 2.2.2 Rows of the matrix
Matrix.rows
@returns
{Integer}
Returns the number of rows that this matrix consists of.
##### 2.2.2.1 Example
```javascript
var matrix = new Matrix([[1, 2, 3], [4, 5, 6]]);
console.log(vector.rows); // prints 2
```#### 2.2.3 Cols of the matrix
Matrix.cols
@returns
{Integer}
Returns the number of cols that this matrix consists of.
##### 2.2.3.1 Example
```javascript
var matrix = new Matrix([[1, 2, 3], [4, 5, 6]]);
console.log(vector.cols); // prints 3
```#### 2.2.4 Array of the matrix
Matrix.array
@returns
{Array}
Returns the array representation of this matrix.
##### 2.2.4.1 Example
```javascript
var matrix = new Matrix([[1, 2, 3], [4, 5, 6]]);
console.log(JSON.stringify(vector.array)); // prints [[1,2,3],[4,5,6]]
```### 2.3 Calculations
#### 2.3.1 **Calculation mode:** Change or copy the used matrix
Normally all calculations refer to the used matrix. That means that all calculations will change this matrix.
##### 2.3.1.1 "Change" example:
The following example applies the calculation to the first matrix (`matrix1`).
```javascript
/* create two matrices */
var matrix1 = new Matrix([[1, 2, 3], [4, 5, 6]]);
var matrix2 = new Matrix([[2, 4, 6], [8, 10, 12]]);/* do the calculation */
matrix1.add(matrix2);/* The matrix matrix1 now contains the value [[3,6,9],[12,15,18]]!
* The old value [[1,2,3],[4,5,6]] has changed.
* The matrix matrix2 is unchanged.
*/
console.log(JSON.stringify(matrix1.array)); // prints [[3,6,9],[12,15,18]]
console.log(JSON.stringify(matrix2.array)); // prints [[2,4,6],[8,10,12]]
```##### 2.3.1.2 "Copy" example:
If you want to keep the values from the used matrix `matrix1`, you can do a copy from the calculation result. Just add another parameter to the calculation function (the copy parameter):
```javascript
/* create two matrices */
var matrix1 = new Matrix([[1, 2, 3], [4, 5, 6]]);
var matrix2 = new Matrix([[2, 4, 6], [8, 10, 12]]);/* Do the calculation and copy the result to matrix3.
* The first parameter must contain the value true. */
var matrix3 = matrix1.add(true, matrix2);/* The matrix matrix1 is unchanged.
* The matrix matrix2 is unchanged.
* The matrix matrix3 now contains the calculation result [[3,6,9],[12,15,18]]!
*/
console.log(JSON.stringify(matrix1.array)); // prints [[1,2,3],[4,5,6]]
console.log(JSON.stringify(matrix2.array)); // prints [[2,4,6],[8,10,12]]
console.log(JSON.stringify(matrix3.array)); // prints [[3,6,9],[12,15,18]]
```#### 2.3.2 Add two matrices
Matrix.add([copy], matrix)
@param
{Boolean}
copy
(optional)
@param
{Matrix}
matrix
@returns
{Matrix}
##### 2.3.2.1 Example
```javascript
var matrix1 = new Matrix([[1, 2, 3], [4, 5, 6]]);
var matrix2 = new Matrix([[2, 4, 6], [8, 10, 12]]);
matrix1.add(matrix2);
console.log(JSON.stringify(matrix1.array)); // prints [[3,6,9],[12,15,18]]
```#### 2.3.3 Subtract two matrices
Matrix.substract([copy], matrix)
@param
{Boolean}
copy
(optional)
@param
{Matrix}
matrix
@returns
{Matrix}
##### 2.3.3.1 Example
```javascript
var matrix1 = new Matrix([[1, 2, 3], [4, 5, 6]]);
var matrix2 = new Matrix([[2, 4, 6], [8, 10, 12]]);
matrix1.substract(matrix2);
console.log(JSON.stringify(matrix1.array)); // prints [[-1,-2,-3],[-4,-5,-6]]
```#### 2.3.4 Scalar multiplication
Matrix.multiply([copy], scalar)
@param
{Boolean}
copy
(optional)
@param
{Number}
scalar
@returns
{Matrix}
##### 2.3.4.1 Example 1
```javascript
var matrix = new Matrix([[1, 2, 3], [4, 5, 6]]);
var scalar = 2.5;
matrix.multiply(scalar);
console.log(JSON.stringify(matrix.array)); // prints [[2.5,5,7.5],[10,12.5,15]]
```#### 2.3.5 Multiply two matrices
Matrix.multiply([copy], matrix)
@param
{Boolean}
copy
(optional)
@param
{Matrix}
matrix
@returns
{Matrix}
##### 2.3.5.1 Example
```javascript
var matrix1 = new Matrix([[1, 2, 3], [4, 5, 6]]);
var matrix2 = new Matrix([[1], [2], [3]]);
matrix1.multiply(matrix2);
console.log(JSON.stringify(matrix1.array)); // prints [[14],[32]]
```#### 2.3.6 Multiply a matrix with a vector
Matrix.multiply([copy], vector)
@param
{Boolean}
copy
(optional)
@param
{Vector}
vector
@returns
{Matrix}
##### 2.3.6.1 Example
```javascript
var matrix1 = new Matrix([[1, 2, 3], [4, 5, 6]]);
var vector1 = new Vector([1, 2 ,3]);
matrix1.multiply(vector1);
console.log(JSON.stringify(matrix1.array)); // prints [[14],[32]]
```#### 2.3.7 Transpose a matrix
Matrix.transpose([copy])
@param
{Boolean}
copy
(optional)
@returns
{Matrix}
##### 2.3.7.1 Example
```javascript
var matrix = new Matrix([[1, 2, 3], [4, 5, 6]]);
matrix.transpose();
console.log(JSON.stringify(matrix.array)); // prints [[1,4],[2,5],[3,6]]
```#### 2.3.8 Calculate the determinant of the matrix
Matrix.determinant([copy])
@param
{Boolean}
copy
(optional) The copy parameter has no effect in here.
@returns
{Number}
##### 2.3.8.1 Example
```javascript
var matrix = new Matrix([
[1, 2, 3, 4, 0],
[5, 6, 7, 8, 7],
[9, 1, 2, 3, 8],
[4, 5, 9, 7, -1],
[7, 8, -2, -5, -3]
]);
var determinant = matrix.determinant();
console.log(determinant); // prints -8406
```#### 2.3.9 Inverse a matrix
##### 2.3.9.1 Example
```javascript
var matrix1 = new Matrix([[1, 2, 3], [-4, 5, -6], [-1, 0, 3]]);
var matrix2 = matrix1.inverse();
console.log(JSON.stringify(matrix2.array)); // prints [[0.22727272727272718,-0.0909090909090909,-0.40909090909090906],[0.27272727272727276,0.09090909090909091,-0.09090909090909093],[0.07575757575757576,-0.030303030303030307,0.196969696969697]]
```#### 2.3.10 Diagonalise a matrix
TODO..
##### 2.3.10.1 Example
TODO..
### 2.4 Manipulate the matrix
#### 2.4.1 Change value
Matrix.changeCell([copy], col, row, value)
@param
{Boolean}
copy
(optional)
@param
{Integer}
col
@param
{Integer}
row
@param
{Number}
value
@returns
{Matrix}
##### 2.4.1.1 Example
```javascript
var matrix = new Matrix([[1, 2, 3], [4, 5, 6]]);
matrix.changeCell(0, 0, -1);
console.log(JSON.stringify(matrix1.array)); // prints [[-1,2,3],[4,5,6]]
```#### 2.4.2 Change row
Coming soon..
#### 2.4.3 Change col
Coming soon..
#### 2.4.4 Add row
Coming soon..
#### 2.4.5 Add col
Coming soon..
#### 2.4.6 Delete row
Coming soon..
#### 2.4.7 Delete col
Coming soon..
## 3. Test the libraries
### 3.1 Vector library
Call `tests/vector.html` in your browser. It adds a div element with id testResult to your body and returns for example something like this:
```text
----------------------------------------
Start test "js-analysis - Vector - Test"
----------------------------------------
1) Vector: Running error test "Given vector format is not an array" (Code: 101).
Test succeeded (0.7 ms).
2) Vector: Running error test "The size of the given vector is wrong" (Code: 102).
Test succeeded (0.1 ms).
3) Vector: Running error test "Element from vector is no number" (Code: 103).
Test succeeded (0.2 ms).
4) Vector: Running success test "Init vector" (Code: 201).
Test succeeded (0.1 ms).
5) Vector: Running success test "Successful change value test" [mode: keep] (Code: 203).
Test succeeded (0.3 ms).
6) Vector: Running success test "Successful change value test" [mode: copy] (Code: 203).
Test succeeded (0.2 ms).
7) Vector: Running error test "Wrong given vector type" (Code: 105).
Test succeeded (0.2 ms).
8) Vector: Running error test "Two given vectors with different dimensions" (Code: 106).
Test succeeded (0.1 ms).
9) Vector: Running success test "Successful add test" [mode: keep] (Code: 204).
Test succeeded (0.3 ms).
10) Vector: Running success test "Successful add test" [mode: copy] (Code: 204).
Test succeeded (0.1 ms).
11) Vector: Running error test "Wrong given vector type" (Code: 105).
Test succeeded (0.2 ms).
12) Vector: Running error test "Two given vectors with different dimensions" (Code: 106).
Test succeeded (0.1 ms).
13) Vector: Running success test "Successful add test" [mode: keep] (Code: 205).
Test succeeded (0 ms).
14) Vector: Running success test "Successful add test" [mode: copy] (Code: 205).
Test succeeded (0.1 ms).
15) Vector: Running error test "Wrong given vector type" (Code: 105).
Test succeeded (0.3 ms).
16) Vector: Running error test "Two given vectors with different dimensions" (Code: 106).
Test succeeded (0.2 ms).
17) Vector: Running success test "Successful dot product test" [mode: keep] (Code: 206).
Test succeeded (0.1 ms).
18) Vector: Running success test "Successful dot product test" [mode: keep] (Code: 206).
Test succeeded (0.1 ms).
19) Vector: Running success test "Successful dot product test" [mode: copy] (Code: 206).
Test succeeded (0 ms).
20) Vector: Running error test "Two given vectors with different dimensions" (Code: 106).
Test succeeded (1.2 ms).
21) Vector: Running error test "The number of given vectors is wrong" (Code: 106).
Test succeeded (0.1 ms).
22) Vector: Running success test "Successful vector product test" [mode: keep] (Code: 207).
Test succeeded (0.4 ms).
23) Vector: Running success test "Successful vector product test" [mode: copy] (Code: 207).
Test succeeded (0.2 ms).
24) Vector: Running success test "Successful vector product test" [mode: copy] (Code: 207).
Test succeeded (0.1 ms).
25) Vector: Running success test "Successful vector product test" [mode: copy] (Code: 207).
Test succeeded (0.5 ms).
26) Vector: Running error test "Wrong given vector type" (Code: 105).
Test succeeded (0.3 ms).
27) Vector: Running error test "Two given vectors with different dimensions" (Code: 106).
Test succeeded (0 ms).
28) Vector: Running success test "Successful row multiplication test" [mode: keep] (Code: 208).
Test succeeded (0.1 ms).
29) Vector: Running success test "Successful row multiplication test" [mode: copy] (Code: 208).
Test succeeded (0.1 ms).
30) Vector: Running error test "Wrong given vector type" (Code: 105).
Test succeeded (0 ms).
31) Vector: Running success test "Successful dyadic multiplication test" [mode: keep] (Code: 209).
Test succeeded (0.8 ms).
32) Vector: Running success test "Successful dyadic multiplication test" [mode: copy] (Code: 209).
Test succeeded (0.2 ms).
33) Vector: Running success test "Successful unshift test" [mode: keep] (Code: 210).
Test succeeded (0.2 ms).
34) Vector: Running success test "Successful unshift test" [mode: copy] (Code: 210).
Test succeeded (0.2 ms).
35) Vector: Running success test "Successful shift test" [mode: keep] (Code: 211).
Test succeeded (0.1 ms).
36) Vector: Running success test "Successful shift test" [mode: copy] (Code: 211).
Test succeeded (0.1 ms).
37) Vector: Running success test "Successful callback function test" [mode: keep] (Code: 212).
Test succeeded (0.2 ms).
38) Vector: Running success test "Successful callback function test" [mode: copy] (Code: 212).
Test succeeded (0.2 ms).
39) Vector: Running success test "Successful length of vector test" (Code: 202).
Test succeeded (0.1 ms).
-----------------------------------------------------------------
RESULT
-> All test succeeded (15.2 ms) [success: 39; error: 0; all: 39].
-----------------------------------------------------------------
```### 3.2 Matrix library
Call `tests/matrix.html` in your browser. It adds a div element with id testResult to your body and returns for example something like this:
```text
----------------------------------------
Start test "js-analysis - Matrix - Test"
----------------------------------------
1) Matrix: Running error test "Rows are not an array" (Code: 101).
Test succeeded (0.1 ms).
2) Matrix: Running error test "Count rows is wrong" (Code: 102).
Test succeeded (0.1 ms).
3) Matrix: Running error test "Cols are not an array" (Code: 103).
Test succeeded (0.1 ms).
4) Matrix: Running error test "Count cols is wrong" (Code: 104).
Test succeeded (0 ms).
5) Matrix: Running error test "Wrong col number test" (Code: 105).
Test succeeded (0.1 ms).
6) Matrix: Running success test "Init matrix" (Code: 201).
Test succeeded (0 ms).
7) Matrix: Running success test "Init matrix from vector" (Code: 202).
Test succeeded (0.1 ms).
8) Matrix: Running success test "Init matrix from vectors" (Code: 203).
Test succeeded (0.1 ms).
9) Matrix: Running success test "Successful change value test" [mode: keep] (Code: 204).
Test succeeded (0.3 ms).
10) Matrix: Running success test "Successful change value test" [mode: copy] (Code: 204).
Test succeeded (0.1 ms).
11) Matrix: Running error test "Row access is wrong" (Code: 112).
Test succeeded (0.1 ms).
12) Matrix: Running success test "Successful delete row test" [mode: keep] (Code: 205).
Test succeeded (0.1 ms).
13) Matrix: Running success test "Successful delete row test" [mode: copy] (Code: 205).
Test succeeded (0.3 ms).
14) Matrix: Running error test "Wrong given matrix type" (Code: 106).
Test succeeded (0.1 ms).
15) Matrix: Running error test "Two given matrices with different dimensions" (Code: 107).
Test succeeded (0.1 ms).
16) Matrix: Running success test "Successful add test" [mode: keep] (Code: 206).
Test succeeded (0.1 ms).
17) Matrix: Running success test "Successful add test" [mode: copy] (Code: 206).
Test succeeded (0.1 ms).
18) Matrix: Running error test "Wrong given matrix type" (Code: 106).
Test succeeded (0.3 ms).
19) Matrix: Running error test "Two given matrices with different dimensions" (Code: 107).
Test succeeded (0.1 ms).
20) Matrix: Running success test "Successful subtract test" [mode: keep] (Code: 207).
Test succeeded (0.2 ms).
21) Matrix: Running success test "Successful subtract test" [mode: copy] (Code: 207).
Test succeeded (0.4 ms).
22) Matrix: Running error test "Given parameter is not a scalar" (Code: 109).
Test succeeded (0.2 ms).
23) Matrix: Running success test "Successful scalar multiplication test" [mode: keep] (Code: 208).
Test succeeded (0.3 ms).
24) Matrix: Running success test "Successful scalar multiplication test" [mode: copy] (Code: 208).
Test succeeded (0.2 ms).
25) Matrix: Running error test "Two given matrices with different dimensions" (Code: 107).
Test succeeded (0.1 ms).
26) Matrix: Running success test "Successful multiplication test" [mode: keep] (Code: 210).
Test succeeded (0.2 ms).
27) Matrix: Running success test "Successful multiplication test" [mode: copy] (Code: 210).
Test succeeded (0.2 ms).
28) Matrix: Running success test "Successful multiplication test with a vector" [mode: keep] (Code: 211).
Test succeeded (0.1 ms).
29) Matrix: Running success test "Successful multiplication test with a vector" [mode: copy] (Code: 211).
Test succeeded (0.2 ms).
30) Matrix: Running success test "Successful transpose test" [mode: keep] (Code: 209).
Test succeeded (0.1 ms).
31) Matrix: Running success test "Successful transpose test" [mode: copy] (Code: 209).
Test succeeded (0.1 ms).
32) Matrix: Running error test "The matrix is not quadratic" (Code: 108).
Test succeeded (0.1 ms).
33) Matrix: Running success test "Successful determinant test" (Code: 212).
Test succeeded (0.1 ms).
34) Matrix: Running success test "Successful determinant test" (Code: 212).
Test succeeded (0.2 ms).
35) Matrix: Running success test "Successful determinant test" (Code: 212).
Test succeeded (0.9 ms).
36) Matrix: Running success test "Successful inverse test" [mode: keep] (Code: 213).
Test succeeded (0.3 ms).
37) Matrix: Running success test "Successful inverse test" [mode: copy] (Code: 213).
Test succeeded (0.1 ms).
38) Matrix: Running success test "Successful manipulate test: shift col" [mode: keep] (Code: 214).
Test succeeded (0.1 ms).
39) Matrix: Running success test "Successful manipulate test: shift col" [mode: copy] (Code: 214).
Test succeeded (0.2 ms).
40) Matrix: Running success test "Successful manipulate test: shift row" [mode: keep] (Code: 215).
Test succeeded (0.2 ms).
41) Matrix: Running success test "Successful manipulate test: shift row" [mode: copy] (Code: 215).
Test succeeded (0.1 ms).
-----------------------------------------------------------------
RESULT
-> All test succeeded (12.1 ms) [success: 41; error: 0; all: 41].
-----------------------------------------------------------------
```## A. Authors
* Björn Hempel - _Initial work_ - [https://github.com/bjoern-hempel](https://github.com/bjoern-hempel)
## B. License
This library is licensed under the MIT License - see the [LICENSE.md](/LICENSE.md) file for details