mirror of
https://github.com/ETLCPP/etl.git
synced 2026-06-17 17:36:33 +08:00
format.h:
- Fix float zero-padding ({:010f}): output sign first, then zero-fill,
then the unsigned formatted value, matching std::format behavior.
- Fix nested replacement fields ({:{}d}): consume the value's auto-index
in parse_format_spec before parsing nested width/precision fields, so
auto-indexing order matches the C++ standard.
- Fix {:#o} with value 0: produce "0" instead of "00" by skipping the
octal prefix when the value is zero.
- Fix format_floating_default overflow for extreme doubles (DBL_MIN,
DBL_MAX): fall back to scientific notation for values >= 1e18 or
tiny positives < 1e-6, delegating to format_floating_e.
- Fix format_floating_e precision loss: replace iterative multiply-by-10
normalization loop with O(1) log10/pow/floor computation.
- Add resolve_nested_replacements helper to extract width/precision
from format args at formatting time.
test_format.cpp:
- Add tests for float zero-padding, nested replacement width, octal
alternate form with zero, float sign/width/alignment, negative floats,
scientific notation for large/small values, default-to-scientific
switch, positive zero, brace escaping, and integer limits.
format.h + platform.h:
- log10l fix for different toolchain support:
Define ETL_FORMAT_NO_LONG_DOUBLE_MATH in the profile if libm doesn't
provide log10l. This is identified by linker error missing this symbol.
It was identified with the llvm/clang cross toolchain for ARM.
|
||
|---|---|---|
| .. | ||
| etl | ||