Advertisement
lamiastella

Untitled

Jun 28th, 2013
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.00 KB | None | 0 0
  1.    
  2.  
  3.      16 F2D** diffss(F2D** ss, int num, int intervals)
  4.      17 {
  5.      18     F2D** dss;
  6.      19     int o, sizeM, sizeN, s, i, j;
  7.      20     F2D *current, *in1, *in2;
  8.      21
  9.      22     dss = malloc(num*intervals*sizeof(F2D*));
  10.      23
  11.      24     int size, togo;
  12.      25     for(o=0; o<num; o++)
  13.      26     {
  14.      27         for(s=0; s<(intervals-1); s++)
  15.      28         {
  16.      29             sizeM = ss[o*intervals+s]->height;
  17.      30             sizeN = ss[o*intervals+s]->width;
  18.      31
  19.      32             //Amin: This loop is run as many times as imsmooth functions (36 for fullhd and 25 for vga) with the same M and N sizes
  20.      33
  21.      34             dss[o*intervals+s] = fMallocHandle(sizeM, sizeN);
  22.      35
  23.      36             current = dss[o*intervals+s];
  24.      37             in1 = ss[o*intervals+s+1];
  25.      38             in2 = ss[o*intervals+s];
  26.      39
  27.      40             /* Amin: Original implementation
  28.      41             for(i=0; i<sizeM; i++)
  29.      42             {
  30.      43                 for(j=0; j<sizeN; j++)
  31.      44                 {
  32.      45                     subsref(current,i,j) = subsref(in1,i,j) - subsref(in2,i,j);
  33.      46                 }
  34.      47             }
  35.      48             */
  36.      49             /* Amin: Simpler implementation with one loop
  37.      50             for(i=0; i<sizeM*sizeN; i++) {
  38.      51                 asubsref(current,i) = asubsref(in1,i) - asubsref(in2,i);
  39.      52             }
  40.      53             */
  41.      54             /* Amin: simpler implementation with 8 loop unrolling
  42.      55              */
  43.      56             for(i=0; i<sizeM*sizeN; i=i+8) {
  44.      57                 togo = sizeM*sizeN - i;
  45.      58                 size = (togo > 8) ? 8 : togo;
  46.      59
  47.      60                 for (j=0; j<size; j++)
  48.      61                     asubsref(current,i+j) = asubsref(in1,i+j) - asubsref(in2,i+j);
  49.      62             }
  50.      63         }
  51.      64     }
  52.      65
  53.      66     return dss;
  54.      67 }
  55.      68
  56.      69
  57.      70
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement