2014-10-02 3 views
-1

Операция с плавающей запятой < коммутативная. Является ли fabs (a) < fabs (b) такими же, как fabs (b)> fabs (a)?Является ли операция с плавающей запятой «<", ">» коммутативной?

+2

Вы имеете в виду fabs (b)> fabs (a)? – gnasher729

+0

да, есть. больше персонажей. – HuStmpHrrr

+1

Результат не будет таким же даже в базовой математике. fabs (a) fabs (a), но не тот, который вы показываете по своему вопросу. – Auguste

ответ

0

Если вы имеете в виду fabs(a) < fabs(b) and fabs(b) > fabs(a)

Да это

1

Если вы имеете в виду FABS (а) < ФАБС (б) против ФАБС (б)> FABS (а): Да, они одинаковы по совместимая с IEEE754 платформа. Даже с NaNs, Infinities, положительными и отрицательными нулями.

В некоторых реализациях арифметика с плавающей запятой не всегда использует ту же точность. Если вы вычисляете x * y и x, y - значения с плавающей точкой, результат может быть плавающим или двойным. Поэтому, если вы вычисляете fabs (x * y) < fabs (u * v), либо x * y, u * v, либо оба, либо никто не может быть рассчитан с двойной точностью, если все четыре являются float. В результате два продукта могут быть равными или нет (если они в первую очередь близки). В этой ситуации fabs (x * y) < fabs (u * v) vs. fabs (u * v)> fabs (x * y) могут дать разные результаты. Но в этой ситуации это меньше всего беспокоит вас. Я не знаю ни одного нового компилятора, где это произойдет.

+0

Спасибо. Будет ли «ассоциативно»? – Punchirichechi

+0

+ Приятно прокомментировать NaNs. +1 – chux

Смежные вопросы