I have an assignment where i have to make a matrix multiplication program more efficient so i wrote a method called multiply matrix but after i actually do the matrix multiplication in a loop the final product matrix is all zero but, if i check while in the loop its not zero
int** multiply_matrices(int** matrix1, int** matrix2, int m1, int n1, int m2, int n2) {
if(n1 != m2) {
printf("error\n");
return NULL;
}
int i = 0;
int j = 0;
int k = 0;
int** product = (int**) malloc(m1 * sizeof(int*));
for(i = 0; i<m1; i++){
product[i] = (int*) malloc(n2 * sizeof(int));
for(j = 0; j<n1; j++){
product[i][j] = 0;
}
}
*
for(i = 0; i < m1; i ++) {
product[i] = (int*) malloc(n2 * sizeof(int));
int chg = 0;
while(j<n2){
if(k == n1 ){
//chg = 0;
k = 0;
//printf("%d\n", j);
j++;
}
product[i][j] += matrix1[i][k] * matrix2[k][j];
printf("%d \n", product[i][j]);
k++;
chg = 1;
}
}
return product;
}