Spec-Zone.ru › Ada 2012
Справочник по Ada 2012

G.2.2 Атрибуты чисел с плавающей точкой, ориентированные на модель

В реализациях, поддерживающих Приложение по арифметике, атрибуты чисел с плавающей точкой, ориентированные на модель, должны иметь значения, определённые здесь, как в строгом, так и в релаксированном режимах. Эти определения добавляют условия к тем, что указаны в A.5.3.

Статическая семантика

Для каждого подтипа S типа чисел с плавающей точкой T:
S'Model_Mantissa

Возвращает количество цифр в мантиссе канонической формы модельных чисел типа T (см. A.5.3). Значение этого атрибута должно быть больше или равно
Ceiling(d · log(10) / log(T'Machine_Radix)) + g
где d — требуемая десятичная точность типа T, а g — 0, если T'Machine_Radix является положительной степенью 10, и 1 в противном случае. Кроме того, T'Model_Mantissa должно быть меньше или равно значению T'Machine_Mantissa. Этот атрибут возвращает значение типа universal_integer.
S'Model_Emin
Возвращает минимальный показатель степени канонической формы модельных чисел типа T (см. A.5.3). Значение этого атрибута должно быть больше или равно значению T'Machine_Emin. Этот атрибут возвращает значение типа universal_integer.
S'Safe_First
Возвращает нижнюю границу безопасного диапазона типа T. Значение этого атрибута должно быть модельным числом типа T и больше или равно нижней границе базового диапазона типа T. Кроме того, если T объявлен с помощью floating_point_definition или получен из такого типа, и floating_point_definition включает real_range_specification, указывающую нижнюю границу lb, то значение этого атрибута должно быть меньше или равно lb; в противном случае оно должно быть меньше или равно –10.0 4 · d, где d — требуемая десятичная точность типа T. Этот атрибут возвращает значение типа universal_real.
S'Safe_Last
Возвращает верхнюю границу безопасного диапазона типа T. Значение этого атрибута должно быть модельным числом типа T и меньше или равно верхней границе базового диапазона типа T. Кроме того, если T объявлен с помощью floating_point_definition или получен из такого типа, и floating_point_definition включает real_range_specification, указывающую верхнюю границу ub, то значение этого атрибута должно быть больше или равно ub; в противном случае оно должно быть больше или равно 10.0 4 · d, где d — требуемая десятичная точность типа T. Этот атрибут возвращает значение типа universal_real.
S'Model
Обозначает функцию (от параметра X), спецификация которой приведена в A.5.3. Если X — модельное число типа T, функция возвращает X; в противном случае она возвращает значение, полученное путем округления или усечения X до одного из смежных модельных чисел типа T. Ошибка Constraint_Error возникает, если полученное модельное число выходит за пределы безопасного диапазона S. Результат нуля имеет знак X, когда S'Signed_Zeros — True.
В соответствии с вышеуказанными ограничениями, значения S'Model_Mantissa и S'Safe_Last должны быть максимизированы, а значения S'Model_Emin и S'Safe_First минимизированы реализацией следующим образом:
  • Сначала S'Model_Mantissa устанавливается на наибольшее значение, для которого значения S'Model_Emin, S'Safe_First и S'Safe_Last могут быть выбраны таким образом, чтобы реализация удовлетворяла требованиям строгого режима G.2.1 в отношении модельных чисел и безопасного диапазона, индуцированных этими атрибутами.
  • Затем S'Model_Emin устанавливается на наименьшее значение, для которого значения S'Safe_First и S'Safe_Last могут быть выбраны таким образом, чтобы реализация удовлетворяла требованиям строгого режима G.2.1 в отношении модельных чисел и безопасного диапазона, индуцированных этими атрибутами и ранее определённым значением S'Model_Mantissa.
  • Наконец, S'Safe_First и S'Safe_Last устанавливаются (в любом порядке) на наименьшее и наибольшее значения соответственно, для которых реализация удовлетворяет требованиям строгого режима G.2.1 в отношении модельных чисел и безопасного диапазона, индуцированных этими атрибутами и ранее определёнными значениями S'Model_Mantissa и S'Model_Emin.


Spec-Zone.ru

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