Thanks for stressing the differences between 64bit and double precision!

However, I think it's not about double precision, either. Single precision only becomes an issue if you need more than 23 bits precision (which is not the case here).

The actual issue is how Pd *prints* floating point numbers when writing text files. It uses the %g print specifier, which automatically switches to scientific notation beyond a certain number of digits. See the implementation of "atom_string".

My example with [makefilename %f] shows that you can indeed print/save numbers with much higher precision - without the need of double precision floating point numbers. But as you have correctly pointed out, excessive use can lead to "symbol table pollution". Note that Pd has recently increased the size of its symbol table by a factor of 16 (https://github.com/pure-data/pure-data/commit/36eefd23d793969d3c5c160d9986e0300c474bab), so the problem has been mitigated somehow, but not completely eliminated.

I'm not sure how to solve this... the problem is that "atom_string" is used to *save* and *display* floats, but these two operations don't require the same amount of precision.

I think this has been discussed not too long ago. Maybe IOhannes remembers.

Christof

On 07.05.2021 16:53, hans w. koch wrote:
there have been a few discussions around this last year (in which i was 
involved).

1. its not about pd 64bit (that is liekly already running on your machine)! its 
about pd double precision, which is possible to compile easily (as i found out, 
being a noob)

2. regarding the makefilename approach: be carefule, if you generate lots of 
numbers:
https://lists.puredata.info/pipermail/pd-list/2020-10/128229.html

3. (one of) the other discussions: Problem With Correct Numbers In Pd Double 
Precision
https://lists.puredata.info/pipermail/pd-list/2020-09/128107.html

it ain´t easy…



Am 07.05.2021 um 16:33 schrieb Christof Ressi <i...@christofressi.com>:

If your numbers are integers, you can convert them to symbols with 
[makefilename %d] and add them to a text file, e.g. with [text set].

If the numbers are floats, you can use [makefilename %f]. Unlike %g, the %f 
specifier prevents the use of scientific notation. See also 
https://stackoverflow.com/a/5913115/6063908.

Works for me (tm).

Christof

On 07.05.2021 16:15, ro...@dds.nl wrote:
hi,

i'm struggling with the way Pd handles numbers bigger then 999999.

i have an array with thousands of numbers, which i write to a file to analyse 
them.

however, as soon as a number is bigger then 999999 i get the abbreviated 
notation and am loosing the lower digits.



in Pd i can make a big number showing all digits by transforming it into a 
symbol, e.g. with makefilename.

but a thus created text-file does not work in a spreadsheet.



probably there's a way to overcome this seemingly limitation, but i've not 
found it yet.

anybody with a hint?



rolf



_______________________________________________

Pd-list@lists.iem.at
  mailing list
UNSUBSCRIBE and account-management ->
https://lists.puredata.info/listinfo/pd-list
_______________________________________________
Pd-list@lists.iem.at mailing list
UNSUBSCRIBE and account-management -> 
https://lists.puredata.info/listinfo/pd-list



_______________________________________________
Pd-list@lists.iem.at mailing list
UNSUBSCRIBE and account-management -> 
https://lists.puredata.info/listinfo/pd-list



_______________________________________________
Pd-list@lists.iem.at mailing list
UNSUBSCRIBE and account-management -> 
https://lists.puredata.info/listinfo/pd-list

Reply via email to