模組 Stdlib.Float

module Float: Float

val zero : float

浮點數 0。

val one : float

浮點數 1。

val minus_one : float

浮點數 -1。

val neg : float -> float

一元負號。

val add : float -> float -> float

浮點數加法。

val sub : float -> float -> float

浮點數減法。

val mul : float -> float -> float

浮點數乘法。

val div : float -> float -> float

浮點數除法。

val fma : float -> float -> float -> float

fma x y z 傳回 x * y + z,並盡最大努力以單一捨入計算此運算式,使用硬體指令(提供完整的 IEEE 相容性)或軟體模擬。

在 64 位元 Cygwin、64 位元 mingw-w64 和 MSVC 2017 及更早版本上,由於這些平台上已知錯誤的限制,此函式可能會被模擬。注意:由於 fma 的軟體模擬成本很高,如果效能很重要,請確保您正在使用硬體 fma 支援。

val rem : float -> float -> float

rem a b 傳回 ab 的餘數。傳回值為 a -. n *. b,其中 na /. b 的商,四捨五入至零的整數。

val succ : float -> float

succ x 傳回 x 之後的浮點數,即大於 x 的最小浮點數。另請參閱 Float.next_after

val pred : float -> float

pred x 傳回 x 之前的浮點數,即小於 x 的最大浮點數。另請參閱 Float.next_after

val abs : float -> float

abs f 傳回 f 的絕對值。

val infinity : float

正無限大。

val neg_infinity : float

負無限大。

val nan : float

一個特殊的浮點數值,表示未定義運算的結果,例如 0.0 /. 0.0。代表「非數字」。任何以 nan 作為引數的浮點數運算都會傳回 nan 作為結果,除非 IEEE 754 標準另有規定。至於浮點數比較,如果它們的一個或兩個引數都是 nan,則 =<<=>>= 傳回 false,而 <> 則傳回 true

nan 自 5.1 版起為 quiet_nan;之前為信號 NaN。

val signaling_nan : float

信號 NaN。相應的信號不會引發 OCaml 例外,但該值對於與 C 函式庫的互通性很有用。

val quiet_nan : float

靜默 NaN。

val pi : float

常數 pi。

val max_float : float

類型為 float 的最大正有限值。

val min_float : float

類型為 float 的最小正非零、非次正規值。

val epsilon : float

1.0 與大於 1.0 的最小精確可表示的浮點數之間的差。

val is_finite : float -> bool

當且僅當 x 是有限的(即非無限大且非 Float.nan)時,is_finite xtrue

val is_infinite : float -> bool

當且僅當 xFloat.infinityFloat.neg_infinity 時,is_infinite xtrue

val is_nan : float -> bool

當且僅當 x 不是數字(請參閱 Float.nan)時,is_nan xtrue

val is_integer : float -> bool

當且僅當 x 是整數時,is_integer xtrue

val of_int : int -> float

將整數轉換為浮點數。

val to_int : float -> int

將給定的浮點數截斷為整數。如果引數為 nan 或超出可表示整數的範圍,則結果未指定。

val of_string : string -> float

將給定的字串轉換為浮點數。字串以十進制(預設)或十六進制(以 0x0X 標記)讀取。十進制浮點數的格式為  [-] dd.ddd (e|E) [+|-] dd ,其中 d 代表十進制數字。十六進制浮點數的格式為  [-] 0(x|X) hh.hhh (p|P) [+|-] dd ,其中 h 代表十六進制數字,d 代表十進制數字。在這兩種情況下,都必須給出整數和小數部分中的至少一個;指數部分是可選的。底線字符 _ 可以出現在字串中的任何位置,並被忽略。根據執行平台的不同,可能會接受其他浮點數的表示形式,但不應依賴這些形式。

val of_string_opt : string -> float option

of_string 相同,但傳回 None 而不是引發。

val to_string : float -> string

傳回浮點數的字串表示形式。

