// A_2,2 * (B_2,1 - B_1,1) void* calcM4(void* nothing) { double **temp1; temp1 = allocMatrix(perfectMatrix / 2); simpleSub(B21, B11, temp1, perfectMatrix / 2); simpleMM(A22, temp1, M4, perfectMatrix / 2); free(temp1); return 0; }
// A_1,1 * (B_1,2 - B_2,2) void* calcM3(void* nothing) { double **temp1; temp1 = allocMatrix(perfectMatrix / 2); simpleSub(B12, B22, temp1, perfectMatrix / 2); simpleMM(A11, temp1, M3, perfectMatrix / 2); free(temp1); return 0; }
// A_2,2 * (B_2,1 - B_1,1) void* calcM4(void* nothing) { int **temp1; temp1 = allocMatrix(N/2); simpleSub(B21, B11, temp1, N/2); simpleMM(A22, temp1, M4, N/2); free(temp1); return 0; }
// A_1,1 * (B_1,2 - B_2,2) void* calcM3(void* nothing) { int **temp1; temp1 = allocMatrix(N/2); simpleSub(B12, B22, temp1, N/2); simpleMM(A11, temp1, M3, N/2); free(temp1); return 0; }
// (A_1,2 - A_2,2) * (B_2,1 + B_2,2) void* calcM7(void *nothing) { double **temp1, **temp2; temp1 = allocMatrix(perfectMatrix / 2); temp2 = allocMatrix(perfectMatrix / 2); simpleSub(A12, A22, temp1, perfectMatrix / 2); simpleAdd(B21, B22, temp2, perfectMatrix / 2); simpleMM(temp1, temp2, M7, perfectMatrix / 2); free(temp1); free(temp2); return 0; }
// (A_2,1 - A_1,1) * (B_1,1 + B_1,2) void* calcM6(void* nothing) { double **temp1, **temp2; temp1 = allocMatrix(perfectMatrix / 2); temp2 = allocMatrix(perfectMatrix / 2); simpleSub(A21, A11, temp1, perfectMatrix / 2); simpleAdd(B11, B12, temp2, perfectMatrix / 2); simpleMM(temp1, temp2, M6, perfectMatrix / 2); free(temp1); free(temp2); return 0; }
// (A_1,2 - A_2,2) * (B_2,1 + B_2,2) void* calcM7(void *nothing) { int **temp1; int **temp2; temp1 = allocMatrix(N/2); temp2 = allocMatrix(N/2); simpleSub(A12, A22, temp1, N/2); simpleAdd(B21, B22, temp2, N/2); simpleMM(temp1, temp2, M7, N/2); free(temp1); free(temp2); return 0; }
// (A_2,1 - A_1,1) * (B_1,1 + B_1,2) void* calcM6(void* nothing) { int **temp1; int **temp2; temp1 = allocMatrix(N/2); temp2 = allocMatrix(N/2); simpleSub(A21, A11, temp1, N/2); simpleAdd(B11, B12, temp2, N/2); simpleMM(temp1, temp2, M6, N/2); free(temp1); free(temp2); return 0; }