Factorial: Difference between revisions

No edit summary
Line 5,395:
 
=={{header|Phix}}==
standard iterative factorial builtin, reproduced below. returns inf for 171 and above, and is not accurate above 22 on 32-bit, or 25 on 64-bit.
<lang Phix>global function factorial(integer n)
atom res = 1
Line 5,404:
return res
end function</lang>
=== gmp ===
{{libheader|mpfr}}
For a bit of fun, we'll see just how far we can push it.
<lang Phix>include mpfr.e
mpz f = mpz_init()
integer n = 2
bool still_running = true,
still_printing = true
while still_running do
atom t0 = time()
mpz_fac_ui(f, n)
still_running = (time()-t0)<10 -- (stop once over 10s)
string ct = elapsed(time()-t0), res, what, pt
t0 = time()
if still_printing then
res = shorten(mpz_get_str(f))
what = "printed"
still_printing = (time()-t0)<10 -- (stop once over 10s)
else
res = sprintf("%,d digits",mpz_sizeinbase(f,10))
what = "size in base"
end if
pt = elapsed(time()-t0)
printf(1,"factorial(%d):%s, calculated in %s, %s in %s\n",
{n,res,ct,what,pt})
n *= 2
end while</lang>
{{out}}
<pre>
factorial(2):2, calculated in 0.0s, printed in 0.0s
factorial(4):24, calculated in 0s, printed in 0s
factorial(8):40320, calculated in 0s, printed in 0s
factorial(16):20922789888000, calculated in 0s, printed in 0s
factorial(32):263130836933693530167218012160000000, calculated in 0s, printed in 0s
factorial(64):1268869321858841641...4230400000000000000 (90 digits), calculated in 0s, printed in 0s
factorial(128):3856204823625804217...0000000000000000000 (216 digits), calculated in 0s, printed in 0s
factorial(256):8578177753428426541...0000000000000000000 (507 digits), calculated in 0s, printed in 0s
factorial(512):3477289793132605363...0000000000000000000 (1,167 digits), calculated in 0s, printed in 0s
factorial(1024):5418528796058857283...0000000000000000000 (2,640 digits), calculated in 0s, printed in 0s
factorial(2048):1672691931910011705...0000000000000000000 (5,895 digits), calculated in 0s, printed in 0s
factorial(4096):3642736389457041931...0000000000000000000 (13,020 digits), calculated in 0s, printed in 0s
factorial(8192):1275885799409419815...0000000000000000000 (28,504 digits), calculated in 0s, printed in 0s
factorial(16384):1207246711959629373...0000000000000000000 (61,937 digits), calculated in 0s, printed in 0.0s
factorial(32768):9092886296374209477...0000000000000000000 (133,734 digits), calculated in 0s, printed in 0.1s
factorial(65536):5162948523097509165...0000000000000000000 (287,194 digits), calculated in 0.0s, printed in 0.2s
factorial(131072):2358150556532892503...0000000000000000000 (613,842 digits), calculated in 0.0s, printed in 0.8s
factorial(262144):1396355768630047926...0000000000000000000 (1,306,594 digits), calculated in 0.1s, printed in 3.1s
factorial(524288):5578452507102649524...0000000000000000000 (2,771,010 digits), calculated in 0.3s, printed in 13.4s
factorial(1048576):5,857,670 digits, calculated in 0.7s, size in base in 0.2s
factorial(2097152):12,346,641 digits, calculated in 1.7s, size in base in 0.5s
factorial(4194304):25,955,890 digits, calculated in 3.6s, size in base in 1.0s
factorial(8388608):54,436,999 digits, calculated in 8.1s, size in base in 2.2s
factorial(16777216):113,924,438 digits, calculated in 17.7s, size in base in 4.9s
</pre>
 
=={{header|PHP}}==
7,805

edits