maygapixel

Untitled

Apr 6th, 2018
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.77 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <omp.h>
  4. #include <math.h>
  5.  
  6. int main(int argc, char *argv[])
  7. {
  8.     int    i,j,threads;
  9.     double Begin,End;
  10.     float  DX[8][8] = {0};                                            
  11.     float  D[8][8]  = {0};                                              
  12.     int    C[8][8] = {0};
  13.     int    M[8][8];
  14.    
  15.     int Origin[8][8] =  {{154,123,123,123,123,123,123,136},
  16.                         {192,180,136,154,154,154,136,110},
  17.                         {254,198,154,154,180,154,123,123},
  18.                         {239,180,136,180,180,166,123,123},
  19.                         {180,154,136,167,166,149,136,136},
  20.                         {128,136,123,136,154,180,198,154},
  21.                         {123,105,110,149,136,136,180,166},
  22.                         {110,136,123,123,123,136,154,136},};
  23.    
  24.     double C1 = 0.4904, C2 = 0.4619, C3 = 0.4157,C4 = 0.3536,
  25.            C5 = 0.2778, C6 = 0.1913, C7 = 0.0975;
  26.     //Cn = 0.5cos(n(pi)/16) pi = 3.1415
  27.  
  28.     int id;
  29.     double T[8][8] =  {{C4,C4,C4,C4,C4,C4,C4,C4,},
  30.                       {C1,C3,C5,C7,-C7,-C5,-C3,-C1},
  31.                       {C2,C6,-C6,-C2,-C2,-C6,C6,C2},
  32.                       {C3,-C7,-C1,-C5,C5,C1,C7,-C3},
  33.                       {C4,-C4,-C4,C4,C4,-C4,-C4,C4},
  34.                       {C5,-C1,C7,C3,-C3,-C7,C1,-C5},
  35.                       {C6,-C2,C3,-C6,-C6,C3,-C2,C6},
  36.                       {C7,-C5,C2,-C1,C1,-C2,C5,-C7},};
  37.  
  38.     double RT[8][8] = {{C4,C1,C2,C3,C4,C5,C6,C7,},
  39.                       {C4,C3,C6,-C7,-C4,-C1,-C2,-C5},
  40.                       {C4,C5,-C6,-C1,-C4,C7,C3,C2},
  41.                       {C4,C7,-C2,-C5,C4,C3,-C6,-C1},
  42.                       {C4,-C7,-C2,C5,C4,-C3,-C6,C1},
  43.                       {C4,-C5,-C6,C1,-C4,-C7,C3,-C2},
  44.                       {C4,-C3,C6,C7,-C4,C1,-C2,C5},
  45.                       {C4,-C1,C2,-C3,C4,-C5,C6,-C7}};
  46.  
  47.     int Q[8][8] =     {{16,11,10,16,24,40,51,61},
  48.                       {12,12,14,19,26,58,60,55},
  49.                       {14,13,16,24,40,57,69,56},
  50.                       {14,17,22,29,51,87,80,62},
  51.                       {18,22,37,56,68,109,103,77},
  52.                       {24,35,55,64,81,104,113,92},
  53.                       {49,64,78,87,103,121,120,101},
  54.                       {72,92,95,98,112,100,103,99},};
  55.  
  56.     Begin = omp_get_wtime();
  57.     printf("Input data is Origin.\n\n");
  58.     for(i=0;i<8;i++)
  59.     {
  60.         for(j=0;j<8;j++)
  61.         {
  62.             printf("%d \t",Origin[i][j]);
  63.         }
  64.          printf("\n");
  65.     }
  66.     printf("-------------------------------------------------------------\n");
  67.    
  68.     for(i=0;i<8;i++)
  69.     {  
  70.         printf("Origin[i][j]-128, i=%d, Thread=%d\n",i,id);
  71.         for(j=0;j<8;j++)
  72.         {
  73.             M[i][j] = Origin[i][j] - 128;                          
  74.         }
  75.     }
  76.     printf("-------------------------------------------------------------\n");
  77.    
  78.     printf("Show M (Origin[i][j]-128)\n");
  79.     printf("\n");
  80.  
  81.     for(i=0;i<8;i++)
  82.     {
  83.         for(j=0;j<8;j++)
  84.         {
  85.             printf("%d \t",M[i][j]);
  86.         }
  87.          printf("\n");
  88.     }
  89.     printf("-------------------------------------------------------------\n");
  90.    
  91.     for(i=0;i<8;i++)
  92.     {
  93.         printf("T*Origin, i=%d, Thread=%d\n",i,id);
  94.         for(j=0;j<8;j++)
  95.         {
  96.             for(threads=0;threads<8;threads++)
  97.             {
  98.                 DX[i][j] += T[i][threads] * M[threads][j];
  99.             }
  100.         }
  101.     }
  102.     printf("-------------------------------------------------------------\n");
  103.     printf("Show T*Origin\n");
  104.     printf("\n");
  105.     for(i=0;i<8;i++)
  106.     {
  107.         for(j=0;j<8;j++)
  108.         {
  109.             printf("%.2f\t",DX[i][j]);
  110.         }
  111.          printf("\n");
  112.     }
  113.     printf("-------------------------------------------------------------\n");
  114.    
  115.     for(i=0;i<8;i++)
  116.     {
  117.         printf("D,i=%d, Thread=%d\n",i,id);
  118.         for(j=0;j<8;j++)
  119.         {
  120.             for(threads=0;threads<8;threads++)
  121.             {
  122.                 D[i][j] += DX[i][threads] * RT[threads][j] ;
  123.             }
  124.         }
  125.     }
  126.     printf("-------------------------------------------------------------\n");
  127.  
  128.     printf("Show D\n");
  129.     printf("\n");
  130.     for(i=0;i<8;i++)
  131.     {
  132.         for(j=0;j<8;j++)
  133.         {
  134.             printf("%.2f\t",D[i][j]);
  135.         }
  136.          printf("\n");
  137.     }
  138.     printf("-------------------------------------------------------------\n");
  139.    
  140.     for(i=0;i<8;i++)
  141.     {
  142.         printf("C,i=%d, Thread=%d\n",i,id);
  143.         for(j=0;j<8;j++)
  144.         {
  145.             C[i][j] = round(D[i][j]/Q[i][j]);
  146.         }
  147.     }
  148.     printf("-------------------------------------------------------------\n");
  149.  
  150.     printf("Show the answer \n");
  151.     printf("\n");
  152.     for(i=0;i<8;i++)
  153.     {
  154.         for(j=0;j<8;j++)
  155.         {
  156.             printf("%d \t",C[i][j]);
  157.         }
  158.          printf("\n");
  159.     }
  160.     End = omp_get_wtime();
  161.     printf("Time = %f s\n",End-Begin);
  162. return 0;
  163. }
Advertisement
Add Comment
Please, Sign In to add comment