os/ossrv/genericopenlibs/liboil/tsrc/testsuite/diff/src/diff.c
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
sl@0
     1
// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
sl@0
     2
// All rights reserved.
sl@0
     3
// This component and the accompanying materials are made available
sl@0
     4
// under the terms of "Eclipse Public License v1.0"
sl@0
     5
// which accompanies this distribution, and is available
sl@0
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0
     7
//
sl@0
     8
// Initial Contributors:
sl@0
     9
// Nokia Corporation - initial contribution.
sl@0
    10
//
sl@0
    11
// Contributors:
sl@0
    12
//
sl@0
    13
// Description:
sl@0
    14
//
sl@0
    15
sl@0
    16
sl@0
    17
sl@0
    18
#ifdef HAVE_CONFIG_H
sl@0
    19
#include "config.h"
sl@0
    20
#endif
sl@0
    21
sl@0
    22
#include <liboil/liboil.h>
sl@0
    23
#include <liboil/liboilfunction.h>
sl@0
    24
#include <stdio.h>
sl@0
    25
#include <string.h>
sl@0
    26
#include <globals.h>
sl@0
    27
sl@0
    28
#define LOG_FILE "c:\\logs\\testsuite_diff_log.txt"
sl@0
    29
#include "std_log_result.h"
sl@0
    30
#include "utils.h"
sl@0
    31
#define LOG_FILENAME_LINE __FILE__, __LINE__
sl@0
    32
sl@0
    33
#define RES_SIZE 1
sl@0
    34
#define MAX_SIZE 64
sl@0
    35
#define MAX_SIZE1 10
sl@0
    36
#define MAX_SIZE2 15
sl@0
    37
sl@0
    38
sl@0
    39
void create_xml(int result)
sl@0
    40
{
sl@0
    41
    if(result)
sl@0
    42
        assert_failed = 1;
sl@0
    43
    
sl@0
    44
    testResultXml("testsuite_diff");
sl@0
    45
    close_log_file();
sl@0
    46
}
sl@0
    47
sl@0
    48
sl@0
    49
void test_average_s16_u8(void)
sl@0
    50
{
sl@0
    51
  int i;
sl@0
    52
  int16_t dest[MAX_SIZE];
sl@0
    53
  uint8_t src1[MAX_SIZE],src2[MAX_SIZE], src3[MAX_SIZE];
sl@0
    54
  int16_t check[MAX_SIZE] = {0,2,3,5,6,8,9,11,5,6,8,9,11,12,14,15,9,11,12,14,15,17,18,20,14,15,17,18,20,21,23,24,18,20,21,23,24,26,27,29,23,24,26,27,29,30,32,33,27,29,30,32,33,35,36,38,32,33,35,36,38,39,41,42};
sl@0
    55
  for(i=0;i<MAX_SIZE;i++)
sl@0
    56
  {
sl@0
    57
    dest[i]=0;
sl@0
    58
    src1[i]=i*3;
sl@0
    59
    src2[i]=i;
sl@0
    60
    src3[i]=i*2;
sl@0
    61
    std_log(LOG_FILENAME_LINE,"src1[%d] = %d, src2[%d] = %d, src3[%d]=%d ", i,src1[i],i,src2[i],i,src3[i]);
sl@0
    62
  }
sl@0
    63
sl@0
    64
  oil_diff8x8_average_s16_u8 (dest,src1,2,src2,1,src3,1);
sl@0
    65
sl@0
    66
  for(i=0;i<MAX_SIZE;i++)
sl@0
    67
  {
sl@0
    68
     if(dest[i] == check[i])
sl@0
    69
         {
sl@0
    70
         std_log(LOG_FILENAME_LINE,"oil_diff8x8_average_s16_u8 successful, dest[%d]=%d",i,dest[i]);
sl@0
    71
         }
sl@0
    72
     else
sl@0
    73
         {
sl@0
    74
         assert_failed=1;
sl@0
    75
         std_log(LOG_FILENAME_LINE,"oil_diff8x8_average_s16_u8 unsuccessful,Expected =%d,Obtained =%d",check[i],dest[i]);
sl@0
    76
         }
sl@0
    77
  }
sl@0
    78
}
sl@0
    79
sl@0
    80
sl@0
    81
sl@0
    82
void test_diff_const128_s16_u8()
sl@0
    83
    {
sl@0
    84
    int i;
sl@0
    85
    int16_t dest[MAX_SIZE];
sl@0
    86
    uint8_t src1[MAX_SIZE];
sl@0
    87
    int16_t check[MAX_SIZE]= {-28,-18,-8,2,12,22,32,42,-18,-8,2,12,22,32,42,52,-8,2,12,22,32,42,52,62,2,12,22,32,42,52,62,72,12,22,32,42,52,62,72,82,22,32,42,52,62,72,82,92,32,42,52,62,72,82,92,102,42,52,62,72,82,92,102,112}; 
sl@0
    88
    for(i=0;i<MAX_SIZE;i++)
sl@0
    89
        {
sl@0
    90
         dest[i]=0;
sl@0
    91
         src1[i]=(i+10)*10;
sl@0
    92
         std_log(LOG_FILENAME_LINE,"src1[%d] = %d", i,src1[i]);
sl@0
    93
        }
sl@0
    94
    
sl@0
    95
    oil_diff8x8_const128_s16_u8(dest,src1,1);
sl@0
    96
    
sl@0
    97
    for(i=0;i<MAX_SIZE;i++)
sl@0
    98
        {
sl@0
    99
        if(dest[i]== check[i])
sl@0
   100
            {
sl@0
   101
            std_log(LOG_FILENAME_LINE,"oil_diff8x8_const128_s16_u8 successful,dest[%d]=%d",i,dest[i]);
sl@0
   102
            }
sl@0
   103
        else
sl@0
   104
            {
sl@0
   105
            assert_failed=1;
sl@0
   106
            std_log(LOG_FILENAME_LINE,"oil_diff8x8_const128_s16_u8 unsuccessful,Expected =%d,Obtained =%d",check[i],dest[i]);
sl@0
   107
            } 
sl@0
   108
        }
sl@0
   109
    }
sl@0
   110
sl@0
   111
sl@0
   112
void test_diff8x8_s16_u8()
sl@0
   113
    {
sl@0
   114
    int i;
sl@0
   115
    uint8_t src1[MAX_SIZE], src2[MAX_SIZE];
sl@0
   116
    int16_t dest[MAX_SIZE],check[MAX_SIZE]= {3,4,5,6,7,8,9,10,7,8,9,10,11,12,13,14,11,12,13,14,15,16,17,18,15,16,17,18,19,20,21,22,19,20,21,22,23,24,25,26,23,24,25,26,27,28,29,30,27,28,29,30,31,32,33,34,31,32,33,34,35,36,37,38};
sl@0
   117
    for(i=0;i<MAX_SIZE;i++)
sl@0
   118
        {
sl@0
   119
         dest[i]=0;
sl@0
   120
         src1[i]=(i+1)*3;
sl@0
   121
         src2[i]=i*2;
sl@0
   122
         std_log(LOG_FILENAME_LINE,"src1[%d]=%d, src2[%d]=%d", i,src1[i],i,src2[i]);
sl@0
   123
        }
sl@0
   124
    
sl@0
   125
    oil_diff8x8_s16_u8(dest,src1,2,src2,1);
sl@0
   126
    
sl@0
   127
    for(i=0;i<MAX_SIZE;i++)
sl@0
   128
     {
sl@0
   129
        if(dest[i]== check[i])
sl@0
   130
            {
sl@0
   131
            std_log(LOG_FILENAME_LINE,"oil_diff8x8_s16_u8 successful, dest[%d]=%d", i,dest[i]);
sl@0
   132
            }
sl@0
   133
        else
sl@0
   134
            {
sl@0
   135
            assert_failed=1;
sl@0
   136
            std_log(LOG_FILENAME_LINE,"oil_diff8x8_s16_u8 unsuccessful,Expected =%d,Obtained =%d",check[i],dest[i]);
sl@0
   137
            } 
sl@0
   138
     }
sl@0
   139
    }
sl@0
   140
sl@0
   141
void test_squaresum_f32()
sl@0
   142
    {
sl@0
   143
    int i;
sl@0
   144
    float fsrc1[MAX_SIZE1];
sl@0
   145
    float fdest[RES_SIZE]={0},fcheck[RES_SIZE]= {1140.00000000000000};
sl@0
   146
    
sl@0
   147
    for(i=0;i<MAX_SIZE1;i++)
sl@0
   148
        {
sl@0
   149
         fsrc1[i]= i*2;
sl@0
   150
         std_log(LOG_FILENAME_LINE,"fsrc1[%d]=%15.14f", i,fsrc1[i]);
sl@0
   151
        }
sl@0
   152
    
sl@0
   153
    oil_squaresum_f32(fdest,fsrc1,MAX_SIZE1);
sl@0
   154
     
sl@0
   155
    if(comparefloats(fdest[0],fcheck[0])==0)
sl@0
   156
        {
sl@0
   157
        std_log(LOG_FILENAME_LINE,"oil_squaresum_f32 successful, fdest = %15.14f", fdest[0]);
sl@0
   158
        }
sl@0
   159
    else
sl@0
   160
        {
sl@0
   161
        assert_failed=1;
sl@0
   162
        std_log(LOG_FILENAME_LINE,"oil_squaresum_f32 unsuccessful,Expected =%15.14f,Obtained =%15.14f",fcheck[0],fdest[0]);
sl@0
   163
        } 
sl@0
   164
    }
