Справочник Ada 2012
3.5.6 Типы вещественных чисел
Типы вещественных чисел представляют приближения вещественных чисел, с относительными границами погрешности для типов с плавающей точкой и с абсолютными границами для типов с фиксированной точкой.
Синтаксис
Статические семантики
Тип, определённый real_type_definition, неявно выводится из root_real, безымянного предопределённого (специфического) типа вещественного числа. Таким образом, все типы вещественных чисел, будь то с плавающей точкой или с фиксированной точкой, находятся в классе производных, укоренённом в root_real.
Литералы вещественных чисел имеют тип universal_real, универсальный тип (см. 3.4.1) для класса, укоренённого в root_real, что позволяет использовать их с операциями любого типа вещественного числа. Некоторые операторы умножения имеют тип результата universal_fixed (см. 4.5.5), универсальный тип для класса типов с фиксированной точкой, позволяющий использовать результат умножения или деления там, где ожидается какой-либо конкретный тип с фиксированной точкой.
Динамические семантики
Выработка real_type_definition состоит из выработки floating_point_definition или fixed_point_definition.
Требования к реализации
Реализация должна выполнять вычисление в реальном времени использования предопределённого оператора root_real с точностью, по крайней мере, не меньшей, чем любая тип с плавающей точкой, определяемый floating_point_definition.
Разрешения для реализации
При выполнении предопределённой операции с типом вещественного числа, реализация не должна генерировать Constraint_Error, если результат выходит за пределы базового диапазона типа, при условии, что корректный результат получен, или атрибут Machine_Overflows типа равен False (см. G.2).
Реализация может предоставлять нестандартные типы вещественных чисел, потомки root_real, которые объявляются вне спецификации пакета Standard, которые не обязательно должны обладать всеми стандартными характеристиками типа, определённого real_type_definition. Например, нестандартный тип вещественного числа может иметь асимметричный или беззнаковый базовый диапазон, или его предопределённые операции могут циклически переходить или «насыщаться», а не переполняться (модулярная или насыщающая арифметика), или он может не соответствовать модели точности (см. G.2). Любой тип, полученный от нестандартного типа вещественного числа, также является нестандартным. Реализация может установить произвольные ограничения на использование таких типов; определено ли реализацией, что операторы, которые предопределены для «любого типа вещественного числа», определены для конкретного нестандартного типа вещественного числа. В любом случае, такие типы не допускаются в качестве explicit_generic_actual_parameters для формальных типов скалярных переменных — см. 12.5.2.
ПРИМЕЧАНИЯ
40 Как указано, вещественные литералы относятся к безыменному предопределённому типу вещественного числа universal_real. Другие типы вещественных чисел не имеют литералов. Однако правила разрешения перегрузки (см. 8.6) допускают выражения типа universal_real, когда ожидается тип вещественного числа.