mirror of
https://github.com/c-cube/moonpool.git
synced 2025-12-17 08:06:43 -05:00
5 lines
No EOL
21 KiB
HTML
5 lines
No EOL
21 KiB
HTML
<!DOCTYPE html>
|
||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Nativeint (ocaml.Stdlib.Nativeint)</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> » <a href="../index.html">Stdlib</a> » Nativeint</nav><header class="odoc-preamble"><h1>Module <code><span>Stdlib.Nativeint</span></code></h1><p>Processor-native integers.</p><p>This module provides operations on the type <code>nativeint</code> of signed 32-bit integers (on 32-bit platforms) or signed 64-bit integers (on 64-bit platforms). This integer type has exactly the same width as that of a pointer type in the C compiler. All arithmetic operations over <code>nativeint</code> are taken modulo 2<sup>32</sup> or 2<sup>64</sup> depending on the word size of the architecture.</p><p>Performance notice: values of type <code>nativeint</code> occupy more memory space than values of type <code>int</code>, and arithmetic operations on <code>nativeint</code> are generally slower than those on <code>int</code>. Use <code>nativeint</code> only when the application requires the extra bit of precision over the <code>int</code> type.</p><p>Literals for native integers are suffixed by n:</p><pre class="language-ocaml"><code>let zero: nativeint = 0n
|
||
let one: nativeint = 1n
|
||
let m_one: nativeint = -1n</code></pre></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 : nativeint</span></code></div><div class="spec-doc"><p>The native integer 0.</p></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 : nativeint</span></code></div><div class="spec-doc"><p>The native integer 1.</p></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 : nativeint</span></code></div><div class="spec-doc"><p>The native integer -1.</p></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>nativeint <span class="arrow">-></span></span> nativeint</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>nativeint <span class="arrow">-></span></span> <span>nativeint <span class="arrow">-></span></span> nativeint</span></code></div><div class="spec-doc"><p>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>nativeint <span class="arrow">-></span></span> <span>nativeint <span class="arrow">-></span></span> nativeint</span></code></div><div class="spec-doc"><p>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>nativeint <span class="arrow">-></span></span> <span>nativeint <span class="arrow">-></span></span> nativeint</span></code></div><div class="spec-doc"><p>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>nativeint <span class="arrow">-></span></span> <span>nativeint <span class="arrow">-></span></span> nativeint</span></code></div><div class="spec-doc"><p>Integer division. This division rounds the real quotient of its arguments towards zero, as specified for <a href="../index.html#val-(/)"><code>Stdlib.(/)</code></a>.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Division_by_zero</span> <p>if the second argument is zero.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-unsigned_div"><a href="#val-unsigned_div" class="anchor"></a><code><span><span class="keyword">val</span> unsigned_div : <span>nativeint <span class="arrow">-></span></span> <span>nativeint <span class="arrow">-></span></span> nativeint</span></code></div><div class="spec-doc"><p>Same as <a href="#val-div"><code>div</code></a>, except that arguments and result are interpreted as <em>unsigned</em> native integers.</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>nativeint <span class="arrow">-></span></span> <span>nativeint <span class="arrow">-></span></span> nativeint</span></code></div><div class="spec-doc"><p>Integer remainder. If <code>y</code> is not zero, the result of <code>Nativeint.rem x y</code> satisfies the following properties: <code>Nativeint.zero <= Nativeint.rem x y < Nativeint.abs y</code> and <code>x = Nativeint.add (Nativeint.mul (Nativeint.div x y) y)
|
||
(Nativeint.rem x y)</code>. If <code>y = 0</code>, <code>Nativeint.rem x y</code> raises <code>Division_by_zero</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-unsigned_rem"><a href="#val-unsigned_rem" class="anchor"></a><code><span><span class="keyword">val</span> unsigned_rem : <span>nativeint <span class="arrow">-></span></span> <span>nativeint <span class="arrow">-></span></span> nativeint</span></code></div><div class="spec-doc"><p>Same as <a href="#val-rem"><code>rem</code></a>, except that arguments and result are interpreted as <em>unsigned</em> native integers.</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-succ"><a href="#val-succ" class="anchor"></a><code><span><span class="keyword">val</span> succ : <span>nativeint <span class="arrow">-></span></span> nativeint</span></code></div><div class="spec-doc"><p>Successor. <code>Nativeint.succ x</code> is <code>Nativeint.add x Nativeint.one</code>.</p></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>nativeint <span class="arrow">-></span></span> nativeint</span></code></div><div class="spec-doc"><p>Predecessor. <code>Nativeint.pred x</code> is <code>Nativeint.sub x Nativeint.one</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-abs"><a href="#val-abs" class="anchor"></a><code><span><span class="keyword">val</span> abs : <span>nativeint <span class="arrow">-></span></span> nativeint</span></code></div><div class="spec-doc"><p><code>abs x</code> is the absolute value of <code>x</code>. On <code>min_int</code> this is <code>min_int</code> itself and thus remains negative.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-size"><a href="#val-size" class="anchor"></a><code><span><span class="keyword">val</span> size : int</span></code></div><div class="spec-doc"><p>The size in bits of a native integer. This is equal to <code>32</code> on a 32-bit platform and to <code>64</code> on a 64-bit platform.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-max_int"><a href="#val-max_int" class="anchor"></a><code><span><span class="keyword">val</span> max_int : nativeint</span></code></div><div class="spec-doc"><p>The greatest representable native integer, either 2<sup>31</sup> - 1 on a 32-bit platform, or 2<sup>63</sup> - 1 on a 64-bit platform.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-min_int"><a href="#val-min_int" class="anchor"></a><code><span><span class="keyword">val</span> min_int : nativeint</span></code></div><div class="spec-doc"><p>The smallest representable native integer, either -2<sup>31</sup> on a 32-bit platform, or -2<sup>63</sup> on a 64-bit platform.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-logand"><a href="#val-logand" class="anchor"></a><code><span><span class="keyword">val</span> logand : <span>nativeint <span class="arrow">-></span></span> <span>nativeint <span class="arrow">-></span></span> nativeint</span></code></div><div class="spec-doc"><p>Bitwise logical and.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-logor"><a href="#val-logor" class="anchor"></a><code><span><span class="keyword">val</span> logor : <span>nativeint <span class="arrow">-></span></span> <span>nativeint <span class="arrow">-></span></span> nativeint</span></code></div><div class="spec-doc"><p>Bitwise logical or.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-logxor"><a href="#val-logxor" class="anchor"></a><code><span><span class="keyword">val</span> logxor : <span>nativeint <span class="arrow">-></span></span> <span>nativeint <span class="arrow">-></span></span> nativeint</span></code></div><div class="spec-doc"><p>Bitwise logical exclusive or.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-lognot"><a href="#val-lognot" class="anchor"></a><code><span><span class="keyword">val</span> lognot : <span>nativeint <span class="arrow">-></span></span> nativeint</span></code></div><div class="spec-doc"><p>Bitwise logical negation.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-shift_left"><a href="#val-shift_left" class="anchor"></a><code><span><span class="keyword">val</span> shift_left : <span>nativeint <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> nativeint</span></code></div><div class="spec-doc"><p><code>Nativeint.shift_left x y</code> shifts <code>x</code> to the left by <code>y</code> bits. The result is unspecified if <code>y < 0</code> or <code>y >= bitsize</code>, where <code>bitsize</code> is <code>32</code> on a 32-bit platform and <code>64</code> on a 64-bit platform.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-shift_right"><a href="#val-shift_right" class="anchor"></a><code><span><span class="keyword">val</span> shift_right : <span>nativeint <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> nativeint</span></code></div><div class="spec-doc"><p><code>Nativeint.shift_right x y</code> shifts <code>x</code> to the right by <code>y</code> bits. This is an arithmetic shift: the sign bit of <code>x</code> is replicated and inserted in the vacated bits. The result is unspecified if <code>y < 0</code> or <code>y >= bitsize</code>.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-shift_right_logical"><a href="#val-shift_right_logical" class="anchor"></a><code><span><span class="keyword">val</span> shift_right_logical : <span>nativeint <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> nativeint</span></code></div><div class="spec-doc"><p><code>Nativeint.shift_right_logical x y</code> shifts <code>x</code> to the right by <code>y</code> bits. This is a logical shift: zeroes are inserted in the vacated bits regardless of the sign of <code>x</code>. The result is unspecified if <code>y < 0</code> or <code>y >= bitsize</code>.</p></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">-></span></span> nativeint</span></code></div><div class="spec-doc"><p>Convert the given integer (type <code>int</code>) to a native integer (type <code>nativeint</code>).</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>nativeint <span class="arrow">-></span></span> int</span></code></div><div class="spec-doc"><p>Convert the given native integer (type <code>nativeint</code>) to an integer (type <code>int</code>). The high-order bit is lost during the conversion.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-unsigned_to_int"><a href="#val-unsigned_to_int" class="anchor"></a><code><span><span class="keyword">val</span> unsigned_to_int : <span>nativeint <span class="arrow">-></span></span> <span>int option</span></span></code></div><div class="spec-doc"><p>Same as <a href="#val-to_int"><code>to_int</code></a>, but interprets the argument as an <em>unsigned</em> integer. Returns <code>None</code> if the unsigned value of the argument cannot fit into an <code>int</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-of_float"><a href="#val-of_float" class="anchor"></a><code><span><span class="keyword">val</span> of_float : <span>float <span class="arrow">-></span></span> nativeint</span></code></div><div class="spec-doc"><p>Convert the given floating-point number to a native integer, discarding the fractional part (truncate towards 0). If the truncated floating-point number is outside the range [<a href="#val-min_int"><code>Nativeint.min_int</code></a>, <a href="#val-max_int"><code>Nativeint.max_int</code></a>], no exception is raised, and an unspecified, platform-dependent integer is returned.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-to_float"><a href="#val-to_float" class="anchor"></a><code><span><span class="keyword">val</span> to_float : <span>nativeint <span class="arrow">-></span></span> float</span></code></div><div class="spec-doc"><p>Convert the given native integer to a floating-point number.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-of_int32"><a href="#val-of_int32" class="anchor"></a><code><span><span class="keyword">val</span> of_int32 : <span>int32 <span class="arrow">-></span></span> nativeint</span></code></div><div class="spec-doc"><p>Convert the given 32-bit integer (type <code>int32</code>) to a native integer.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-to_int32"><a href="#val-to_int32" class="anchor"></a><code><span><span class="keyword">val</span> to_int32 : <span>nativeint <span class="arrow">-></span></span> int32</span></code></div><div class="spec-doc"><p>Convert the given native integer to a 32-bit integer (type <code>int32</code>). On 64-bit platforms, the 64-bit native integer is taken modulo 2<sup>32</sup>, i.e. the top 32 bits are lost. On 32-bit platforms, the conversion is exact.</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">-></span></span> nativeint</span></code></div><div class="spec-doc"><p>Convert the given string to a native integer. The string is read in decimal (by default, or if the string begins with <code>0u</code>) or in hexadecimal, octal or binary if the string begins with <code>0x</code>, <code>0o</code> or <code>0b</code> respectively.</p><p>The <code>0u</code> prefix reads the input as an unsigned integer in the range <code>[0, 2*Nativeint.max_int+1]</code>. If the input exceeds <a href="#val-max_int"><code>Nativeint.max_int</code></a> it is converted to the signed integer <code>Int64.min_int + input - Nativeint.max_int - 1</code>.</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 an integer, or if the integer represented exceeds the range of integers representable in type <code>nativeint</code>.</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">-></span></span> <span>nativeint option</span></span></code></div><div class="spec-doc"><p>Same as <code>of_string</code>, but return <code>None</code> instead of raising.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.05</li></ul></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>nativeint <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p>Return the string representation of its argument, in decimal.</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> = nativeint</span></code></div><div class="spec-doc"><p>An alias for the type of native integers.</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">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> int</span></code></div><div class="spec-doc"><p>The comparison function for native integers, with the same specification as <a href="../index.html#val-compare"><code>Stdlib.compare</code></a>. Along with the type <code>t</code>, this function <code>compare</code> allows the module <code>Nativeint</code> to be passed as argument to the functors <a href="../Set/Make/index.html"><code>Set.Make</code></a> and <a href="../Map/Make/index.html"><code>Map.Make</code></a>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-unsigned_compare"><a href="#val-unsigned_compare" class="anchor"></a><code><span><span class="keyword">val</span> unsigned_compare : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> int</span></code></div><div class="spec-doc"><p>Same as <a href="#val-compare"><code>compare</code></a>, except that arguments are interpreted as <em>unsigned</em> native integers.</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-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">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> bool</span></code></div><div class="spec-doc"><p>The equal function for native ints.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.03.0</li></ul></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">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p>Return the smaller of the two arguments.</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 anchored" id="val-max"><a href="#val-max" class="anchor"></a><code><span><span class="keyword">val</span> max : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p>Return the greater of the two arguments.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.13.0</li></ul></div></div></div></body></html> |