subtype ВЕРОЯТНОСТЬ is ВЕЩЕСТВ range 0.0 .. 1.0;

  • - подтип с меньшим диапазоном.

Примечания к примерам. Реализованная точность для типа КОЭФФИЦИЕНТ - это точность предопределенного типа, имеющего по меньшей мере 10 цифр мантиссы. Сле­довательно, спецификация пяти цифр точности для подтипа КОРОТКИЙ_КОЭФФ до­пустима. Наибольшее модельное число для типа МАССА равно приблизительно 1.27ЕЗО и, следовательно, меньше, чем заданная верхняя граница (1.ОЕ35). Следовательно, описание этого типа правильно, только если эта верхняя граница принадлежит диапазо­ну хранимых чисел предопределенного плавающего типа, имеющего по меньшей мере 7 цифр точности.

  1. О п е р а ц и и над плавающими типами

Базовые операции над плавающим типом включают присваивание, про­верку принадлежности, квалификацию, явное преобразование значений дру­гих числовых типов в значения этого плавающего типа и неявное преобразо­вание значений типа универсальный-вещественный в значения этого типа.

Кроме того, для каждого плавающего типа или подтипа Т базовые опе­рации включают перечисленные ниже атрибуты. В этом перечислении Т ссы­лается на подтип (подтип Т) для любого свойства, зависящего от наложен­ных на Т ограничений; другие свойства формулируются через базовый тип Т.

Первая группа атрибутов вырабатывает характеристики подтипа Т. К атрибутам этой группы относятся: атрибут 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 вырабатывает это число.

  1. Ф и к с и р о в а н н ы е типы

Для фиксированных типов граница ошибки определяется абсолютной погрешностью, называемой дельтой фиксированного типа.

ограничение_фиксированного_типа : : =

определение _точности_фиксированного_типа

[ограничение_диапазона]

определение_точности_фиксированного_типа : : =

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 - ДЕЛЬ;

  1. Оп е р а ци и над фиксированными типами

Базовые операции над фиксированным типом включают присваивание, проверку принадлежности, квалификацию, явное преобразование значений других числовых типов в значения этого фиксированного типа и неявное преобразование значений типа универсальныйвещественный в значение этого типа.

Кроме того, для каждого фиксированного типа или подтипа Т базовые операции включают перечисленные ниже атрибуты. В этом представлении атрибутов Т ссылаются на подтип (подтип Т) для любого свойства, завися­щего от ограничений, наложенных на Т; другие свойства установлены в тер­минах базового типа Т.

Первая группа атрибутов вырабатывает характеристики подтипа Т. К этой группе относятся атрибуты 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).