Монотонное свойство с плавающей точкой

Я читала книгу. В книге написано, что

Добавление с плавающей запятой удовлетворяет следующему свойству монотонности:
если a>=b затем (x + a) >= (x+b) для любого значения a,b а также x Кроме как NaN, Это свойство вещественного (и целочисленного) сложения не подчиняется добавлению без знака или дополнения до двух.

Как с плавающей точкой это подчиняется?
Почему без знака или дополнения два дополнения не подчиняется?

1 ответ

Целые числа без знака в C в основном образуют кольцо, т.е. они в конечном итоге переносятся. Например, непрерывное добавление 1 к целому числу без знака будет непрерывно увеличивать его до тех пор, пока оно не обернется до нуля, что означает, что добавление единицы приводит к результату по меньшей мере меньше единицы, поэтому монотонность не выполняется.

Целые числа со знаком делают переполнение, что более сложно, но в C это также неопределенное поведение, поэтому мы должны исключить это.

Для чисел с плавающей запятой в C, согласно IEEE745, добавление двух положительных чисел (что подразумевает, что ни одно из них не является NaN, так как NaN, как известно, не является положительным или отрицательным), дает результат, больший или равный, чем больший из двух добавлений: Либо путем получения результата, который действительно больше, либо путем получения одного из добавлений, потому что другой поглощается, либо путем получения бесконечности. Важно отметить, что дополнение удовлетворяет монотонности, но не обязательно строгой монотонности.

Другие вопросы по тегам