changed LU to LUP and implemented matrix inversion

This commit is contained in:
Francesco Cozzuto
2023-03-30 01:08:14 +02:00
parent 43eb0ab212
commit 4d35b7d8de
3 changed files with 264 additions and 70 deletions
+3 -5
View File
@@ -1,13 +1,12 @@
#include <complex.h>
#include <stdbool.h>
/* ---- Operations ---- */
void lina_dot(double *A, double *B, double *C, int m, int n, int l);
void lina_add(double *A, double *B, double *C, int m, int n);
double lina_mul(double *v, int n);
bool lina_det(double *A, int n, double *det);
void lina_scale(double *A, double *B, double k, int m, int n);
void lina_transpose(double *A, double *B, int m, int n);
bool lina_inverse(double *M, double *D, int n);
void lina_conv(double *A, double *B, double *C,
int Aw, int Ah, int Bw, int Bh);
@@ -16,11 +15,10 @@ void lina_dot2(double *A, double *B, double *C,
int m, int n, int l);
bool lina_eig(double *M, double complex *E, int n);
void lina_decompLU(double *A, double *L, double *U, int n);
void lina_reallyP(int *P, double *P2, int n);
int lina_decompLUP(double *A, double *L, double *U, int *P, int n);
void lina_decompQR(double *A, double *Q, double *R, int n);
void lina_orthoNormGramSchmidt(double *A, double *Q, int n);
/* ---- Utilities ---- */
double *lina_loadMatrixFromStream(FILE *fp, int *width, int *height, char **error);
int lina_saveMatrixToStream(FILE *fp, double *A, int width, int height, char **error);