The MATH
signature
The signature MATH specifies basic mathematical constants, the square root function, and trigonometric, hyperbolic, exponential and logarithmic functions based on a real type. The functions defined here have roughly the same semantics as their counterparts in ISO C's math.h
.
The top-level structure Math provides these functions for the default real type Real.real.
In the functions below, unless specified otherwise, if any argument is a NaN, the return value is a NaN. In a list of rules specifying the behavior of a function in special cases, the first matching rule defines the semantics.
Synopsis
signature MATH
structure Math
: MATH
Interface
type real
val pi : real
val e : real
val sqrt : real -> real
val sin : real -> real
val cos : real -> real
val tan : real -> real
val asin : real -> real
val acos : real -> real
val atan : 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
Description
-
type real
-
-
pi
-
denotes the constant pi (3.141592653...).
-
e
-
denotes the base of the natural logarithm e (2.718281828...).
-
sqrt x
-
returns the square root of x.
sqrt (~0) = ~0
. If x < 0, returns NaN.
-
sin x
cos x
tan x
-
return the sine, cosine and tangent, respectively, of x, measured in radians. If x is an infinity, return NaN. Note that tan will produce infinities at various finite values, roughly corresponding to the singularities of the tangent function.
-
asin x
acos x
-
return the arc sine and arc cosine, respectively, of x. asin is the inverse of sin. Its result is guaranteed to be in the closed interval [-pi/2,pi/2]. acos is the inverse of cos. Its result is guaranteed to be in the closed interval [0,pi]. If the magnitude of x exceeds 1.0, they return NaN.
-
atan x
-
returns the arc tangent of x. atan is the inverse of tan. For finite arguments, the result is guaranteed to be in the open interval (-pi/2,pi/2). If x is +infinity, it returns pi/2; if x is -infinity, it returns -pi/2.
-
atan2 (y, x)
-
returns the arc tangent of
(y / x)
in the closed interval [-pi,pi], corresponding to angles of +-180 degrees. The quadrant of the resulting angle is determined using the signs of both x and y, and is the same as the quadrant of the point (y,x). When x = 0, this corresponds to an angle of 90 degrees, and the result issign
(y * pi/2). It holds thatsign
(cos
(atan2
(y,x))) =sign
xsign
(sin
(atan2
(y,x))) =sign
yRules for exceptional cases are specified in the following table.
y x atan2(y,x) +-0 x, 0 < x +-0 +-0 +0 +-0 +-0 x, x < 0 +-pi +-0 -0 +-pi y, 0 < y +-0 pi/2 y, y < 0 +-0 -pi/2 +-y, finite y > 0 +infinity +-0 +-y, finite y > 0 -infinity +-pi +-infinity x, finite x +-pi/2 +-infinity +infinity +-pi/4 +-infinity -infinity +-3pi/4
-
exp x
-
returns e(x), i.e., e raised to the xth power. If x is +infinity, it returns +infinity; if x is -infinity, it returns 0.
-
pow (x, y)
-
returns x(y), i.e., x raised to the yth power. For finite x and y, this is well-defined when x > 0, or when x < 0 and y is integral. Rules for exceptional cases are specified below.
x y pow(x,y) x, including NaN 0 1 |x| > 1 +infinity +infinity |x| < 1 +infinity +0 |x| > 1 -infinity +0 |x| < 1 -infinity +infinity +infinity y > 0 +infinity +infinity y < 0 +0 -infinity y > 0, odd integer -infinity -infinity y > 0, not odd integer +infinity -infinity y < 0, odd integer -0 -infinity y < 0, not odd integer +0 x NaN NaN NaN y <> 0 NaN +-1 +-infinity NaN finite x < 0 finite non-integer y NaN +-0 y < 0, odd integer +-infinity +-0 finite y < 0, not odd integer +infinity +-0 y > 0, odd integer +-0 +-0 y > 0, not odd integer +0
-
ln x
log10 r
-
returns the natural logarithm (base e) and decimal logarithm (base 10), respectively, of x. If x < 0, return NaN; if x = 0, return -infinity; if x is infinity, return infinity.
-
sinh x
cosh x
tanh x
-
return the hyperbolic sine, hyperbolic cosine and hyperbolic tangent, respectively, of x, that is, the values (e(x) - e(-x)) / 2, (e(x) + e(-x)) / 2 and
(sinh x) / (cosh x)
.For infinities, we have
sinh
+-infinity = +-infinity,cosh
+-infinity = +infinity andtanh
+-infinity = +-1.
See Also
REAL