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

G.2.1 Модель арифметики с плавающей точкой

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

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

С каждым типом с плавающей точкой связаны бесконечное множество модельных чисел. Модельные числа типа используются для определения требований точности, которые должны удовлетворяться определёнными предопределёнными операциями типа; через определённые атрибуты модельных чисел они также используются для объяснения значения объявления пользовательского типа с плавающей точкой. Модельные числа производного типа — это модельные числа родительского типа; модельные числа подтипа — это модельные числа его типа.
Модельные числа типа с плавающей точкой T — это ноль и все значения, выразимые в канонической форме (для типа T), в которой мантисса имеет T'Model_Mantissa цифр, а экспонента имеет значение, большее или равное T'Model_Emin. (Эти атрибуты определены в G.2.2.)
Модельный интервал типа с плавающей точкой — это любой интервал, границы которого являются модельными числами типа. Модельный интервал типа T, ассоциированный со значением v, — это наименьший модельный интервал T, который включает v. (Модельный интервал, связанный с модельным числом типа, состоит только из этого числа.)

Требования к реализации

Требования к точности для вычисления определённых предопределённых операций типов с плавающей точкой следующие.
Интервал операнда — это модельный интервал, указанный для операнда операции, связанный со значением операнда.
Для любой предопределённой арифметической операции, возвращающей результат типа с плавающей точкой T, требуемые границы результата задаются модельным интервалом T (называемым интервалом результата), определяемым в терминах значений операндов следующим образом:
  • Интервал результата — это наименьший модельный интервал T, который включает минимальное и максимальное значения всех значений, полученных применением (точной) математической операции к произвольно выбранным значениям из соответствующих интервалов операндов.
Интервал результата возведения в степень получается применением вышеуказанного правила к последовательности умножений, определённой экспонентой, предполагая произвольное объединение сомножителей, и к окончательному делению в случае отрицательной экспоненты.
Интервал результата преобразования числового значения в тип с плавающей точкой T — это модельный интервал T, связанный со значением операнда, за исключением случаев, когда исходное выражение имеет тип с фиксированной точкой с small, не являющимся степенью T'Machine_Radix, или является умножением или делением с фиксированной точкой, либо операнд которого имеет small, не являющийся степенью T'Machine_Radix; в этих случаях интервал результата определяется реализацией.
Для любой из вышеперечисленных операций реализация должна выдавать значение, принадлежащее интервалу результата, когда обе границы интервала результата находятся в безопасном диапазоне типа результата T, как определяется значениями T'Safe_First и T'Safe_Last; в противном случае
  • если T'Machine_Overflows равно True, реализация должна либо выдавать значение, принадлежащее интервалу результата, либо генерировать исключение Constraint_Error;
  • если T'Machine_Overflows равно False, результат определяется реализацией.
Для любого предопределённого отношения на операндах типа с плавающей точкой T реализация может выдавать любое значение (т.е. либо True, либо False), полученное применением (точного) математического сравнения к произвольно выбранным значениям из соответствующих интервалов операндов.
Результат проверки принадлежности определяется в терминах сравнения значения операнда с нижней и верхней границами заданного диапазона или метки типа (применяются обычные правила к этим сравнениям).

Разрешения для реализации

Если основное аппаратное обеспечение с плавающей точкой реализует деление как умножение на обратную величину, интервал результата для деления (и возведения в степень с отрицательной экспонентой) определяется реализацией.


Spec-Zone.ru

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