Home | History | Annotate | Download | only in tests
      1 /*
      2  * Copyright (C) 2014 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 #if defined(__BIONIC_LP32_USE_LONG_DOUBLE)
     18 #define COMPLEX_TEST complex_h_force_long_double
     19 #else
     20 #define COMPLEX_TEST complex_h
     21 #endif
     22 
     23 // This file is compiled against both glibc and bionic, and our complex.h
     24 // depends on bionic-specific macros, so hack around that.
     25 #include <sys/cdefs.h>
     26 #if !defined(__INTRODUCED_IN)
     27 #define __INTRODUCED_IN(x)
     28 #define __INTRODUCED_IN_32(x)
     29 #define __INTRODUCED_IN_64(x)
     30 #define __INTRODUCED_IN_FUTURE
     31 #define __RENAME_LDBL(a,b,c)
     32 #endif
     33 
     34 // libc++ actively gets in the way of including <complex.h> from C++, so we
     35 // have to be naughty.
     36 #include "../libc/include/complex.h"
     37 
     38 // (libc++ also seems to have really bad implementations of its own that ignore
     39 // the intricacies of floating point math.)
     40 // http://llvm.org/bugs/show_bug.cgi?id=21504
     41 
     42 #include <math.h> // For M_PI_2/M_PI_2l.
     43 
     44 // Prettify gtest Complex printing.
     45 #include <iostream>
     46 namespace testing {
     47 namespace internal {
     48 inline void PrintTo(const double _Complex& c, std::ostream* os) {
     49   *os << "(" << creal(c) << "," << cimag(c) << "i)";
     50 }
     51 inline void PrintTo(const float _Complex& c, std::ostream* os) {
     52   *os << "(" << crealf(c) << "," << cimagf(c) << "i)";
     53 }
     54 inline void PrintTo(const long double _Complex& c, std::ostream* os) {
     55   *os << "(" << creall(c) << "," << cimagl(c) << "i)";
     56 }
     57 }
     58 }
     59 
     60 // Macro 'I' defined in complex.h conflicts with gtest.h.
     61 #pragma push_macro("I")
     62 #undef I
     63 #include <gtest/gtest.h>
     64 #pragma pop_macro("I")
     65 
     66 TEST(COMPLEX_TEST, cabs) {
     67   ASSERT_EQ(0.0, cabs(0));
     68 }
     69 
     70 TEST(COMPLEX_TEST, cabsf) {
     71   ASSERT_EQ(0.0, cabsf(0));
     72 }
     73 
     74 TEST(COMPLEX_TEST, cabsl) {
     75   ASSERT_EQ(0.0, cabsl(0));
     76 }
     77 
     78 TEST(COMPLEX_TEST, cacos) {
     79   ASSERT_EQ(M_PI_2, cacos(0.0));
     80 }
     81 
     82 TEST(COMPLEX_TEST, cacosf) {
     83   ASSERT_EQ(static_cast<float>(M_PI_2), cacosf(0.0));
     84 }
     85 
     86 TEST(COMPLEX_TEST, cacosl) {
     87   ASSERT_EQ(M_PI_2l, cacosl(0.0));
     88 }
     89 
     90 TEST(COMPLEX_TEST, cacosh) {
     91   ASSERT_EQ(0.0, cacosh(1.0));
     92 }
     93 
     94 TEST(COMPLEX_TEST, cacoshl) {
     95   ASSERT_EQ(0.0, cacoshl(1.0));
     96 }
     97 
     98 TEST(COMPLEX_TEST, cacoshf) {
     99   ASSERT_EQ(0.0, cacoshf(1.0));
    100 }
    101 
    102 TEST(COMPLEX_TEST, carg) {
    103   ASSERT_EQ(0.0, carg(0));
    104 }
    105 
    106 TEST(COMPLEX_TEST, cargf) {
    107   ASSERT_EQ(0.0, cargf(0));
    108 }
    109 
    110 TEST(COMPLEX_TEST, cargl) {
    111   ASSERT_EQ(0.0, cargl(0));
    112 }
    113 
    114 TEST(COMPLEX_TEST, casin) {
    115   ASSERT_EQ(0.0, casin(0));
    116 }
    117 
    118 TEST(COMPLEX_TEST, casinf) {
    119   ASSERT_EQ(0.0, casinf(0));
    120 }
    121 
    122 TEST(COMPLEX_TEST, casinl) {
    123   ASSERT_EQ(0.0, casinl(0));
    124 }
    125 
    126 TEST(COMPLEX_TEST, casinh) {
    127   ASSERT_EQ(0.0, casinh(0));
    128 }
    129 
    130 TEST(COMPLEX_TEST, casinhf) {
    131   ASSERT_EQ(0.0, casinhf(0));
    132 }
    133 
    134 TEST(COMPLEX_TEST, casinhl) {
    135   ASSERT_EQ(0.0, casinhl(0));
    136 }
    137 
    138 TEST(COMPLEX_TEST, catan) {
    139   ASSERT_EQ(0.0, catan(0));
    140 }
    141 
    142 TEST(COMPLEX_TEST, catanf) {
    143   ASSERT_EQ(0.0, catanf(0));
    144 }
    145 
    146 TEST(COMPLEX_TEST, catanl) {
    147   ASSERT_EQ(0.0, catanl(0));
    148 }
    149 
    150 TEST(COMPLEX_TEST, catanh) {
    151   ASSERT_EQ(0.0, catanh(0));
    152 }
    153 
    154 TEST(COMPLEX_TEST, catanhf) {
    155   ASSERT_EQ(0.0, catanhf(0));
    156 }
    157 
    158 TEST(COMPLEX_TEST, catanhl) {
    159   ASSERT_EQ(0.0, catanhl(0));
    160 }
    161 
    162 TEST(COMPLEX_TEST, ccos) {
    163   ASSERT_EQ(1.0, ccos(0));
    164 }
    165 
    166 TEST(COMPLEX_TEST, ccosf) {
    167   ASSERT_EQ(1.0, ccosf(0));
    168 }
    169 
    170 TEST(COMPLEX_TEST, ccosl) {
    171   ASSERT_EQ(1.0, ccosl(0));
    172 }
    173 
    174 TEST(COMPLEX_TEST, ccosh) {
    175   ASSERT_EQ(1.0, ccosh(0));
    176 }
    177 
    178 TEST(COMPLEX_TEST, ccoshf) {
    179   ASSERT_EQ(1.0, ccoshf(0));
    180 }
    181 
    182 TEST(COMPLEX_TEST, ccoshl) {
    183   ASSERT_EQ(1.0, ccoshl(0));
    184 }
    185 
    186 TEST(COMPLEX_TEST, cexp) {
    187   ASSERT_EQ(1.0, cexp(0));
    188 }
    189 
    190 TEST(COMPLEX_TEST, cexpf) {
    191   ASSERT_EQ(1.0, cexpf(0));
    192 }
    193 
    194 TEST(COMPLEX_TEST, cexpl) {
    195   ASSERT_EQ(1.0, cexpl(0));
    196 }
    197 
    198 TEST(COMPLEX_TEST, cimag) {
    199   ASSERT_EQ(0.0, cimag(0));
    200 }
    201 
    202 TEST(COMPLEX_TEST, cimagf) {
    203   ASSERT_EQ(0.0f, cimagf(0));
    204 }
    205 
    206 TEST(COMPLEX_TEST, cimagl) {
    207   ASSERT_EQ(0.0, cimagl(0));
    208 }
    209 
    210 TEST(COMPLEX_TEST, clog) {
    211   ASSERT_EQ(0.0, clog(1.0));
    212 }
    213 
    214 TEST(COMPLEX_TEST, clogf) {
    215   ASSERT_EQ(0.0f, clogf(1.0f));
    216 }
    217 
    218 TEST(COMPLEX_TEST, clogl) {
    219   ASSERT_EQ(0.0L, clogl(1.0L));
    220 }
    221 
    222 TEST(COMPLEX_TEST, conj) {
    223   ASSERT_EQ(0.0, conj(0));
    224 }
    225 
    226 TEST(COMPLEX_TEST, conjf) {
    227   ASSERT_EQ(0.0f, conjf(0));
    228 }
    229 
    230 TEST(COMPLEX_TEST, conjl) {
    231   ASSERT_EQ(0.0, conjl(0));
    232 }
    233 
    234 TEST(COMPLEX_TEST, cpow) {
    235   ASSERT_EQ(8.0, cpow(2.0, 3.0));
    236 }
    237 
    238 TEST(COMPLEX_TEST, cpowf) {
    239   ASSERT_EQ(8.0f, cpowf(2.0f, 3.0f));
    240 }
    241 
    242 TEST(COMPLEX_TEST, cpowl) {
    243   ASSERT_EQ(8.0L, cpowl(2.0L, 3.0L));
    244 }
    245 
    246 TEST(COMPLEX_TEST, cproj) {
    247   ASSERT_EQ(0.0, cproj(0));
    248 }
    249 
    250 TEST(COMPLEX_TEST, cprojf) {
    251   ASSERT_EQ(0.0f, cprojf(0));
    252 }
    253 
    254 TEST(COMPLEX_TEST, cprojl) {
    255   ASSERT_EQ(0.0, cprojl(0));
    256 }
    257 
    258 TEST(COMPLEX_TEST, creal) {
    259   ASSERT_EQ(2.0, creal(2.0 + 3.0I));
    260 }
    261 
    262 TEST(COMPLEX_TEST, crealf) {
    263   ASSERT_EQ(2.0f, crealf(2.0f + 3.0fI));
    264 }
    265 
    266 TEST(COMPLEX_TEST, creall) {
    267   ASSERT_EQ(2.0, creall(2.0L + 3.0LI));
    268 }
    269 
    270 TEST(COMPLEX_TEST, csin) {
    271   ASSERT_EQ(0.0, csin(0));
    272 }
    273 
    274 TEST(COMPLEX_TEST, csinf) {
    275   ASSERT_EQ(0.0, csinf(0));
    276 }
    277 
    278 TEST(COMPLEX_TEST, csinl) {
    279   ASSERT_EQ(0.0, csinl(0));
    280 }
    281 
    282 TEST(COMPLEX_TEST, csinh) {
    283   ASSERT_EQ(0.0, csinh(0));
    284 }
    285 
    286 TEST(COMPLEX_TEST, csinhf) {
    287   ASSERT_EQ(0.0, csinhf(0));
    288 }
    289 
    290 TEST(COMPLEX_TEST, csinhl) {
    291   ASSERT_EQ(0.0, csinhl(0));
    292 }
    293 
    294 TEST(COMPLEX_TEST, csqrt) {
    295   ASSERT_EQ(0.0, csqrt(0));
    296 }
    297 
    298 TEST(COMPLEX_TEST, csqrtf) {
    299   ASSERT_EQ(0.0f, csqrtf(0));
    300 }
    301 
    302 TEST(COMPLEX_TEST, csqrtl) {
    303   ASSERT_EQ(0.0, csqrtl(0));
    304 }
    305 
    306 TEST(COMPLEX_TEST, ctan) {
    307   ASSERT_EQ(0.0, ctan(0));
    308 }
    309 
    310 TEST(COMPLEX_TEST, ctanf) {
    311   ASSERT_EQ(0.0, ctanf(0));
    312 }
    313 
    314 TEST(COMPLEX_TEST, ctanl) {
    315   ASSERT_EQ(0.0, ctanl(0));
    316 }
    317 
    318 TEST(COMPLEX_TEST, ctanh) {
    319   ASSERT_EQ(0.0, ctanh(0));
    320 }
    321 
    322 TEST(COMPLEX_TEST, ctanhf) {
    323   ASSERT_EQ(0.0, ctanhf(0));
    324 }
    325 
    326 TEST(COMPLEX_TEST, ctanhl) {
    327   ASSERT_EQ(0.0, ctanhl(0));
    328 }
    329