Н. Джехани - Язык Ада (1988) (1160771), страница 81
Текст из файла (страница 81)
ванне типа 4.6, фактический параметр 6.4.1, фиксированный тип 3.5.9, формальная подпро. грамма настройки 12.1, целый тип 3.5.4, числовой тип 3.5. 4.5.6. ОПЕРАЦИИ ВЫСШЕГО ПРИОРИТЕТА Унарнвя операция высшего приоритета абэ предопределена для любого числового типа Унарная операция высшего приоритета по1 предопределена для любого логического типа и одномерного индексируемого типа с компонентами логического типа Знак Операция Тнп операнда Тип результата операции Любой числовой тип Тот же числовой тип Абсолютное значение Любой логический тип Логическое отрицание Тот же логический тип по1 Операция поз, применяемая к одномерному массиву с логическими компонентами, вырабатывает одномерный логический массив с теми же самыми границами; каждая компонента результата получается как логическое отрицание соответствующей компоненты операнда(т.е.
компоненты с тем же значением индекса). Операция возведения в степень ° ° предопределена для каждого целого и для каждого плавающего типов. В обоих случаях правый операнд, называемый показателем степени, имеет предопределенный тип 1МТЕОЕВ. Знак операции Возведение Любой целый тип 1МТЕОЕВ в степень Тип левого операнда Любой плавающий (МТЕВЕВ тип Тип левого операнда Возведение в степень с положительным показателем эквивалентно кратному умножению левого операнда на себя слева направо в соответствии со значением показателя. Для операнда плавающего типа порядок может быть отрицательным, в этом случае результат — обратная величина результата с положительной степенью. Возведение в нулевую степень дает в результате единицу.
Возведение в степень значения плавающего типа является приближенным (см. 4.5.77. При возведении целого значения в отрицательную степень возбуждаетоя исключение СОМВТВА1МТ ЕВВОВ. 10 11 12 13 14 10 11 12 13 14 б 2 О О -10 6 -2 О О 6 2 1 1 -11 б -2 -1 4 5 2 2 2 -12 6 -2 -2 3 б 2 3 3 -13 Б -2 -3 2 6 2 4 4 -14 Б -2 -4 1 -б -2 О О -1О -5 2 О О -Б -2 1 -4 -11 -б 2 -1 -1 -б -2 2 -3 -12 -6 2 -2 -2 -5 -2 3 -2 -13 -6 2 -3 -3 -Б -2 4 -1 -14 -Б 2 -4 -4 Массив с логическими Тот же индексируемый компонентами тип Операция Тип левого Тип правого Тип результата операнда операнда Глава 4 Ссылки: возбуждение исключений 11, граница массива 3.6.1, индекс 3.6, индексируемый тип 3.6, исключение СОМЗТЛА)МТ ЕВРОП 11.1, компонента массива 3.6, логический тип 3.5.3, операция умножение 4.5.5, плавающий тип 3.5.9, предопределенная операция 4.5, размерность 3.6, целый тип 3.5.4.
4.5.7. ТОЧНОСТЬ ОПЕРАЦИЙ С ВЕЩЕСТВЕННЫМИ ОПЕРАНДАМИ Вещественный подтип определяет множество модельных чисел. В терминах модельных чи. сел определяются точность, с которой базовые и предопределенные операции вырабатывают вещественный результат, и результат предопределенных операции отношения с вещественны. ми операндами. Модельный интервал подтипа — это интервал с границами, заданными модельными числами этого подтипа.
Связанныи с принадлежащими вещественному подтипу значениями модельный интервал является наименьшим модельным интервалом (данного подтипа), который содержит эти значения (модельный интервал, связанный с модельным числом некоторого подтипа, состоит только из этого числа). Для любой базовой или предопределенной операции, вырабатывающей результат вещественного подтипа, требуемые границы результата задаются модельным интервалом, который определяется следующим образом: ° Модельный интервал результата — это наименьший модельный интервал (подтипа результата], который включает в себя минимальное и максимальное из всех значений, получаемых при применении (точной) математической операции, где каждый операнд — это любое значение из модельного интервала (подтипа операнда), определенного для этого операнда.
° Модельный интервал операнда, который сам является результатом операции, отличной от неявного преобразования, является модельным интервалом результата этой операции. ° Модельный интервал операнда, значение которого получено неявным преобразованием универсального выражения, является модельным интервалом, соответствующим этому значению из подтипа операнда.
Модельный интервал результата не определен, если абсолютное значение хотя бы одного из упомянутых выше математических результатов превышает наибольшее хранимое число типа результата. Всякий раз, когда модельный интервал результата не определен и реализация не может обеспечить, чтобы фактический результат лежал в диапазоне хранимых чисел, крайне желательно возбуждение исключения НЦМЕВ(С ЕВВОЛ. Правила языка, однако, этого не трэ буют, так как для некоторых объектных машин нет простых методов обнаружения переполнения. Значение атрибута МАСН1НЕ ОЧЕЛРЬОУУЗ указывает, возбуждает ли объектная машина исключение М()МЕЛ)С ЕЛЯОП в ситуациях переполнения (см. 13.7.3).
Хранимые числа вещественного типа определены (см. 3.5.6) как надмножество модельных чисел, границы ошибок которых подчиняются тем же правилам, что и для модельных чисел. Любое задаваемое в этом разделе в терминах модельных интервалов определение может поэ. тому быть распространено на хранимые интервалы хранимых чисел. Следствием такого рас. пространения является то, что для реализации не допускается возбуждение исключения НОМЕ))(С ЕЙЛОП, если интервал результата является хранимым интервалом. Для результата операции возведения в степень модельный интервал, определяющий границы результата, определяется по приведенным выше правилам, которые применяются к после. довательным умножениям при вычислении степени и к заключительному делению, если показатель степени — отрицательное число.
Для результата операции отношения между двумя вещественными операндами рассмотрим модельный интервал (подтипа операнда), определенный для каждого такого операнда; результат может быть любым значением, полученным при применении математической операции сравнения к значениям, произвольно выбранным в соответствующих модельных интервалах операндов.
Если один или оба модельных интервала операндов не определены (и если при вычислении операндов не было возбуждено исключение), то в качестве результата сравнения допустимо любое возможное значение (т.е. либо ТВОЕ, либо РАЬЗЕ). Результат проверки принадлежности определен в терминах сравнения значения операнда с нижней и верхней границами заданного диапазона или обозначения типа (к таким сравнениям применяются обычные правила).
Примечание. Для плавающего типа числа 15.0, 3.0 и 5.0 всегда являются модельными числами. Следовательно, Х/у, где Х равно 15.0, а У вЂ” 3.0, согласно приведенным выше правилам, вырабатывает в результате точно 5.0. В общем случае деление не вырабатывает в результате 351 Имела я вы ения модельные числа, и, следовательно, нельзя рассчитывать, что выполнено равенство (1.ЭХ)'Х ш 1.0. Ссылки: атрибут 4.1.4, атрибут МАСН)НЕ ОЧЕЙЕ(.Оуу8 13.7.1, базовая операция типа 3.3.3, вещественный тип 3.5.6, возбуждение исключений 11, граница диапазона 3.5, граница ошибки 3.5.6, диапазон 3.5, исключение МОМЕЙ!С ЕЙЙОЙ 11.1, логическое значение РАЕВЕ 3.5.3, логи-' ческое значение ТВОЕ 3.5.3, модельное число 3.5.6, обозначение типа 3.3.2, операция возведения в стапень 4.5.6, операция отношение 4.5, 4.52, операция умножение 4.5.5, отношение 4.4, плавающий тип 3.5.9, подтип 3.3, предопределенная операция типа 3.3.3, преобразование типа 4.6, проверка вхождения 45.2, универсальное выражение 4.10, хранимое число 3.5.6.
4.6. ПРЕОБРАЗОВАНИЕ ТИПА Вычисление явного преобразования типа — зто вычисление выражения, заданного в каче. стае операнда, и преобразование результата в значение указанного целевого типа Явные преобразования типов допустимы между взаимосвязанными типами. преобразование типа;:= обозначение типа (выражение) Целевой тип преобразования типа — это базовый тип обозначения типа. Тип операнда преобразования типа должен быть определимым независимо от контекста (в частности, нева.