subtype ВЕРОЯТНОСТЬ is ВЕЩЕСТВ range 0.0 .. 1.0;
- подтип с меньшим диапазоном.
Примечания к примерам. Реализованная точность для типа КОЭФФИЦИЕНТ - это точность предопределенного типа, имеющего по меньшей мере 10 цифр мантиссы. Следовательно, спецификация пяти цифр точности для подтипа КОРОТКИЙ_КОЭФФ допустима. Наибольшее модельное число для типа МАССА равно приблизительно 1.27ЕЗО и, следовательно, меньше, чем заданная верхняя граница (1.ОЕ35). Следовательно, описание этого типа правильно, только если эта верхняя граница принадлежит диапазону хранимых чисел предопределенного плавающего типа, имеющего по меньшей мере 7 цифр точности.
О п е р а ц и и над плавающими типами
Базовые операции над плавающим типом включают присваивание, проверку принадлежности, квалификацию, явное преобразование значений других числовых типов в значения этого плавающего типа и неявное преобразование значений типа универсальный-вещественный в значения этого типа.
Кроме того, для каждого плавающего типа или подтипа Т базовые операции включают перечисленные ниже атрибуты. В этом перечислении Т ссылается на подтип (подтип Т) для любого свойства, зависящего от наложенных на Т ограничений; другие свойства формулируются через базовый тип Т.
Первая группа атрибутов вырабатывает характеристики подтипа Т. К атрибутам этой группы относятся: атрибут BASE (см. 3.3.3), атрибуты
FIRST и LAST (см. 3.5), атрибут представления SIZE (см. 13.7.2), а также следующие атрибуты:
T'DIGITS Вырабатывает число десятичных цифр в десятичной мантиссе модельных чисел подтипа Т. (Этот атрибут вырабатывает число Д, см. 3.5.7.) Значение этого атрибута имеет тип универсальный _целый.
T'MANTISSA Вырабатывает число двоичных цифр в двоичной мантиссе модельных чисел подтипа Т. (Этот атрибут вырабатывает число В, см. 3.5.7.) Значение этого атрибута имеет тип универсальный—целый.
T'EPSILON Вырабатывает абсолютное значение разности между модельным числом 1.0 и следующим модельным числом подтипа Т. Значение этого атрибута имеет тип универсальный-вещественный.
Т'ЕМАХ Вырабатывает наибольшее значение порядка двоичной канонической формы модельных чисел подтипа Т. (Этот атрибут вырабатывает произведение 4 * В, см. 3.5.7). Значение этого атрибута имеет тип универсальный _целый.
Т'SMALL Вырабатывает наименьшее положительное (ненулевое) модельное число подтипа Т. Значение этого атрибута имеет тип универсальный-вещественный.
T'LARGE Вырабатывает наибольшее положительное модельное число подтипа Т. Значение этого атрибута имеет тип универсальный—вещественный.
Атрибуты второй группы вырабатывают характеристики хранимых чисел и включают следующие атрибуты:
T'SAFE_EMAX Вырабатывает наибольшее значение порядка двоичной канонической формы хранимых чисел базового типа Т. (Этот атрибут вырабатывает число Е, см. 3.5.7). Значение этого атрибута имеет типуниверсалъ- ный_целый.
T'SAFE_SMALL Вырабатывает наименьшее положительное (ненулевое) хранимое число базового типа Т. Значение этого атрибута имеет тип универсальный-вещественный.
T'SAFE_LARGE Вырабатывает наибольшее положительное хранимое число базового типа Т. Значение этого атрибута имеет тип универсальный_ вещественный.
Кроме этого, для объекта А плавающего типа определены атрибуты A'SIZE и A'ADDRESS (см. 13.7.2). Для каждого плавающего типа существуют машинно-зависимые атрибуты, которые не относятся к модельным и хранимым числам. Они соответствуют обозначениям атрибутов MACHINE_EMAX, MACHINE_EMIN, MACHINE_RADIX,
MACHINE-MANTISSA, MACHINE-ROUNDS и MACHINE-OVERFLOWS (cm. 13.7.3).
Кроме базовых операций, над плавающим типом определены операции отношения и следующие предопределенные арифметические операции: унарные и бинарные аддитивные операции — и +, мультипликативные операции * и / , унарная операция abs и операция возведения в степень.
Операции над подтипом являются соответствующими операциями над типом, кроме следующих: присваивания, проверки принадлежности, квалификации, явного преобразования и атрибутов первой группы; результаты этих операций переопределены в терминах подтипа.
Примечание. Атрибуты EMAX, 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 не обязательно вырабатывают модельные или хранимые числа. Если некоторое число цифр определено описанием типа или подтипа Т, то атрибут T'DIGITS вырабатывает это число.
Ф и к с и р о в а н н ы е типы
Для фиксированных типов граница ошибки определяется абсолютной погрешностью, называемой дельтой фиксированного типа.
ограничение_фиксированного_типа : : =
определение _точности_фиксированного_типа
[ограничение_диапазона]
определение_точности_фиксированного_типа : : =
delta статическое _ простое_выражение
Дельта определяется значением статического простого выражения в определении точности фиксированного типа. Это значение должно принадлежать некоторому вещественному типу и должно быть положительным (ненулевым) . Если ограничение фиксированного типа использовано как определение вещественного типа, то оно должно включать ограничение диапазона; каждая граница диапазона должна быть определена статическим выражением некоторого вещественного типа, но эти две границы не обязаны иметь один и тот же тип. Если ограничение фиксированного типа использовано в указании подтипа, то ограничение диапазона необязательно.
Для любого ненулевого модельного числа фиксированного типа определена каноническая форма:
знак * мантисса * дискрет
В приводимой форме: знак — это либо +1, либо —Г, мантисса — положительное (ненулевое) целое; любое модельное число кратно некоторому положительному вещественному числу, называемому дискретом.
Для модельных чисел фиксированного типа дискрет выбран как наибольшая степень двух, которая не превышает дельту определения точности фиксированного типа. Дискрет можно задать спецификатором длины (см. 13.2), в этом случае модельные числа кратны заданному значению. Гарантированная минимальная точность операций над фиксированным типом определена в терминах модельных чисел для ограничения фиксированного типа, которое образует соответствующее определение вещественного типа (см. 4.5.7).
Для ограничения фиксированного типа с ограничением диапазона модельные числа включают нуль и все числа, кратные дискрету, мантисса которых может быть выражена точно В двоичными цифрами, а значение В выбрано как наименьшее целое число, для которого каждая граница заданного диапазона — либо модельное число, либо ст иГ' чем на дискрет
от модельного числа. Если ограничение фиксированного типа не включает ограничение диапазона (это допустимо только после обозначения типа в указании подтипа), модельные числа определены дельтой определения точности фиксированного типа и диапазоном подтипа, заданного обозначением типа.
Реализация должна иметь по крайней мере один анонимный предопределенный фиксированный тип. Базовый тип каждого такого фиксированного типа — это сам этот тип. Модельные числа каждого предопределенного фиксированного типа включают нуль и все числа, для которых мантисса (в канонической форме) имеет число двоичных цифр, вырабатываемое атрибутом MANTISSA, и для которых дискрет имеет значение, возвращаемое атрибутом SMALL.
Описание фиксированного типа в форме:
type Т is delta Д range Л . . П;
по определению эквивалентно следующим описаниям:
type фиксированный_тип is new
предопределенный_фиксированный_тип;
subtype Т is фиксированный_тип delta Д range
фиксированный__тип (Л) . . фиксированный_тип (П);
В этих описаниях фиксированный _тип — это анонимный тип, а предопределенный фиксированный тип неявно выбран реализацией так, чтобы его модельные числа включали определенные ограничением фиксированного типа модельные числа (т. е. с помощью Д, Л и П, а, возможно, и спецификатора длины, определяющего дискрет).
Описание фиксированного типа неправильно, если не существует предопределенного типа, удовлетворяющего этим требованиям. Хранимые числа фиксированного типа — это модельные числа его базового типа.
Предвыполнение описания фиксированного типа состоит из предвыпол- нения эквивалентных описаний типа и подтипа.
Если ограничение фиксированного типа следует за обозначением типа в указании подтипа, то обозначение типа должно задавать фиксированный тип или подтип. Ограничение фиксированного типа совместимо с обозначением типа, только если дельта из определения точности фиксированного типа не меньше дельты для типа или подтипа, заданного обозначением типа. Более того, если ограничение фиксированного типа включает ограничение диапазона, то ограничение фиксированного типа совместимо с обозначением типа, только если само ограничение совместимо с обозначением типа.
Предвыполнение такого указания подтипа включает предвыполнение ограничения диапазона, если оно есть, и создает фиксированный подтип, модельные числа которого определены соответствующим ограничением фиксированного типа, а также спецификатором длины, задающим дискрет, если он есть. Значение фиксированного типа принадлежит фиксированному подтипу тогда и только тогда, когда оно принадлежит диапазону, определенному подтипом.
Для всех фиксированных типов предопределены одни и те же арифметические операции (см. 4.5). Умножение и деление значений фиксированного типа дают результаты анонимного предопределенного фиксированного типа, который в данном стандарте называется универсальный ^фиксированный; точность этого типа произвольна. Значения этого типа должны быть явно преобразованы в значения некоторого числового типа.
Примечание. Если С - подтип фиксированного типа или подтипа Т, то набор модельных чисел С - это подмножество модельных чисел Т. Если для Т был задан спецификатор длины, то Т и С имеют одно и то же значение дискрета. В противном случае, поскольку дискрет равен степени двух, то дискрет для С равен дискрету для Т, умноженному на неотрицательную степень двух.
Ограничение диапазона допустимо в указании фиксированного подтипа либо непосредственно за обозначением типа, либо как часть ограничения фиксированного типа. В обоих случаях границы диапазона должны принадлежать базовому типу обозначения типа (см. 3.5).
Примеры:
type ВОЛЬТ is delta 0.125 range 0.0. .255.0;
subtype ВОЛЬТ_ГРУБО is ВОЛЬТ delta 1.0;
- диапазон как у ВОЛЬТ.
- Правильная дробь, требующая полного машинного слова в
- дополнительном Коде, может быть описана как тип ДРОБЬ:
ДЕЛЬ: constant: = 1.0/2 ** (ДЛИНА_СЛОВА -1);
type ДРОБЬ is delta ДЕЛЬ range -1.0. .1.0 - ДЕЛЬ;
Оп е р а ци и над фиксированными типами
Базовые операции над фиксированным типом включают присваивание, проверку принадлежности, квалификацию, явное преобразование значений других числовых типов в значения этого фиксированного типа и неявное преобразование значений типа универсальныйвещественный в значение этого типа.
Кроме того, для каждого фиксированного типа или подтипа Т базовые операции включают перечисленные ниже атрибуты. В этом представлении атрибутов Т ссылаются на подтип (подтип Т) для любого свойства, зависящего от ограничений, наложенных на Т; другие свойства установлены в терминах базового типа Т.
Первая группа атрибутов вырабатывает характеристики подтипа Т. К этой группе относятся атрибуты BASE (см. 3.3.3), FIRST и LAST (см. 3.5), атрибут представления SIZE (см. 13.7.2), а также атрибуты:
T'DELTA Вырабатывает значение дельты, заданной в определении точности фиксированного типа для подтипа Т. Значение этого атрибута имеет тип универсальный_вещественный.
T'MANTISSA Вырабатывает число двоичных цифр в мантиссе модельных чисел подтипа Т. (Этот атрибут вырабатывает число В, см. разд. 3.5.9). Значение этого атрибута имеет тип универсальный _целый.
Т'SMALL Вырабатывает наименьшее положительное (ненулевое) модельное число подтипа Т. Значение этого атрибута имеет тип универсальный ^вещественный.
Т'LARGE Вырабатывает наибольшее положительное модельное число подтипа Т. Значение этого атрибута имеет тип универсальный ^вещественный.
T'FORE Вырабатывает минимальное число символов, необходимых для десятичного представления целой части любого значения подтипа Т в предположении, что это представление не включает порядок, но включает один символ, который является либо знаком минус, либо пробелом. (Это минимальное число учитывает незначащие нули и подчеркивания и по меньшей мере равно двум.) Значение этого атрибута имеет универсальный_целый тип.
T'AFT Вырабатывает число десятичных цифр после точки, необходимых для обеспечения точности подтипа Т, если только DELTA подтипа Т больше 0.1, а для 0.1 атрибут вырабатывает значение единица. (T'AFT — это самое малое положительное целое К, для которого (10 ** К)* Т'DELTA больше или равно единице.) Значение этого атрибута имеет тип универсальный—целый.
Вторая группа включает следующие атрибуты, они вырабатывают характеристики хранимых чисел:
T'SAFE__SMALL Вырабатывает наименьшее положительное (ненулевое) хранимое число базового типа Т. Значение этого атрибута имеет тт универсальный-вещественный. ,
Т'SAFE,.LARGE Вырабатывает наибольшее положительное хранимое число базового типа Т. Значение этого атрибута имеет тт универсальный _ вещественный.
Кроме того, для объекта А фиксированного типа определены атрибуты A'SIZE и A'ADDRESS (см. 13.7.2). Для каждого фиксированного типа или подтипа Т существуют машинно-зависимые атрибуты T'MACHINE_ROUNDS и T'MACHINE-OVERFLOWS (см. 13.7.3).