// matrix multiplication

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

enum
  8 N

: 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[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

to main =
  a = array 64
  b = array 64
  c = array 64
  inita initb matmul show

main
