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

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

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

to inita | i j =
  for i 0 N-1
    for j 0 N-1
       a[index i 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[i*N+k] * b[k*N+j])
      c[i*N+j] = s

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

to main | s =
  s = N * N 
  a = array s 
  b = array s
  c = array s
  inita initb matmul show
