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.