Google Answers Logo
View Question
 
Q: Factorial for large numbers ( Answered 5 out of 5 stars,   11 Comments )
Question  
Subject: Factorial for large numbers
Category: Science > Math
Asked by: tabcity-ga
List Price: $25.00
Posted: 26 Jun 2002 13:22 PDT
Expires: 26 Jul 2002 13:22 PDT
Question ID: 33709
I need the factorial value for 83,000 (eighty three thousand) or 83000(!).
That is 83000 x 82999 x 82998 x 82997 etc.
I prefer answer in the form N.nnn times 10 to the eXponent.
If you use a stat program, I need the name of the Stat program used.
Answer  
Subject: Re: Factorial for large numbers
Answered By: jeanluis-ga on 26 Jun 2002 15:39 PDT
Rated:5 out of 5 stars
 
Hello,

83000! = 7.91222558e372239

Note: because you wanted it in exponential notation it is an
approximate value, the actual value would take a few thousand lines in
this message box, but I can post it if you want it, or you can do it
yourself with the instructions below.

To figure this out, I used an infinite precision math package written
for the Tcl scripting language called Mpexpr.

I had this already installed on my computer so I just wrote a small
program that computed this value, here is the program:
package require Mpexpr
set factorial [mpformat "%e" [mpexpr fact(83000)]]

And that is all there is to it (I say that as if it were nothing, but
in fact it took almost 30 minutes to compute the factorial and format
it on my computer). To run the factorial, assuming you have Tcl and
Mpexpr installed on your system (if you don't have them, I have
included instructions below), you would execute the main tcl (tclsh)
executable. It will give you a prompt that looks like this:
%

then you just type in those 2 lines above, and it computes the
factorial for you, and formats it in exponential notation.


If you don't have Tcl and Mpexpr installed on your system then you can
download them and install them from the following websites, they are
both freely available:

To get Tcl installed you should goto the Tcl website:
"Tcl 8.0"
http://www.scriptics.com/software/tcltk/8.0.html#Download Binary

Simply download the Windows Tcl self-extracting installer, and run the
tcl805.exe file. That should install Tcl.

To get the Mpexpr package installed do the following:
"Mpexpr download"
http://www.NeoSoft.com/tcl/ftparchive/sorted/math/Mpexpr-1.0/1.0/mpexpr-1.0.tar.gz

The once you download the Mpexpr package you can unzip it using any
zip utility (WinZip, PkZip, etc...) and then you should goto the
mpexpr-1.0\win directory, and read the README.win file, it will tell
you how to complete the install.

"Some information about Mpexpr"
http://www.nyx.net/%7Etpoindex/tcl.html#Mpexpr

Hope this works for you, feel free to ask for more info.

Request for Answer Clarification by tabcity-ga on 01 Jul 2002 08:02 PDT
Thank you  - - that is MORE than I needed.
Here's where I was coming from: 
There's a saying that given enough monkeys with typewriters, sooner or
later one of them will type out a Shakespear play.  Well the shortest
Shakespear play is A Comedy of Error, at 83,000 characters.  I figure
even with a billion monkey typing for a billion years we would not
reach it. Using a factorial formula it's apparent that with that many
monkeys we'd only get to about the 35th letter before this current
universe burns out and collapses in on itself again.  So you answered
my question.  Alas, even a short sonnet (611 characters) would not be
replicated by the monkeys.

So again, thanks for your help.
See http://www.marketresearchinfo.com/forum/index.cfm/fuseaction/listings/CFB/1/forum/1.cfm
then click on the Monkey-Shakespear problem
for a further discussion
Vince

Clarification of Answer by jeanluis-ga on 01 Jul 2002 08:10 PDT
That is very interesting... Thanks for letting me know. :)
tabcity-ga rated this answer:5 out of 5 stars
Excellent!  That is exacly what I was looking for.  I will add a
comment later to show you-all what I needed it for.  Thanks, Jean
Luis!

Comments  
Subject: Re: Factorial for large numbers
From: ake-ga on 26 Jun 2002 15:44 PDT
 
The standard trick is to use the logaritm in base 10. 

Let x = lg(8600!). Since lg(xy)=lg(x)+lg(y) you have

x = sum(lg(k),k=1..86000) 

Define floor(x) as the integer part of x. Then 

86000! = 10^(x-floor(x))*10^floor(x). 

You can evaluate x to the degree of accuracy you want, for example, 
using Maple I got:

86000! = 7.91222558*10^372239

The compuation time was close to 0. 

