File : angles-trigonometric_functions.adb


------------------------------------------------------------------------------
--
--  package Angles.Trigonometric_Functions (body)
--
------------------------------------------------------------------------------
--  Update information:
--
--  1995.12.26 (Jacob Sparre Andersen)
--    Written.
--
--  1995.12.27 (Jacob Sparre Andersen)
--   Added co-tangens function and inverse trigonometric functions.
--
--  1996.06.25 (Jacob Sparre Andersen)
--    Reformatted the header.
--    Corrected a few bugs.
--
--  (Insert additional update information above this line.)
------------------------------------------------------------------------------

with Ada.Numerics.Generic_Elementary_Functions;

package body Angles.Trigonometric_Functions is

   ---------------------------------------------------------------------------
   --  package Elementary_Functions:

   package Elementary_Functions is new
     Ada.Numerics.Generic_Elementary_Functions(Float_Type => Scalar);

   ---------------------------------------------------------------------------
   --  Trigonometric functions:

   ---------------------------------------------------------------------
   --  function Sin:

   function Sin (Value : in Angle) return Scalar is

   begin --  Sin
      return Elementary_Functions.Sin (Value.Radians);
   end Sin;
   
   ---------------------------------------------------------------------
   --  function Cos:

   function Cos (Value : in Angle) return Scalar is

   begin --  Cos
      return Elementary_Functions.Cos (Value.Radians);
   end Cos;
   
   ---------------------------------------------------------------------
   --  function Tan:

   function Tan (Value : in Angle) return Scalar is

   begin --  Tan
      return Elementary_Functions.Tan (Value.Radians);
   end Tan;
   
   ---------------------------------------------------------------------
   --  function Cot:

   function Cot (Value : in Angle) return Scalar is

   begin --  Cot
      return Elementary_Functions.Cot (Value.Radians);
   end Cot;
   
   ---------------------------------------------------------------------------
   --  Inverse trigonometric functions:

   ---------------------------------------------------------------------
   --  function Inverse_Sin:

   function Inverse_Sin (X : in Scalar) return Angle is

   begin -- Inverse_Sin
      return (Radians => Elementary_Functions.ArcSin (X));
   end Inverse_Sin;
   
   ---------------------------------------------------------------------
   --  function Inverse_Cos:

   function Inverse_Cos (X : in Scalar) return Angle is

   begin --  Inverse_Cos
      return (Radians => Elementary_Functions.ArcCos (X));
   end Inverse_Cos;
   
   ---------------------------------------------------------------------
   --  function Inverse_Tan:

   function Inverse_Tan (X : in Scalar) return Angle is

   begin --  Inverse_Tan
      return (Radians => Elementary_Functions.ArcTan (X));
   end Inverse_Tan;

   ---------------------------------------------------------------------
   --  function Inverse_Cot:

   function Inverse_Cot (X : in Scalar) return Angle is

   begin --  Inverse_Cot
      return (Radians => Elementary_Functions.ArcCot (X));
   end Inverse_Cot;

   ---------------------------------------------------------------------------

end Angles.Trigonometric_Functions;