I have a Java method that multiplies 2 matrices. I have tried to port the same method in C without success.
Here is my attempt to write a method that should multiply 2 matrices in C:
float **multiply(int m1, int n1, float Xy1[], int m2, int n2, float Xy2[]) {
    int i, j, k;
    float **result = allocate_mem_mtrx(m1, n2);
    for (i = 0; i < m1; i++) {
        for (j = 0; j < n2; j++) {
            for (k = 0; k < n1; k++) {
                result[i][j] = result[i][j] + Xy1[i][k] * Xy2[k][j];
            }
        }
    }
    return result;
}
At this line
result[i][j] = result[i][j] + Xy1[i][k] * Xy2[k][j];
I receive the error:
subscripted value is neither array nor pointer nor vector
Clearly my syntax is wrong, but I haven't understood how I should fix this line of code, to solve my problem.
In my main I have:
float matrix1[3][2] = {{0, 1}, {3, 4}, {6, 7}};
float matrix2[2][3] = {{5, 1, 2}, {3, 4, 5}}; 
with the actual signature I invoke the method in this way:
multiply(3, 2, &matrix1, 2, 3, &matrix2);
My original Java method
public static int[][] multiply(int[][] Xy1, int[][] Xy2) {
    int rowsInXy1 = Xy1.length;
    int columnsInXy1 = Xy1[0].length; // same as rows in B
    int columnsInXy2 = Xy2.length;
    int[][] result = new int[rowsInXy1][columnsInXy2];
    for (int i = 0; i < rowsInXy1; i++) {
        for (int j = 0; j < columnsInXy2; j++) {
            for (int k = 0; k < columnsInXy1; k++) {
                result[i][j] = result[i][j] + Xy1[i][k] * Xy2[k][j];
            }
        }
    }
    return result;
}
 
     
     
     
     
    