Spec-Zone.ru › OCaml

Модуль Float

module Float: sig .. end

Арифметика с плавающей точкой.

Числа с плавающей точкой в OCaml соответствуют стандарту IEEE 754 и используют двойную точность (64 бита). Операции с плавающей точкой никогда не вызывают исключений при переполнении, потере значимости, делении на ноль и т. д. Вместо этого возвращаются соответствующие специальные числа IEEE, например infinity для 1.0 /. 0.0, neg_infinity для -1.0 /. 0.0 и nan («не число») для 0.0 /. 0.0. Затем эти специальные числа распространяются в вычислениях с плавающей точкой ожидаемым образом: например, 1.0 /. infinity — это 0.0, базовые арифметические операции (+., -., *., /.) с аргументом nan возвращают nan, ...

  • Начиная с 4.07
val zero : float

Число с плавающей точкой 0.

  • Начиная с 4.08
val one : float

Число с плавающей точкой 1.

  • Начиная с 4.08
val minus_one : float

Число с плавающей точкой -1.

  • Начиная с 4.08
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, mingw-w64 и MSVC 2017 и более ранних версий эта функция может эмулироваться из-за известных ошибок или ограничений на этих платформах. Примечание: поскольку программная эмуляция fma требует значительных затрат, если производительность важна, убедитесь, что используется аппаратная поддержка fma.

  • Начиная с 4.08
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.

  • Начиная с 4.08
val pred : float -> float

pred x возвращает предыдущее по отношению к x число с плавающей точкой, то есть наибольшее число с плавающей точкой, меньшее x. См. также Float.next_after.

  • Начиная с 4.08
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. При сравнении чисел с плавающей точкой =, <, <=, > и >= возвращают false, а <> возвращает true, если один или оба аргумента равны nan.

С версии 5.1 nan — это quiet_nan; до этого оно было сигнальным NaN.

val signaling_nan : float

Сигнальный NaN. Соответствующие сигналы не вызывают исключений OCaml, но это значение может быть полезно для взаимодействия с библиотеками C.

  • Начиная с 5.1
val quiet_nan : float

Тихий NaN.

  • Начиная с 5.1
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

is_finite x равно true тогда и только тогда, когда x является конечным, то есть не бесконечным и не Float.nan.

  • Начиная с 4.08
val is_infinite : float -> bool

is_infinite x равно true тогда и только тогда, когда x равно Float.infinity или Float.neg_infinity.

  • Начиная с 4.08
val is_nan : float -> bool

is_nan x равно true тогда и только тогда, когда x не является числом (см. Float.nan).

  • Начиная с 4.08
val is_integer : float -> bool

is_integer x равно true тогда и только тогда, когда x является целым числом.

  • Начиная с 4.08
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

Вернуть строковое представление числа с плавающей точкой.

При этом преобразовании возможна потеря точности. Для более точного управления форматом вывода числа см. 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

Кубический корень.

  • Начиная с 4.13
val exp : float -> float

Экспонента.

val exp2 : float -> float

Экспоненциальная функция с основанием 2.

  • Начиная с 4.13
val log : float -> float

Натуральный логарифм.

val log10 : float -> float

Десятичный логарифм.

val log2 : float -> float

Логарифм по основанию 2.

  • Начиная с 4.13
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.

  • Начиная с 4.13
val asinh : float -> float

Гиперболический арксинус. Аргумент и результат могут принимать любые действительные значения. Результат задаётся в радианах.

  • Начиная с 4.13
val atanh : float -> float

Гиперболический арктангенс. Аргумент должен находиться в диапазоне [-1.0, 1.0]. Результат задаётся в радианах и может принимать любые действительные значения.

  • Начиная с 4.13
val erf : float -> float

Функция ошибок. Аргумент может принимать любые действительные значения. Результат всегда находится в диапазоне [-1.0, 1.0].

  • Начиная с 4.13
val erfc : float -> float

Дополнительная функция ошибок (erfc x = 1 - erf x). Аргумент может принимать любые действительные значения. Результат всегда находится в диапазоне [0.0, 2.0].

  • Начиная с 4.13
val trunc : float -> float

trunc x округляет x до ближайшего целого числа, абсолютное значение которого меньше или равно x.

  • Начиная с 4.08
val round : float -> float

round x округляет x до ближайшего целого числа; в случае равенства (дробная часть равна 0.5) округление выполняется от нуля независимо от текущего режима округления. Если x является целым числом, +0., -0., nan или бесконечностью, возвращается само x.

В 64-разрядном mingw-w64 эта функция может эмулироваться из-за ошибки в библиотеке времени выполнения C (CRT) на этой платформе.

  • Начиная с 4.08
val ceil : float -> float

Округлить в большую сторону до целого значения. ceil f возвращает наименьшее целое значение, большее или равное f. Результат возвращается в виде числа с плавающей точкой.

val floor : float -> float

Округлить в меньшую сторону до целого значения. floor f возвращает наибольшее целое значение, меньшее или равное f. Результат возвращается в виде числа с плавающей точкой.

val next_after : float -> float -> float

next_after x y возвращает следующее представимое число с плавающей точкой после x в направлении y. Точнее, если 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.

  • Начиная с 4.08
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 равно true тогда и только тогда, когда установлен знаковый бит x. Например, sign_bit 1. и sign_bit 0. равны false, а sign_bit (-1.) и sign_bit (-0.) равны true.

  • Начиная с 4.08
val frexp : float -> float * int

frexp f возвращает пару из значащей части и порядка числа f. Если f равно нулю, значащая часть x и порядок n числа f равны нулю. Если f не равно нулю, они определяются выражениями f = x *. 2 ** n и 0.5 <= abs 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 возвращает 0, если x равно y, отрицательное целое число, если 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. Она возвращает nan, если x или y равно nan. Кроме того, min (-0.) (+0.) = -0.

  • Начиная с 4.08
val max : float -> float -> float

max x y возвращает максимум x и y. Она возвращает nan, если x или y равно nan. Кроме того, max (-0.) (+0.) = +0.

  • Начиная с 4.08
val min_max : float -> float -> float * float

min_max x y — это (min x y, max x y), только эффективнее.

  • Начиная с 4.08
val min_num : t -> t -> t

min_num x y возвращает минимум x и y, считая nan отсутствующим значением. Если и x, и y равны nan, возвращается nan. Кроме того, min_num (-0.) (+0.) = -0.

  • Начиная с 4.08
val max_num : t -> t -> t

max_num x y возвращает максимум x и y, считая nan отсутствующим значением. Если и x, и y равны nan, возвращается nan. Кроме того, max_num (-0.) (+0.) = +0.

  • Начиная с 4.08
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).

  • Начиная с 4.08
val seeded_hash : int -> t -> int

Хеш-функция с начальным значением для чисел с плавающей точкой, возвращающая то же значение, что и Hashtbl.seeded_hash. Эта функция позволяет передавать данный модуль в качестве аргумента функтору Hashtbl.MakeSeeded.

  • Начиная с 5.1
val hash : t -> int

Хеш-функция без начального значения для чисел с плавающей точкой, возвращающая то же значение, что и Hashtbl.hash. Эта функция позволяет передавать данный модуль в качестве аргумента функтору Hashtbl.Make.

module Array: sig .. end

Массивы чисел с плавающей точкой в упакованном представлении.

module ArrayLabels: sig .. end

Массивы чисел с плавающей точкой в упакованном представлении (функции с метками).

© 1995-2026 INRIA.
https://ocaml.org/manual/5.5/api/Float.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API