diff --git a/src/matrix/3x3matrix.h b/src/matrix/3x3matrix.h
new file mode 100644
index 0000000000000000000000000000000000000000..7b4dc346ce0ca43cf5db0e44d2c5516c50972072
--- /dev/null
+++ b/src/matrix/3x3matrix.h
@@ -0,0 +1,42 @@
+#ifndef _3X3MATRIX_H
+#define _3X3MATRIX_H
+#include <stdint.h>
+
+#define _mA a11
+#define _mB a12
+#define _mC a13
+#define _mD a21
+#define _mE a22
+#define _mF a23
+#define _mG a31
+#define _mH a32
+#define _mI a33
+
+typedef struct{
+    float a11,a12,a13,
+        a21,a22,a23,
+        a31,a32,a33;
+}_3x3Matrix;
+
+typedef struct{
+    float a11,
+        a21,
+        a31;
+}_3x1Matrix;
+
+_3x3Matrix add_3x3(_3x3Matrix m1, _3x3Matrix m2);
+_3x3Matrix minus_3x3(_3x3Matrix m1, _3x3Matrix m2);
+_3x3Matrix multiply_3x3(_3x3Matrix m1, _3x3Matrix m2);
+_3x3Matrix scale_3x3(_3x3Matrix m1, float scale);
+float det_3x3(_3x3Matrix m);
+_3x3Matrix inverse_3x3(_3x3Matrix m);
+_3x1Matrix add_3x1(_3x1Matrix m1, _3x1Matrix m2);
+_3x1Matrix minus_3x1(_3x1Matrix m1, _3x1Matrix m2);
+_3x3Matrix combine(_3x1Matrix m1, _3x1Matrix m2, _3x1Matrix m3);
+_3x1Matrix transpose_3x3(_3x3Matrix m1, _3x1Matrix m2);
+unsigned char equals_3x3(_3x3Matrix m1, _3x3Matrix m2);
+_3x1Matrix crossProduct(_3x1Matrix m1, _3x1Matrix m2);
+
+
+#endif //_3X3MATRIX_H
+