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
傳回 a
對 b
的餘數。傳回值為 a -. n *. b
,其中 n
是 a /. 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 x
為 true
。
val is_infinite : float -> bool
當且僅當 x
為 Float.infinity
或 Float.neg_infinity
時,is_infinite x
為 true
。
val is_nan : float -> bool
當且僅當 x
不是數字(請參閱 Float.nan
)時,is_nan x
為 true
。
val is_integer : float -> bool
當且僅當 x
是整數時,is_integer x
為 true
。
val of_int : int -> float
將整數轉換為浮點數。
val to_int : float -> int
將給定的浮點數截斷為整數。如果引數為 nan
或超出可表示整數的範圍,則結果未指定。
val of_string : string -> float
將給定的字串轉換為浮點數。字串以十進制(預設)或十六進制(以 0x
或 0X
標記)讀取。十進制浮點數的格式為 [-] dd.ddd (e|E) [+|-] dd
,其中 d
代表十進制數字。十六進制浮點數的格式為 [-] 0(x|X) hh.hhh (p|P) [+|-] dd
,其中 h
代表十六進制數字,d
代表十進制數字。在這兩種情況下,都必須給出整數和小數部分中的至少一個;指數部分是可選的。底線字符 _
可以出現在字串中的任何位置,並被忽略。根據執行平台的不同,可能會接受其他浮點數的表示形式,但不應依賴這些形式。
Failure
。val of_string_opt : string -> float option
與 of_string
相同,但傳回 None
而不是引發。
val to_string : float -> string
typefpclass =
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.0
和 pi
之間。
val asin : float -> float
反正弦。引數必須落在 [-1.0, 1.0]
範圍內。結果以弧度為單位,介於 -pi/2
和 pi/2
之間。
val atan : float -> float
反正切。結果以弧度為單位,介於 -pi/2
和 pi/2
之間。
val atan2 : float -> float -> float
atan2 y x
傳回 y /. x
的反正切。 x
和 y
的符號用於確定結果的象限。結果以弧度為單位,介於 -pi
和 pi
之間。
val hypot : float -> float -> float
hypot x y
傳回 sqrt(x *. x +. y *. y)
,也就是說,邊長為 x
和 y
的直角三角形的斜邊長度,或者等效地,點 (x,y)
到原點的距離。如果 x
或 y
中的一個為無限大,則傳回 infinity
,即使另一個為 nan
。
val cosh : float -> float
雙曲餘弦。引數以弧度為單位。
val sinh : float -> float
雙曲正弦。引數以弧度為單位。
val tanh : float -> float
雙曲正切。引數以弧度為單位。
val acosh : float -> float
雙曲反餘弦。引數必須落在 [1.0, inf]
範圍內。結果以弧度為單位,介於 0.0
和 inf
之間。
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 x
將 x
四捨五入到最接近的整數,其絕對值小於或等於 x
。
val round : float -> float
round x
將 x
四捨五入到最接近的整數,並將結(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
。如果 x
或 y
是 nan
,則會傳回 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
的符號。如果 x
是 nan
,則傳回 nan
。如果 y
是 nan
,則傳回 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 ** n
和 0.5 <= x < 1.0
定義。
val ldexp : float -> int -> float
ldexp x n
傳回 x *. 2 ** n
。
val modf : float -> float * float
modf f
傳回 f
的小數部分和整數部分的配對。
typet =
float
浮點數類型的別名。
val compare : t -> t -> int
compare x y
如果 x
等於 y
,則傳回 0
;如果 x
小於 y
,則傳回一個負整數;如果 x
大於 y
,則傳回一個正整數。compare
將 nan
視為等於自身,且小於任何其他浮點數值。這種對 nan
的處理方式確保了 compare
定義了一個全序關係。
val equal : t -> t -> bool
浮點數的相等函數,使用 Float.compare
進行比較。
val min : t -> t -> t
min x y
傳回 x
和 y
的最小值。當 x
或 y
為 nan
時,傳回 nan
。此外,min (-0.) (+0.) = -0.
val max : float -> float -> float
max x y
傳回 x
和 y
的最大值。當 x
或 y
為 nan
時,傳回 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 y
將 nan
視為缺失值,傳回 x
和 y
的最小值。如果 x
和 y
都是 nan
,則傳回 nan
。此外,min_num (-0.) (+0.) = -0.
val max_num : t -> t -> t
max_num x y
將 nan
視為缺失值,傳回 x
和 y
的最大值。如果 x
和 y
都是 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
具有封裝表示法的浮點數陣列 (標記函數)。