diff options
| author | hachem <im@hachem.wtf> | 2026-09-02 18:56:09 +0200 |
|---|---|---|
| committer | hachem <im@hachem.wtf> | 2026-09-02 18:56:09 +0200 |
| commit | 4d404450cd53946e56cc64c66372f0b2d439dbc6 (patch) | |
| tree | b577c728f0541552dff1c5e50ee6b5cd3011a1e0 /src/maths/matrix.h | |
| parent | cd69b3c1be9a515906954f48f7f1dbc582f8ad83 (diff) | |
c: port over matrices
Diffstat (limited to 'src/maths/matrix.h')
| -rw-r--r-- | src/maths/matrix.h | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/maths/matrix.h b/src/maths/matrix.h new file mode 100644 index 0000000..1076310 --- /dev/null +++ b/src/maths/matrix.h @@ -0,0 +1,35 @@ +#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_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); |
