Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Release 0.6.0 "Christmas": Introducing variable precision
This release was a bit longer in coming than earlier ones, because we are about to reach the limits of what can fit on a DM42. This release uses 711228 bytes out of the 716800 (99.2%). Without the Intel Decimal Library code, we use only 282980 bytes. This means that the Intel Decimal Library code uses 60.2% of the total code space. Being able to move further requires a rather radical rethinking of the project, where we replace the Intel Decimal Library with size-optimized decimal code. As a result, release 0.6.0 introduces a new table-free and variable-precision implementation of decimal computations. In this release, most operations are implemented, but some features are still missing (e.g. Gamma function). This release will be simultaneous with 0.5.2, which is functionally equivalent but still uses the Intel Decimal library. The new implementation is much more compact, allowing us to return to normal optimizations for the DM42 and regain some of the lost performance. On the other hand, having to switch to a table free implementation means that it's significantly slower than the Intel Decimal Library. The upside of course is that you can compute with decimal numbers that have up to 9999 digits, and a decimal exponent that can be up to 2^60 (1 152 921 504 606 846 976). **New features** Variable precision decimal floating point implementation for arithmetic, trigonometrics, logs, exponential and integer factorial. Other functions may still return "unimplemented error". **Bug fixes** None. If anything, this release introduces bugs in computations and performance regressions. However, it frees *a lot* of space for further DM42 development. **Improvements** The `Precision` setting now sets the number of digits with a granularity of one, between 3 and 9999. Ideal use of memory is with multiples of 12 digits, e.g. 12, 24 or 36 digits, where decimal packing does not cause lost bits. Performance on the DM42 is somewhat improved, since it is now possible to return to a higher level of optimization. **Regressions** In addition to lower performance and unimplemented functions, this version no longer builds a compatible QSPI. This means that returning to the DM42 requires flashing *both* the QSPI and the PGM file. Signed-off-by: Christophe de Dinechin <christophe@dinechin.org>
- Loading branch information