I'm using Intel Integrated Performance Primitives (v2019, 64bit) and I came across unexpected results.
When I run the following code
std::cout << std::setprecision(20);
const int N = 8;
const std::vector<double> one(N, 1.0);
std::vector<double> d(N,0.014058305571221497);
std::cout << "before division by 1 : " << d[0] << std::endl;
ippsDiv_64f_I(one.data(), d.data(), N);
std::cout << "after division by 1 : " << d[0] << std::endl;
I get the following output :
before division by 1 : 0.014058305571221497293
after division by 1 : 0.014058305571221500763
1/ How dividing by 1 can change the value ?
2/ For any value of N between 1 and 7, dividing by 1 has no effect. Only for N>7 I get this. How can it be that the result of a division of doubles depend on the size of my array ?
Could it be a bug ?