Floating-point arithmetic
val fma : float -> float -> float -> float
fma x y z
returnsx * y + z
, with a best effort for computing this expression with a single rounding, using either hardware instructions (providing full IEEE compliance) or a software emulation. Note: since software emulation of the fma is costly, make sure that you are using hardware fma support if performance matters.- since
- 4.08.0
val rem : float -> float -> float
rem a b
returns the remainder ofa
with respect tob
. The returned value isa -. n *. b
, wheren
is the quotienta /. b
rounded towards zero to an integer.
val succ : float -> float
succ x
returns the floating point number right afterx
i.e., the smallest floating-point number greater thanx
. See alsonext_after
.- since
- 4.08.0
val pred : float -> float
pred x
returns the floating-point number right beforex
i.e., the greatest floating-point number smaller thanx
. See alsonext_after
.- since
- 4.08.0
val nan : float
A special floating-point value denoting the result of an undefined operation such as
0.0 /. 0.0
. Stands for 'not a number'. Any floating-point operation withnan
as argument returnsnan
as result. As for floating-point comparisons,=
,<
,<=
,>
and>=
returnfalse
and<>
returnstrue
if one or both of their arguments isnan
.
val epsilon : float
The difference between
1.0
and the smallest exactly representable floating-point number greater than1.0
.
val is_finite : float -> bool
is_finite x
istrue
iffx
is finite i.e., not infinite and notnan
.- since
- 4.08.0
val is_infinite : float -> bool
is_infinite x
istrue
iffx
isinfinity
orneg_infinity
.- since
- 4.08.0
val is_nan : float -> bool
is_nan x
istrue
iffx
is not a number (seenan
).- since
- 4.08.0
val to_int : float -> int
Truncate the given floating-point number to an integer. The result is unspecified if the argument is
nan
or falls outside the range of representable integers.
val of_string : string -> float
Convert the given string to a float. The string is read in decimal (by default) or in hexadecimal (marked by
0x
or0X
). The format of decimal floating-point numbers is[-] dd.ddd (e|E) [+|-] dd
, whered
stands for a decimal digit. The format of hexadecimal floating-point numbers is[-] 0(x|X) hh.hhh (p|P) [+|-] dd
, whereh
stands for an hexadecimal digit andd
for a decimal digit. In both cases, at least one of the integer and fractional parts must be given; the exponent part is optional. The_
(underscore) character can appear anywhere in the string and is ignored. Depending on the execution platforms, other representations of floating-point numbers can be accepted, but should not be relied upon. RaiseFailure "float_of_string"
if the given string is not a valid representation of a float.
type fpclass = Stdlib.fpclass =
The five classes of floating-point numbers, as determined by the
classify_float
function.
val classify_float : float -> fpclass
Return the class of the given floating-point number: normal, subnormal, zero, infinite, or not a number.
val expm1 : float -> float
expm1 x
computesexp x -. 1.0
, giving numerically-accurate results even ifx
is close to0.0
.
val log1p : float -> float
log1p x
computeslog(1.0 +. x)
(natural logarithm), giving numerically-accurate results even ifx
is close to0.0
.
val acos : float -> float
Arc cosine. The argument must fall within the range
[-1.0, 1.0]
. Result is in radians and is between0.0
andpi
.
val asin : float -> float
Arc sine. The argument must fall within the range
[-1.0, 1.0]
. Result is in radians and is between-pi/2
andpi/2
.
val atan2 : float -> float -> float
atan2 y x
returns the arc tangent ofy /. x
. The signs ofx
andy
are used to determine the quadrant of the result. Result is in radians and is between-pi
andpi
.
val hypot : float -> float -> float
hypot x y
returnssqrt(x *. x + y *. y)
, that is, the length of the hypotenuse of a right-angled triangle with sides of lengthx
andy
, or, equivalently, the distance of the point(x,y)
to origin. If one ofx
ory
is infinite, returnsinfinity
even if the other isnan
.
val trunc : float -> float
trunc x
roundsx
to the nearest integer whose absolute value is less than or equal tox
.- since
- 4.08.0
val round : float -> float
round x
roundsx
to the nearest integer with ties (fractional values of 0.5) rounded away from zero, regardless of the current rounding direction. Ifx
is an integer,+0.
,-0.
,nan
, or infinite,x
itself is returned.- since
- 4.08.0
val ceil : float -> float
Round above to an integer value.
ceil f
returns the least integer value greater than or equal tof
. The result is returned as a float.
val floor : float -> float
Round below to an integer value.
floor f
returns the greatest integer value less than or equal tof
. The result is returned as a float.
val next_after : float -> float -> float
next_after x y
returns the next representable floating-point value followingx
in the direction ofy
. More precisely, ify
is greater (resp. less) thanx
, it returns the smallest (resp. largest) representable number greater (resp. less) thanx
. Ifx
equalsy
, the function returnsy
. Ifx
ory
isnan
, anan
is returned. Note thatnext_after max_float infinity = infinity
and thatnext_after 0. infinity
is the smallest denormalized positive number. Ifx
is the smallest denormalized positive number,next_after x 0. = 0.
- since
- 4.08.0
val copy_sign : float -> float -> float
copy_sign x y
returns a float whose absolute value is that ofx
and whose sign is that ofy
. Ifx
isnan
, returnsnan
. Ify
isnan
, returns eitherx
or-. x
, but it is not specified which.
val sign_bit : float -> bool
sign_bit x
istrue
iff the sign bit ofx
is set. For examplesign_bit 1.
andsignbit 0.
arefalse
whilesign_bit (-1.)
andsign_bit (-0.)
aretrue
.- since
- 4.08.0
val frexp : float -> float * int
frexp f
returns the pair of the significant and the exponent off
. Whenf
is zero, the significantx
and the exponentn
off
are equal to zero. Whenf
is non-zero, they are defined byf = x *. 2 ** n
and0.5 <= x < 1.0
.
val compare : t -> t -> int
compare x y
returns0
ifx
is equal toy
, a negative integer ifx
is less thany
, and a positive integer ifx
is greater thany
.compare
treatsnan
as equal to itself and less than any other float value. This treatment ofnan
ensures thatcompare
defines a total ordering relation.
val min : t -> t -> t
min x y
returns the minimum ofx
andy
. It returnsnan
whenx
ory
isnan
. Moreovermin (-0.) (+0.) = -0.
- since
- 4.08.0
val max : float -> float -> float
max x y
returns the maximum ofx
andy
. It returnsnan
whenx
ory
isnan
. Moreovermax (-0.) (+0.) = +0.
- since
- 4.08.0
val min_max : float -> float -> float * float
min_max x y
is(min x y, max x y)
, just more efficient.- since
- 4.08.0
val min_num : t -> t -> t
min_num x y
returns the minimum ofx
andy
treatingnan
as missing values. If bothx
andy
arenan
,nan
is returned. Moreovermin_num (-0.) (+0.) = -0.
- since
- 4.08.0
val max_num : t -> t -> t
max_num x y
returns the maximum ofx
andy
treatingnan
as missing values. If bothx
andy
arenan
nan
is returned. Moreovermax_num (-0.) (+0.) = +0.
- since
- 4.08.0
val min_max_num : float -> float -> float * float
min_max_num x y
is(min_num x y, max_num x y)
, just more efficient. Note that in particularmin_max_num x nan = (x, x)
andmin_max_num nan y = (y, y)
.- since
- 4.08.0
val hash : t -> int
The hash function for floating-point numbers.
module Array : sig ... end
module ArrayLabels : sig ... end