class interface P_MATH

feature(s) from P_MATH
   --  Math

   e: REAL

   int_sqrt (n: INTEGER): INTEGER
      --  Calculate integer square root.
      --  Time: O(sqrt(N)) 

      require
         postive: n >= 0
      ensure
         ok: Result ^ 2 <= n and (Result + 1) ^ 2 > n

   square_root (x: DOUBLE): DOUBLE
      --  Square root (floating point).
      --  Time: O(1) for x in 0.001..100, O(n) for x = a.10^n, slow in any case.

      require
         positive: x >= 0
      ensure
         positive: Result >= 0; --  (Result*Result ~= x)
         done: 

feature(s) from P_MATH
   --  Trigonometry

   Pi_value: DOUBLE

   sine (x: DOUBLE): DOUBLE
      --  Portable sine.
      --  Time: O(1) but far too slow.


   cosine (x: DOUBLE): DOUBLE
      --  Portable cosine.
      --  Time: same as sine.



end of P_MATH