package MINE is type INTEGER_VECTOR is array (NATURAL RANGE <>) of integer; function DOT_PRODUCT (L, R : INTEGER_VECTOR) return integer; end MINE; package BODY MINE is function DOT_PRODUCT (L, R : INTEGER_VECTOR) return integer is variable TEMP : integer := 0; alias new_l : INTEGER_VECTOR(L'LENGTH -1 downto 0) is L; alias new_r : INTEGER_VECTOR(R'LENGTH -1 downto 0) is R; begin if (L'LENGTH /= R'LENGTH) then report "Ranges of operands are not the same" severity WARNING; return integer'LEFT; end if; for I in new_l'RANGE loop temp := temp + new_l(I)*new_r(I); end loop; return TEMP; end DOT_PRODUCT; end MINE;