aboutsummaryrefslogtreecommitdiff
path: root/include/maths/matrix.h
diff options
context:
space:
mode:
authorhachem <im@hachem.wtf>2026-09-06 18:53:09 +0200
committerhachem <im@hachem.wtf>2026-09-06 18:53:09 +0200
commit565af48c1eff190ce836293a0eda75c0dc695c82 (patch)
treebb07b022eec34450651eaea07b474d581e936e17 /include/maths/matrix.h
parent4d404450cd53946e56cc64c66372f0b2d439dbc6 (diff)
refactor: split public headers into include/
Diffstat (limited to 'include/maths/matrix.h')
-rw-r--r--include/maths/matrix.h36
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);