Справочное руководство по языку Ада-83

         

type COEFFICIENT is digits 10



type COEFFICIENT is digits 10 range -1.0 .. 1.0;type REAL is digits 8; type MASS is digits 7 range 0.0 .. 1.0Е35;subtype SHORTCOEFF is COEFFICIENT digits 5; -- подтип с меньшей точностью subtype PROBABILITY is REAL range 0.0 .. 1.0; -- подтип с меньшим диапазоном
к примерам. Реализованная точность для типа COEFFICIENT — это точность предопределенного типа, имеющего по меньшей мере 10 цифр мантиссы. Следовательно, спецификация пяти цифр точности для подтипа SHORT_COEFF допустима. Наибольшее модельное число для типа MASS равно приблизительно 1.ОЕ21 и, следовательно, меньше, чем заданная верхняя граница, (1.0Е35). Следовательно, описание этого типа правильно, только если эта верхняя граница принадлежит диапазону хранимых чисел предопределенного плавающего типа, имеющего по меньшей мере 7 цифр точности.
Ссылки: анонимный тип 1, арифметическая операция 5, 4.5, вещественный тип 6, граница диапазона 3.5, граница ошибки 6, литерал с основанием 2, модельное число 6, обозначение типа 2, ограничение диапазона 3.5, операция , описание подтипа 2, описание типа 3,3.1, определение вещественного типа 6, принадлежит подтипу 3.3, подтип 3.3, порядок 1, Предвыполнение 3.1, 3.9, предопределенная операция 4.5, предопределенный тип С, производный тип 3.4, простое выражение 4.4, совместимый 2, статическое выражение 4.9, тип 3.3, указание подтипа 2, хранимое число 6, целый тип 4, цифра
8. ОПЕРАЦИИ НАД ПЛАВАЮЩИМИ ТИПАМИ
Базовые операции над плавающим типом включают присваивание, проверку принадлежности, квалификацию, явное преобразование значений других числовых типов в значения этого плавающего типа и неявное преобразование значений типа универсальный-вещественный в значения этого типа.
Кроме того, для каждого плавающего типа или подтипа Т базовые операции включают перечисленные ниже атрибуты. В этом представлении Т — это подтип (подтип Т) для любого свойства, зависящего от наложенных на Т ограничений; другие свойства формулируются через базовый тип Т.
Первая группа атрибутов вырабатывает характеристики подтипа Т. К атрибутам этой группы относятся атрибут ВАSЕ (см. 3), атрибуты FIRST и LAST (см. 3.5), атрибут представления SIZE (см. 2), а также следующие атрибуты:
T'DIGITS Вырабатывает число десятичных цифр в десятичной мантиссе модельных чисел подтипа Т. (Этот атрибут вырабатывает число D, см. разд. 7.) Значение этого атрибута имеет тип универсальный-целый.
T'MANTISSA Вырабатывает число двоичных цифр в двоичной мантиссе модельных чисел подтипа Т. (Этот атрибут вырабатывает число В, см. разд. 7.) Значение этого атрибута имеет тип универсальный-целый.
T'EPSILON Вырабатывает абсолютное значение разности между модельным числом 1.0 и следующим модельным числом подтипа Т. Значение этого атрибута имеет тип универсальный-вещественный.
T'EMAX Вырабатывает наибольшее значение порядка двоичной канонической формы модельных чисел подтипа Т. (Этот атрибут вырабатывает произведение 4*В, см. разд. 7.) Значение этого атрибута имеет тип универсальный-целый.
T'SMALL Вырабатывает наименьшее положительное (ненулевое) модельное число подтипа Т. Значение этого атрибута имеет тип универсальный-вещественный.
T'LARGE Вырабатывает наибольшее положительное модельное - число подтипа Т. Значение этого атрибута имеет тип универсальный- вещественный.

Атрибуты второй группы вырабатывают характеристики хранимых чисел и включают следующие атрибуты:
T'SAFE-EMAX Вырабатывает наибольшее значение порядка двоичной канонической формы хранимых чисел базового типа Т. (Этот атрибут вырабатывает число Е, см. разд. 7.) Значение этого атрибута имеет тип универсальный-целый.
T'SAFE-SMALL Вырабатывает наименьшее положительное (ненулевое) хранимое число базового типа Т. Значение этого атрибута имеет тип унивеосальный- вещественный.

