summaryrefslogtreecommitdiff
path: root/matrixmul.c
diff options
context:
space:
mode:
authorrodri <rgl@antares-labs.eu>2020-02-22 09:56:09 +0000
committerrodri <rgl@antares-labs.eu>2020-02-22 09:56:09 +0000
commita39951d8f69209cfea2b7051832b851914e662ef (patch)
treee4cd1c32e5d6f531b523f6fda558cc3a5f603547 /matrixmul.c
downloadbrokentoys-a39951d8f69209cfea2b7051832b851914e662ef.tar.gz
brokentoys-a39951d8f69209cfea2b7051832b851914e662ef.tar.bz2
brokentoys-a39951d8f69209cfea2b7051832b851914e662ef.zip
now version controlled.
Diffstat (limited to 'matrixmul.c')
-rw-r--r--matrixmul.c53
1 files changed, 53 insertions, 0 deletions
diff --git a/matrixmul.c b/matrixmul.c
new file mode 100644
index 0000000..c2da272
--- /dev/null
+++ b/matrixmul.c
@@ -0,0 +1,53 @@
+#include <u.h>
+#include <libc.h>
+
+typedef double Matrix[4][4];
+
+void
+mulm(Matrix a, Matrix b)
+{
+ int i, j, k;
+ Matrix r;
+
+ for(i = 0; i < 4; i++)
+ for(j = 0; j < 4; j++){
+ r[i][j] = 0;
+ for(k = 0; k < 4; k++)
+ r[i][j] += a[i][k]*b[k][j];
+ }
+ for(i = 0; i < 4; i++)
+ for(j = 0; j < 4; j++)
+ a[i][j] = r[i][j];
+}
+
+void
+printm(Matrix m)
+{
+ int i, j;
+
+ for(i = 0; i < 4; i++){
+ for(j = 0; j < 4; j++)
+ print("%g\t", m[i][j]);
+ print("\n");
+ }
+}
+
+void
+main()
+{
+ Matrix m1 = {
+ 1, 2, -1, 0,
+ 2, 0, 1, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0
+ };
+ Matrix m2 = {
+ 3, 1, 0, 0,
+ 0, -1, 0, 0,
+ -2, 3, 0, 0,
+ 0, 0, 0, 0
+ };
+ mulm(m1, m2);
+ printm(m1);
+ exits(0);
+}