# Large factorials?

4 messages
Open this post in threaded view
|

## Large factorials?

 Hi, I have tried to find a hint in the octave documentation, but couldn't find one regarding the subject and the following: Is there an easy way in octave    either provided by built-in capabilities,    or via programming,    or via setup,    or via selection of parameters to get large factorials not as floating point numbers but as representation of very long integers. E.g. 50! (or in octave: prod(1:50)) does need more than 60 digits. How can this be handled to output not in floating point numbers but as 60+ digit integer?? I would be happy to get helpful answers as soon as possible and I appreciate your feedback. Thanks in advance Michael -- Michael Schmidt                    [hidden email]                     SAMBA Admin Server fuer / Server for  MS + Win95 + WinNT + LANManager               Fachhochschule Koblenz
Open this post in threaded view
|

## Re: Large factorials?

 ( Re Message From: M. Schmidt ) > > I have tried to find a hint in the octave documentation, but couldn't > find one regarding the subject and the following: > > Is there an easy way in octave >    either provided by built-in capabilities, >    or via programming, >    or via setup, >    or via selection of parameters > to get large factorials not as floating point numbers > but as representation of very long integers. > > E.g. 50! (or in octave: prod(1:50)) does need more than 60 digits. > How can this be handled to output not in floating point numbers > but as 60+ digit integer?? > > I would be happy to get helpful answers as soon as possible > and I appreciate your feedback. > > Thanks in advance > Michael > > -- > Michael Schmidt                    [hidden email] >                     SAMBA Admin > Server fuer / Server for  MS + Win95 + WinNT + LANManager >               Fachhochschule Koblenz Since 50! > 10^60, the number cannot be represented exactly in 32-bit floating point. Therefore you are basically stuck. In /theory/ it is possible to program "symbolic" arithmetic in octave, i.e. (for istance) 123 * 57 could be worked out by breaking it down into ["1","2","3","*","5","7"] and feeding this to an octave program which would manipulate it and return ["7","0","1","1"], but I wouldn't like to do this unless I really had to. However, this would allow you to do arbitrary-precision arithmetic within octave. On my UNIX (actually Linux) system I have the "arbitrary precision calculator" called "bc" which is something of a UNIX classic. This is ideal for that type of calculation; here is a short "bc" session for 50! ---------------------------------------------------------------------------- root@Tedistan:~# bc -l bc 1.02 (Mar 3, 92) Copyright (C) 1991, 1992 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. j=1 for(i=1;i<51;i++) j=j*i j 30414093201713378043612608166064768844377641568960512000000000000 quit root@Tedistan:~# ---------------------------------------------------------------------------- Since you can run "bc" as a system task from within octave (provided of course you're on a UNIX-like system which allows that to be done), if I needed to get this long string of digits into octave then that's how I would do it. But you still wouldn't be able to use the string for /exact/ arithmetic calculation within octave by normal methods. Best wishes, Ted.                                    ([hidden email])