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

К

Таблица 2

Пределы десятичного преобразования

Формат

Десятичный в двоичный

Двоичный в десятичный

Мах М

Мах N

Мах М

Мах N

Одинарный

109 – 1

99

109 – 1

53

Двойной

1017 – 1

999

1017 – 1

340

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

К

Таблица 3

Пределы верного округления результата десятичного преобразования

Формат

Десятичный в двоичный

Двоичный в десятичный

Мах М

Мах N

Мах М

Мах N

Одинарный

109 – 1

13

109 – 1

13

Двойной

1017 – 1

27

1017 – 1

27

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

Результаты преобразования величин, укладывающихся в пределы, указанные в табл.3, должны быть корректно округлены, как определено в раздел 4. Иначе, для округления до ближайшего, ошибка в преобразованном результате не должна превышать значение 0,47 единицы младшего значащего разряда мантиссы в формате результата; эта ошибка является результатом спецификации округления, см. раздел 4, обеспечивает защиту от переполнения или потери значимости экспоненты. В направленных режимах округления ошибка будет иметь верный знак и не должна превышать значение 1.47 единицы младшего разряда.

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

При округлении до ближайшего, из двоичного в десятичное и обратно в двоичное число должно быть такой длины, что и десятичная строка с максимальной точностью, определенной в таблице 2, а именно, 9 знаков для одинарного и 17 для двойного формата5.

Если при конвертировании десятичного числа в двоичное возникает переполнение/потеря значимости, выдается ответ, как определено в разделе 7. Переполнение/потеря значимости, NaN, бесконечности, обнаруженные при преобразовании двоичного в десятичное, должны сигнализировать пользователю при помощи соответствующих строк. Этот стандарт не предусматривает десятичные коды для NaN.

Чтобы избежать несовместимости, процедуры, используемые для двоично-десятичного преобразования должны выдавать одинаковые результаты, независимо от того, исполняется ли преобразование во время трансляции кода (интерпретации, компиляции, ассемблирования) или исполнения программы (происходящее во время выполнения, интерактивный ввод-вывод).

5.7 Сравнения. Должно быть возможным сравнение чисел с плавающей точкой для всех поддерживаемых форматов, даже если форматы операндов разные. Сравнения всегда точные, никогда не вызывают переполнения/потери точности. Возможны четыре взаимно исключающих отношения: меньше чем, равно, больше чем, и несравнимые (unordered). Последний вариант возможен в случае, когда один из операндов является NaN. Результатом сравнения NaN с любым значением, включая его само, является несравнимые. Сравнения должны игнорировать знак нуля (то есть +0 = -0).Результат сравнения должен выдаваться одним из двух путей, избираемым разработчиком: либо как код условия, определяющий каждое из вышеупомянутых четырех отношений, либо как ответ true/false на предикат (логическое условие), имя которого определяет запрашиваемое сравнение. В дополнение к ответу true/false к предикату, должен возникать сигнал исключительной ситуации неверная операция (7.1), когда, как показано в последней колонке таблицы 4, несравнимые операнды сравниваются с использованием утверждений > или <, но не ? (здесь символ ? означает несравнимые).

Т

Логические функции и отношения Таблица 4

Предикат

Отношения

Исключение неверная операция

Ad hoc

FORTRAN

Математ.

Больше

Меньше

Равно

Несравнимые (unordered)

=

.EQ.

=

F

F

T

F

No

?<>

.NE.

T

T

F

T

No

>

.GT.

>

T

F

F

F

Yes

>=

.GE.

T

F

T

F

Yes

<

.LF.

<

F

T

F

F

Yes

<=

.LE.

F

T

T

F

Yes

?

unordered

F

F

F

T

No

<>

.LG.

T

T

F

F

Yes

<=>

.LEG.

T

T

T

F

Yes

?>

.UG.

T

F

F

T

No

?>=

.UGE.

T

F

T

T

No

?<

.UL.

F

T

F

T

No

?<=

.ULE.

F

T

T

T

No

?=

.UE.

F

F

T

T

No

NOT(>)

F

T

T

T

Yes

NOT (>=)

F

T

F

T

Yes

NOT (<)

T

F

T

T

Yes

NOT (<=)

T

F

F

T

Yes

NOT (?)

T

T

T

F

No

NOT (<>)

F

F

T

T

Yes

NOT (<=>)

F

F

F

T

Yes

NOT (?>)

F

T

T

F

No

NOT (?>=)

F

T

F

F

No

NOT (?<)

T

F

T

F

No

NOT (?<=)

T

F

F

F

No

NOT (?=)

T

T

F

F

No

аблица 4 показывает двадцать шесть функционально четких утверждений, которые

именованы тремя способами: ad hoc (т.е. специально подобранный к данному случаю), FORTRAN, и математически. Отсюда видно, как они получаются из кодов четырех условий, и сказано какой предикат стал причиной исключительной ситуации неверная операции, когда отношение является несравнимым. Обозначения T и F показывают, когда соответствующий предикат true, а когда false.

Заметим, что предикаты парны, то есть каждое является логическим отрицанием другого. Применение префикса НЕ к предикату в таблице 4 обращает значения true/false для соответствующих значений, но не меняет значения последней колонки6.

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

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