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

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.)
ПРИМЕЧАНИЯ
18 Как подразумевается в спецификации возведения в степень целочисленного типа, выполняется проверка, что показатель степени не отрицательный. Если эта проверка не пройдена, генерируется исключение Constraint_Error.


Spec-Zone.ru

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