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

4.5.6 Операторы с наивысшим приоритетом

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

Оператор с наивысшим приоритетом унарный abs (модуль) предопределён для каждого числового типа T со следующим описанием:
function "abs"(Right : T) return T
Оператор с наивысшим приоритетом унарный not (логическое отрицание) предопределён для каждого булевого типа T, каждого модульного типа T и для каждого одномерного массива типа T, компоненты которого являются булевыми типами, со следующим описанием:
function "not"(Right : T) return T
Результат применения оператора not к модульному типу определяется как разность между верхней границей базового диапазона типа и значением операнда. Для двоичного модуля это соответствует побитовому дополнению двоичного представления значения операнда.
Оператор not, применяемый к одномерному массиву булевых компонентов, возвращает одномерный булевый массив с теми же границами; каждый компонент результата получается путём логического отрицания соответствующего компонента операнда (то есть компонента с тем же значением индекса). Проверяется, что каждый компонент результата принадлежит типу компонента; если эта проверка завершается неудачей, генерируется исключение Constraint_Error.
Оператор возведения в степень ** с наивысшим приоритетом предопределён для каждого целочисленного типа T со следующим описанием:
function "**"(Left : T; Right : Natural) return T
Возведение в степень также предопределено для каждого типа с плавающей точкой, а также для типа root_real, со следующим описанием (где T — root_real или тип с плавающей точкой):
function "**"(Left : T; Right : Integer'Base) return T
Правый операнд операции возведения в степень является экспонентой. Значение X**N при положительном значении экспоненты N равно значению X*X*...*X (с N-1 умножениями), за исключением того, что умножения могут быть связаны в произвольном порядке. При N, равном нулю, результат равен единице. При отрицательном значении N (определено только для операнда с плавающей точкой) результат равен обратному значению результата, вычисленному с использованием абсолютного значения N в качестве экспоненты.

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

Реализация операции возведения в степень в случае отрицательной экспоненты допускает возникновение исключения Constraint_Error, если промежуточный результат повторных умножений выходит за безопасный диапазон типа, даже если конечный результат (после получения обратного значения) не выйдет за него. (В этом случае наилучшее приближение машинного результата обычно равно 0,0.)
ПРИМЕЧАНИЯ
19 Как подразумевается в описании возведения в степень целочисленного типа, проверяется, что экспонента не является отрицательной. Если проверка завершается неудачей, генерируется исключение Constraint_Error.


Spec-Zone.ru

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