On Fri, 21 Dec 2007, Dafydd Hughes wrote:

Working on a project that needs really long numbers. I'm sure there's a way of doing it that's obvious to those with better math brains and more experience, but I basically need to keep Pd from slipping into scientific notation.

Everybody learned that at the beginning of elementary school, it's just not obvious that it's the same thing, only obvious in retrospect. When you compute one digit at a time on paper, that's pretty much the same thing that you have to do to work with long numbers that don't fit in float32.

However, you don't have to do it in base 10. Computers work with base 2, but computing many bits at once, so you could argue that you are really working in base 256 (uint8) or in base 4294967296 (uint32). For floats it's more complicated, you could do up to base 16777216, perhaps less.

But there's nothing preventing you from trying out base 10, or base 1000 or 1000000 (group digits in packs of 3 or 6 for more efficiency: 123456789 becomes list 123 456 789 or list 123 456789). There are actually some libraries for doing that (in C or Perl or other), because several uses for long digits are much better if you stick in the same base as what you are gonna use in the end (e.g. finance).

It might be easier to use another programming language to do those calculations. E.g. Ruby supports this since a long time, and Tcl has it since some preview of version 8.5. I don't know much about others, but I expect most programming languages to have a library for long ints.

 _ _ __ ___ _____ ________ _____________ _____________________ ...
| Mathieu Bouchard - tél:+1.514.383.3801, Montréal QC Canada
_______________________________________________
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list

Reply via email to