Guest User

Untitled

a guest
Jul 17th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.56 KB | None | 0 0
  1.     float ssei[16];
  2.  
  3.     __m128 *pivot = (__m128*) ssei;
  4.     __m128 *local = (__m128*) &ssei[4];
  5.     __m128 *diff = (__m128*) &ssei[8];
  6.     __m128 *rmul = (__m128*) &ssei[12];
  7.  
  8.     for(int i=0; i<16; i++)
  9.         ssei[i] = 0.0f;
  10.  
  11.  
  12.  
  13. #ifdef USE_OPENMP
  14. #pragma omp parallel for
  15. #endif
  16.     for (int VOut = totalSizeV - 1; VOut > endVOut; VOut--)
  17.     {
  18.  
  19.         for (int HOut = beginHOut; HOut < endHOut; HOut++)
  20.         {
  21.  
  22.             ssei[0] = data[VOut * totalSizeH + HOut];//
  23.             ssei[1] = data[(VOut * totalSizeH + HOut) + globalSize];//
  24.             ssei[2] = data[(VOut * totalSizeH + HOut) + 2 * globalSize];//
  25.  
  26.             int rowSize = (int) (100.0f / ssei[2]);//
  27.             if (rowSize > 128)
  28.                 rowSize = 128;
  29.             if (rowSize < 11)
  30.                 rowSize = 11;
  31.  
  32.             localSizeV = localSizeH = rowSize;
  33.  
  34.             int partSize = rowSize / 2;
  35.  
  36.             for (int VIn = VOut - localSizeV; VIn <= VOut; VIn++)
  37.             {
  38.                 for (int HIn = HOut - partSize; HIn < partSize + HOut; HIn++)
  39.                 {
  40.                     ssei[4] = data[VIn * totalSizeH + HIn];//
  41.                     ssei[5] = data[(VIn * totalSizeH + HIn) + globalSize];//
  42.                     ssei[6] = data[(VIn * totalSizeH + HIn) + 2 * globalSize];//
  43.  
  44.                     ssei[9] = ssei[5] - ssei[1];//
  45.                     //*diff = _mm_sub_ps(local, pivot);
  46.  
  47.                     if (ssei[9] > hmin && ssei[9] < hmax)
  48.                     {
  49.  
  50.                         ssei[8] = ssei[4] - ssei[0];//
  51.                         ssei[10] = ssei[6] - ssei[2];//
  52.                         //*rmul = _mm_mul_ps(*diff, *diff);
  53.  
  54.                         float norm = fastSqrt_Q3(ssei[8]*ssei[8] + ssei[9]*ssei[9] + ssei[10]*ssei[10]);//
  55.  
  56.                         float cosAlpha = ssei[9]/ norm;//
  57.  
  58.                         if (cosAlpha > cosalpha)
  59.                             img[VIn * totalSizeH + HIn] = 1;
  60.                     }
  61.                 }
  62.             }
  63.         }
  64.     }
Add Comment
Please, Sign In to add comment