Что это за функция с плавающей точкой? - PullRequest
0 голосов
/ 21 мая 2018

Реально близко к машине: с плавающей точкой в ​​D

https://dlang.org/articles/d-floating-point.html

говорит

Полезные отношения для плавающей точкитип F, где x и y имеют тип F

...

  • x> 0 тогда и только тогда, когда 1 / (1 / x)> 0;x <0 тогда и только тогда, когда 1 / (1 / x) <0. </li>

в чем смысл этого предложения?

1 Ответ

0 голосов
/ 21 мая 2018

В тексте, который вы цитируете, мы смотрим на то, как представление симметрично относительно 1, и что округление не нарушает этого.То есть для любого числа 0 < x < 1 есть соответствующее число 1 < y < ∞, такое что y = 1/x и 1/y = x.Это первая половина - вторая просто одинакова для отрицательных чисел: 0 > x > -1 и -1 > y > -∞.

Может быть не сразу понятно, как это может быть проблемой, но рассмотрим x = 3.y должно тогда быть 1/3 = 0.333....С ограниченной точностью в 3 десятичных знака 1/y будет 3.003003003.... IEEE 754 определяет, как это должно работать, и говорит, что округление должно гарантировать, что 1/(1/x) должно быть равно x, и, таким образом, что результат должен быть 3, даже если есть ошибки округления ви 1/x, и 1/y - они должны компенсировать друг друга.

Старые системы с плавающей точкой не были так хорошо себя вести, как IEEE 754. Я не уверен, что какая-то из них не быласимметричный вокруг 1, но это, безусловно, в пределах возможного.

...