fp64lib now supports programs that use more than 64kB of flash memory, e.g. on the ATMEGA 2560.
V1.1.17 fixes bug in fp64_atan2
For some arguments, fp64_atan2 did not calculate correct results. This is fixed now.
V1.1.16 fixes bug in fp64_modf
This release contains a complete rewrite of fp64_modf, both to fix a code and to have an easier way to get both the fraction part and the integer part of a number. Additionaly, the new code is now fully compatible with C/C++ for +INF/-INF.
V1.1.15 corrects bug in fp64_tostring
A bug in fp64_tostring was corrected, where the function incorrectly returned the previously converted string instead of converting the current argument.
V1.1.14 Added support for (-x)^y
The fp64_pow()-function implements xy. The implementation now supports x being a negative number and y being a positive integer, e.g. (-2)5 will now correctly return -32 instead of NaN.
V1.1.13 New functions and experimental support for long double
The upcoming release of gcc 10 has 64-bit long double as an configurable option. In order to prepare fp64lib for that, a new macro was introduced GCC_ENTRY to provide compatible naming with gcc 10. Furthermore, the following functions were added for improved compatibility: fp64_cotan(x), fp64_exp10(x), fp64_pow10(x) and fp64_log2.
For further instruction on how to use the long double support, see this page.
Except for the new functions, the implicit long double support is currently not availabe inside the Arduino IDE, as gcc 10 is still in the testing/ experimental phase and not yet offically released.
V1.1.12 Improved accuracy for sin(x) and cos(x)
For some special cases, like cos(x) for x near π/2, a loss of accuracy occured. This was fixed in release 1.1.12.
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.