Н. Джехани - Язык Ада (1988) (1160771), страница 68
Текст из файла (страница 68)
Набор хранимых чисел вещественного типа должен включать по крайней мере набор модельных чисел типа. Допустимо, чтобы диапазон хранимых чисел был больше диапазона модельных чисел, но границы ошибок предопределенных операций над хра. нимыми числами определены теми же правилами, что и для модельных чисел.
Хранимые числа по этой причине обеспечивают гарантированные границы ошибок для операций над зависящим от реализации диапазоном чисел; напротив, диапазон модельных чисел зависит только от определения вещественного ти!Та и поэтому не зависит от реализации. Вещественные литералы — это литералы анонимного предопределенного вещественного типа, называемого в этом руководстве универсальным вещественным. Другие вещественные типы не имеют литералов. Для каждого вещественного типа существует неявное преобразование, которое преобразует универсальное вещественное значение в значение этого вещественного типа. условия, в которых вызываются эти преобразования, описаны в равд.
4.6. Если универсальное вещественное значение — хранимое число, то неявное преобразование вырабатывает соответствующее значение; если оно принадлежит диапазону хранимых чисел, но не является хранимым числом, то преобразуемое значение может быть любым значением в диапазоне, определенном ближайшими хранимыми предыдущим и последующим числами универсального вещественного значения. Выполнение операции типа вырабатывает значение вещественного типа и может возбу. дить исключение МОМЕН)С ЕННОН, как поясняется в равд.
4.5.7, если она не может вырабатывать корректный результат (т.е. соответствующее одному из возможных математических ре. 3» Описания и типы зультатов значение не принадлежит диапазону хранимых чисел); в частности, это исключение может быть возбуждено неявным преобразованием. Однако от реализации не требуется возбуждать исключение МОМЕЯ!С ЕЯЯОЯ, если операция — часть большего выражения, которое может быть корректно вычислено (см. 11В), Предвыполнение определения вещественного типа включает предвыполнение ограниче.
ния плавающего или фиксированного типа и создает вещественный тип. Примечание. Алгоритм, использующий только минимальные свойства чисел, которые гарантированы определением типа для модельных чисел, будет переносимым беэ каких-либо предосторожностей. Ссылки: вещественный литерал 2.4, исключение НОМЕЯ(С ЕЯЯОЯ 11.1, литерал 42, ограничение плавающего типа 3.5.7, ограничение фиксированного типа 3.5.7, определение типа 3.3.1, предопределенная операция 3.3.3, предвыполнение 3.9, преобразование 4.6, тип 3.3, универсальный тип 4.10.
3.5.7. ПЛАВАЮЩИЕ ТИПЫ Для плавающих типов граница ошибки определяется заданием относительной погрешности в виде требуемого минимального числа значащих десятичных цифр. ограничение плавающего типа:; = определение точности плавающего типа (ограничение диапазона] определение точности плавающего типа::= б(ййв статическое простое выражение Минимальное число значащих десятичных цифр определяется значением статического простого выражения в определении точности плавающего типа. Это значение должно быть некоторым целым типом и должно быть положительным (ненулевым); в дальнейшем оно обо.
значено буквой О. Если ограничение плавающего типа использовано как определение вещественного типа и включает ограничение диапазона, то каждая граница диапазона должна быть определена статическим выражением некоторого вещественного типа, но две границы не обязаны иметь один и тот же вещественный тип. Для данного основания определена следующая каноническая форма отличного от нуля модельного числа плавающего типа: знак мантисса (основание порядок) В этой форме: знак — либо е 1, либо — 1;мантисса выражена в системе счисления, заданной основанием; порядок — целое число (возможно, отрицательное), такое, что целая часть мантиссы равна нулю, а первая цифра ее дробной части не равна нулю. Число 0 — минимальное требуемое число десятичных цифр после точки в десятичной мантиссе (т.е. если основание равно десяти). Значение 0 в свою очередь определяет число  — минимальное требуемое число двоичных цифр после точки в двоичной мантиссе (т.е.
если основание равно двум). Число В связано с 0 и равно такому минимальному значению, что относительная точность двоичной формы не меньше точности для десятичной формы. (Число В равно ближайшему целому, превышающему (0*)од(10)дой(2)) +1.) Модельные числа, заданные определением точности плавающего типа, включают нуль и все числа, у которых двоичная каноническая форма имеет точно В цифр после точки в мантиссе и порядок в диапазоне -4*В..
+4*В. Гарантированная минимальная точность операций над плавающим типом определена в терминах его модельных чисел с ограничением плаваю. щего типа, которое формирует соответствующее определение вещественного типа (см. 4.5.7). Предопределенные плавающие типы включают тип РЕОАТ. Реализация может иметь также предопределенные типы БНОЯТ ЕЕОАТ и ЕОМС РЕОАТ с точностью (существенно) мень. шей и большей соответственно, чем у РЬОАТ. Базовым типом каждого предопределенного плавающего типа является он сам. Модельные числа каждого предопределенного плавающего типа определены числом 0 десятичных цифр, вырабатываемых атрибутом О!6)ТБ (см. 3.5.8). Для каждого предопределенного плавающего типа (а следовательно, и для каждого про.
неводного от него типа) набор хранимых чисел определен следующим образом. Хранимые числа имеют то же самое число цифр В мантиссы, что и модельные числа типа, а порядок— в диапазоне -Е.. + Е, где Е зависит от реализации и равно по крайней мере 4 В для модель. ных чисел. (Следовательно, хранимые числа включают модельные числа.) Правила определения точности операций над модельными и хранимыми числами даны в равд.
4.5.7. Хранимые числа подтила те же, что и для его базового типа. Глава 3 31г Описание плавающего типа, представленное в одной из двух форм (т.е. с возможным ограничением диапазона, обозначенным квадратными скобками, или без него): Пп т м шв(м о [апве ь ., я); по определению эквивалентно следующим описаниям; 1уре плавающий тил 1в пеш предопределенный плавающий тип; вмб(уре Т 1в плавающий тил 5181(в 0 (гвпйе плавающий тип (Ц..плавающий тип (Я)); где плавающий тип является анонимным, а предопределенный плавающий тип неявно выбран реализацией так, что его модельные числа определяются значением 0; кроме того, если добавлен диапазон Е..
В, то Е и Я должны принадлежать диапазону хранимых чисел. Описание плавающего типа неправильно, если ни один из предопределенных плавающих типов не удовлетворяет этим требованиям, кроме типа универсальный вещественный. Максимальное число цифр, которое может быть задано определением точности плавающего типа, определяется именованным числом 878ТЕМ.МАХ 016178 (см. 13.7.1). Предвыполнение описания плавающего типа состоит из предвыполнения эквивалентных описаний типа и подтипа. Если ограничение плавающего типа следует за обозначением типа в указании подтипа, то обозначение типа должно задавать плавающий тип или подтип.
Ограничение плавающего типе совместимо с обозначением типа, только если число 0 в определении точности плавающего типа не больше соответствующего числа 0 для типа ипи подтипа в обозначении типа Кроме того, если ограничение плавающего типа включает ограничение диапазона, то ограничение плавающего типа совместимо с обозначением типа, только если ограничение диапазона совместимо с обозначением типа. Предвыполнение такого указания подтипа включает предвыполнение ограничения диапазона, если оно есть; оно создает подтип плавающего типа, модельные числа которого опреде. пены соответствующим определением точности плавающего типа. Значение плавающего типа принадлежит плавающему подтипу тогда и только тогда, когда оно принадлежит диапазону подтипа.
Одни и те же арифметические операции предопределены дпя всех плавающих типов(см. 4.5), Примечание. Ограничение диапазона допустимо в указании плавающего подтипа непосредственно после обозначения типа либо как часть ограничения плавающего типа. В обоих случаях границы диапазона должны принадлежать базовому типу обозначения типа (см. 3.5). Наложение ограничения плавающего типа на обозначение типа в указании подтипа не может уменьшить допустимый диапазон значений, если оно не включает ограничение диапазона (диапазон модельных чисел, которые соответствуют заданному числу цифр, может быть меньше, чем диапазон чисел обозначения типа). Принадлежащее плавающему подтипу значение не обязательно является модельным числом подтипа.
Примеры: ~уре СОЕРШС1ЕНТ !а ШВ(М 1О гаера -1.0 .. 1.0; «Вм ЛЕАь Ь Е(ВЙ» Е: ~ура МАЕЕ (а а(Е(М 7 мпеа 0.0 .. 1.ОЕЗЕ: ° ажуре Енолт соеру м сберйс1ент а(влэ 6; — подтип с меньшей точностью ачыуре рйбвпв(ыту м лепь галле 0.0 .. 1.0; — подтип с меньшим диапазоном Примечание к примерам. Реализованная точность для типа СОЕРР1С1ЕНТ вЂ” это точность предопределенного типа, имеющего по меньшей мере 10 цифр мантиссы. Следовательно, спе.
цификация пяти цифр точности для подтипа ВНОВТ СОЕРР допустима Наибольшее модельное число для типа МА88 равно приблизительно 1.0821 и, следовательно, меньше, чем заданная верхняя граница, (1.ОЕ35). Следовательно, описание этого типа правильно, только если эта верхняя граница принадлежит диапазону хранимых чисел предопределенного плавающего типа, имеющего по меньшей мерв 7 цифр точности. Описаниям типы 313 Ссылки: анонимный тип 3.3.1, арифметическая операция 3.5.5, 4.5, вещественный тип 3.5.6, граница диапазона 3.5, граница ошибки 3.5.6, литерал с основанием 2.4.2, модельное число 3.5.6, обозначение типа 3.3.2, ограничение диапазона 3.5, операция 3.3., описание подтипа 3.3.2, описание типа 3.3.1, определение вещественного типа 3.5.6, принадлежит подтипу 3.3, подтип 3.3, порядок 2.4.1, предвыполнение 3.1, 3.9, предопределенная операция 4.5, предопределенный тип С, производный тип 3.4, простое выражение 4.4, совместимый 3.3.2, статическое выраже.
ние 4.9, тип 3.3, указание подтипа 3.3.2, хранимое число 3.5.6, целый тип 3.5.4, цифра 2.1. 358. ОПЕРАЦИИ НАД ПЛАВАЮЩИМИ ТИПАМИ Т'О(Э(Т8 Вырабатывает число десятичных цифр в десятичной мантиссе модельных чисел подтипа Т.(Этот атрибут вырабатывает число О, см. равд. 3.5.7.) Значение этого атрибута имеет тип универсальный целый.