Abstract
Systems support mathematical functions like exp, sin, cos through mathematical libraries (libm). With increasingly parallel hardware, scalar libm functions do not suffice; implementations that work on vectors in an element-by-element (SIMD) fashion are required. Only few Open-Source implementations of vector libms exist. They are mostly written in assembly, which hinders portability and maintenance. As they depend on the scalar system libm for special case handling, the existing vector libms may induce a source of non-reproducibility. We present an Open-Source vector libm implemented with high-level scalar C that a modern compiler can translate to SIMD code. The error of all functions does not exceed 8ulp, while a performance gain of up to 278.5% is obtained. Our library is fully free-standing, i.e. it does not depend on any other system library.

This publication has 10 references indexed in Scilit: