moonpool/dev/ocaml/Stdlib/Float/index.html

2 lines
No EOL
41 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Float (ocaml.Stdlib.Float)</title><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> <a href="../../index.html">ocaml</a> &#x00BB; <a href="../index.html">Stdlib</a> &#x00BB; Float</nav><header class="odoc-preamble"><h1>Module <code><span>Stdlib.Float</span></code></h1><p>Floating-point arithmetic.</p><p>OCaml's floating-point numbers follow the IEEE 754 standard, using double precision (64 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 <code>infinity</code> for <code>1.0 /. 0.0</code>, <code>neg_infinity</code> for <code>-1.0 /. 0.0</code>, and <code>nan</code> ('not a number') for <code>0.0 /. 0.0</code>. These special numbers then propagate through floating-point computations as expected: for instance, <code>1.0 /. infinity</code> is <code>0.0</code>, basic arithmetic operations (<code>+.</code>, <code>-.</code>, <code>*.</code>, <code>/.</code>) with <code>nan</code> as an argument return <code>nan</code>, ...</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.07.0</li></ul></header><div class="odoc-content"><div class="odoc-spec"><div class="spec value anchored" id="val-zero"><a href="#val-zero" class="anchor"></a><code><span><span class="keyword">val</span> zero : float</span></code></div><div class="spec-doc"><p>The floating point 0.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.08.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-one"><a href="#val-one" class="anchor"></a><code><span><span class="keyword">val</span> one : float</span></code></div><div class="spec-doc"><p>The floating-point 1.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.08.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-minus_one"><a href="#val-minus_one" class="anchor"></a><code><span><span class="keyword">val</span> minus_one : float</span></code></div><div class="spec-doc"><p>The floating-point -1.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.08.0</li></ul></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-neg"><a href="#val-neg" class="anchor"></a><code><span><span class="keyword">val</span> neg : <span>float <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p>Unary negation.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-add"><a href="#val-add" class="anchor"></a><code><span><span class="keyword">val</span> add : <span>float <span class="arrow">&#45;&gt;</span></span> <span>float <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p>Floating-point addition.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-sub"><a href="#val-sub" class="anchor"></a><code><span><span class="keyword">val</span> sub : <span>float <span class="arrow">&#45;&gt;</span></span> <span>float <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p>Floating-point subtraction.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-mul"><a href="#val-mul" class="anchor"></a><code><span><span class="keyword">val</span> mul : <span>float <span class="arrow">&#45;&gt;</span></span> <span>float <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p>Floating-point multiplication.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-div"><a href="#val-div" class="anchor"></a><code><span><span class="keyword">val</span> div : <span>float <span class="arrow">&#45;&gt;</span></span> <span>float <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p>Floating-point division.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-fma"><a href="#val-fma" class="anchor"></a><code><span><span class="keyword">val</span> fma : <span>float <span class="arrow">&#45;&gt;</span></span> <span>float <span class="arrow">&#45;&gt;</span></span> <span>float <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p><code>fma x y z</code> returns <code>x * y + z</code>, with a best effort for computing this expression with a single rounding, using either hardware instructions (providing full IEEE compliance) or a software emulation.</p><p>On 64-bit Cygwin, 64-bit mingw-w64 and MSVC 2017 and earlier, this function may be emulated owing to known bugs on limitations on these platforms. Note: since software emulation of the fma is costly, make sure that you are using hardware fma support if performance matters.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.08.0</li></ul></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-rem"><a href="#val-rem" class="anchor"></a><code><span><span class="keyword">val</span> rem : <span>float <span class="arrow">&#45;&gt;</span></span> <span>float <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p><code>rem a b</code> returns the remainder of <code>a</code> with respect to <code>b</code>. The returned value is <code>a -. n *. b</code>, where <code>n</code> is the quotient <code>a /. b</code> rounded towards zero to an integer.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-succ"><a href="#val-succ" class="anchor"></a><code><span><span class="keyword">val</span> succ : <span>float <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p><code>succ x</code> returns the floating point number right after <code>x</code> i.e., the smallest floating-point number greater than <code>x</code>. See also <a href="#val-next_after"><code>next_after</code></a>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.08.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-pred"><a href="#val-pred" class="anchor"></a><code><span><span class="keyword">val</span> pred : <span>float <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p><code>pred x</code> returns the floating-point number right before <code>x</code> i.e., the greatest floating-point number smaller than <code>x</code>. See also <a href="#val-next_after"><code>next_after</code></a>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.08.0</li></ul></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-abs"><a href="#val-abs" class="anchor"></a><code><span><span class="keyword">val</span> abs : <span>float <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p><code>abs f</code> returns the absolute value of <code>f</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-infinity"><a href="#val-infinity" class="anchor"></a><code><span><span class="keyword">val</span> infinity : float</span></code></div><div class="spec-doc"><p>Positive infinity.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-neg_infinity"><a href="#val-neg_infinity" class="anchor"></a><code><span><span class="keyword">val</span> neg_infinity : float</span></code></div><div class="spec-doc"><p>Negative infinity.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-nan"><a href="#val-nan" class="anchor"></a><code><span><span class="keyword">val</span> nan : float</span></code></div><div class="spec-doc"><p>A special floating-point value denoting the result of an undefined operation such as <code>0.0 /. 0.0</code>. Stands for 'not a number'. Any floating-point operation with <code>nan</code> as argument returns <code>nan</code> as result. As for floating-point comparisons, <code>=</code>, <code>&lt;</code>, <code>&lt;=</code>, <code>&gt;</code> and <code>&gt;=</code> return <code>false</code> and <code>&lt;&gt;</code> returns <code>true</code> if one or both of their arguments is <code>nan</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-pi"><a href="#val-pi" class="anchor"></a><code><span><span class="keyword">val</span> pi : float</span></code></div><div class="spec-doc"><p>The constant pi.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-max_float"><a href="#val-max_float" class="anchor"></a><code><span><span class="keyword">val</span> max_float : float</span></code></div><div class="spec-doc"><p>The largest positive finite value of type <code>float</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-min_float"><a href="#val-min_float" class="anchor"></a><code><span><span class="keyword">val</span> min_float : float</span></code></div><div class="spec-doc"><p>The smallest positive, non-zero, non-denormalized value of type <code>float</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-epsilon"><a href="#val-epsilon" class="anchor"></a><code><span><span class="keyword">val</span> epsilon : float</span></code></div><div class="spec-doc"><p>The difference between <code>1.0</code> and the smallest exactly representable floating-point number greater than <code>1.0</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-is_finite"><a href="#val-is_finite" class="anchor"></a><code><span><span class="keyword">val</span> is_finite : <span>float <span class="arrow">&#45;&gt;</span></span> bool</span></code></div><div class="spec-doc"><p><code>is_finite x</code> is <code>true</code> if and only if <code>x</code> is finite i.e., not infinite and not <a href="#val-nan"><code>nan</code></a>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.08.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-is_infinite"><a href="#val-is_infinite" class="anchor"></a><code><span><span class="keyword">val</span> is_infinite : <span>float <span class="arrow">&#45;&gt;</span></span> bool</span></code></div><div class="spec-doc"><p><code>is_infinite x</code> is <code>true</code> if and only if <code>x</code> is <a href="#val-infinity"><code>infinity</code></a> or <a href="#val-neg_infinity"><code>neg_infinity</code></a>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.08.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-is_nan"><a href="#val-is_nan" class="anchor"></a><code><span><span class="keyword">val</span> is_nan : <span>float <span class="arrow">&#45;&gt;</span></span> bool</span></code></div><div class="spec-doc"><p><code>is_nan x</code> is <code>true</code> if and only if <code>x</code> is not a number (see <a href="#val-nan"><code>nan</code></a>).</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.08.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-is_integer"><a href="#val-is_integer" class="anchor"></a><code><span><span class="keyword">val</span> is_integer : <span>float <span class="arrow">&#45;&gt;</span></span> bool</span></code></div><div class="spec-doc"><p><code>is_integer x</code> is <code>true</code> if and only if <code>x</code> is an integer.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.08.0</li></ul></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-of_int"><a href="#val-of_int" class="anchor"></a><code><span><span class="keyword">val</span> of_int : <span>int <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p>Convert an integer to floating-point.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-to_int"><a href="#val-to_int" class="anchor"></a><code><span><span class="keyword">val</span> to_int : <span>float <span class="arrow">&#45;&gt;</span></span> int</span></code></div><div class="spec-doc"><p>Truncate the given floating-point number to an integer. The result is unspecified if the argument is <code>nan</code> or falls outside the range of representable integers.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-of_string"><a href="#val-of_string" class="anchor"></a><code><span><span class="keyword">val</span> of_string : <span>string <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p>Convert the given string to a float. The string is read in decimal (by default) or in hexadecimal (marked by <code>0x</code> or <code>0X</code>). The format of decimal floating-point numbers is <code> [-] dd.ddd (e|E) [+|-] dd </code>, where <code>d</code> stands for a decimal digit. The format of hexadecimal floating-point numbers is <code> [-] 0(x|X) hh.hhh (p|P) [+|-] dd </code>, where <code>h</code> stands for an hexadecimal digit and <code>d</code> 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 <code>_</code> (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.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Failure</span> <p>if the given string is not a valid representation of a float.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-of_string_opt"><a href="#val-of_string_opt" class="anchor"></a><code><span><span class="keyword">val</span> of_string_opt : <span>string <span class="arrow">&#45;&gt;</span></span> <span>float option</span></span></code></div><div class="spec-doc"><p>Same as <code>of_string</code>, but returns <code>None</code> instead of raising.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-to_string"><a href="#val-to_string" class="anchor"></a><code><span><span class="keyword">val</span> to_string : <span>float <span class="arrow">&#45;&gt;</span></span> string</span></code></div><div class="spec-doc"><p>Return a string representation of a floating-point number.</p><p>This conversion can involve a loss of precision. For greater control over the manner in which the number is printed, see <a href="../Printf/index.html"><code>Printf</code></a>.</p><p>This function is an alias for <a href="../index.html#val-string_of_float"><code>Stdlib.string_of_float</code></a>.</p></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-fpclass"><a href="#type-fpclass" class="anchor"></a><code><span><span class="keyword">type</span> fpclass</span><span> = <a href="../index.html#type-fpclass">fpclass</a></span><span> = </span></code><ol><li id="type-fpclass.FP_normal" class="def variant constructor anchored"><a href="#type-fpclass.FP_normal" class="anchor"></a><code><span>| </span><span><span class="constructor">FP_normal</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Normal number, none of the below</p><span class="comment-delim">*)</span></div></li><li id="type-fpclass.FP_subnormal" class="def variant constructor anchored"><a href="#type-fpclass.FP_subnormal" class="anchor"></a><code><span>| </span><span><span class="constructor">FP_subnormal</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Number very close to 0.0, has reduced precision</p><span class="comment-delim">*)</span></div></li><li id="type-fpclass.FP_zero" class="def variant constructor anchored"><a href="#type-fpclass.FP_zero" class="anchor"></a><code><span>| </span><span><span class="constructor">FP_zero</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Number is 0.0 or -0.0</p><span class="comment-delim">*)</span></div></li><li id="type-fpclass.FP_infinite" class="def variant constructor anchored"><a href="#type-fpclass.FP_infinite" class="anchor"></a><code><span>| </span><span><span class="constructor">FP_infinite</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Number is positive or negative infinity</p><span class="comment-delim">*)</span></div></li><li id="type-fpclass.FP_nan" class="def variant constructor anchored"><a href="#type-fpclass.FP_nan" class="anchor"></a><code><span>| </span><span><span class="constructor">FP_nan</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Not a number: result of an undefined operation</p><span class="comment-delim">*)</span></div></li></ol></div><div class="spec-doc"><p>The five classes of floating-point numbers, as determined by the <a href="#val-classify_float"><code>classify_float</code></a> function.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-classify_float"><a href="#val-classify_float" class="anchor"></a><code><span><span class="keyword">val</span> classify_float : <span>float <span class="arrow">&#45;&gt;</span></span> <a href="#type-fpclass">fpclass</a></span></code></div><div class="spec-doc"><p>Return the class of the given floating-point number: normal, subnormal, zero, infinite, or not a number.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-pow"><a href="#val-pow" class="anchor"></a><code><span><span class="keyword">val</span> pow : <span>float <span class="arrow">&#45;&gt;</span></span> <span>float <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p>Exponentiation.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-sqrt"><a href="#val-sqrt" class="anchor"></a><code><span><span class="keyword">val</span> sqrt : <span>float <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p>Square root.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-cbrt"><a href="#val-cbrt" class="anchor"></a><code><span><span class="keyword">val</span> cbrt : <span>float <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p>Cube root.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.13.0</li></ul></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-exp"><a href="#val-exp" class="anchor"></a><code><span><span class="keyword">val</span> exp : <span>float <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p>Exponential.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-exp2"><a href="#val-exp2" class="anchor"></a><code><span><span class="keyword">val</span> exp2 : <span>float <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p>Base 2 exponential function.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.13.0</li></ul></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-log"><a href="#val-log" class="anchor"></a><code><span><span class="keyword">val</span> log : <span>float <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p>Natural logarithm.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-log10"><a href="#val-log10" class="anchor"></a><code><span><span class="keyword">val</span> log10 : <span>float <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p>Base 10 logarithm.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-log2"><a href="#val-log2" class="anchor"></a><code><span><span class="keyword">val</span> log2 : <span>float <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p>Base 2 logarithm.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.13.0</li></ul></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-expm1"><a href="#val-expm1" class="anchor"></a><code><span><span class="keyword">val</span> expm1 : <span>float <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p><code>expm1 x</code> computes <code>exp x -. 1.0</code>, giving numerically-accurate results even if <code>x</code> is close to <code>0.0</code>.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-log1p"><a href="#val-log1p" class="anchor"></a><code><span><span class="keyword">val</span> log1p : <span>float <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p><code>log1p x</code> computes <code>log(1.0 +. x)</code> (natural logarithm), giving numerically-accurate results even if <code>x</code> is close to <code>0.0</code>.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-cos"><a href="#val-cos" class="anchor"></a><code><span><span class="keyword">val</span> cos : <span>float <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p>Cosine. Argument is in radians.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-sin"><a href="#val-sin" class="anchor"></a><code><span><span class="keyword">val</span> sin : <span>float <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p>Sine. Argument is in radians.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-tan"><a href="#val-tan" class="anchor"></a><code><span><span class="keyword">val</span> tan : <span>float <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p>Tangent. Argument is in radians.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-acos"><a href="#val-acos" class="anchor"></a><code><span><span class="keyword">val</span> acos : <span>float <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p>Arc cosine. The argument must fall within the range <code>[-1.0, 1.0]</code>. Result is in radians and is between <code>0.0</code> and <code>pi</code>.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-asin"><a href="#val-asin" class="anchor"></a><code><span><span class="keyword">val</span> asin : <span>float <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p>Arc sine. The argument must fall within the range <code>[-1.0, 1.0]</code>. Result is in radians and is between <code>-pi/2</code> and <code>pi/2</code>.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-atan"><a href="#val-atan" class="anchor"></a><code><span><span class="keyword">val</span> atan : <span>float <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p>Arc tangent. Result is in radians and is between <code>-pi/2</code> and <code>pi/2</code>.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-atan2"><a href="#val-atan2" class="anchor"></a><code><span><span class="keyword">val</span> atan2 : <span>float <span class="arrow">&#45;&gt;</span></span> <span>float <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p><code>atan2 y x</code> returns the arc tangent of <code>y /. x</code>. The signs of <code>x</code> and <code>y</code> are used to determine the quadrant of the result. Result is in radians and is between <code>-pi</code> and <code>pi</code>.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-hypot"><a href="#val-hypot" class="anchor"></a><code><span><span class="keyword">val</span> hypot : <span>float <span class="arrow">&#45;&gt;</span></span> <span>float <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p><code>hypot x y</code> returns <code>sqrt(x *. x + y *. y)</code>, that is, the length of the hypotenuse of a right-angled triangle with sides of length <code>x</code> and <code>y</code>, or, equivalently, the distance of the point <code>(x,y)</code> to origin. If one of <code>x</code> or <code>y</code> is infinite, returns <code>infinity</code> even if the other is <code>nan</code>.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-cosh"><a href="#val-cosh" class="anchor"></a><code><span><span class="keyword">val</span> cosh : <span>float <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p>Hyperbolic cosine. Argument is in radians.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-sinh"><a href="#val-sinh" class="anchor"></a><code><span><span class="keyword">val</span> sinh : <span>float <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p>Hyperbolic sine. Argument is in radians.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-tanh"><a href="#val-tanh" class="anchor"></a><code><span><span class="keyword">val</span> tanh : <span>float <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p>Hyperbolic tangent. Argument is in radians.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-acosh"><a href="#val-acosh" class="anchor"></a><code><span><span class="keyword">val</span> acosh : <span>float <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p>Hyperbolic arc cosine. The argument must fall within the range <code>[1.0, inf]</code>. Result is in radians and is between <code>0.0</code> and <code>inf</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.13.0</li></ul></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-asinh"><a href="#val-asinh" class="anchor"></a><code><span><span class="keyword">val</span> asinh : <span>float <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p>Hyperbolic arc sine. The argument and result range over the entire real line. Result is in radians.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.13.0</li></ul></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-atanh"><a href="#val-atanh" class="anchor"></a><code><span><span class="keyword">val</span> atanh : <span>float <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p>Hyperbolic arc tangent. The argument must fall within the range <code>[-1.0, 1.0]</code>. Result is in radians and ranges over the entire real line.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.13.0</li></ul></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-erf"><a href="#val-erf" class="anchor"></a><code><span><span class="keyword">val</span> erf : <span>float <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p>Error function. The argument ranges over the entire real line. The result is always within <code>[-1.0, 1.0]</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.13.0</li></ul></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-erfc"><a href="#val-erfc" class="anchor"></a><code><span><span class="keyword">val</span> erfc : <span>float <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p>Complementary error function (<code>erfc x = 1 - erf x</code>). The argument ranges over the entire real line. The result is always within <code>[-1.0, 1.0]</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.13.0</li></ul></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-trunc"><a href="#val-trunc" class="anchor"></a><code><span><span class="keyword">val</span> trunc : <span>float <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p><code>trunc x</code> rounds <code>x</code> to the nearest integer whose absolute value is less than or equal to <code>x</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.08.0</li></ul></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-round"><a href="#val-round" class="anchor"></a><code><span><span class="keyword">val</span> round : <span>float <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p><code>round x</code> rounds <code>x</code> to the nearest integer with ties (fractional values of 0.5) rounded away from zero, regardless of the current rounding direction. If <code>x</code> is an integer, <code>+0.</code>, <code>-0.</code>, <code>nan</code>, or infinite, <code>x</code> itself is returned.</p><p>On 64-bit mingw-w64, this function may be emulated owing to a bug in the C runtime library (CRT) on this platform.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.08.0</li></ul></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-ceil"><a href="#val-ceil" class="anchor"></a><code><span><span class="keyword">val</span> ceil : <span>float <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p>Round above to an integer value. <code>ceil f</code> returns the least integer value greater than or equal to <code>f</code>. The result is returned as a float.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-floor"><a href="#val-floor" class="anchor"></a><code><span><span class="keyword">val</span> floor : <span>float <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p>Round below to an integer value. <code>floor f</code> returns the greatest integer value less than or equal to <code>f</code>. The result is returned as a float.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-next_after"><a href="#val-next_after" class="anchor"></a><code><span><span class="keyword">val</span> next_after : <span>float <span class="arrow">&#45;&gt;</span></span> <span>float <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p><code>next_after x y</code> returns the next representable floating-point value following <code>x</code> in the direction of <code>y</code>. More precisely, if <code>y</code> is greater (resp. less) than <code>x</code>, it returns the smallest (resp. largest) representable number greater (resp. less) than <code>x</code>. If <code>x</code> equals <code>y</code>, the function returns <code>y</code>. If <code>x</code> or <code>y</code> is <code>nan</code>, a <code>nan</code> is returned. Note that <code>next_after max_float infinity = infinity</code> and that <code>next_after 0. infinity</code> is the smallest denormalized positive number. If <code>x</code> is the smallest denormalized positive number, <code>next_after x 0. = 0.</code></p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.08.0</li></ul></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-copy_sign"><a href="#val-copy_sign" class="anchor"></a><code><span><span class="keyword">val</span> copy_sign : <span>float <span class="arrow">&#45;&gt;</span></span> <span>float <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p><code>copy_sign x y</code> returns a float whose absolute value is that of <code>x</code> and whose sign is that of <code>y</code>. If <code>x</code> is <code>nan</code>, returns <code>nan</code>. If <code>y</code> is <code>nan</code>, returns either <code>x</code> or <code>-. x</code>, but it is not specified which.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-sign_bit"><a href="#val-sign_bit" class="anchor"></a><code><span><span class="keyword">val</span> sign_bit : <span>float <span class="arrow">&#45;&gt;</span></span> bool</span></code></div><div class="spec-doc"><p><code>sign_bit x</code> is <code>true</code> if and only if the sign bit of <code>x</code> is set. For example <code>sign_bit 1.</code> and <code>signbit 0.</code> are <code>false</code> while <code>sign_bit (-1.)</code> and <code>sign_bit (-0.)</code> are <code>true</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.08.0</li></ul></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-frexp"><a href="#val-frexp" class="anchor"></a><code><span><span class="keyword">val</span> frexp : <span>float <span class="arrow">&#45;&gt;</span></span> float * int</span></code></div><div class="spec-doc"><p><code>frexp f</code> returns the pair of the significant and the exponent of <code>f</code>. When <code>f</code> is zero, the significant <code>x</code> and the exponent <code>n</code> of <code>f</code> are equal to zero. When <code>f</code> is non-zero, they are defined by <code>f = x *. 2 ** n</code> and <code>0.5 &lt;= x &lt; 1.0</code>.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-ldexp"><a href="#val-ldexp" class="anchor"></a><code><span><span class="keyword">val</span> ldexp : <span>float <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p><code>ldexp x n</code> returns <code>x *. 2 ** n</code>.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-modf"><a href="#val-modf" class="anchor"></a><code><span><span class="keyword">val</span> modf : <span>float <span class="arrow">&#45;&gt;</span></span> float * float</span></code></div><div class="spec-doc"><p><code>modf f</code> returns the pair of the fractional and integral part of <code>f</code>.</p></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-t"><a href="#type-t" class="anchor"></a><code><span><span class="keyword">type</span> t</span><span> = float</span></code></div><div class="spec-doc"><p>An alias for the type of floating-point numbers.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-compare"><a href="#val-compare" class="anchor"></a><code><span><span class="keyword">val</span> compare : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> int</span></code></div><div class="spec-doc"><p><code>compare x y</code> returns <code>0</code> if <code>x</code> is equal to <code>y</code>, a negative integer if <code>x</code> is less than <code>y</code>, and a positive integer if <code>x</code> is greater than <code>y</code>. <code>compare</code> treats <code>nan</code> as equal to itself and less than any other float value. This treatment of <code>nan</code> ensures that <code>compare</code> defines a total ordering relation.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span><span class="keyword">val</span> equal : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> bool</span></code></div><div class="spec-doc"><p>The equal function for floating-point numbers, compared using <a href="#val-compare"><code>compare</code></a>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-min"><a href="#val-min" class="anchor"></a><code><span><span class="keyword">val</span> min : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p><code>min x y</code> returns the minimum of <code>x</code> and <code>y</code>. It returns <code>nan</code> when <code>x</code> or <code>y</code> is <code>nan</code>. Moreover <code>min (-0.) (+0.) = -0.</code></p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.08.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-max"><a href="#val-max" class="anchor"></a><code><span><span class="keyword">val</span> max : <span>float <span class="arrow">&#45;&gt;</span></span> <span>float <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p><code>max x y</code> returns the maximum of <code>x</code> and <code>y</code>. It returns <code>nan</code> when <code>x</code> or <code>y</code> is <code>nan</code>. Moreover <code>max (-0.) (+0.) = +0.</code></p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.08.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-min_max"><a href="#val-min_max" class="anchor"></a><code><span><span class="keyword">val</span> min_max : <span>float <span class="arrow">&#45;&gt;</span></span> <span>float <span class="arrow">&#45;&gt;</span></span> float * float</span></code></div><div class="spec-doc"><p><code>min_max x y</code> is <code>(min x y, max x y)</code>, just more efficient.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.08.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-min_num"><a href="#val-min_num" class="anchor"></a><code><span><span class="keyword">val</span> min_num : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p><code>min_num x y</code> returns the minimum of <code>x</code> and <code>y</code> treating <code>nan</code> as missing values. If both <code>x</code> and <code>y</code> are <code>nan</code>, <code>nan</code> is returned. Moreover <code>min_num (-0.) (+0.) = -0.</code></p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.08.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-max_num"><a href="#val-max_num" class="anchor"></a><code><span><span class="keyword">val</span> max_num : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p><code>max_num x y</code> returns the maximum of <code>x</code> and <code>y</code> treating <code>nan</code> as missing values. If both <code>x</code> and <code>y</code> are <code>nan</code> <code>nan</code> is returned. Moreover <code>max_num (-0.) (+0.) = +0.</code></p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.08.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-min_max_num"><a href="#val-min_max_num" class="anchor"></a><code><span><span class="keyword">val</span> min_max_num : <span>float <span class="arrow">&#45;&gt;</span></span> <span>float <span class="arrow">&#45;&gt;</span></span> float * float</span></code></div><div class="spec-doc"><p><code>min_max_num x y</code> is <code>(min_num x y, max_num x y)</code>, just more efficient. Note that in particular <code>min_max_num x nan = (x, x)</code> and <code>min_max_num nan y = (y, y)</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.08.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span><span class="keyword">val</span> hash : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> int</span></code></div><div class="spec-doc"><p>The hash function for floating-point numbers.</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Array"><a href="#module-Array" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Array/index.html">Array</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>Float arrays with packed representation.</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-ArrayLabels"><a href="#module-ArrayLabels" class="anchor"></a><code><span><span class="keyword">module</span> <a href="ArrayLabels/index.html">ArrayLabels</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>Float arrays with packed representation (labeled functions).</p></div></div></div></body></html>