Gottfried Helms on Sat, 26 Nov 2022 14:31:00 +0100

 Re: binomial() challenge (+thanks)

```Am 26.11.2022 um 13:17 schrieb Ruud H.G. van Tol:
>
> PARI binomial() challenge:
>
> binom_1(n,k) = gamma(n+1) / gamma(k+1) / gamma(n-k+1)
> binom_2(n,k) = exp(lngamma(n+1) - lngamma(k+1) - lngamma(n-k+1))
>
> ? version()
> %12 = [2, 15, 1]
>
> ? 1.0* binomial(2^55,43)
> %13 = 1.4282133046347667042864235447599552118 E659
>
> ? 1.0* binom_1(2^55,43)
> %14 = 1.4282133046347667042864235447599552118 E659
>
> ? 1.0* binom_2(2^55,43)
> %15 = 1.4282133046347667042944763056801257481 E659
>
> and then
>
> ? 1.0* binomial(10^40,43)
> %16 = 1.6552108677421951886982956337138493958 E1667
>
> ? 1.0* binom_2(10^40,43)
> %17 = 7.416480782428988905 E1778
>
Hmm, this surprised me, because I've never observed
such discrepancies, although I've experimented with
such implementations.
However, I work by default with dec precision of
200 digits, and reproducing your function calls
led to correct digits as well for the binom_2() version:

\\ -----------------------------------------------------------------------------------------------
version() \\ %75 = [2, 16, 0, 28083, "5ad72a2e8c"]

fmt(200,60) \\ "prec=211 display=0"

1.0* binomial(2^55,43) \\ %101 = 1.42821330463476670428642354475995521176331125070436530629880 E659
1.0* binom_1(2^55,43)  \\ %103 = 1.42821330463476670428642354475995521176331125070436530629880 E659
1.0* binom_2(2^55,43)  \\ %105 = 1.42821330463476670428642354475995521176331125070436530629880 E659

1.0* binomial(10^40,43) \\ %107 = 1.65521086774219518869829563371384939580110837820413175684538 E1667
1.0* binom_2(10^40,43)  \\ %109 = 1.65521086774219518869829563371384939580110837820413175684538 E1667

\\ ------------------------------------------------------------------------------------------------
(even to 120 dec digits no difference)

Gottfried Helms

```