2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 x/y/z=?=x/(y*z)
Сообщение16.04.2007, 22:00 
Уважаемые эксперты!

На одном приборе вычисление $x/(y*z)$ производится примерно в два раза быстрее, чем вычисление $x/y/z$.
То есть если заменить последнее вычисление первым, то получится ощутимый выигрыш времени.

Вот мне интересно, а не возникнет ли при такой замене какая-нибудь вычислительная погрешность? В одном вычислении одно деление, в другом – два…

Заранее спасибо.

 
 
 
 
Сообщение16.04.2007, 23:25 
Аватара пользователя
:evil:
Предположим, что действия с плавающей точкой.

Рассмотрите случай $x = y = z = 1e-20$. Тогда вычисление по первой схеме даст правильный результат $1e20$, по второй — произойдет исчезновение значимости и деление на 0.

Это, конечно, крайний случай. Но не невозможный.

 
 
 
 
Сообщение17.04.2007, 00:02 
Спасибо!

Да, точно, там $y=z$ и возможна потеря значимости (underflow).
Поэтому и сделано
$x/y/y$
:(

 
 
 [ Сообщений: 3 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group