diff options
| author | hachem <im@hachem.wtf> | 2026-09-06 18:53:09 +0200 |
|---|---|---|
| committer | hachem <im@hachem.wtf> | 2026-09-06 18:53:09 +0200 |
| commit | 565af48c1eff190ce836293a0eda75c0dc695c82 (patch) | |
| tree | bb07b022eec34450651eaea07b474d581e936e17 /include/maths/matrix.h | |
| parent | 4d404450cd53946e56cc64c66372f0b2d439dbc6 (diff) | |
refactor: split public headers into include/
Diffstat (limited to 'include/maths/matrix.h')
| -rw-r--r-- | include/maths/matrix.h | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/include/maths/matrix.h b/include/maths/matrix.h new file mode 100644 index 0000000..c4e5530 --- /dev/null +++ b/include/maths/matrix.h @@ -0,0 +1,36 @@ +#pragma once + +#include <stddef.h> + +#include "maths/complex.h" +#include "maths/vector.h" + +struct PsiMatrix +{ + struct PsiComplex *data; + size_t rows; + size_t cols; +}; + +struct PsiMatrix psi_new_matrix(size_t rows, size_t cols); +struct PsiMatrix psi_new_matrix_from(const struct PsiComplex *data, size_t rows, size_t cols); +struct PsiMatrix psi_identity_matrix(size_t size); +struct PsiMatrix psi_clone_matrix(struct PsiMatrix m); +void psi_free_matrix(struct PsiMatrix *m); + +#define psi_matrix(rows, cols, ...) \ + psi_new_matrix_from((struct PsiComplex[]){ __VA_ARGS__ }, rows, cols) + +struct PsiComplex psi_get_matrix(struct PsiMatrix m, size_t row, size_t col); +void psi_set_matrix(struct PsiMatrix *m, size_t row, size_t col, struct PsiComplex value); + +struct PsiMatrix psi_dot_matrix(struct PsiMatrix a, struct PsiMatrix b); +struct PsiMatrix psi_kronecker_matrix(struct PsiMatrix a, struct PsiMatrix b); +struct PsiMatrix psi_transpose_matrix(struct PsiMatrix m); +struct PsiMatrix psi_add_matrix(struct PsiMatrix a, struct PsiMatrix b); +struct PsiMatrix psi_sub_matrix(struct PsiMatrix a, struct PsiMatrix b); +struct PsiMatrix psi_scale_matrix(struct PsiMatrix m, struct PsiComplex scalar); + +struct PsiMatrix psi_matrix_from_vector(struct PsiVector v); +struct PsiVector psi_vector_from_matrix(struct PsiMatrix m, enum PsiVectorKind kind); +struct PsiVector psi_mul_vector_matrix(struct PsiVector v, struct PsiMatrix m); |
