I have uploaded a revision of the add-on package stringproc.
1. bugs 1796372 and 1820014 are fixed.
2. all functions are wrapped in some error checking
3. function printf now converts real bigfloat parameters automatically to float
(%i20) printf(true, "|~25 at a|~25,5f|~%", bf, bf), bf:2.5b0^25$
| 8.8817841970012531E9| 8881784197.00125|
4. bprintf: a new function for printing formatted bigfloats.
Some examples:
(%i10) fpprec:100$
(%i11) bprintf(true, 5.5b0^25);
3228993995007387460.5247453153133392333984375
(%o11) false
(%i12) bprintf(true, 2^-50)$
0.00000000000000088817841970012523233890533447265625
With fpprec chosen accordingly and without optional parameters real bigfloats
are printed as they are - but without b0 by default.
Real constants are converted to bigfloats.
Like in printf the first arg may be true, false or a stream to a file.
Three optional parameters are false by default.
The first sets the display resp. string width, the second the decimal places.
(%i13) (printf(true,"|"), bprintf(true, 5.5b0^25, 45, 5), printf(true,"|"))$
| 3228993995007387460.52475|
If the third is set to true, "b0" is added and the returned string can be parsed.
(%i14) bprintf(false, 5.5b0^25, false, 20, true);
(%o14) 3228993995007387460.52474531531333923340b0
(%i15) parse_string(%);
(%o15) 3.2289939950073874605247453153133392334b18
To check it out, for some examples you might need the latest nummod.lisp fix.
Volker van Nek