Module Stdlib_stable.Float32Source
Floating-point arithmetic.
OCaml's floating-point numbers follow the IEEE 754 standard, using single precision (32 bits) numbers. Floating-point operations never raise an exception on overflow, underflow, division by zero, etc. Instead, special IEEE numbers are returned as appropriate, such as infinity for 1.0s /. 0.0s, neg_infinity for -1.0s /. 0.0s, and nan ('not a number') for 0.0s /. 0.0s. These special numbers then propagate through floating-point computations as expected: for instance, 1.0s /. infinity is 0.0s, basic arithmetic operations (+., -., *., /.) with nan as an argument return nan, ...
An alias for the type of 32-bit floating-point numbers.
fma x y z returns x * 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.
rem a b returns the remainder of a with respect to b. The returned value is a -. n *. b, where n is the quotient a /. b rounded towards zero to an integer.
succ x returns the floating point number right after x i.e., the smallest floating-point number greater than x. See also next_after.
pred x returns the floating-point number right before x i.e., the greatest floating-point number smaller than x. See also next_after.
A special floating-point value denoting the result of an undefined operation such as 0.0s /. 0.0s. Stands for 'not a number'. Any floating-point operation with nan as argument returns nan as result, unless otherwise specified in IEEE 754 standard. As for floating-point comparisons, =, <, <=, > and >= return false and <> returns true if one or both of their arguments is nan.
Equivalent to quiet_nan.
Signaling NaN. The corresponding signals do not raise OCaml exception, but the value can be useful for interoperability with C libraries.
The smallest positive, non-zero, non-denormalized value of type float32.
The difference between 1.0s and the smallest exactly representable floating-point number greater than 1.0s.
is_finite x is true if and only if x is finite i.e., not infinite and not nan.
is_infinite x is true if and only if x is infinity or neg_infinity.
is_nan x is true if and only if x is not a number (see nan).
Convert a 64-bit float to the nearest representable 32-bit float.
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.
Convert the given 64-bit integer to the nearest representable 32-bit float. The amd64 OxCaml compiler translates this call to CVTSI2SS.
Convert the given 32-bit float to a 64-bit integer, discarding the fractional part (truncate towards 0). If the truncated floating-point number is outside the range [Int64.min_int, Int64.max_int], no exception is raised, and an unspecified, platform-dependent integer is returned. The amd64 OxCaml compiler translates this call to CVTTSS2SI.
Convert a 32-bit integer to a 32-bit float, preserving the value's bit pattern. The amd64 OxCaml compiler translates this call to MOVD.
Convert a 32-bit float to a 32-bit integer, preserving the value's bit pattern. The amd64 OxCaml compiler translates this call to MOVD.
Convert the given string to a float. The string is read in decimal (by default) or in hexadecimal (marked by 0x or 0X). The format of decimal floating-point numbers is [-] dd.ddd (e|E) [+|-] dd , where d stands for a decimal digit. The format of hexadecimal floating-point numbers is [-] 0(x|X) hh.hhh (p|P) [+|-] dd , where h stands for an hexadecimal digit and d 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.
Same as of_string, but returns None instead of raising.
Return a string representation of a floating-point number.
This conversion does not involve a loss of precision.
The five classes of floating-point numbers, as determined by the classify_float function.
Return the class of the given floating-point number: normal, subnormal, zero, infinite, or not a number.
Square root. The amd64 OxCaml compiler translates this call to SQRTSS.
expm1 x computes exp x -. 1.0, giving numerically-accurate results even if x is close to 0.0.
log1p x computes log(1.0 +. x) (natural logarithm), giving numerically-accurate results even if x is close to 0.0.
Arc cosine. The argument must fall within the range [-1.0, 1.0]. Result is in radians and is between 0.0 and pi.
Arc sine. The argument must fall within the range [-1.0, 1.0]. Result is in radians and is between -pi/2 and pi/2.
atan2 y x returns the arc tangent of y /. x. The signs of x and y are used to determine the quadrant of the result. Result is in radians and is between -pi and pi.
hypot x y returns sqrt(x *. x +. y *. y), that is, the length of the hypotenuse of a right-angled triangle with sides of length x and y, or, equivalently, the distance of the point (x,y) to origin. If one of x or y is infinite, returns infinity even if the other is nan.
Hyperbolic arc cosine. The argument must fall within the range [1.0, inf]. Result is in radians and is between 0.0 and inf.
Hyperbolic arc sine. The argument and result range over the entire real line. Result is in radians.
Hyperbolic arc tangent. The argument must fall within the range [-1.0, 1.0]. Result is in radians and ranges over the entire real line.
Error function. The argument ranges over the entire real line. The result is always within [-1.0, 1.0].
Complementary error function (erfc x = 1 - erf x). The argument ranges over the entire real line. The result is always within [-1.0, 1.0].
trunc x rounds x to the nearest integer whose absolute value is less than or equal to x.
round x rounds x to the nearest integer with ties (fractional values of 0.5s) rounded away from zero, regardless of the current rounding direction. If x is an integer, +0.s, -0.s, nan, or infinite, x itself is returned.
Round above to an integer value. ceil f returns the least integer value greater than or equal to f. The result is returned as a float32.
Round below to an integer value. floor f returns the greatest integer value less than or equal to f. The result is returned as a float32.
next_after x y returns the next representable floating-point value following x in the direction of y. More precisely, if y is greater (resp. less) than x, it returns the smallest (resp. largest) representable number greater (resp. less) than x. If x equals y, the function returns y. If x or y is nan, a nan is returned. Note that next_after max_float infinity = infinity and that next_after 0.s infinity is the smallest denormalized positive number. If x is the smallest denormalized positive number, next_after x 0.s = 0.s
copy_sign x y returns a float whose absolute value is that of x and whose sign is that of y. If x is nan, returns nan. If y is nan, returns either x or -. x, but it is not specified which.
sign_bit x is true if and only if the sign bit of x is set. For example sign_bit 1. and signbit 0. are false while sign_bit (-1.) and sign_bit (-0.) are true.
frexp f returns the pair of the significant and the exponent of f. When f is zero, the significant x and the exponent n of f are equal to zero. When f is non-zero, they are defined by f = x *. 2 ** n and 0.5 <= x < 1.0.
modf f returns the pair of the fractional and integral part of f.
compare x y returns 0 if x is equal to y, a negative integer if x is less than y, and a positive integer if x is greater than y. compare treats nan as equal to itself and less than any other float value. This treatment of nan ensures that compare defines a total ordering relation.
The equal function for floating-point numbers, compared using compare.
min x y returns the minimum of x and y. It returns nan when x or y is nan. Moreover min (-0.s) (+0.s) = -0.s
max x y returns the maximum of x and y. It returns nan when x or y is nan. Moreover max (-0.s) (+0.s) = +0.s
min_max x y is (min x y, max x y), just more efficient.
min_num x y returns the minimum of x and y treating nan as missing values. If both x and y are nan, nan is returned. Moreover min_num (-0.s) (+0.s) = -0.s
max_num x y returns the maximum of x and y treating nan as missing values. If both x and y are nan nan is returned. Moreover max_num (-0.s) (+0.s) = +0.s
min_max_num x y is (min_num x y, max_num x y), just more efficient. Note that in particular min_max_num x nan = (x, x) and min_max_num nan y = (y, y).
Rounds a float32 to an int64 using the current rounding mode. The default rounding mode on amd64 is "round half to even", and we expect that no program will change the mode. The default mode may differ on other platforms. If the argument is NaN or infinite or if the rounded value cannot be represented, then the result is unspecified. The amd64 OxCaml compiler translates this call to CVTSS2SI.
Rounds a float32 to an integer float32 using the current rounding mode. The default rounding mode on amd64 is "round half to even", and we expect that no program will change the mode. The default mode may differ on other platforms. The amd64 OxCaml compiler translates this call to ROUNDSS.
Rounds a float32 down to the next integer float32 toward negative infinity. The amd64 OxCaml compiler translates this call to ROUNDSS.
Rounds a float32 up to the next integer float32 toward positive infinity. The amd64 OxCaml compiler translates this call to ROUNDSS.
Rounds a float32 to the next integer float32 toward zero. The amd64 OxCaml compiler translates this call to ROUNDSS.
A seeded hash function for floats, with the same output value as Hashtbl.seeded_hash. This function allows this module to be passed as argument to the functor Hashtbl.MakeSeeded.
An unseeded hash function for floats, with the same output value as Hashtbl.hash. This function allows this module to be passed as argument to the functor Hashtbl.Make.