From 83e86f7edab4d56b8cccf9554449da829427de12 Mon Sep 17 00:00:00 2001 From: sr1g19 <sr1g19@soton.ac.uk> Date: Tue, 11 May 2021 04:18:54 +0000 Subject: [PATCH] Upload New File --- src/matrix/2x2matrix.c | 70 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 src/matrix/2x2matrix.c diff --git a/src/matrix/2x2matrix.c b/src/matrix/2x2matrix.c new file mode 100644 index 0000000..084b802 --- /dev/null +++ b/src/matrix/2x2matrix.c @@ -0,0 +1,70 @@ +#include "2x2matrix.h" + +_2x2Matrix add_2x2(_2x2Matrix m1, _2x2Matrix m2){ + _2x2Matrix ma = { + m1.a11 + m2.a11,m1.a12 + m2.a12, + m1.a21 + m2.a21,m1.a22 + m2.a22 + }; + + return ma; +} + +_2x2Matrix minus_2x2(_2x2Matrix m1, _2x2Matrix m2){ + _2x2Matrix ma = { + m1.a11 - m2.a11,m1.a12 - m2.a12, + m1.a21 - m2.a21,m1.a22 - m2.a22 + }; + + return ma; +} + +_2x2Matrix multiply_2x2(_2x2Matrix m1, _2x2Matrix m2){ + _2x2Matrix ma = { + (m1.a12 * m2.a21) + (m1.a11 * m2.a11),(m1.a11 * m2.a12) + (m1.a12 * m2.a22), + (m1.a22 * m2.a21) + (m1.a21 * m2.a11),(m1.a21 * m2.a12) + (m1.a22 * m2.a22) + }; + + return ma; +} + +_2x2Matrix scale_2x2(_2x2Matrix m1, float scale) { + _2x2Matrix ma = { + m1.a11 * scale,m1.a12 * scale, + m1.a21 * scale,m1.a22 * scale + }; + + return ma; +} + +float det_2x2(_2x2Matrix m){ + return (m.a11 * m.a22) - (m.a12 * m.a21); +} + +_2x2Matrix inverse_2x2(_2x2Matrix m){ + float detM = det_2x2(m); + if(detM != 0){ + _2x2Matrix specMat = {m.a22, -m.a12, + -m.a21, m.a11}; + return scale_2x2(specMat, 1.0/detM); + } + _2x2Matrix badM = {1.0f,1.0f,1.0f,1.0f}; + return badM; +} + +_2x1Matrix transpose_2x2(_2x2Matrix m1, _2x1Matrix m2){ + _2x1Matrix ma = { + (m1.a12*m2.a21) + (m1.a11*m2.a11), + (m1.a22*m2.a21) + (m1.a21*m2.a11) + }; + + return ma; +} + +unsigned char equals_2x2(_2x2Matrix m1, _2x2Matrix m2) { + if(m1.a11 == m2.a11 + && m1.a12 == m2.a12 + && m1.a21 == m2.a21 + && m1.a22 == m2.a22) + return 42; + return 0; +} -- GitLab