T'SAFE_LARGE Вырабатывает наибольшее положительное хранимое число базового типа Т. Значение этого атрибута имеет тип универсальный - вещественный.

Кроме этого, для объекта А плавающего типа определены атрибуты A'SIZE и A'ADDRESS (см. 2). Для каждого плавающего типа существуют машинно-зависимые атрибуты, которые не относятся к модельным и хранимым числам. Они соответсвуют обозначениям атрибутовMACHINE_EMAX, MACHINE_EMIN, MACHINE_RADIX, MACHINE_MANTISSA,
MACHINE_ROUNDS и MACHINE_OVERFLOWS (см. 3).
Кроме базовых операций над плавающим типом определены операции отношения и следующие предопределенные арифметические операции: унарные и бинарные аддитивные операции - и +, мультипликативные операции » и /, унарная операция abc и операция возведения в степень.
Операции над подтипом соответствуют операциям над типом, кроме следующих: присваивания, проверки принадлежности, квалификации, явного преобразования и атрибутов первой группы; результаты этих операций переопределены в терминах подтипа.
. Атрибуты ЕМАХ, SMALL, LARGE и EPSILON связаны с атрибутом MANTISSA следующими формулами:
Т'ЕМАХ = 4*T'MANTISSA
T'EPSILON = 2.0**(1 - T'MANTISSA)
T'SMALL = 2.0**(-Т'ЕМАХ - 1)
T'LARGE = 2.0**Т'ЕМАХ * (1.0 - 2.0**(-T'MANTISSA))
Атрибут MANTISSA, дающий число двоичных цифр в мантиссе, сам связан с атрибутом DIGITS.
Между характеристиками модельных и хранимых чисел справедливы следующие соотношения:
T'BASE_EMAX <= T'SAFE_EMAX T'BASE_SMALL >= T'SAFE_SMALL T'BASE_LARGE <= T'SAFE_LARGE
Атрибуты T'FIRST и T'LAST не обязательно вырабатывают модельные или хранимые числа. Если некоторое число цифр определено описанием типа или подтипа Т, то атрибут DIGITS вырабатывает это число.
Ссылки: арифметическая операция 5, 4.5, атрибут 4, базовая операция 3, базовый тип 3.3, бинарная аддитивная операция 4.5, 3, границы диапазона 3.5, квалифицированное выражение 4.7, модельное число 6, мультипликативная операция 4.5, 5, объект 3.2, ограничение 3.3, операция 3.3, операция возведения в степень 4.5, 6, операция отношения 4.5, 2, плавающий тип 7, подтип 3.3, предопределенная операция 4.5, преобразование 4.6, присваивание 5.2, проверка принадлежности 4.5, 2, тип 3.3, тип универсальный вещественный 6, тип универсальный целый 4, унарная аддитивная операция 4.5, 4, универсальный тип 4.10, хранимое число 6, цифра 2.1, числовой тип
9. ФИКСИРОВАННЫЕ ТИПЫ
Для фиксированных типов граница ошибки определяется абсолютной погрешностью, называемой дельтой фиксированного типа.
ограничение-фиксированного-типа :: =
определение - точности - фиксированного - типа [ограничение - диапазона]
определение - точности - фиксированного - типа:: = delta статическое- простое - выражение
Дельта определяется значением статического простого выражения в определении точности фиксированного типа. Это значение должно принадлежать некоторому вещественному типу и быть положительным (ненулевым). Если ограничение для фиксированного типа использовано как опеределение вещественного типа, то оно должно включать ограничение диапазона;каждая граница диапазона должна быть определена статическим выражением некоторого вещественного типа, но эти две границы не обязаны иметь один и тот же тип. Если ограничениедля фиксированного типа использовано в указании подтипа, то ограничение диапазона необязательно.
Для любого ненулевого модельного числа фиксированного типа определена каноническая форма. В этой форме: знак — это либо +1, либо -1; мантисса — положительное (ненулевое) целое; любое модельное число кратно некоторому положительному вещественному числу, называемому дискретом, определенному следующим образом:
знак*мантисса*дискрет
Для модельных чисел фиксированного типа дискрет выбран как наибольшая степень двух, которая не превышает дельту определения точности фиксированного типа. Дискрет можно также задать спецификатором длины (см. 13.2), в этом случае модельные числа кратны заданному значению. Гарантированная минимальная точность операций над фиксированным типом определена в терминах модельных чисел из ограничения для фиксированного типа, которое образует соответствующее определение вещественного типа (см. 7).
Для ограничения фиксированного типа с ограничением диапазона модельные числа включают нуль и все числа, кратные дискрету, мантисса которых может быть выражена точно В двоичными цифрами, а значение В выбрано как наименьшее целое число, для которого каждая граница заданного диапазона — либо модельное число, либо отличается не более чем на дискрет от модельного числа. Если ограничение для фиксированного типа не включает ограничение диапазона (это допустимо только после обозначения типа в указании подтипа), модельные числа определены дельтой определения точности фиксированного типа и диапазоном подтипа, заданного обозначением типа.
Реализация должна иметь по крайней мере один анонимный предопределенный фиксированный тип. Базовый тип каждого такого фиксированного типа — это сам этот тип. Модельные числа каждого предопределенного фиксированного типа включают нуль и все числа, для которых мантисса (в канонической форме) имеет число двоичных цифр, вырабатываемое атрибутом MANTISSA, и для которых дискрет имеет значение, возвращаемое атрибутом SMALL
Описание фиксированного типа в форме
type T is delta D range L .. R
по определению эквивалентно следующим описаниям:
type фиксированный-тип is new
предопределенный - фиксированный - тип;
subtype T is фиксированный-тип delta D range
фиксированный-тип (L) .. фиксированный-тип (R);
В этих описаниях фиксированный-тип — это анонимный тип, а предопределенный фиксированный тип неявно выбран реализацией так, чтобы его модельные числа включали описанные ограничением для фиксированного типа модельные числа (т. е. с помощью D, L и R, а возможно и спецификатора длины, определяющего дискрет).
Описание фиксированного типа неправильно, если не существует предопределенного типа, удовлетворяющего этим требованиям. Хранимые числа фиксированного типа — это модельные числа его базового типа.
Предвыполнение описания фиксированного типа состоит из предвыполнения эквивалентных описаний типа и подтипа.
Если ограничение для фиксированного типа следует за обозначением типа в указании подтипа, то обозначение типа должно задавать фиксированный тип или подтип. Ограничение для фиксированного типа совместимо с обозначением типа, только если дельта из определения точности фиксированного типа не меньше дельты для типа или подтипа, заданного обозначением типа. Более того, если ограничение для фиксированного типа включает ограничение диапазона, то ограничение для фиксированного типа совместимо с обозначением типа, только если само ограничение совместимо с обозначением типа.
Предвыполнение такого указания подтипа включает Предвыполнение ограничения диапазона, если оно есть; оно создает фиксированный подтип, модельные числа которого определены соответствующим ограничением для фиксированного типа, а также спецификатором длины, задающим дискрет, если он есть. Значение фиксированного типа принадлежит фиксированному подтипу тогда и только тогда, когда оно принадлежит диапазону, определенному подтипом.
Для всех фиксированных типов предопределены одни и те же арифметические операции (см. 4.5). Умножение и деление значений фиксированного типа дают результаты анонимного предопределенного фиксированного типа, который в данном стандарте называется универсальный-фиксированный; точность этого типа произвольна. Значения этого типа должны быть явно преобразованы в значения некоторого числового типа.
. Если S — подтип фиксированного типа или подтипа Т, то набор модельных чисел S — это подмножество модельных чисел Т. Если для Т был задан спецификатор длины, то Т и S имеют одно и то же значение дискрета. В противном случае поскольку дискрет равен степени двух, то дискрет для S равен дискрету для Т, умноженному на неотрицательную степень двух.
Ограничение диапазона допустимо в указании фиксированного подтипа либо непосредственно за обозначением типа, либо как часть ограничения для фиксированного типа. В обоих случаях границы диапазона должны принадлежать базовому типу обозначения типа (см. 3.5).

Содержание раздела