sl@0
   165
sl@0
   166
sl@0
   167
void test_diff_squaresum_f32()
sl@0
   168
    {
sl@0
   169
    int i;
sl@0
   170
    float fsrc1[MAX_SIZE1], fsrc2[MAX_SIZE1];
sl@0
   171
    float fdest[RES_SIZE]={0},fcheck[RES_SIZE]= {930.00000000000000};
sl@0
   172
    
sl@0
   173
    for(i=0;i<MAX_SIZE1;i++)
sl@0
   174
        {
sl@0
   175
         fsrc1[i]= i*2;
sl@0
   176
         fsrc2[i]=i;
sl@0
   177
         std_log(LOG_FILENAME_LINE,"fsrc1[%d]=%15.14f, fsrc2[%d]=%15.14f", i,fsrc1[i],i,fsrc2[i]);
sl@0
   178
        }
sl@0
   179
    
sl@0
   180
    oil_diffsquaresum_f32(fdest,fsrc1,4,fsrc2,2,MAX_SIZE1);
sl@0
   181
     
sl@0
   182
     if(comparefloats(fdest[0],fcheck[0])==0)
sl@0
   183
          {
sl@0
   184
            std_log(LOG_FILENAME_LINE,"oil_diffsquaresum_f32 successful, fdest= %15.14f", fdest[0]);
sl@0
   185
          }
sl@0
   186
         else
sl@0
   187
          {
sl@0
   188
           assert_failed=1;
sl@0
   189
           std_log(LOG_FILENAME_LINE,"oil_diffsquaresum_f32 unsuccessful,Expected =%15.14f,Obtained =%15.14f",fcheck[0],fdest[0]);
sl@0
   190
          } 
sl@0
   191
    }
sl@0
   192
sl@0
   193
sl@0
   194
void test_squaresum_f64()
sl@0
   195
    {
sl@0
   196
    int i;
sl@0
   197
    double dsrc1[MAX_SIZE1];
sl@0
   198
    double ddest[RES_SIZE]={0},dcheck[RES_SIZE]={19668.00000000000000};
sl@0
   199
    
sl@0
   200
    for(i=0;i<MAX_SIZE1;i++)
sl@0
   201
        {
sl@0
   202
         dsrc1[i]= i*(i+1);
sl@0
   203
         std_log(LOG_FILENAME_LINE,"dsrc1[%d]=%15.14f", i,dsrc1[i]);
sl@0
   204
        }
sl@0
   205
    
sl@0
   206
    oil_squaresum_f64(ddest,dsrc1,MAX_SIZE1);
sl@0
   207
     
sl@0
   208
    if(comparefloats(ddest[0],dcheck[0])==0)
sl@0
   209
       {
sl@0
   210
        std_log(LOG_FILENAME_LINE,"oil_squaresum_f64 successful, ddest=%15.14f", ddest[0]);
sl@0
   211
       }
sl@0
   212
    else
sl@0
   213
       {
sl@0
   214
        assert_failed=1;
sl@0
   215
        std_log(LOG_FILENAME_LINE,"oil_squaresum_f64 unsuccessful,Expected =%15.14f,Obtained =%15.14f",dcheck[0],ddest[0]);
sl@0
   216
       } 
sl@0
   217
    }
sl@0
   218
sl@0
   219
sl@0
   220
void test_diff_squaresum_f64()
sl@0
   221
    {
sl@0
   222
    int i;
sl@0
   223
    double dsrc1[MAX_SIZE1], dsrc2[MAX_SIZE1];
sl@0
   224
    double ddest[RES_SIZE]={0},dcheck[RES_SIZE]= {539.25000000000000};
sl@0
   225
    
sl@0
   226
    for(i=0;i<MAX_SIZE1;i++)
sl@0
   227
        {
sl@0
   228
         dsrc1[i]= i*(i+1);
sl@0
   229
         dsrc2[i]=i*(0.5);
sl@0
   230
         std_log(LOG_FILENAME_LINE,"dsrc1[%d]=%15.14f, dsrc2[%d]=%15.14f", i,dsrc1[i],i,dsrc2[i]);
sl@0
   231
        }
sl@0
   232
    
sl@0
   233
    oil_diffsquaresum_f64(ddest,dsrc1,4,dsrc2,2,MAX_SIZE1);
sl@0
   234
    
sl@0
   235
        if(comparefloats(ddest[0],dcheck[0])==0)
sl@0
   236
          {
sl@0
   237
          std_log(LOG_FILENAME_LINE,"oil_diffsquaresum_f64 successful, ddest= %15.14f", ddest[0]);
sl@0
   238
          }
sl@0
   239
         else
sl@0
   240
          {
sl@0
   241
           assert_failed=1;
sl@0
   242
           std_log(LOG_FILENAME_LINE,"oil_diffsquaresum_f64 unsuccessful,Expected =%15.14f,Obtained =%15.14f",dcheck[0],ddest[0]);
sl@0
   243
          } 
sl@0
   244
    }
