Expm1() problems - precision

Hi Guys.

I created an OpenCL program to execute some mathematic operations. It worked fine in AMD video card (result matched with wolframalpha, for instance) but when I tried to use a computer with a Quadro 600 video card and linux, my program returned values that didn’t matched the precision we expected for function expm1(x).
I thought my video card had a problem, but I tried in another machine with quadro 600 and linux and obtained the same results from the first one.
I tried run this program in Windows and I don’t have this problem.

Some examples:

operation: expm1(input)
output: -0.727467
expected:-0.727468
input: -1.3

operation: expm1(input)
output: 0.733252
expected:0.733253
input: 0.55

operation: expm1(input)
output: 0.822116
expected:0.822119
input: 0.6

operation: expm1(input1)
output: 0.915535
expected:0.915541
input 1: 0.65

operation: expm1(input1)
output: 991.271
expected:991.275
input 1: 6.9

I’ve alread researched about this function ulp, but the maximun value is 1(full range)

Is this a problem with the driver for linux?

Thanks and Regards
Rafael R. Machado

Indeed it works fine with Windows. I even get a precision of 1ulp instead of the 3ulps required by OpenCL specification.

So it looks like a bug in the Linux driver.

Thanks for the answer utnapishtim

I’ll continue this subject at the nVidia’s fórum

Thanks again
Rafael R. Machado