follow other interface
authorTomoaki Teshima <tomoaki.teshima@gmail.com>
Sun, 5 Jun 2016 23:56:37 +0000 (08:56 +0900)
committerTomoaki Teshima <tomoaki.teshima@gmail.com>
Sun, 5 Jun 2016 23:56:37 +0000 (08:56 +0900)
  * remove useHW option
  * update test

modules/core/include/opencv2/core.hpp
modules/core/src/convert.cpp
modules/core/test/test_arithm.cpp

index fa7ab46..fef0395 100644 (file)
@@ -533,7 +533,7 @@ CV_16S to represent the bit depth.  If the input array is neither of them, it'll
 @param dst output array.
 @param useHW if possible use HW SIMD instruction to convert
 */
-CV_EXPORTS_W void convertFp16(InputArray src, OutputArray dst, bool useHW = true);
+CV_EXPORTS_W void convertFp16(InputArray src, OutputArray dst);
 
 /** @brief Performs a look-up table transform of an array.
 
index 4ff9830..431942f 100644 (file)
@@ -5117,9 +5117,10 @@ void cv::convertScaleAbs( InputArray _src, OutputArray _dst, double alpha, doubl
     }
 }
 
-void cv::convertFp16( InputArray _src, OutputArray _dst, bool useHW )
+void cv::convertFp16( InputArray _src, OutputArray _dst)
 {
-    if ( checkHardwareSupport(CV_CPU_FP16) == false)
+    bool useHW = true;
+    if ( checkHardwareSupport(CV_CPU_FP16) == false )
     {
         useHW = false;
     }
index 58974a8..3548765 100644 (file)
@@ -742,27 +742,29 @@ struct ConvertScaleFp16Op : public BaseElemWiseOp
     ConvertScaleFp16Op() : BaseElemWiseOp(1, FIX_BETA+REAL_GAMMA, 1, 1, Scalar::all(0)), nextRange(0) { }
     void op(const vector<Mat>& src, Mat& dst, const Mat&)
     {
-        convertFp16(src[0], dst, true);
+        Mat m;
+        convertFp16(src[0], m);
+        convertFp16(m, dst);
     }
     void refop(const vector<Mat>& src, Mat& dst, const Mat&)
     {
-        convertFp16(src[0], dst, false);
+        cvtest::copy(src[0], dst);
     }
     int getRandomType(RNG&)
     {
-        // 0: FP32 -> FP16
-        // 1: FP16 -> FP32
+        // 0: FP32 -> FP16 -> FP32
+        // 1: FP16 -> FP32 -> FP16
         int srctype = (nextRange & 1) == 0 ? CV_32F : CV_16S;
         return srctype;
     }
     void getValueRange(int, double& minval, double& maxval)
     {
-        // 0: FP32 -> FP16
-        // 1: FP16 -> FP32
+        // 0: FP32 -> FP16 -> FP32
+        // 1: FP16 -> FP32 -> FP16
         if( (nextRange & 1) == 0 )
         {
-            // largest integer number that fp16 can express
-            maxval = 65504.f;
+            // largest integer number that fp16 can express exactly
+            maxval = 2048.f;
             minval = -maxval;
         }
         else