# Structure Math

(* Math -- SML Basis Library *)
type real = real
val pi : real
val e : real
val sqrt : real -> real
val sin : real -> real
val cos : real -> real
val tan : real -> real
val atan : real -> real
val asin : real -> real
val acos : real -> real
val atan2 : real * real -> real
val exp : real -> real
val pow : real * real -> real
val ln : real -> real
val log10 : real -> real
val sinh : real -> real
val cosh : real -> real
val tanh : real -> real
(*
[**pi**] is the circumference of the circle with diameter 1, that is,
3.14159265358979323846.
[**e**] is the base of the natural logarithm: 2.7182818284590452354.
[**sqrt** x] is the square root of x. Raises Domain if x < 0.0.
[**sin** r] is the sine of r, where r is in radians.
[**cos** r] is the cosine of r, where r is in radians.
[**tan** r] is the tangent of r, where r is in radians. Raises Domain if
r is a multiple of pi/2.
[**atan** t] is the arc tangent of t, in the open interval ] ~pi/2, pi/2 [.
[**asin** t] is the arc sine of t, in the closed interval [ ~pi/2, pi/2 ].
Raises Domain if abs x > 1.
[**acos** t] is the arc cosine of t, in the closed interval [ 0, pi ].
Raises Domain if abs x > 1.
[**atan2**(y, x)] is the arc tangent of y/x, in the interval ] ~pi, pi ],
except that atan2(y, 0) = sign y * pi/2. The quadrant of the result
is the same as the quadrant of the point (x, y).
Hence sign(cos(atan2(y, x))) = sign x
and sign(sin(atan2(y, x))) = sign y.
[**exp** x] is e to the x'th power.
[**pow** (x, y)] is x it the y'th power, defined when
y >= 0 and (y integral or x >= 0)
or y < 0 and ((y integral and x <> 0.0) or x > 0).
We define pow(0, 0) = 1.
[**ln** x] is the natural logarithm of x (that is, with base e).
Raises Domain if x <= 0.0.
[**log10** x] is the base-10 logarithm of x. Raises Domain if x <= 0.0.
[**sinh** x] returns the hyperbolic sine of x, mathematically defined as
(exp x - exp (~x)) / 2. Raises Overflow if x is too large.
[**cosh** x] returns the hyperbolic cosine of x, mathematically defined as
(exp x + exp (~x)) / 2. Raises Overflow if x is too large.
[**tanh** x] returns the hyperbolic tangent of x, mathematically defined
as (sinh x) / (cosh x). Raises Domain if x is too large.
*)

*Moscow ML 2.00*