Refine calculation for ULP.
authorYi Sun <yi.sun@intel.com>
Mon, 6 Jan 2014 08:51:52 +0000 (16:51 +0800)
committerZhigang Gong <zhigang.gong@intel.com>
Tue, 7 Jan 2014 08:39:13 +0000 (16:39 +0800)
Signed-off-by: Yi Sun <yi.sun@intel.com>
Reviewed-by: "Yang, Rong R" <rong.r.yang@intel.com>
utests/utest_helper.cpp

index a738599..91633f0 100644 (file)
@@ -664,14 +664,15 @@ typedef union
 
 const float cl_FLT_ULP(float float_number)
 {
-  SF floatBin, ulpBin;
+  SF floatBin, ulpBin, ulpBinBase;
   floatBin.f = float_number;
 
-  ulpBin.spliter.sign = floatBin.spliter.sign;
-  ulpBin.spliter.exponent = floatBin.spliter.exponent;
+  ulpBin.spliter.sign     = ulpBinBase.spliter.sign     = 0;
+  ulpBin.spliter.exponent = ulpBinBase.spliter.exponent = floatBin.spliter.exponent;
   ulpBin.spliter.mantissa = 0x1;
+  ulpBinBase.spliter.mantissa = 0x0;
   
-  return ulpBin.f;
+  return ulpBin.f - ulpBinBase.f;
 }
 
 const int cl_INT_ULP(int int_number)