mat_add(), mat_sub()
authoryu.dongliang <18588496441@163.com>
Sun, 1 Sep 2024 19:24:38 +0000 (03:24 +0800)
committeryu.dongliang <18588496441@163.com>
Sun, 1 Sep 2024 19:24:38 +0000 (03:24 +0800)
mat.c

diff --git a/mat.c b/mat.c
index 64c9f99e90474fab951663b270e7b5964e11b5a3..c3e6ba857fcd6dfe3b4e0524054a05851f6d840e 100644 (file)
--- a/mat.c
+++ b/mat.c
@@ -90,14 +90,13 @@ void mat_add(mat_t* m, mat_t* m0, mat_t* m1)
        int n = m->n;
 
        for (i = 0; i < n; i++) {
-               for (j = 0; j < n; j++) {
 
-                       int ij0 = (i + m0->i) * m0->b->n + (j + m0->j);
-                       int ij1 = (i + m1->i) * m1->b->n + (j + m1->j);
-                       int ij  = (i + m->i)  * m->b->n  + (j + m->j);
+               int* d0 = m0->b->data + (i + m0->i) * m0->b->n + m0->j;
+               int* d1 = m1->b->data + (i + m1->i) * m1->b->n + m1->j;
+               int* d  = m ->b->data + (i + m->i)  * m->b->n  + m->j;
 
-                       m->b->data[ij] = m0->b->data[ij0] + m1->b->data[ij1];
-               }
+               for (j = 0; j < n; j++)
+                       d[j] = d0[j] + d1[j];
        }
 }
 
@@ -111,14 +110,13 @@ void mat_sub(mat_t* m, mat_t* m0, mat_t* m1)
        int n = m->n;
 
        for (i = 0; i < n; i++) {
-               for (j = 0; j < n; j++) {
 
-                       int ij0 = (i + m0->i) * m0->b->n + (j + m0->j);
-                       int ij1 = (i + m1->i) * m1->b->n + (j + m1->j);
-                       int ij  = (i + m->i)  * m->b->n  + (j + m->j);
+               int* d0 = m0->b->data + (i + m0->i) * m0->b->n + m0->j;
+               int* d1 = m1->b->data + (i + m1->i) * m1->b->n + m1->j;
+               int* d  = m ->b->data + (i + m->i)  * m->b->n  + m->j;
 
-                       m->b->data[ij] = m0->b->data[ij0] - m1->b->data[ij1];
-               }
+               for (j = 0; j < n; j++)
+                       d[j] = d0[j] - d1[j];
        }
 }