Sincerely, 
ake-ga
Subject: Re: Factorial for large numbers
From: phiham-ga on 26 Jun 2002 16:55 PDT
 
If you like C++, try this:
http://www.codeguru.com/algorithms/factorial.shtml
Kinda slow though.

Change the line near the end from
cout<<"E"<num-1<endl;
to
cout<<"E"<<num-1<<endl;
Subject: Re: Factorial for large numbers
From: chinaski-ga on 26 Jun 2002 19:52 PDT
 
Or, if you are really lazy, you can just use
Stirling's famous approximation

ln(z!) ~= (1/2)*ln(2*pi) + (z + 1/2)*ln(z) - z

which gives z! = 7.91221e372239.  Not perfect, but pretty good for
a short formula you can type into any $3 calculator.

chinaski-ga
Subject: Re: Factorial for large numbers
From: zhiwenchong-ga on 26 Jun 2002 21:55 PDT
 
This is extremely clever and simple! Thanks for posting!
Subject: Re: Factorial for large numbers
From: arrakis-ga on 27 Jun 2002 12:16 PDT
 
Using Mathematica 4, I typed in
Timing[NSolve[73000!]]
After 1.061 seconds I am provided with the answer. (No arbid digits of
precision, mind you. The number was displayed in its entirety)
In case it helps, I've posted it on my site. Be warned: its a 330 kb
large text file so that is one HUGE number.
The URL is:
http://www.geocities.com/aatishb/73000.txt
Hope this helps!
regards
Aatish
Subject: Re: Factorial for large numbers
From: arrakis-ga on 27 Jun 2002 12:24 PDT
 
Oops! I accidently uploaded 73K! instead of 83K.
This time it took 1.342 seconds.
new URL is:
http://www.geocities.com/aatishb/83000.txt
apologies
Aatish
Subject: Re: Factorial for large numbers
From: ake-ga on 27 Jun 2002 16:40 PDT
 
time(83000!) in Maple returned the answer 5.280s on an 1GHz P3 with a
few background jobs running. Mathematica probably has a faster
implementation of the factorial. I don't know how they compute it
though; can anyone dig up some info on that?

Sincerely, 
ake-ga
Subject: Re: Factorial for large numbers
From: secret901-ga on 30 Jun 2002 21:36 PDT
 
Mathematica uses "Adamchik techniques" formulated by Dr. Victor
Adamchik, http://www-2.cs.cmu.edu/~adamchik/ using simplified
"generalized hypergeometric functions."
Subject: Re: Factorial for large numbers
From: gmac-ga on 08 Aug 2002 09:00 PDT
 
All the ways of computing the large factorial are interesting, but
jeanluis-ga was asking for the wrong computation given the probability
desired.  Let's consider the probability of the monkeys randomly
typing the short sonnet of 611 characters.  I think we'd call it close
enough if the moneys got the letters and spaces right even if they
missed punctuation and case.  So for each character position there are
26 letters + 1 spce possibilities.  The possible 611 character
(counting space as a character) sonnets with this alphabet is NOT 611!
but is instead 27^611 = 1.3534 x 10^946.   Not likely to hit the one
sonnet exactly in our uiverse's lifetime, but the prospects are much
better than the incorrect estimate based on 611! = 5.121 x 10^1438.

And 27^83000 is _only_ 1.557 x 10^118803 which is considerably smaller
than 83000! reported in the other comments.
Subject: Re: Factorial for large numbers
From: tne-ga on 20 Aug 2002 21:14 PDT
 
thanks gmac-ga I was going throgh all the answers and could not figure
out how factorial and the problem were related.
Thanks for clarifying
Subject: Re: Factorial for large numbers
From: kerberos-ga on 16 Sep 2002 12:33 PDT
 
The STANDARD Windows calculator (option View->Scientific) gives the
correct result for the 83000!
(7.9122255800425502227407709215684e+372239), after some
warnings telling that the "requested operation may take a very long
time to complete"...

Important Disclaimer: Answers and comments provided on Google Answers are general information, and are not intended to substitute for informed professional medical, psychiatric, psychological, tax, legal, investment, accounting, or other professional advice. Google does not endorse, and expressly disclaims liability for any product, manufacturer, distributor, service or service provider mentioned or any opinion expressed in answers or comments. Please read carefully the Google Answers Terms of Service.

If you feel that you have found inappropriate content, please let us know by emailing us at answers-support@google.com with the question ID listed above. Thank you.
Search Google Answers for
Google Answers  


Google Home - Answers FAQ - Terms of Service - Privacy Policy