Re: BUG #16281: LN() function inaccurate at 1000th fractional digit

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: BUG #16281: LN() function inaccurate at 1000th fractional digit
Дата
Msg-id 13048.1583003559@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: BUG #16281: LN() function inaccurate at 1000th fractional digit  (Dean Rasheed <dean.a.rasheed@gmail.com>)
Ответы Re: BUG #16281: LN() function inaccurate at 1000th fractional digit  (Justin AnyhowStep <anyhowstep@hotmail.com>)
Список pgsql-bugs
Dean Rasheed <dean.a.rasheed@gmail.com> writes:
> Looking more closely at ln_var(), it seems that there was an oversight
> related to the way that it computes the local_rscale for the Taylor
> series expansion --- it fails to account for the fact that the result
> is multiplied by fact (2^(nsqrt+1), where nsqrt is the number of
> square roots performed in the range reduction phase, which in practice
> is at most 22).
> Since 2^22 has 7 decimal digits, multiplying by 2^22 almost entirely
> wipes out the 8-digit safety margin used in the Taylor series
> expansion. The attached patch corrects that.

Looks sane to me.

> With this patch, all the examples originally posted return the correct
> results (calculated with bc). I'd be interested to know how the OP
> constructed these examples, and whether there were any that were off
> by more than 1 ULP.

Yeah, that would be interesting.

            regards, tom lane



В списке pgsql-bugs по дате отправления:

Предыдущее
От: Dean Rasheed
Дата:
Сообщение: Re: BUG #16281: LN() function inaccurate at 1000th fractional digit
Следующее
От: Justin AnyhowStep
Дата:
Сообщение: Re: BUG #16281: LN() function inaccurate at 1000th fractional digit