For some special cases, like cos(x) for x near π/2, a loss of accuracy occured. This was fixed in release 1.1.12.
Category: Uncategorized
V1.1.11 Space optimizations for asin & acos
The code for asin & acos was optimized to use less flash space.
For Linux users, the makefile was extended to allow creation of libraries for different AVR mcrocontrollers (MCU) named libfp64-%.a, where % stands for the selected MCU, e.g. libfp64-atmega328p.a for the Atmega 328p. libfp64.a will always link to the latest created library.
V1.1.10 supports compilation outside Arduino IDE / Linux
fp64lib was primarely targeted to be used as a library in the Arduino IDE. There it works successfully, on both Windows and Linux. However, some users tried to use it outside the Arduino IDE with some success, but also with some errors. As part of a debugging session, I created a small makefile that supports the usual targets “all” and “clean” and creates a library named libfp64.a, which you can then link and use in your projects.
V1.1.9 removes linker bug
When using fp64lib outside of the arduino IDE, segment allocation by the linker will be different. On some files, the propoer segment allocation was missing, resulting in error messages like
relocation truncated to fit: R_AVR_13_PCREL against `no symbol'
V1.1.9 now has proper segment allocation for all files.
V1.1.8 Reduced footprint & some bug fixes
In about 2/3 of all source files, common subroutines were identified and factored out. Overall flash footprint of the library could be reduced by about 350 Bytes, with some increase in execution times (about 5% on average). For example, memory footprint for Nerdcalc (see History) was 30642 Bytes with fp64lib V1.0.7. With V1.1.7, this was already down to 29596 – the savings of 1046 bytes came from the leaner trigonometric routines introduced in V1.1.0. And with V1.1.8 it is now at 29230 Bytes, so another 336 Bytes saved – and Nerdcalc does not use all fp64lib-functions.
The include file fp64lib.h was cleaned up and contains now only the official entry points of the library.
A bug was fixed in fp64_add to fix the incorrect result when adding 0 to a subnormal.
More details can be found on the fp64lib github release note.
V1.1.7 Fixed bug impacting nested function calls
Some functions did clobber the registers, thus nesting functions calls like fp64_mul(fp64_div(a,b),c) did not working correctly, when b or c where constants or variables.
V1.1.6 Improved speed of fp64_sin
Based on a proposal by @gjlayde on https://www.mikrocontroller.net/topic/85256#6137882, speed of fp64_sin could be improved by another 45%, using an optimized polynomial approximation for x in range [0,PI/2[.
V1.1.5 Increased speed for fp64_log
Based on a proposal by @gjlayde on https://www.mikrocontroller.net/topic/85256#6133370, speed of fp64_log could be improved by another 40%. Instead of approximating log(x) in the range [1;2[, it is faster to approximate it in [1/sqrt(2); sqrt(2)] with same accuracy.
V1.1.3 fixed linker bug
V1.1.3 is available for download, fixing a linker relocation error.
V1.1.2 available
Fixed incorrect library.properties file.