Experiment 4
Experiment 4
Aim-: Write a program for multiplication of two matrices using strassen's matrix multiplication
algorithm
Code-:
#include <stdio.h>
#include <stdlib.h>
int mid = n / 2;
int A11[mid][mid], A12[mid][mid], A21[mid][mid], A22[mid][mid];
int B11[mid][mid], B12[mid][mid], B21[mid][mid], B22[mid][mid];
int C11[mid][mid], C12[mid][mid], C21[mid][mid], C22[mid][mid];
int M1[mid][mid], M2[mid][mid], M3[mid][mid], M4[mid][mid], M5[mid][mid], M6[mid][mid],
M7[mid][mid];
int temp1[mid][mid], temp2[mid][mid];
B11[i][j] = B[i][j];
B12[i][j] = B[i][j + mid];
B21[i][j] = B[i + mid][j];
B22[i][j] = B[i + mid][j + mid];
}
}
// Calculating M1 to M7
add(mid, A11, A22, temp1);
add(mid, B11, B22, temp2);
strassen(mid, temp1, temp2, M1);
int main() {
int n = 4; // Size of the matrix (must be a power of 2)
int A[4][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}};
int B[4][4] = {{17, 18, 19, 20}, {21, 22, 23, 24}, {25, 26, 27, 28}, {29, 30, 31, 32}};
int C[4][4];
strassen(n, A, B, C);
return 0;
}
Output-: