On Thu, Aug 6, 2015 at 12:57 AM, <[email protected]> wrote: > From: Luo Xionghu <[email protected]> > > should define and use M_180_PI_F directly instead of using 180/M_PI_F. > > Signed-off-by: Luo Xionghu <[email protected]> > --- > backend/src/libocl/include/ocl_float.h | 1 + > backend/src/libocl/tmpl/ocl_common.tmpl.cl | 2 +- > 2 files changed, 2 insertions(+), 1 deletion(-) > > diff --git a/backend/src/libocl/include/ocl_float.h > b/backend/src/libocl/include/ocl_float.h > index 916233b..e63eaf9 100644 > --- a/backend/src/libocl/include/ocl_float.h > +++ b/backend/src/libocl/include/ocl_float.h > @@ -88,6 +88,7 @@ INLINE_OVERLOADABLE int __ocl_finitef (float x){ > #define M_PI_4_F 0.7853981633974483F > #define M_1_PI_F 0.3183098861837907F > #define M_2_PI_F 0.6366197723675814F > +#define M_180_PI_F 57.295779513082321F > #define M_2_SQRTPI_F 1.1283791670955126F > #define M_SQRT2_F 1.4142135623730951F > #define M_SQRT1_2_F 0.7071067811865476F > diff --git a/backend/src/libocl/tmpl/ocl_common.tmpl.cl > b/backend/src/libocl/tmpl/ocl_common.tmpl.cl > index 76aca2b..136fe70 100644 > --- a/backend/src/libocl/tmpl/ocl_common.tmpl.cl > +++ b/backend/src/libocl/tmpl/ocl_common.tmpl.cl > @@ -44,7 +44,7 @@ OVERLOADABLE float clamp(float v, float l, float u) { > > > OVERLOADABLE float degrees(float radians) { > - return (180 / M_PI_F) * radians; > + return M_180_PI_F * radians;
I was surprised by this, so I wrote a program to test. Indeed, 180 / (float)M_PI is less precise: (float)(180 / M_PI) = 57.29577636718750000 (0x1.ca5dc0p+5) (0x42652ee0) (180 / (float)M_PI) = 57.29577636718750000 (0x1.ca5dc0p+5) (0x42652ee0) 57.295779513082321F = 57.29578018188476562 (0x1.ca5dc2p+5) (0x42652ee1) A difference of one bit. :) _______________________________________________ Beignet mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/beignet
