Hi

how can I calculate 1000!, the data type doesn't fit such s grate number, please help.

best regards

how can I calculate 1000!, the data type doesn't fit such s grate number, please help.

best regards

Get yourself a big-number library, such as MIRACL (MIRACL has an example to do just what you're talking about).

thanx for you reply

where can I find it please.

where can I find it please.

http://indigo.ie/~mscott/ - it isn't exactly written for Assembly use, though. But I guess it should be possible.

This thread might help if you want to code it yourself:

http://www.asmcommunity.net/board/index.php?topic=4978&highlight=prime

GMP is located at: http://www.swox.com/gmp/

http://www.asmcommunity.net/board/index.php?topic=4978&highlight=prime

GMP is located at: http://www.swox.com/gmp/

thanx guys I'll take a look & come back if I need more help.

mistronr1,

Use Stirling's formula. 1000! ~ 4.02353729204+E2567 Ratch

http://www.lassp.cornell.edu/sethna/Cracks/Stirling.html

Use Stirling's formula. 1000! ~ 4.02353729204+E2567 Ratch

http://www.lassp.cornell.edu/sethna/Cracks/Stirling.html

You can also compute any factorial by adding logarithms.

Example:

log(10!) = log(10)+log(9)+log(8)+..+log(2)+log(1)

you get something like: 6.5597630328767937...

Then 10! = 10^6 * inverse_log(0.5597630328767937) = 3.6288 * 10^6

This trick is useful to compute the number of digits of a factorial, if you need to print using a given shape.

Example:

log(10!) = log(10)+log(9)+log(8)+..+log(2)+log(1)

you get something like: 6.5597630328767937...

Then 10! = 10^6 * inverse_log(0.5597630328767937) = 3.6288 * 10^6

This trick is useful to compute the number of digits of a factorial, if you need to print using a given shape.

Also there exist the gamma function (aproximations, examples, etc).

http://www.google.com.mx/search?q=gamma+function&ie=UTF-8&oe=UTF-8&hl=es&meta=

http://www.rskey.org/gamma.htm.

I check some of the anterior links posted by bitRAKE, there is the gamma function too. Also in the search, I find the book

http://www.google.com.mx/search?q=cache:T4yZemhawUgJ:http://www.math.sfu.ca/~cbm/aands/+&hl=es follow the link to prohosting, or if you whant one without banners http://www.convertit.com/Go/ConvertIt/Reference/AMS55.ASP

Have a nice day or night.

http://www.google.com.mx/search?q=gamma+function&ie=UTF-8&oe=UTF-8&hl=es&meta=

http://www.rskey.org/gamma.htm.

I check some of the anterior links posted by bitRAKE, there is the gamma function too. Also in the search, I find the book

http://www.google.com.mx/search?q=cache:T4yZemhawUgJ:http://www.math.sfu.ca/~cbm/aands/+&hl=es follow the link to prohosting, or if you whant one without banners http://www.convertit.com/Go/ConvertIt/Reference/AMS55.ASP

Have a nice day or night.

Try:

www.sunderlandstrollers.org.uk/bigfact.exe for a windows program to do it and

www.sunderlandstrollers.org.uk/bigfact.txt for the source code.

1000!=402387260077093773543702433923003985719374864210714632543799910429938512398629020592044208486969404800479988610197196058631666872994808558901323829669944590997424504087073759918823627727188732519779505950995276120874975462497043601418278094646496291056393887437886487337119181045825783647849977012476632889835955735432513185323958463075557409114262417474349347553428646576611667797396668820291207379143853719588249808126867838374559731746136085379534524221586593201928090878297308431392844403281231558611036976801357304216168747609675871348312025478589320767169132448426236131412508780208000261683151027341827977704784635868170164365024153691398281264810213092761244896359928705114964975419909342221566832572080821333186116811553615836546984046708975602900950537616475847728421889679646244945160765353408198901385442487984959953319101723355556602139450399736280750137837615307127761926849034352625200015888535147331611702103968175921510907788019393178114194545257223865541461062892187960223838971476088506276862967146674697562911234082439208160153780889893964518263243671616762179168909779911903754031274622289988005195444414282012187361745992642956581746628302955570299024324153181617210465832036786906117260158783520751516284225540265170483304226143974286933061690897968482590125458327168226458066526769958652682272807075781391858178889652208164348344825993266043367660176999612831860788386150279465955131156552036093988180612138558600301435694527224206344631797460594682573103790084024432438465657245014402821885252470935190620929023136493273497565513958720559654228749774011413346962715422845862377387538230483865688976461927383814900140767310446640259899490222221765904339901886018566526485061799702356193897017860040811889729918311021171229845901641921068884387121855646124960798722908519296819372388642614839657382291123125024186649353143970137428531926649875337218940694281434118520158014123344828015051399694290153483077644569099073152433278288269864602789864321139083506217095002597389863554277196742822248757586765752344220207573630569498825087968928162753848863396909959826280956121450994871701244516461260379029309120889086942028510640182154399457156805941872748998094254742173582401063677404595741785160829230135358081840096996372524230560855903700624271243416909004153690105933983835777939410970027753472000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

www.sunderlandstrollers.org.uk/bigfact.exe for a windows program to do it and

www.sunderlandstrollers.org.uk/bigfact.txt for the source code.

1000!=402387260077093773543702433923003985719374864210714632543799910429938512398629020592044208486969404800479988610197196058631666872994808558901323829669944590997424504087073759918823627727188732519779505950995276120874975462497043601418278094646496291056393887437886487337119181045825783647849977012476632889835955735432513185323958463075557409114262417474349347553428646576611667797396668820291207379143853719588249808126867838374559731746136085379534524221586593201928090878297308431392844403281231558611036976801357304216168747609675871348312025478589320767169132448426236131412508780208000261683151027341827977704784635868170164365024153691398281264810213092761244896359928705114964975419909342221566832572080821333186116811553615836546984046708975602900950537616475847728421889679646244945160765353408198901385442487984959953319101723355556602139450399736280750137837615307127761926849034352625200015888535147331611702103968175921510907788019393178114194545257223865541461062892187960223838971476088506276862967146674697562911234082439208160153780889893964518263243671616762179168909779911903754031274622289988005195444414282012187361745992642956581746628302955570299024324153181617210465832036786906117260158783520751516284225540265170483304226143974286933061690897968482590125458327168226458066526769958652682272807075781391858178889652208164348344825993266043367660176999612831860788386150279465955131156552036093988180612138558600301435694527224206344631797460594682573103790084024432438465657245014402821885252470935190620929023136493273497565513958720559654228749774011413346962715422845862377387538230483865688976461927383814900140767310446640259899490222221765904339901886018566526485061799702356193897017860040811889729918311021171229845901641921068884387121855646124960798722908519296819372388642614839657382291123125024186649353143970137428531926649875337218940694281434118520158014123344828015051399694290153483077644569099073152433278288269864602789864321139083506217095002597389863554277196742822248757586765752344220207573630569498825087968928162753848863396909959826280956121450994871701244516461260379029309120889086942028510640182154399457156805941872748998094254742173582401063677404595741785160829230135358081840096996372524230560855903700624271243416909004153690105933983835777939410970027753472000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Stirlings formula looks pretty nice if you don't need an insanely accuracte number... constant-time too, if I'm not mistaken?

Hi

I think the log trick is much better for my needs, coz with the Stirlings formula I still have to compute multiplication of large numbers. my main Problem is store the large number in a variable, I don't have the same Problem if I use log (I guess), I'll try & see what comes out of it.

Thank you

I think the log trick is much better for my needs, coz with the Stirlings formula I still have to compute multiplication of large numbers. my main Problem is store the large number in a variable, I don't have the same Problem if I use log (I guess), I'll try & see what comes out of it.

Thank you

oops, I accidentaly gave the wrong file name in the post above, it should be:

www.sunderlandstrollers.org.uk/factor3.exe for a windows program to do it and

www.sunderlandstrollers.org.uk/factor3.txt for the source code.

sorry.

The code linked to does the factorial both ways, it gets an estimate of the final value using sum of logs and then works it out completely using multiplies.

Paul.

www.sunderlandstrollers.org.uk/factor3.exe for a windows program to do it and

www.sunderlandstrollers.org.uk/factor3.txt for the source code.

sorry.

The code linked to does the factorial both ways, it gets an estimate of the final value using sum of logs and then works it out completely using multiplies.

Paul.

I think the log trick is much better for my needs,

The problem with the log trick is that it becomes pretty unprecise before too long, because the floating-point numbers don't hold enough precision.

You will need some form of bignum if you want to calculate really big factorials. And in this case, Stirling's formula seems good, at least if your bignum library has a non-retarded exponentation routine :)

if you're using bignums then why not just calculate it directly i.e. 1000 * 999 * 998 * ...

using hugs (haskell interpreter) and typing in "product [1..1000]", the answer comes up instantly

using hugs (haskell interpreter) and typing in "product [1..1000]", the answer comes up instantly

Thanx paul for the link & thanx f0dder for the advice I'll try both, after all I am still learning how to use the FPU instructions, so I guess this is a good apportunity for me to do so ;)

thanx again everyone for the help, have a nice day..

thanx again everyone for the help, have a nice day..

Also I write the real link http://www.math.sfu.ca/~cbm/aands/

Aparently in the day that I find that page, the server was shutdown, because I send a mail, I have not much time for read it, but have some interesting things.

Aparently in the day that I find that page, the server was shutdown, because I send a mail, I have not much time for read it, but have some interesting things.

mistronr1,

Sorry me but, why would you like to calculate 1000! ? Mathematically, it doesn't make much sense.

Sorry me but, why would you like to calculate 1000! ? Mathematically, it doesn't make much sense.

Could you not use an extended IEEE 754 (80-bit) value to do it, I believe the exponent goes to +1023?

No because the answer is ~ 4.02353729204+E

**2567**