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

Округление берет число, рассматриваемое как точное и, если необходимо, преобразует его в приближенное число в формате результата и сигнализирует исключительную ситуацию неточный результат (7.5). Кроме преобразования из двоичных чисел в десятичные и наоборот (см. пункт 5.6) все операции, описанные в разделе 5, должны создавать первый промежуточный результат корректно и предельно точно и в неограниченной области и затем округлять его в одном из режимов рассматриваемых в этом разделе.

Способ округления влияет на результат всех арифметических операций кроме сравнения и вычисления остатка. Способы округления могут повлиять на знак нулевой суммы (6.3) и влияют на порог срабатывания сигнала о переполнении разрядной сетки и отрицательном переполнении (потере значимости).

4.1 Округление до ближайшего числа. Реализации стандарта должны выполнять округление до ближайшего числа в режиме, устанавливаемом по умолчанию. При использовании данного метода точный результат будет округляться до ближайшего числа размещаемого в формате результата. Если точный результат равноудален от двух ближайших чисел, должна быть выбрано число с нулем в наименьшем разряде. Однако, точный результат величиной 2Emax (2-2-p) или больше должен быть округлен до ∞ без изменения знака. Здесь Emax и p определены для формата загрузки результата (см. раздел 3) не меньшего отвергнутого режимом точного округления (4.3).

4.2 Направленное округление. Реализация должна предоставлять на выбор пользователя три дополнительных режима округления: округление к +∞, к - ∞ и к 0.

При округлении в направлении к +∞ результат должен быть ближайшим, но не меньшим точного значения.

При округлении в направлении к -∞ результат должен быть ближайшим, но не большим точного значения.

При округлении к нулю результат должен быть ближайшим, не превышающим по модулю точный результат.

4.3 Точность округления. Обычно результат является округлением точного числа до формата, в который он записывается. Однако некоторые системы предоставляют результаты только в двойном или расширенном формате результата. Пользователь таких систем, которым может быть компилятор языка высокого уровня, должен уметь точно определить, как он округлен вместо одинарной точности, хотя он может быть сохранен в двойном или расширенном формате с широкой областью значений порядка.4

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

Заметим, это соответствует требованиям раздела 4.1, результат не должен содержать более чем одну ошибку округления (результат не может округляться более одного раза).

    1. Операции

Все согласованные реализации этого стандарта поддерживают операции сложения, вычитания, умножения, деления, извлечения квадратного корня, нахождения остатка, округления целого числа в формат с плавающей точкой, преобразования из одного формата с плавающей точкой в другой, преобразования числа с плавающей точкой в целое и наоборот, преобразования двоичных чисел и десятичные и наоборот, сравнения. Считается ли копирование без смены формата операцией – зависит от реализации. Исключая двоично-десятичные преобразования, каждая из операций должна выполняться, как если бы она сначала выдавала промежуточный результат абсолютно точный и с неограниченной областью представления, а затем преобразовывала бы его в формат результата (см. разделы 4 и 7). Раздел 6 расширяет текущие определения, предусматривая ±0, ± и NaN. В разделе 7 перечислены исключительные ситуации, происходящие в случае исключительных операндов и исключительных результатов.

5.1 Арифметические операции. Реализация должна производить сложение, вычитание, умножение, деление, находить остаток для любых двух операндов одного формата, для каждого из поддерживаемых форматов; также должна обеспечивать операции для операндов в разных форматах. Формат результата (независимо от управления точностью округления, 4.3) должен быть такой же длины, как и формат самого длинного операнда. Все результаты должны быть округлены, как это описано в разделе 4.

Когда , остаток (remainder) определяется независимо от режима округления математическим отношением , где – целое значение, наиболее близкое действительному значению . В случае, когда , то – четное. Таким образом, остаток всегда точный. Если , его знак должен быть тот же, что и знак . Управление точностью (4.3) не должно применяться к выполнению операции вычисления остатка.

5.2 Квадратный корень. Операция извлечения корня должна выполняться во всех поддерживаемых форматах. Результат определен и имеет положительный знак для всех операндов 0, за исключением, что -0 должен быть равен (-0). Формат результата должен быть не короче формата операнда. Результат должен округляться, как указано в разделе 4.

5.3 Преобразования формата с плавающей точкой. Должно быть возможным преобразование чисел с плавающей точкой между всеми поддерживаемыми форматами. Если при преобразовании формат сужается, результат должен быть округлен, как описано в разделе 4. При расширении формата точность сохраняется.

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

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

5.6 Преобразование «двоичное↔десятичное». Преобразования между десятичными строками, по крайней мере, в один формат и двоичных чисел с плавающей точкой во все поддерживаемые базовые форматы должно выполняться для чисел во всех областях определенных в таблице 2.

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

Целые и в таблицах 2 и 3 таковы, что в десятичные строки имеют значения

При вводе, нули в конце будут добавляться или исключаться из (до пределов, указанных в табл.2) так, чтобы минимизировать .

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