ГОСТ Р ИСО/МЭК 8825-3—2016
24.3.3 Определение типа, используемого в int-to-int преобразовании:
IntogorMapping ::= SET OF SEQUENCE {
source SET OF INTEGER,
result INTEGER} (CONSTRAINED BY {Г пересечение исходных
компонентов должно
быть пустым (см. 21.17)
*!))
24.3.4 Как источник, так и результат этого преобразователя является целым числом или смесью
целых чисел. Отсутствуют границы, связанные с результатом, если он не является последним преоб
разователем в отображении с помощью преобразователей (см. 19.4) (в котором имеется в виду, что ни
источник, ни цель не могут быть смесью), а класс цели в отображении с помощью преобразователей не
имеет границ. В этом случае спецификация ECN или приложение будут ошибочными, когда к преобразо
вателю подаются целочисленные значения источника, которые не преобразуются в границы класса цели.
24.3.5 Преобразование int-to-int определяется путем установки значения в «INT-TO-INT». что по
зволяет в любом заданном объекте кодирования указывать точно одну арифметическую операцию.
Общая арифметика может, однако, определяться с помощью упорядоченного списка преобразователей
(это разрешается везде, где допускаются преобразователи, охватывающие целые числа).
24.3.6 Значения «increments», «decrements», «m ultiplys», «negates» имеют свой обычный
математический смысл.
24.3.7 Значение «divides» определено для образования целочисленного результата, который яв
ляется целочисленным значением, наиболее близким к математическому результату, но не более уда
ленным от нуля, чем этот результат. В терминах программирования «divides» округляет в направлении
нуля так, что значение 1 с «divido:2» даст нуль.
24.3.8 Преобразователь для значения «m odulos» определяется следующим образом. Пусть «Ь
будет исходным целочисленным значением, а преобразователем будет «modulos». Пусть «j» будет
результатом применения «divides», за которым следует «m ultiplys», к «i». Тогда «modulos», при
мененный к «i». определяется как то же, что и применение «decroment:j» к «i».
24.3.9 Преобразователь для значения «subtract:lower-bound» используется только как первый в
упорядоченном списке преобразователей (и поэтому не может использоваться, если источник является
смесью). Источник должен иметь нижнюю границу.
24.3.10 Преобразователь для значения «mapping:integerMapping» определяется следующим об
разом. Исходное целочисленное значение заменяется на значение, связанное с набором значений, к
которому оно принадлежит. Если пересечение наборов значений но пусто, то это является ошибкой
спецификации ECN; если же исходное целое число не относится ни к одному из наборов значений, то это
ошибка приложения.
24.3.11 Каждый из этих преобразователей определяется, чтобы стать обратимым, если источник
является одиночным значением, а не смесью, и если удовлетворяется условие для абстрактного зна
чения (к которому он применяется), приведенное в таблице 6. Он определяется также, чтобы стать об
ратимым, если источник является смесью, а в таблице 6 условием является
В сегда обрат им .
Примечание — Хотя преобразователь int-to-int с композитным входом формально обратим, если в та
блице 6 указано ANvays reversible, на практике он не может являться частью цепи обратимых преобразователей,
поскольку нет такой цели, которая бы начиналась с некомпозитного входа и производила бы композитное целое
число (с текущими описанными преобразователями).
Таблица 6 — Обратимость преобразователей «INT-TO-INT»
П р е о б р а зо в а те л ьУ с л о в и е
decrements
m ultiplys
divides
negate:value
m odulos
subtract:lower-bound
mapping:integerMapping
increments
Всегда обратим
Всегда обратим
Всегда обратим
Значение кратно п
Всегда обратит*
Никогда не обратим
Всегда обратим
Исходные наборы значений, каждый из которых содержит только одно
значение, и результирующие значения различны
143