sl@0
   245
sl@0
   246
void test_squaresum_shifted_s16()
sl@0
   247
    {
sl@0
   248
    int16_t arr1[MAX_SIZE2];
sl@0
   249
    uint32_t res[RES_SIZE]={0},check[RES_SIZE]={526};
sl@0
   250
    int i;
sl@0
   251
    
sl@0
   252
    for(i=0;i<MAX_SIZE2;i++)
sl@0
   253
        {
sl@0
   254
         arr1[i]=(i+100)*10;
sl@0
   255
        }
sl@0
   256
    
sl@0
   257
    oil_squaresum_shifted_s16(res,arr1,MAX_SIZE2);
sl@0
   258
    
sl@0
   259
    if(res[0]==check[0])
sl@0
   260
         {
sl@0
   261
         std_log(LOG_FILENAME_LINE,"oil_squaresum_shifted_s16 successful, res= %d",res[0]);
sl@0
   262
         }
sl@0
   263
    else
sl@0
   264
        {
sl@0
   265
        assert_failed=1;
sl@0
   266
        std_log(LOG_FILENAME_LINE,"oil_squaresum_shifted_s16 unsuccessful,Expected =%d,Obtained =%d",check[0],res[0]);
sl@0
   267
        }
sl@0
   268
    }
sl@0
   269
sl@0
   270
sl@0
   271
void test_sum_f64()
sl@0
   272
    {
sl@0
   273
     double arr[MAX_SIZE2];
sl@0
   274
     double res[RES_SIZE]={0},check[RES_SIZE]={40.0};
sl@0
   275
     int i;
sl@0
   276
     
sl@0
   277
     for(i=0;i<MAX_SIZE2;i++)
sl@0
   278
        arr[i]=(i+3.5)*2;
sl@0
   279
       
sl@0
   280
     oil_sum_f64(res,arr,2,MAX_SIZE2);
sl@0
   281
     
sl@0
   282
     if(comparefloats(res[0],check[0])==0)
sl@0
   283
         {
sl@0
   284
         std_log(LOG_FILENAME_LINE,"oil_sum_f64 successful, res= %15.14f",res[0]);
sl@0
   285
         }
sl@0
   286
     else
sl@0
   287
         {
sl@0
   288
         assert_failed=1;
sl@0
   289
         std_log(LOG_FILENAME_LINE,"oil_sum_f64 unsuccessful,Expected =%15.14f,Obtained =%15.14f",check[0],res[0]);
sl@0
   290
         }
sl@0
   291
    }
sl@0
   292
sl@0
   293
void test_addc_s16()
sl@0
   294
    {
sl@0
   295
    int16_t arr1[MAX_SIZE2], arr2[MAX_SIZE2],sum[MAX_SIZE2];
sl@0
   296
    int res[MAX_SIZE2]={0,4,8,12,16,20,24,28,32,36,40,44,48,52,56};
sl@0
   297
    int i;
sl@0
   298
    
sl@0
   299
    for(i=0;i<MAX_SIZE2;i++)
sl@0
   300
        {
sl@0
   301
          sum[i]=0;
sl@0
   302
          arr1[i]=i*4;
sl@0
   303
          arr2[i]=i*3;
sl@0
   304
        }
sl@0
   305
    
sl@0
   306
    oil_addc_s16(sum,arr1,arr2,MAX_SIZE2);
sl@0
   307
    
sl@0
   308
    for(i=0;i<MAX_SIZE2;i++)
sl@0
   309
        {
sl@0
   310
          if(sum[i] == res[i])
sl@0
   311
              {
sl@0
   312
                std_log(LOG_FILENAME_LINE,"oil_addc_s16 successful,sum[%d]=%d",i,sum[i]);
sl@0
   313
              }
sl@0
   314
          else
sl@0
   315
              {
sl@0
   316
                assert_failed = 1;
sl@0
   317
                std_log(LOG_FILENAME_LINE,"oil_addc_s16 unsuccessful,Expected =%d,Obtained =%d",res[i],sum[i]);
sl@0
   318
              }
sl@0
   319
        }
sl@0
   320
    }
