Changeset ba8eecf in mainline


Ignore:
Timestamp:
2015-09-05T12:03:54Z (9 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
b69786e
Parents:
9adb61d
Message:

Unit-test all unary functions.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/tester/float/float2.c

    r9adb61d rba8eecf  
    127127
    128128        for (unsigned int i = 0; i < OPERANDS; i++) {
     129                double res = ceil(arguments[i]);
     130
     131                if (!cmp_double(res, results_ceil[i])) {
     132                        TPRINTF("Double precision ceil failed "
     133                            "(%lf != %lf, arg %u)\n", res, results_ceil[i], i);
     134                        fail = true;
     135                }
     136        }
     137
     138        for (unsigned int i = 0; i < OPERANDS; i++) {
     139                float res = ceilf(arguments[i]);
     140
     141                if (!cmp_float(res, results_ceil[i])) {
     142                        TPRINTF("Single precision ceil failed "
     143                            "(%f != %lf, arg %u)\n", res, results_ceil[i], i);
     144                        fail = true;
     145                }
     146        }
     147
     148        for (unsigned int i = 0; i < OPERANDS; i++) {
     149                double res = cos(arguments[i]);
     150
     151                if (!cmp_double(res, results_cos[i])) {
     152                        TPRINTF("Double precision cos failed "
     153                            "(%lf != %lf, arg %u)\n", res, results_cos[i], i);
     154                        fail = true;
     155                }
     156        }
     157
     158        for (unsigned int i = 0; i < OPERANDS; i++) {
     159                float res = cosf(arguments[i]);
     160
     161                if (!cmp_float(res, results_cos[i])) {
     162                        TPRINTF("Single precision cos failed "
     163                            "(%f != %lf, arg %u)\n", res, results_cos[i], i);
     164                        fail = true;
     165                }
     166        }
     167
     168        for (unsigned int i = 0; i < OPERANDS; i++) {
     169                double res = exp(arguments_exp[i]);
     170
     171                if (!cmp_double(res, results_exp[i])) {
     172                        TPRINTF("Double precision exp failed "
     173                            "(%lf != %lf, arg %u)\n", res, results_exp[i], i);
     174                        fail = true;
     175                }
     176        }
     177
     178        for (unsigned int i = 0; i < OPERANDS; i++) {
     179                float res = expf(arguments_exp[i]);
     180
     181                if (!cmp_float(res, results_exp[i])) {
     182                        TPRINTF("Single precision exp failed "
     183                            "(%f != %lf, arg %u)\n", res, results_exp[i], i);
     184                        fail = true;
     185                }
     186        }
     187
     188        for (unsigned int i = 0; i < OPERANDS; i++) {
    129189                double res = floor(arguments[i]);
    130                 int64_t res_int = (int64_t) (res * PRECISION);
    131                 int64_t corr_int = (int64_t) (results_floor[i] * PRECISION);
    132                
    133                 if (res_int != corr_int) {
    134                         TPRINTF("Double precision floor failed (%" PRId64
    135                             " != %" PRId64 ", arg %u)\n", res_int, corr_int, i);
    136                         fail = true;
    137                 }
    138         }
    139 
    140         for (unsigned int i = 0; i < OPERANDS; i++) {
    141                 double res = ceil(arguments[i]);
    142                 int64_t res_int = (int64_t) (res * PRECISION);
    143                 int64_t corr_int = (int64_t) (results_ceil[i] * PRECISION);
    144                
    145                 if (res_int != corr_int) {
    146                         TPRINTF("Double precision ceil failed (%" PRId64
    147                             " != %" PRId64 ", arg %u)\n", res_int, corr_int, i);
     190
     191                if (!cmp_double(res, results_floor[i])) {
     192                        TPRINTF("Double precision floor failed "
     193                            "(%lf != %lf, arg %u)\n", res, results_floor[i], i);
     194                        fail = true;
     195                }
     196        }
     197
     198        for (unsigned int i = 0; i < OPERANDS; i++) {
     199                float res = floorf(arguments[i]);
     200
     201                if (!cmp_float(res, results_floor[i])) {
     202                        TPRINTF("Single precision floor failed "
     203                            "(%f != %lf, arg %u)\n", res, results_floor[i], i);
     204                        fail = true;
     205                }
     206        }
     207
     208        for (unsigned int i = 0; i < OPERANDS; i++) {
     209                double res = log(arguments_log[i]);
     210
     211                if (!cmp_double(res, results_log[i])) {
     212                        TPRINTF("Double precision log failed "
     213                            "(%lf != %lf, arg %u)\n", res, results_log[i], i);
     214                        fail = true;
     215                }
     216        }
     217
     218        for (unsigned int i = 0; i < OPERANDS; i++) {
     219                float res = logf(arguments_log[i]);
     220
     221                if (!cmp_float(res, results_log[i])) {
     222                        TPRINTF("Single precision log failed "
     223                            "(%f != %lf, arg %u)\n", res, results_log[i], i);
     224                        fail = true;
     225                }
     226        }
     227
     228        for (unsigned int i = 0; i < OPERANDS; i++) {
     229                double res = sin(arguments[i]);
     230
     231                if (!cmp_double(res, results_sin[i])) {
     232                        TPRINTF("Double precision sin failed "
     233                            "(%lf != %lf, arg %u)\n", res, results_sin[i], i);
     234                        fail = true;
     235                }
     236        }
     237
     238        for (unsigned int i = 0; i < OPERANDS; i++) {
     239                float res = sinf(arguments[i]);
     240
     241                if (!cmp_float(res, results_sin[i])) {
     242                        TPRINTF("Single precision sin failed "
     243                            "(%f != %lf, arg %u)\n", res, results_sin[i], i);
    148244                        fail = true;
    149245                }
     
    152248        for (unsigned int i = 0; i < OPERANDS; i++) {
    153249                double res = trunc(arguments[i]);
    154                 int64_t res_int = (int64_t) (res * PRECISION);
    155                 int64_t corr_int = (int64_t) (results_trunc[i] * PRECISION);
    156                
    157                 if (res_int != corr_int) {
    158                         TPRINTF("Double precisiontruncation failed (%" PRId64
    159                             " != %" PRId64 ", arg %u)\n", res_int, corr_int, i);
    160                         fail = true;
    161                 }
    162         }
    163        
    164         for (unsigned int i = 0; i < OPERANDS; i++) {
    165                 double res = sin(arguments[i]);
    166                 int64_t res_int = (int64_t) (res * PRECISION);
    167                 int64_t corr_int = (int64_t) (results_sin[i] * PRECISION);
    168                
    169                 if (res_int != corr_int) {
    170                         TPRINTF("Double precision sine failed (%" PRId64
    171                             " != %" PRId64 ", arg %u)\n", res_int, corr_int, i);
    172                         fail = true;
    173                 }
    174         }
    175        
    176         for (unsigned int i = 0; i < OPERANDS; i++) {
    177                 double res = cos(arguments[i]);
    178                 int64_t res_int = (int64_t) (res * PRECISION);
    179                 int64_t corr_int = (int64_t) (results_cos[i] * PRECISION);
    180                
    181                 if (res_int != corr_int) {
    182                         TPRINTF("Double precision cosine failed (%" PRId64
    183                             " != %" PRId64 ", arg %u)\n", res_int, corr_int, i);
    184                         fail = true;
    185                 }
    186         }
    187        
    188         for (unsigned int i = 0; i < OPERANDS; i++) {
    189                 float res = logf(arguments_log[i]);
    190                
    191                 if (!cmp_float(res, results_log[i])) {
    192                         TPRINTF("Single precision logarithm failed "
    193                             "(%lf != %lf, arg %u)\n", res, results_log[i], i);
    194                         fail = true;
    195                 }
    196         }
    197        
    198         for (unsigned int i = 0; i < OPERANDS; i++) {
    199                 double res = log(arguments_log[i]);
    200                
    201                 if (!cmp_double(res, results_log[i])) {
    202                         TPRINTF("Double precision logarithm failed "
    203                             "(%lf != %lf, arg %u)\n", res, results_log[i], i);
    204                         fail = true;
    205                 }
    206         }
    207        
    208         for (unsigned int i = 0; i < OPERANDS; i++) {
    209                 float res = exp(arguments_exp[i]);
    210                
    211                 if (!cmp_float(res, results_exp[i])) {
    212                         TPRINTF("Single precision exponential failed "
    213                             "(%lf != %lf, arg %u)\n", res, results_exp[i], i);
    214                         fail = true;
    215                 }
    216         }
    217        
    218         for (unsigned int i = 0; i < OPERANDS; i++) {
    219                 double res = exp(arguments_exp[i]);
    220                
    221                 if (!cmp_double(res, results_exp[i])) {
    222                         TPRINTF("Double precision exponential failed "
    223                             "(%lf != %lf, arg %u)\n", res, results_exp[i], i);
    224                         fail = true;
    225                 }
    226         }
    227        
     250
     251                if (!cmp_double(res, results_trunc[i])) {
     252                        TPRINTF("Double precision trunc failed "
     253                            "(%lf != %lf, arg %u)\n", res, results_trunc[i], i);
     254                        fail = true;
     255                }
     256        }
     257
     258        for (unsigned int i = 0; i < OPERANDS; i++) {
     259                float res = truncf(arguments[i]);
     260
     261                if (!cmp_float(res, results_trunc[i])) {
     262                        TPRINTF("truncgle precision trunc failed "
     263                            "(%f != %lf, arg %u)\n", res, results_trunc[i], i);
     264                        fail = true;
     265                }
     266        }
     267
    228268        if (fail)
    229269                return "Floating point imprecision";
    230        
     270
    231271        return NULL;
    232272}
Note: See TracChangeset for help on using the changeset viewer.