Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
IEEE 754 RUS.doc
Скачиваний:
3
Добавлен:
14.08.2019
Размер:
344.06 Кб
Скачать
    1. Прерывания

Пользователь должен иметь возможность запросить прерывание на любую из пяти исключительных ситуаций, определяя обработчика прерывания для этого. Ему должна предоставляться возможность отключать, сохранять или восстанавливать обработчика. У него также должна быть возможность определить активирован ли определенный обработчик прерывания для определенной исключительной ситуации. Когда исключительная ситуация, обработчик которой отключен, определена, она должна быть обработана, как описано в разделе 7. Когда случается исключительная ситуация, обработчик которой включен, то выполнение программы, в которой случилась исключительная ситуация, должно быть приостановлено, и обработчик прерывания, предварительно определенный пользователем, должен быть активизирован и результат выполнения операции, если это определено в секции 7, должен быть доставлен к нему.

8.1. Обработчик прерывания. Обработчик прерывания должен быть наделен свойствами подпрограммы, которая может вернуть значение, чтобы использовать его вместо результата выполняемой операции, при которой сложилась исключительная ситуация; этот результат не определен, пока не доставлен обработчику прерывания. Аналогично, флаг(и) соответствующие исключительным ситуациям вызвавшим прерывание, могут быть неопределенны пока не будут установлены или сброшены обработчиком прерывания.

При прерывании, обработчик прерывания должен быть в состоянии определить

(1) Какая исключительная ситуация (ии) случилась при выполнении текущей операции;

(2) Тип выполняемой операции;

(3) Формат результата;

(4) В исключительных ситуациях положительного переполнения, отрицательного переполнения и неточный результат - правильно округленный результат, включая информацию, которая может не соответствовать формату результата;

(5) В исключительных ситуациях невыполнимая операция и деление на ноль - значения операнда.

8.2. Приоритет. Если разрешены прерывания при положительном переполнении и отрицательном переполнении, то они имеют приоритет по отношению к прерыванию по событию неточный результат.

Приложение Рекомендованные Функции и Предикаты

(Это приложение не является частью АНСИ\ИЕЕЕ станд. 754-1985, ИЕЕЕ Стандарт для двоичной арифметики с плавающей точкой )

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

Некоторые функции, типа операции копирования y:=x без изменения формата, могут по выбору конструктора, рассматривать как неарифметические операции, которые не сигнализируют исключительную ситуацию невыполнимая операция для сигнализирующих NaNs; функции рассматриваемые в (1), (2), (6), и (7).

(1) Copysign(z,y) возвращает x с знаком y. Следовательно, abs(x) = copysign(x,1.0), даже если x является NaN.

(2) –х это х скопированный с противоположным знаком, не 0-х; различие имеет место при х=±0 или NaN. От сюда следует, что будет ошибкой использовать бит знака, чтобы различать сигнализирующее NaN и простое NaN.

(3) Scalb(y,N) возвращает для целых значений N без вычисления .

(4) Logb(х) возвращает не смешенный порядок х, целое число со знаком в формате х, кроме logb(NaN), которое возвращает NaN, logb(∞) возвращает +∞, и logb(0) возвращает -∞ и вызывает исключительную ситуацию деления на 0. Когда х положительный, и является конечным выражение scalb[x,-logb(x)] лежит строго между 0 и 2, и меньше 1 только когда х ненормализованный.

(5) Nextafter(x,y) возвращает следующего отображаемого соседа х по направлению к y. Следующие особые случаи возникают при: x=y, результатом будет х, без какого-либо сообщаемого исключения; иначе, если x или y простой NaN, тогда результатом будет один или другой из NaN. Переполнение сигнализируется, когда х конечное число, а Nextafter(x,y) бесконечно; отрицательное переполнение сигнализируется, когда Nextafter(x,y) лежит строго между ±2Emin, в обоих случаях сообщается о неточности.

(6) Finite(x) возвращает значение TRUE при -∞ < x < +∞ и возвращает значение FALSE в других случаях.

(7) Isnan(x), или эквивалент xx возвращает TRUE, если x – NaN, и возвращает FALSE в других случаях.

(8) x<>y является TRUE только когда x<y или x>y, и отличен от xy, что означает НЕ(x=y) (табл. 4).

(9) Unordered(x,y) или x?y, возвращает значение TRUE, если порядки х и y разные, и возвращает FALSE в противном случае.

(10) Class(х) говорит, в какой из следующих десяти классов попадает x: сигнализирующий NaN, простой NaN, -∞, отрицательный нормализованный не ноль, отрицательный ненормализованный, -0, +0, положительный ненормализованный, положительный нормализованный не ноль, +∞. Эта функция никогда не создает исключительную ситуацию, даже при сигнализирующих NaN.

Переводчик Е.Л.Полин

1 Computer Magazine vol 14, no 3, March 1981

2 Computer Magazine vol 13, no 1, January 1980

3 Только если существенно в результате получить совместимость снизу вверх и быстродействие рекомендуется поддерживать двойные расширенные форматы, а также поддерживать одинарные расширенные форматы.

4 Управление точностью округления предназначается для того, чтобы давать возможность системам, чьи результаты всегда в двойном или расширенном формате имитировать в отсутствии переполнения /потери значимости, точность одинарного и двойного формата результата. Реализация, настоятельно рекомендуем, не должна обеспечивать операции над комбинациями операндов с двойными или расширенными форматами с получением результата в одинарном формате, также не выполнять операции с комбинациями двойных расширенных операндов с предоставлением результата в двойном формате, с каким либо вариантом округления (With only one rounding).

5 Свойства, определенные для конверсий, подразумевают границы ошибки, которые зависят от формата (одинарного или двойного) и количества десятичных знаков включая: упомянутое значение 0.47 является худшим случаем. За более детальной информацией об этих границах ошибки см. COONEN, JEROME T. Contributions to a purposed Standart for Binary Floating-Point Arithmetic. Ph D. Thesis, University of California, Berkeley, CA, 1984.

6

6 Возможна ситуация, при которой существует два способа логического отрицания утверждения: один с явным использованием НЕ, и другой, с обращением оператора отношения. Например, логическое отрицание выражения (X=Y) может быть записано либо как НЕ (X=Y), или (X?<>Y). Оба выражения эквивалентны (XY). Однако, это совпадение не возникает для других утверждений. Например, логическое отрицание (X<Y) это НЕ(X<Y), обращенное же утверждение (X?>=Y) отлично в том смысле, что оно не вызывает исключения неверной операции в случае, когда X и Y несравнимые.

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

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

Note that a system whose underlying hardware always traps on underflow, producing a rounded, bias-adjusted result, shall indicate whether such a result is rounded up in magnitude in order that the correctly de normalized result may be produced in system software when the user underflow trap is disabled.

20

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]