1 /* 2 * Copyright (C) 2013 The Android Open Source Project 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * * Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * * Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in 12 * the documentation and/or other materials provided with the 13 * distribution. 14 * 15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 16 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 17 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 18 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 19 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 20 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 21 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 22 * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 23 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 24 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 25 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26 * SUCH DAMAGE. 27 */ 28 #ifndef NDK_ANDROID_SUPPORT_MATH_H 29 #define NDK_ANDROID_SUPPORT_MATH_H 30 31 #include_next <math.h> 32 33 #if !defined(__LP64__) 34 35 #ifdef __cplusplus 36 extern "C" { 37 #endif 38 39 // TODO(digit): Check that this is not needed for Clang. 40 typedef double double_t; 41 typedef float float_t; 42 43 // Missing long double functions. Note that 'long double' is the same 44 // as 'double' on 32-bit Android, so this will define stubs. 45 #define LLVM_LIBCXX_LONG_DOUBLE_FUNCTIONS 46 47 long double acosl(long double); 48 long double asinl(long double); 49 long double atanl(long double); 50 long double atan2l(long double x, long double y); 51 long double cosl(long double); 52 long double coshl(long double); 53 long double expl(long double); 54 long double fmodl(long double, long double); 55 long double powl(long double, long double); 56 long double sinl(long double); 57 long double sinhl(long double); 58 long double sqrtl(long double); 59 long double tanl(long double); 60 long double tanhl(long double); 61 long double acoshl(long double); 62 long double asinhl(long double); 63 long double atanhl(long double); 64 long double cbrtl(long double); 65 long double erfl(long double); 66 long double erfcl(long double); 67 long double expm1l(long double); 68 long double hypotl(long double, long double); 69 long double lgammal(long double); 70 long long int llrintl(long double); 71 long double logl(long double); 72 long double log1pl(long double); 73 long double log2l(long double); 74 long double logbl(long double); 75 long double log10l(long double); 76 long double nanl(const char*); 77 long double nearbyintl(long double); 78 long double remainderl(long double, long double); 79 long double remquol(long double, long double, int*); 80 long double rintl(long double); 81 long int lrintl(long double); 82 long double tgammal(long double); 83 long double modfl(long double, long double*); 84 long double exp2l(long double); 85 86 float tgammaf(float); 87 double nan(const char*); 88 float nanf(const char*); 89 90 float log2f(float); 91 double log2(double); 92 93 #ifdef __cplusplus 94 } // extern "C" 95 #endif 96 97 #endif // !__LP64__ 98 99 #endif /* NDK_ANDROID_SUPPORT_MATH_H */ 100