brorson

11-30-2009, 07:39 AM

Hi --

I'm perusing the OpenCL spec as a source of information regarding modern floating point math specifications. In section 7.4, there is a table (table 7.1) listing the minimum accuracy required of various math functions in the OpenCL API. Each function has a required ULP which must be obeyed.

My question: Where do the ULP values come from? For example, the table calls out that exp(x) must be accurate to within 3 ULPs of the mathematically correct result. Fair enough, but what information was used to create the spec of 3 ULPs? I'm looking for pointers to the literature, estimates based on the "best" implementation of the function, or other considerations which led to this spec.

Thanks!

Stuart

I'm perusing the OpenCL spec as a source of information regarding modern floating point math specifications. In section 7.4, there is a table (table 7.1) listing the minimum accuracy required of various math functions in the OpenCL API. Each function has a required ULP which must be obeyed.

My question: Where do the ULP values come from? For example, the table calls out that exp(x) must be accurate to within 3 ULPs of the mathematically correct result. Fair enough, but what information was used to create the spec of 3 ULPs? I'm looking for pointers to the literature, estimates based on the "best" implementation of the function, or other considerations which led to this spec.

Thanks!

Stuart