This patch release provides important bug fixes, including a fix for API compatibility with 3.5 (#534). The support and test for some features is still limited, as documented in README, however significant progress was made in order to test on Linux, macOS and Windows.
- Add support for RISC-V in DFT, QUAD and inline headers (#503, #522).
- Add GHA workflow to run CI tests on Windows x86 (#540) and macOS x86/aarch64 (#543). And update test matrix.
- Add GHA workflows to run examples in CI (#550).
- Cleanup/Improve support for RISC-V in LIBM (#520, #521).
- Update supported environment in documentation (#529, #549), including website and test matrix from README.
- Major fix and cleanup of CMakeLists.txt (#531).
- Fix compatibility issue after removal of quad and long double sincospi (#545). Restores functions that are missing in 3.6.
- Various bug fixes (#528, #533, #536, #537).
This release follows a long period of inactivity. The library is now being actively maintained. However, the support and test for some features is currently limited, as documented in README.
- Add documentation for the quad precision math library
- Enable generation of inline header file for CUDA (PR #337)
- Add support for System/390 z15 support (PR #343)
- Add support for POWER 9 (PR #360)
- Add quad-precision functions (PR #375, #377, #380, #381, #382, #383, #385, #386, #387)
- Add preliminary support for iOS and Android (PR #388, #389)
- Add OpenMP pragmas to the function declarations in sleef.h to enable auto-vectorization by GCC (PR #404, #406)
- Add new public CI test infrastructure using GitHub Actions (PR #476)
- Add support for RISC-V in libm (PR #477)
- Remove old CI scripts based on Travis/Jenkins/Appveyor (PR #502)
- Optimise error functions (PR #370)
- Update CMake package config (PR #412)
- Update documentation and move doc/website to main repository (PR #504, #513)
- Add SLEEF_ prefix to user-facing CMake options (PR #509)
- Disable SVE on Darwin (PR #512)
- Fix parallel builds with GNU make (PR #491)
- Various bug fixes (PR #492, #499, #508)
- Fixed a bug in handling compiler options
- IBM System/390 support is added.
- The library can be built with Clang on Windows.
- Static libraries with LTO can be generated.
- Alternative division and sqrt methods can be chosen with AArch64.
- Header files for inlining the whole SLEEF functions can be generated.
- IEEE remainder function is added.
- GCC-10 can now build SLEEF with SVE support.
- Fixed accuracy problem with tan_u35, atan_u10, log2f_u35 and exp10f_u10. shibatch#260 shibatch#265 shibatch#267
- SVE intrinsics that are not supported in newer ACLE are replaced. shibatch#268
- FMA4 detection problem is fixed. shibatch#262
- Compilation problem under Windows with MinGW is fixed. shibatch#266
- Faster and low precision functions are added. shibatch#229
- Functions that return consistent results across platforms are added shibatch#216 shibatch#224
- Quad precision math library(libsleefquad) is added shibatch#235 shibatch#237 shibatch#240
- AArch64 Vector Procedure Call Standard (AAVPCS) support.
- Many functions are now faster
- Testers are now faster
- FreeBSD support is added
- i386 build problem is fixed
- Trigonometric functions now evaluate correctly with full FP domain. shibatch#210
- SVE target support is added to libsleef. shibatch#180
- SVE target support is added to DFT. With this patch, DFT operations can be carried out using 256, 512, 1024 and 2048-bit wide vectors according to runtime availability of vector registers and operators. shibatch#182
- 3.5-ULP versions of sinh, cosh, tanh, sinhf, coshf, tanhf, and the corresponding testing functionalities are added. shibatch#192
- Power VSX target support is added to libsleef. shibatch#195
- Payne-Hanek like argument reduction is added to libsleef. shibatch#197
- The whole build system of the project migrated from makefiles to
cmake. In particualr this includes
libsleef
,libsleefgnuabi
,libdft
and all the tests. - Benchmarks that compare
libsleef
vsSVML
on X86 Linux are available in the project tree under src/libm-benchmarks directory. - Extensive upstream testing via Travis CI and Appveyor, on the
following systems:
- OS: Windows / Linux / OSX.
- Compilers: gcc / clang / MSVC.
- Targets: X86 (SSE/AVX/AVX2/AVX512F), AArch64 (Advanced SIMD), ARM (NEON). Emulators like QEMU or SDE can be used to run the tests.
- Added the following new vector functions (with relative testing):
log2
- New compatibility tests have been added to check that
libsleefgnuabi
exports the GNUABI symbols correctly. - The library can be compiled to an LLVM bitcode object.
- Added masked interface to the library to support AVX512F masked vectorization.
- Use native instructions if available for
sqrt
. - Fixed fmax and fmin behavior on AArch64: shibatch#140
- Speed improvements for
asin
,acos
,fmod
andlog
. Computation speed of other functions are also improved by general optimization. shibatch#97 - Removed
libm
dependency.
- Makefile build system
- Added AArch64 support
- Implemented the remaining C99 math functions : lgamma, tgamma, erf, erfc, fabs, copysign, fmax, fmin, fdim, trunc, floor, ceil, round, rint, modf, ldexp, nextafter, frexp, hypot, and fmod.
- Added dispatcher for x86 functions
- Improved reduction of trigonometric functions
- Added support for 32-bit x86, Cygwin, etc.
- Improved tester
- New API is defined
- Functions for DFT are added
- sincospi functions are added
- gencoef now supports single, extended and quad precision in addition to double precision
- Linux, Windows and Mac OS X are supported
- GCC, Clang, Intel Compiler, Microsoft Visual C++ are supported
- The library can be compiled as DLLs
- Files needed for creating a debian package are now included
- Relicensed to Boost Software License Version 1.0
- The valid range of argument is extended for trig functions
- Specification of each functions regarding to the domain and accuracy is added
- A coefficient generation tool is added
- New testing tools are introduced
- Following functions returned incorrect values when the argument is very large or small : exp, pow, asinh, acosh
- SIMD xsin and xcos returned values more than 1 when FMA is enabled
- Pure C cbrt returned incorrect values when the argument is negative
- tan_u1 returned values with more than 1 ulp of error on rare occasions
- Removed support for Java language(because no one seems using this)
- Added support for AVX-512F and Clang Extended Vectors.
- Added ilogbf. All the reported bugs(listed below) are fixed.
- Log function returned incorrect values when the argument is very small.
- Signs of returned values were incorrect when the argument is signed zero.
- Tester incorrectly counted ULP in some cases.
- ilogb function returned incorrect values in some cases.
- Added support for ARM NEON. Added higher accuracy single precision functions : sinf_u1, cosf_u1, sincosf_u1, tanf_u1, asinf_u1, acosf_u1, atanf_u1, atan2f_u1, logf_u1, and cbrtf_u1.
- Added higher accuracy functions : sin_u1, cos_u1, sincos_u1, tan_u1, asin_u1, acos_u1, atan_u1, atan2_u1, log_u1, and cbrt_u1. These functions evaluate the corresponding function with at most 1 ulp of error.
- Added the remaining single precision functions : powf, sinhf, coshf, tanhf, exp2f, exp10f, log10f, log1pf. Added support for FMA4 (for AMD Bulldozer). Added more test cases. Fixed minor bugs (which degraded accuracy in some rare cases).
- Added support for AVX2. SLEEF now compiles with ICC.
- Fixed incorrect denormal/nonnumber handling in ldexp, ldexpf, sinf and cosf. Removed support for Go language.
- Added sincosf.
- Added single precision functions : sinf, cosf, tanf, asinf, acosf, atanf, logf, expf, atan2f and cbrtf.
- Added exp2, exp10, expm1, log10, log1p, and cbrt.
- asin() and acos() are back.
- Added ilogb() and ldexp().
- Added hyperbolic functions.
- Eliminated dependency on frexp, ldexp, fabs, isnan and isinf.
- All of the algorithm has been updated.
- Both accuracy and speed are improved since version 1.10.
- Denormal number handling is also improved.
- AVX support is added. Accuracy tester is added.
- Initial release