Loop ordering in matrix multiplication

Does it matter how the nested loop is ordered in a print method ( for example when multiplying matrices)..It seems that when I change the order of the for statements in the print method below, the multiplication is incorrect ( the resultant matrix is incorrect) ...Anyone have any idea? Maybe I have an error in my code??

class Q2Code{

static final int row1 = 6;

static final int col1 = 6;

static final int row2 = 6;

static final int col2 = 6;

public static void main (String args[]){

int m1[][] = new int [row1][col1];

int m2[][]= new int [row2][col2];

int result[][]= new int [row1][col2];

build(m1);

build(m2);

multiply(m1,m2,result);

printMatrix(m1);

System.out.println();

printMatrix(m2);

System.out.println();

printMatrix(result);

}

// Create a new method - build - to initialise a matrix in a random manner

static void build(int m1[][]){

for(int j=0;j<m1.length;j++){

for(int k=0; k<m1[0].length;k++){

m1[j][k]=(int)(Math.random()*100)%5;

}

}

}

// Create a new method - multiply - to define how the resultant matrix will be calculated

static void multiply(int m1[][],int m2[][],int res[][]){

for(int k=0; k<res[0].length;k++){

for(int j=0;j<res.length;j++){

res[j][k] = product(m1,m2,j,k);

}

}

}

// Create a new method - product - that will specify how the operation of the multiplication will take place

static int product(int m1[][],int m2[][], int row, int col){

int sum=0;

//Multiply rows in matrix 1 into columns of matrix 2

for(int j=0;j<m2.length;j++){ //Note the useful guard as columns in matrix 1 must equal rows in matrix 2

sum = sum + m1[row][j]* m2[j][col];

}

return sum;

}

// Create a new method - printMatrix - which defines how a matrix will be printed

static void printMatrix(int m1[][]){

for (int j=0; j<m1.length; j++){

for (int k=0; k<m1[0].length;k++){

System.out.printf("%4d",m1[j][k]);

}

System.out.println();

}

}

}

Re: Loop ordering in matrix multiplication

Let's have an example.

Code :

int arr[][] = new int[10][5];
for(int i =0;i<10;i++){
for(int j=0;j<5;j++){
arr[i][j]=(i*j);
}
}

and........

Code :

int arr[][] = new int[10][5];
for(int i =0;i<5;i++){
for(int j=0;j<10;j++){
arr[i][j]=(i*j);
}
}

What do you say the difference is?

Re: Loop ordering in matrix multiplication

Okay, I should have said does it matter in a square matrix like in my example of 6*6? If you switch the order of the "for" statements in the **print method** within the code, it gives different results (or a result that is incorrect)..Please advise??

Re: Loop ordering in matrix multiplication

If you will talk about Matrix multiplication, yes, it does matter. Coz

123

456

789

and

987

654

321

will give different results. (As far as Mathematics say) I am not that good in Mathematics but still it's a fact that by changing the order in multiplication, they will give different results.