Войти
ПрограммированиеФорумОбщее

Трюки с float: быстрое вычисление логарифмов. (комментарии) (2 стр)

Страницы: 1 2 3 Следующая »
#15
16:13, 10 мая 2010

Еще один тред про 0x5f3759df?


#16
9:22, 13 сен. 2010

Это хорошо, если считать на SSE. Если расчет идет на FPU, то при таких телодвижениях значения выгружаются из FPU в память, обрабатываются, а затем
снова загружаются в FPU. В результате проигрыш в скорости.

#17
13:04, 13 сен. 2010

> Ошибка обычно появляется лишь во втором-третьем знаке
считаешь по формуле ln(1+x)~=x
ln(2)~0.69 vs 1
макс. ошибка 30%
Автор, учи математику

#18
12:30, 26 сен. 2010

Aslan
> считаешь по формуле ln(1+x)~=x
> ln(2)~0.69 vs 1
> макс. ошибка 30%
> Автор, учи математику

Чё? Это для натурального логарифма формула. Причём икс между 0.5 и 1

#19
12:51, 26 сен. 2010

TarasB
О нем и речь
где ln(1 + mant) ~= mant
Из алгоритма получается 1<=x<2

#20
13:01, 26 сен. 2010

Разве? Для икс от 0.5 до 1 получается... А, блин, да, 0.5 на 27 процентов меньше, чем 0.69. Тоже много

Прошло более 1 года
#21
12:51, 10 окт. 2011

>Согласно стандарту IEEE 754, число с плавающей точкой будет представлено следующим образом: x = (1 + mant) * 2 ^ (exp - 127)

Автор, раскрой секрет представления half float. очень нужно!

#22
13:22, 10 окт. 2011

TheGrayWolf
что значит half float ?

#23
14:10, 10 окт. 2011

TheGrayWolf
> Автор, раскрой секрет представления half float. очень нужно!
ну а что там раскрывать. Упаковвываешь float из 4 байта в 2. Вот и вся хитрость.

#24
14:23, 10 окт. 2011

TheGrayWolf
lmgtfy.com, корочe http://ru.wikipedia.org/wiki/Число_половинной_точности

#25
15:05, 10 окт. 2011

Спасибо за оперативность, меня интересует формула:
x = (1 + mant) * 2 ^ (exp - 14) справедлива для half-float ?

кому интересно, нашёл ресурс http://www.binaryconvert.com/, там есть float, но  нет half

#26
15:15, 10 окт. 2011

TheGrayWolf
> x = (1 + mant) * 2 ^ (exp - 14) справедлива для half-float ?
Судя по статье в википедии - (exp-15).
Точнее:
для exp=0: (−1)signbit × 2−14 × 0.significandbits2
для exp<>0: (−1)signbit × 2exponent−15 × 1.significandbits2

#27
15:52, 10 окт. 2011

kipar
> 0.significandbits2
>1.significandbits2

Извените, а что это такое?

#28
16:56, 10 окт. 2011

TheGrayWolf
Мантисса.
Т.е. если у нас мантисса 0110010, то
1.0110010 = 1+50/128

#29
18:21, 10 окт. 2011

kipar
А зная число и экспоненту, можно найти мантису?  у меня есть число = 22, опытным путём установил что экспонента = 5, получаем что:
22 = pow( 2, exp−15 )  × 1.m

22 = 0,0009765625 * m;

m = 22528

А не практике цифры не сходяться

Страницы: 1 2 3 Следующая »
ПрограммированиеФорумОбщее

Тема в архиве.