( 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])