mat_t* p1 = mat_alloc(0, 0, n, NULL);
mat_t* p2 = mat_alloc(0, 0, n, NULL);
mat_t* p3 = mat_alloc(0, 0, n, NULL);
- mat_t* p4 = mat_alloc(0, 0, n, NULL);
// tmp mat t0
mat_t* t0 = mat_alloc(0, 0, n, NULL);
// p3 = (c + d) * e
mat_add(t0, c, d);
mat_mul_strassen(p3, t0, e, n_min);
+
+ mat_sub(u, p1, p3);
+ mat_free(p1);
+
// p4 = d * (g - e)
+ mat_t* p4 = mat_alloc(0, 0, n, NULL);
mat_sub(t0, g, e);
mat_mul_strassen(p4, d, t0, n_min);
// t = p3 + p4
mat_sub(r, p4, p2);
mat_free(p2);
+ mat_free(p3);
mat_free(p4);
- mat_sub(u, p1, p3);
- mat_free(p1);
- mat_free(p3);
// tmp mat t1
mat_t* t1 = mat_alloc(0, 0, n, NULL);