Jump to content

Evaluate binomial coefficients: Difference between revisions

m
→‎{{header|Phix}}: replaced with gmp version
(Added 11l)
m (→‎{{header|Phix}}: replaced with gmp version)
Line 1,754:
</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):
{{libheader|bigatommpfr}}
<lang Phix>include builtins\bigatommpfr.e
 
function ba_binommpz_binom(integer n, k)
bigatommpz r = ba_newmpz_init(1)
for i=1 to k do
r = ba_divide(ba_multiplympz_mul_si(r,r,n-i+1),i)
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
return mpz_get_str(r)
end function
 
?mpz_binom(5,3)
?ba_sprintf("%B",ba_binom(5,3))
?ba_sprintf("%B",ba_binommpz_binom(100,50))
?ba_sprintf("%B",ba_binommpz_binom(60,30))
?ba_sprintf("%B",ba_binommpz_binom(1200,120))</lang>
{{out}}
<pre>
7,813

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.