Evaluate binomial coefficients: Difference between revisions

Content added Content deleted
(Added 11l)
m (→‎{{header|Phix}}: replaced with gmp version)
Line 1,754: Line 1,754:
</pre>
</pre>
However errors will creep in should any result or interim value exceed 9,007,199,254,740,992 (on 32-bit), so (and using a different algorithm just for kicks):
However errors will creep in should any result or interim value exceed 9,007,199,254,740,992 (on 32-bit), so (and using a different algorithm just for kicks):
{{libheader|bigatom}}
{{libheader|mpfr}}
<lang Phix>include builtins\bigatom.e
<lang Phix>include builtins\mpfr.e

function ba_binom(integer n, k)
function mpz_binom(integer n, k)
bigatom r = ba_new(1)
mpz r = mpz_init(1)
for i=1 to k do
for i=1 to k do
r = ba_divide(ba_multiply(r,n-i+1),i)
mpz_mul_si(r,r,n-i+1)
if mpz_fdiv_q_ui(r, r, i)!=0 then ?9/0 end if
-- r = ba_divide(ba_multiply(r,n-i+1),i)
end for
end for
return r
return mpz_get_str(r)
end function
end function

?mpz_binom(5,3)
?ba_sprintf("%B",ba_binom(5,3))
?ba_sprintf("%B",ba_binom(100,50))
?mpz_binom(100,50)
?ba_sprintf("%B",ba_binom(60,30))
?mpz_binom(60,30)
?ba_sprintf("%B",ba_binom(1200,120))</lang>
?mpz_binom(1200,120)</lang>
{{out}}
{{out}}
<pre>
<pre>