TYPE  Matrix_type is array(integer range <>, integer range <>) of integer;

FUNCTION “+” (M, N : Matrix_type) RETURN Matrix_type IS

L1 : integer := M’FIRST(1);
U1 : integer := M’LAST(1);
L2 : integer := M’FIRST(2);
U2 : integer := M’LAST(2);
Temp : Matrix_type (L1..U1, L2..U2);
  BEGIN
IF L1 /= N’FIRST(1) OR U1 /= N’LAST(1) OR
            L2 /= N’FIRST(2) OR U2 /= N’LAST(2)
THEN  Raise Constraint_error;
END  IF;

FOR  J  IN  L1..U1  LOOP

FOR  K  IN  L2..U2  LOOP
Temp(J, K) := M(J, K) + N(J, K);
END LOOP;
END LOOP;
RETURN  Temp;