Re^3: Минимальное число

From
Evgenij Masherov (2:5020/175.2)
To
Andrew Starsh
Date
2002-11-25T20:01:35Z
Area
RU.ALGORITHMS
From: "Evgenij Masherov" <EMasherow@nsi.ru>

Sun Nov 24 2002 11:17, Andrew Starsh wrote to Evgenij Masherov:

 IR>>>> Так а как найти это минимальное вещественное число (не равное 0)
 IR>>>> , которое компьютер(компилятор) может различать?
 AS>>> Поинтеpесуйтесь типами пеpеменных. Или - пpедставлением чисел в
 AS>>> компилятоpе/интеpпpетатоpе.
 EM>> Это вполне актуальная задача, если речь идет о разработке
 EM>> машинно-независимого матобеспечения.

 AS> Ну, если человек балуясь, выясняет пpеделы - это тоже вполне актуально.
 AS> Пеpвая ступень, котоpой, большинству, как пpавило, хватает - это
 AS> пользование стандаpтными сpедствами языка пpогpаммиpования. И нужно
 AS> пpедставлять его пpеделы, что бы, когда задача выходит за них, лезть к
 AS> железу.
 
Вот простенький пример, в котором весьма наглядно видны некоторые эффекты
арифметики конечной точности.
Производим суммирование гармонического ряда 1/х с миллиардом слагаемых.
(Одинарная точность 8086 процессоров)
Если суммируем в естественном порядке - получаем 15.40
Если от конца к началу - 18.80
Отмечу, что слагаемые не только не исчерпывают диапазон значений плавающих
чисел, но даже не достигли предела по точности 1+е=1
(На всякий случай напомню, что ряд расходящийся...)
Так что, как видите, при том же железе и компиляторе - эффект бывает
разителен. Есть красивый пример с расчетом корней квадратного уравнения, где
переход от формулы x=(-b+sqrt(b^2-4*a*c))/(2*a) к x=2*c/(b+sqrt(b^2-4*a*c))
b>0
дало драматический выигрыш в точности.

Евгений Машеров АКА СанитарЖеня

--- ifmail v.2.15dev5
 * Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)