I'm looking for a free/open source C/C++ (either is acceptable) library of vectorized versions of common math functions (such as ln or exp) similar to Intel's Vector Math Library for Linux. I'd like a library that would provide me with the ability to write something like:
double a[ARRAY_SIZE], b[ARRAY_SIZE];
for (int i = 0; i < ARRAY_SIZE; ++i) {
a[i] = ln(b[i]);
}
as:
double a[ARRAY_SIZE], b[ARRAY_SIZE];
vectorized_ln(a, b, ARRAY_SIZE);
and have it use the full power of the SIMD instructions available on the Intel and AMD architectures. The development environment consists of GNU tools running on Linux. Intel's Math Kernel Library contains something called Vector Math Library which advertises "vector implementations of computationally intensive core mathematical functions" including basic functions, trig functions, etc, so I'm looking for something like that but for free.
you might find AMD's LibM Library (it is for x64 however) combined with SSEPlus to be of use. There is also an opensource x86 variant of Sony's Vector Math library.