- Fixed floating-point precision bug: numbers >= 1e54 now use string-based
chunking (toExponential digit extraction) instead of Math.pow division,
which drifts beyond ~54 bits of precision
- Integrated into fmt(): numbers at undecillion+ scale (10^36) automatically
switch from abbreviated form ('1.0UDc') to spelled-out words ('one undecillion')
- Verified: spellf() correctly handles 0 through 10^303 (centillion)
- All 320 place value names from NUMBER_NAMES array work correctly
The educational effect: when resources hit cosmic scales, digits become
meaningless but NAMES give them soul.