此轉換可能會導致精度損失。為了更好地控制數字的列印方式,請參閱 Printf

此函式是 string_of_float 的別名。

type fpclass = fpclass = 
| FP_normal (*

一般數字,非以下任何一種

*)
| FP_subnormal (*

非常接近 0.0 的數字,精度降低

*)
| FP_zero (*

數字為 0.0 或 -0.0

*)
| FP_infinite (*

數字為正或負無限大

*)
| FP_nan (*

非數字:未定義運算的結果

*)

浮點數的五個類別,由 Float.classify_float 函式確定。

val classify_float : float -> fpclass

傳回給定浮點數的類別:一般、次正規、零、無限大或非數字。

val pow : float -> float -> float

指數運算。

val sqrt : float -> float

平方根。

val cbrt : float -> float

立方根。

val exp : float -> float

指數。

val exp2 : float -> float

以 2 為底的指數函式。

val log : float -> float

自然對數。

val log10 : float -> float

以 10 為底的對數。

val log2 : float -> float

以 2 為底的對數。

val expm1 : float -> float

expm1 x 計算 exp x -. 1.0,即使 x 接近 0.0,也能給出數值上準確的結果。

val log1p : float -> float

log1p x 計算 log(1.0 +. x)(自然對數),即使 x 接近 0.0,也能給出數值上準確的結果。

val cos : float -> float

餘弦。引數以弧度為單位。

val sin : float -> float

正弦。引數以弧度為單位。

val tan : float -> float

正切。引數以弧度為單位。

val acos : float -> float

反餘弦。引數必須落在 [-1.0, 1.0] 範圍內。結果以弧度為單位,介於 0.0pi 之間。

val asin : float -> float

反正弦。引數必須落在 [-1.0, 1.0] 範圍內。結果以弧度為單位,介於 -pi/2pi/2 之間。

val atan : float -> float

反正切。結果以弧度為單位,介於 -pi/2pi/2 之間。

val atan2 : float -> float -> float

atan2 y x 傳回 y /. x 的反正切。 xy 的符號用於確定結果的象限。結果以弧度為單位,介於 -pipi 之間。

val hypot : float -> float -> float

hypot x y 傳回 sqrt(x *. x +. y *. y),也就是說,邊長為 xy 的直角三角形的斜邊長度,或者等效地,點 (x,y) 到原點的距離。如果 xy 中的一個為無限大,則傳回 infinity,即使另一個為 nan

val cosh : float -> float

雙曲餘弦。引數以弧度為單位。

val sinh : float -> float

雙曲正弦。引數以弧度為單位。

val tanh : float -> float

雙曲正切。引數以弧度為單位。

val acosh : float -> float

雙曲反餘弦。引數必須落在 [1.0, inf] 範圍內。結果以弧度為單位,介於 0.0inf 之間。

val asinh : float -> float

雙曲反正弦。引數和結果範圍涵蓋整個實數線。結果以弧度為單位。

val atanh : float -> float

雙曲反正切。引數必須落在 [-1.0, 1.0] 範圍內。結果以弧度為單位,範圍涵蓋整個實數線。

val erf : float -> float

誤差函式。引數範圍涵蓋整個實數線。結果始終在 [-1.0, 1.0] 範圍內。

val erfc : float -> float

互補誤差函式 ( erfc x = 1 - erf x)。引數範圍涵蓋整個實數線。結果始終在 [-1.0, 1.0] 範圍內。

val trunc : float -> float

trunc xx 四捨五入到最接近的整數,其絕對值小於或等於 x

val round : float -> float

round xx 四捨五入到最接近的整數,並將結(0.5 的小數值)四捨五入為遠離零,而不考慮目前的四捨五入方向。如果 x 是整數、+0.-0.nan 或無限大,則會傳回 x 本身。