sl@0
   321
sl@0
   322
sl@0
   323
void test_addc_rshift_s16()
sl@0
   324
    {
sl@0
   325
    int16_t arr1[MAX_SIZE2],arr2[MAX_SIZE2],sum[MAX_SIZE2];
sl@0
   326
    int res[MAX_SIZE2]={0,0,1,1,2,2,3,3,4,4,5,5,6,6,7};
sl@0
   327
    int i;
sl@0
   328
    
sl@0
   329
    for(i=0;i<MAX_SIZE2;i++)
sl@0
   330
        {
sl@0
   331
          sum[i]=0;
sl@0
   332
          arr1[i]=i*4;
sl@0
   333
          arr2[i]=i*3;
sl@0
   334
        }
sl@0
   335
    
sl@0
   336
    oil_addc_rshift_s16(sum,arr1,arr2,MAX_SIZE2);
sl@0
   337
    
sl@0
   338
    for(i=0;i<MAX_SIZE2;i++)
sl@0
   339
        {
sl@0
   340
          if(sum[i] == res[i])
sl@0
   341
              {
sl@0
   342
                std_log(LOG_FILENAME_LINE,"oil_addc_rshift_s16 successful,sum[%d]=%d", sum[i]);
sl@0
   343
              }
sl@0
   344
          else
sl@0
   345
              {
sl@0
   346
                assert_failed = 1;
sl@0
   347
                std_log(LOG_FILENAME_LINE,"oil_addc_rshift_s16 unsuccessful,Expected =%d,Obtained =%d",res[i],sum[i]);
sl@0
   348
             }
sl@0
   349
        }
sl@0
   350
    }
sl@0
   351
sl@0
   352
sl@0
   353
int main ()
sl@0
   354
{
sl@0
   355
  std_log(LOG_FILENAME_LINE,"Test started testsuite_diff");
sl@0
   356
  oil_init ();
sl@0
   357
  
sl@0
   358
  std_log(LOG_FILENAME_LINE,"AVERAGE TEST");
sl@0
   359
  test_average_s16_u8();
sl@0
   360
  
sl@0
   361
  std_log(LOG_FILENAME_LINE,"DIFF8X8 TEST");
sl@0
   362
  test_diff8x8_s16_u8();
sl@0
   363
  
sl@0
   364
  std_log(LOG_FILENAME_LINE,"DIFF_CONST128 TEST");
sl@0
   365
  test_diff_const128_s16_u8();
sl@0
   366
  
sl@0
   367
  std_log(LOG_FILENAME_LINE,"SQUARESUM_F32 TEST");
sl@0
   368
  test_squaresum_f32();
sl@0
   369
  
sl@0
   370
  std_log(LOG_FILENAME_LINE,"DIFF_SQUARESUM32 TEST");
sl@0
   371
  test_diff_squaresum_f32();
sl@0
   372
  
sl@0
   373
  std_log(LOG_FILENAME_LINE,"SQUARESUM_F64 TEST");
sl@0
   374
  test_squaresum_f64();
sl@0
   375
  
sl@0
   376
  std_log(LOG_FILENAME_LINE,"DIFF_SQUARESUM64 TEST");
sl@0
   377
  test_diff_squaresum_f64(); 
sl@0
   378
sl@0
   379
  std_log(LOG_FILENAME_LINE,"SHIFT_SQUARESUM TEST");
sl@0
   380
  test_squaresum_shifted_s16(); 
sl@0
   381
  
sl@0
   382
  std_log(LOG_FILENAME_LINE,"SUM_F64 TEST");
sl@0
   383
  test_sum_f64(); 
sl@0
   384
  
sl@0
   385
  std_log(LOG_FILENAME_LINE,"ADDC_16 TEST");
sl@0
   386
  test_addc_s16(); 
sl@0
   387
  
sl@0
   388
  std_log(LOG_FILENAME_LINE,"ADDC_16_RSHIFT TEST");
sl@0
   389
  test_addc_rshift_s16();   
sl@0
   390
sl@0
   391
  if(assert_failed)
sl@0
   392
         std_log(LOG_FILENAME_LINE,"Test Fail");
sl@0
   393
  else
sl@0
   394
         std_log(LOG_FILENAME_LINE,"Test Successful");
sl@0
   395
   
sl@0
   396
  create_xml(0);
sl@0
   397
  return 0;
sl@0
   398
}
sl@0
   399