Я верю этому результату, но все же нахожу его чрезвычайно удивительным.

твует ли двойной стандарт IEEE?x>0 такой, чтоsqrt(x*x) ≠ xпри условии, что вычислениеx*x не переполняется или не переполняетсяInf, 0или ненормальное число?

Это с учетом того, чтоsqrt возвращает ближайший представимый результат, и так жеx*x (как в соответствии со стандартом IEEE, «операция квадратного корня вычисляется как бы с бесконечной точностью, а затем округляется до одного из двух ближайших чисел с плавающей запятой указанной точности, которые окружают бесконечно точный результат»).

Исходя из предположения, что если бы такие двойники существовали, то, вероятно, есть примеры, близкие к 1, я написал программу для поиска этих контрпримеров, и она не смогла найти ничего между1.0 а также1.0000004780981346.

Предыдущий аналогичный вопроссовершенные квадраты и числа с плавающей точкой отвечает на вопрос отрицательно для ситуаций, когда вычислениеx*x делаетне привлекать округление. Этот ответ не является достаточным для этого вопроса, потому что это может быть возможно дляx*x включить округление в одном направлении, затемsqrt(x*x) привлечь округление втак же направление, таким образом производя ответ, который не совсемx.

Ответы на вопрос(1)

Ваш ответ на вопрос