在 64 位元 mingw-w64 上,由於此平台上 C 執行階段函式庫 (CRT) 中的錯誤,此函式可能會被模擬。

val ceil : float -> float

向上四捨五入為整數值。ceil f 傳回大於或等於 f 的最小整數值。結果以浮點數的形式傳回。

val floor : float -> float

向下四捨五入為整數值。floor f 傳回小於或等於 f 的最大整數值。結果以浮點數的形式傳回。

val next_after : float -> float -> float

next_after x y 傳回沿著 y 方向,x 之後的下一個可表示的浮點數值。更準確地說,如果 y 大於(或小於)x,則傳回大於(或小於)x 的最小(或最大)可表示數字。如果 x 等於 y,則函式傳回 y。如果 xynan,則會傳回 nan。請注意,next_after max_float infinity = infinity,且 next_after 0. infinity 是最小的次正規正數。如果 x 是最小的次正規正數,則 next_after x 0. = 0.

val copy_sign : float -> float -> float

copy_sign x y 傳回一個浮點數,其絕對值為 x 的絕對值,符號為 y 的符號。如果 xnan,則傳回 nan。如果 ynan,則傳回 x-. x,但未指定是哪一個。

val sign_bit : float -> bool

sign_bit x 只有在 x 的符號位元被設定時才為 true。例如,sign_bit 1.signbit 0.false,而 sign_bit (-1.)sign_bit (-0.) 則為 true

val frexp : float -> float * int

frexp f 傳回 f 的有效數字和指數的配對。當 f 為零時,f 的有效數字 x 和指數 n 都等於零。當 f 為非零時,它們由 f = x *. 2 ** n0.5 <= x < 1.0 定義。

val ldexp : float -> int -> float

ldexp x n 傳回 x *. 2 ** n

val modf : float -> float * float

modf f 傳回 f 的小數部分和整數部分的配對。

type t = float 

浮點數類型的別名。

val compare : t -> t -> int

compare x y 如果 x 等於 y,則傳回 0;如果 x 小於 y,則傳回一個負整數;如果 x 大於 y,則傳回一個正整數。comparenan 視為等於自身,且小於任何其他浮點數值。這種對 nan 的處理方式確保了 compare 定義了一個全序關係。

val equal : t -> t -> bool

浮點數的相等函數,使用 Float.compare 進行比較。

val min : t -> t -> t

min x y 傳回 xy 的最小值。當 xynan 時,傳回 nan。此外,min (-0.) (+0.) = -0.

val max : float -> float -> float

max x y 傳回 xy 的最大值。當 xynan 時,傳回 nan。此外,max (-0.) (+0.) = +0.

val min_max : float -> float -> float * float

min_max x y(min x y, max x y),只是更有效率。

val min_num : t -> t -> t

min_num x ynan 視為缺失值,傳回 xy 的最小值。如果 xy 都是 nan,則傳回 nan。此外,min_num (-0.) (+0.) = -0.

val max_num : t -> t -> t

max_num x ynan 視為缺失值,傳回 xy 的最大值。如果 xy 都是 nan,則傳回 nan。此外,max_num (-0.) (+0.) = +0.

val min_max_num : float -> float -> float * float

min_max_num x y(min_num x y, max_num x y),只是更有效率。請注意,特別是 min_max_num x nan = (x, x)min_max_num nan y = (y, y)

val seeded_hash : int -> t -> int

浮點數的帶種子雜湊函數,其輸出值與 Hashtbl.seeded_hash 相同。此函數允許將此模組作為函子 Hashtbl.MakeSeeded 的引數傳遞。

val hash : t -> int

浮點數的不帶種子雜湊函數,其輸出值與 Hashtbl.hash 相同。此函數允許將此模組作為函子 Hashtbl.Make 的引數傳遞。

module Array: sig .. end

具有封裝表示法的浮點數陣列。

module ArrayLabels: sig .. end

具有封裝表示法的浮點數陣列 (標記函數)。