// matrix multiplication
// inline index to compare with matmulRC

// N = 4 simulate (i,j) = i*N + j

N = 4
a = array 16
b = array 16
c = array 16

: index i j = (i * N) + j

to inita | i j =
  for i 0 N-1
    for j 0 N-1
      a[i*N + j] = i

to initb | i j =
  for i 0 N-1
    for j 0 N-1
      b[index i j] = j

to matmul | i j s k =
  for i 0 N-1
    for j 0 N-1
      s = 0
      for k 0 N-1
        s = s + (a[index i k] * b[index k j])
      c[index i j] = s

to show | i j =
  for i 0 N-1
    for j 0 N-1
      print c[index i j] space
    nl


inita initb matmul show


