// Matrix multiplication fn multiply(a: [[i64]], b: [[i64]], c: [[i64]]) -> () { let mut i = 0; while (i < a.length) { let mut j = 0; while (j < c[i].length) { c[i][j] = 0; let mut k = 0; while (k < a[i].length) { c[i][j] = c[i][j] + a[i][k] * b[k][j]; k = k + 1; } j = j + 1; } i = i + 1; } } fn init_matrix(m: [[i64]]) -> () { let mut i = 0; while (i < m.length) { let mut j = 0; while (j < m[i].length) { m[i][j] = random(m.length*2); j = j + 1; } i = i + 1; } } fn print_matrix(m: [[i64]]) -> () { let mut i = 0; while (i < m.length) { let mut j = 0; while (j< m[i].length){ printi64(m[i][j]); print(" "); j = j + 1; } print("\n"); i = i + 1; } println(""); } fn main(args: [String]) -> () { if (args.length != 3) { println("Invalid number of parameters."); exit(1); } let m = parsei64(args[0], 0); let n = parsei64(args[1], 0); let p = parsei64(args[2], 0); if(m < 1){ println("Invalid value for parameter `m'"); exit(1); } if(n < 1){ println("Invalid value for parameter `n'"); exit(1); } if(p < 1){ println("Invalid value for parameter `p'"); exit(1); } let a = [[0]; m]; let b = [[0]; n]; let c = [[0]; m]; let mut i = 0; while (i < m) { a[i] = [0; n]; i = i + 1; } let mut i = 0; while (i < n) { b[i] = [0; p]; i = i + 1; } let mut i = 0; while (i < m) { c[i] = [0; p]; i = i + 1; } init_matrix(a); println("Matrix A:"); print_matrix(a); init_matrix(b); println("Matrix B:"); print_matrix(b); multiply(a, b, c); println("Matrix C = A x B:"); print_matrix(c); }