apparently recursive determinant calculation takes 300ms
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
This commit is contained in:
parent
36fe0921de
commit
22bac9e7c0
@ -10,6 +10,8 @@
|
||||
|
||||
#include <iostream>
|
||||
|
||||
#include "fsfw/timemanager/Stopwatch.h"
|
||||
|
||||
using namespace Math;
|
||||
|
||||
template <typename T1, typename T2 = T1>
|
||||
@ -300,6 +302,7 @@ class MathOperations {
|
||||
}
|
||||
|
||||
static float matrixDeterminant(const T1 *inputMatrix, uint8_t size) {
|
||||
/* do not use this. takes 300ms */
|
||||
float det = 0;
|
||||
T1 matrix[size][size], submatrix[size - 1][size - 1];
|
||||
for (uint8_t row = 0; row < size; row++) {
|
||||
@ -329,9 +332,11 @@ class MathOperations {
|
||||
}
|
||||
|
||||
static int inverseMatrix(const T1 *inputMatrix, T1 *inverse, uint8_t size) {
|
||||
if (MathOperations<T1>::matrixDeterminant(inputMatrix, size) == 0) {
|
||||
return 1; // Matrix is singular and not invertible
|
||||
}
|
||||
// Stopwatch stopwatch;
|
||||
// if (MathOperations<T1>::matrixDeterminant(inputMatrix, size) == 0) {
|
||||
// return 1; // Matrix is singular and not invertible
|
||||
// }
|
||||
// stopwatch.stop(true);
|
||||
T1 matrix[size][size], identity[size][size];
|
||||
// reformat array to matrix
|
||||
for (uint8_t row = 0; row < size; row++) {
|
||||
|
Loading…
Reference in New Issue
Block a user