package body MATRIXOK is function "+" ( a, b: MATRIX ) return MATRIX is c: MATRIX(a'range(1),a'range(2)); begin for i in c'range(1) loop for j in c'range(2) loop c(i,j) := a(i,j) + b(i-a'first(1)+b'first(1),j-a'first(2)+b'first(2)); end loop; end loop; return c; end "+"; function "*" ( a, b: MATRIX ) return MATRIX is c: MATRIX(a'range(1),b'range(2)) := (others=>(others=>0.0)); begin for i in c'range(1) loop for j in c'range(2) loop for k in a'range(2) loop c(i,j) := c(i,j) + a(i,k) * b(k-a'first(2)+b'first(1),j); end loop; end loop; end loop; return c; end "*"; end MATRIXOK;