1. generic 
  2.  
  3.    type Real is digits <>; 
  4.    type Coordinates is (<>); 
  5.  
  6. package Vectors_xD is 
  7.  
  8.    pragma Elaborate_Body; 
  9.  
  10.    type Vector_xD is array (Coordinates) of Real; 
  11.  
  12.    Zero_Vector_xD : constant Vector_xD := (others => 0.0); 
  13.  
  14.    function Image (V : Vector_xD) return String; 
  15.  
  16.    function Norm (V : Vector_xD) return Vector_xD; 
  17.  
  18.    function "*" (Scalar : Real; V : Vector_xD) return Vector_xD; 
  19.    function "*" (V : Vector_xD; Scalar : Real) return Vector_xD; 
  20.    function "/" (V : Vector_xD; Scalar : Real) return Vector_xD; 
  21.  
  22.    function "*" (V_Left, V_Right : Vector_xD) return Real; 
  23.  
  24.    function Angle_Between (V_Left, V_Right : Vector_xD) return Real; 
  25.  
  26.    function "+" (V_Left, V_Right : Vector_xD) return Vector_xD; 
  27.    function "-" (V_Left, V_Right : Vector_xD) return Vector_xD; 
  28.  
  29.    function "abs" (V : Vector_xD) return Real; 
  30.  
  31. end Vectors_xD;