This is a vectorized libm. Elementary functions like trig, pow, asinh can be evaluated using SIMD instructions. It is portable, and currently supports SSE2, AVX, AVX2, FMA4, AVX512F and AArch64 Advanced SIMD. The library is coded without a conditional branch. It is extensively tested to check if it handles corner cases well.

Tags mathematics c developers science-research simd sse avx
License BSL
State stable

Recent Releases

3.226 Feb 2018 10:31 major feature: * The whole build system of the project migrated from makefiles to cmake. * GNUABI version of the library with compatibility tests is added. * Extensive upstream testing via Travis CI and Appveyor log2 is added. * 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. * Removed libm dependency.
3.119 Jul 2017 09:55 major feature: * 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
3.006 Feb 2017 05:51 major feature: * 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
2.11011 Dec 2016 08:41 major feature: * 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)