1*e4b17023SJohn Marino // Stub definitions for long double math. 2*e4b17023SJohn Marino 3*e4b17023SJohn Marino // Copyright (C) 2001, 2002, 2003, 2009 Free Software Foundation, Inc. 4*e4b17023SJohn Marino // 5*e4b17023SJohn Marino // This file is part of the GNU ISO C++ Library. This library is free 6*e4b17023SJohn Marino // software; you can redistribute it and/or modify it under the 7*e4b17023SJohn Marino // terms of the GNU General Public License as published by the 8*e4b17023SJohn Marino // Free Software Foundation; either version 3, or (at your option) 9*e4b17023SJohn Marino // any later version. 10*e4b17023SJohn Marino 11*e4b17023SJohn Marino // This library is distributed in the hope that it will be useful, 12*e4b17023SJohn Marino // but WITHOUT ANY WARRANTY; without even the implied warranty of 13*e4b17023SJohn Marino // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14*e4b17023SJohn Marino // GNU General Public License for more details. 15*e4b17023SJohn Marino 16*e4b17023SJohn Marino // Under Section 7 of GPL version 3, you are granted additional 17*e4b17023SJohn Marino // permissions described in the GCC Runtime Library Exception, version 18*e4b17023SJohn Marino // 3.1, as published by the Free Software Foundation. 19*e4b17023SJohn Marino 20*e4b17023SJohn Marino // You should have received a copy of the GNU General Public License and 21*e4b17023SJohn Marino // a copy of the GCC Runtime Library Exception along with this program; 22*e4b17023SJohn Marino // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 23*e4b17023SJohn Marino // <http://www.gnu.org/licenses/>. 24*e4b17023SJohn Marino 25*e4b17023SJohn Marino #include <cmath> 26*e4b17023SJohn Marino 27*e4b17023SJohn Marino // For targets which do not have support for long double versions, 28*e4b17023SJohn Marino // we use the following crude approximations. We keep saying that we'll do 29*e4b17023SJohn Marino // better later, but never do. 30*e4b17023SJohn Marino 31*e4b17023SJohn Marino extern "C" 32*e4b17023SJohn Marino { 33*e4b17023SJohn Marino #ifndef _GLIBCXX_HAVE_FABSL 34*e4b17023SJohn Marino long double fabsl(long double x)35*e4b17023SJohn Marino fabsl(long double x) 36*e4b17023SJohn Marino { 37*e4b17023SJohn Marino return fabs((double) x); 38*e4b17023SJohn Marino } 39*e4b17023SJohn Marino #endif 40*e4b17023SJohn Marino 41*e4b17023SJohn Marino #ifndef _GLIBCXX_HAVE_ACOSL 42*e4b17023SJohn Marino long double acosl(long double x)43*e4b17023SJohn Marino acosl(long double x) 44*e4b17023SJohn Marino { 45*e4b17023SJohn Marino return acos((double) x); 46*e4b17023SJohn Marino } 47*e4b17023SJohn Marino #endif 48*e4b17023SJohn Marino 49*e4b17023SJohn Marino #ifndef _GLIBCXX_HAVE_ASINL 50*e4b17023SJohn Marino long double asinl(long double x)51*e4b17023SJohn Marino asinl(long double x) 52*e4b17023SJohn Marino { 53*e4b17023SJohn Marino return asin((double) x); 54*e4b17023SJohn Marino } 55*e4b17023SJohn Marino #endif 56*e4b17023SJohn Marino 57*e4b17023SJohn Marino #ifndef _GLIBCXX_HAVE_ATANL 58*e4b17023SJohn Marino long double atanl(long double x)59*e4b17023SJohn Marino atanl(long double x) 60*e4b17023SJohn Marino { 61*e4b17023SJohn Marino return atan ((double) x); 62*e4b17023SJohn Marino } 63*e4b17023SJohn Marino #endif 64*e4b17023SJohn Marino 65*e4b17023SJohn Marino #ifndef _GLIBCXX_HAVE_ATAN2L 66*e4b17023SJohn Marino long double atan2l(long double x,long double y)67*e4b17023SJohn Marino atan2l(long double x, long double y) 68*e4b17023SJohn Marino { 69*e4b17023SJohn Marino return atan2((double) x, (double) y); 70*e4b17023SJohn Marino } 71*e4b17023SJohn Marino #endif 72*e4b17023SJohn Marino 73*e4b17023SJohn Marino #ifndef _GLIBCXX_HAVE_CEILL 74*e4b17023SJohn Marino long double ceill(long double x)75*e4b17023SJohn Marino ceill(long double x) 76*e4b17023SJohn Marino { 77*e4b17023SJohn Marino return ceil((double) x); 78*e4b17023SJohn Marino } 79*e4b17023SJohn Marino #endif 80*e4b17023SJohn Marino 81*e4b17023SJohn Marino #ifndef _GLIBCXX_HAVE_COSL 82*e4b17023SJohn Marino long double cosl(long double x)83*e4b17023SJohn Marino cosl(long double x) 84*e4b17023SJohn Marino { 85*e4b17023SJohn Marino return cos((double) x); 86*e4b17023SJohn Marino } 87*e4b17023SJohn Marino #endif 88*e4b17023SJohn Marino 89*e4b17023SJohn Marino #ifndef _GLIBCXX_HAVE_COSHL 90*e4b17023SJohn Marino long double coshl(long double x)91*e4b17023SJohn Marino coshl(long double x) 92*e4b17023SJohn Marino { 93*e4b17023SJohn Marino return cosh((double) x); 94*e4b17023SJohn Marino } 95*e4b17023SJohn Marino #endif 96*e4b17023SJohn Marino 97*e4b17023SJohn Marino #ifndef _GLIBCXX_HAVE_EXPL 98*e4b17023SJohn Marino long double expl(long double x)99*e4b17023SJohn Marino expl(long double x) 100*e4b17023SJohn Marino { 101*e4b17023SJohn Marino return exp((double) x); 102*e4b17023SJohn Marino } 103*e4b17023SJohn Marino #endif 104*e4b17023SJohn Marino 105*e4b17023SJohn Marino #ifndef _GLIBCXX_HAVE_FLOORL 106*e4b17023SJohn Marino long double floorl(long double x)107*e4b17023SJohn Marino floorl(long double x) 108*e4b17023SJohn Marino { 109*e4b17023SJohn Marino return floor((double) x); 110*e4b17023SJohn Marino } 111*e4b17023SJohn Marino #endif 112*e4b17023SJohn Marino 113*e4b17023SJohn Marino #ifndef _GLIBCXX_HAVE_FMODL 114*e4b17023SJohn Marino long double fmodl(long double x,long double y)115*e4b17023SJohn Marino fmodl(long double x, long double y) 116*e4b17023SJohn Marino { 117*e4b17023SJohn Marino return fmod((double) x, (double) y); 118*e4b17023SJohn Marino } 119*e4b17023SJohn Marino #endif 120*e4b17023SJohn Marino 121*e4b17023SJohn Marino #ifndef _GLIBCXX_HAVE_FREXPL 122*e4b17023SJohn Marino long double frexpl(long double x,int * exp)123*e4b17023SJohn Marino frexpl(long double x, int *exp) 124*e4b17023SJohn Marino { 125*e4b17023SJohn Marino return frexp((double) x, exp); 126*e4b17023SJohn Marino } 127*e4b17023SJohn Marino #endif 128*e4b17023SJohn Marino 129*e4b17023SJohn Marino #ifndef _GLIBCXX_HAVE_SQRTL 130*e4b17023SJohn Marino long double sqrtl(long double x)131*e4b17023SJohn Marino sqrtl(long double x) 132*e4b17023SJohn Marino { 133*e4b17023SJohn Marino return sqrt((double) x); 134*e4b17023SJohn Marino } 135*e4b17023SJohn Marino #endif 136*e4b17023SJohn Marino 137*e4b17023SJohn Marino #ifndef _GLIBCXX_HAVE_HYPOTL 138*e4b17023SJohn Marino long double hypotl(long double x,long double y)139*e4b17023SJohn Marino hypotl(long double x, long double y) 140*e4b17023SJohn Marino { 141*e4b17023SJohn Marino long double s = fabsl(x) + fabsl(y); 142*e4b17023SJohn Marino if (s == 0.0L) 143*e4b17023SJohn Marino return s; 144*e4b17023SJohn Marino x /= s; y /= s; 145*e4b17023SJohn Marino return s * sqrtl(x * x + y * y); 146*e4b17023SJohn Marino } 147*e4b17023SJohn Marino #endif 148*e4b17023SJohn Marino 149*e4b17023SJohn Marino #ifndef _GLIBCXX_HAVE_LDEXPL 150*e4b17023SJohn Marino long double ldexpl(long double x,int exp)151*e4b17023SJohn Marino ldexpl(long double x, int exp) 152*e4b17023SJohn Marino { 153*e4b17023SJohn Marino return ldexp((double) x, exp); 154*e4b17023SJohn Marino } 155*e4b17023SJohn Marino #endif 156*e4b17023SJohn Marino 157*e4b17023SJohn Marino #ifndef _GLIBCXX_HAVE_LOGL 158*e4b17023SJohn Marino long double logl(long double x)159*e4b17023SJohn Marino logl(long double x) 160*e4b17023SJohn Marino { 161*e4b17023SJohn Marino return log((double) x); 162*e4b17023SJohn Marino } 163*e4b17023SJohn Marino #endif 164*e4b17023SJohn Marino 165*e4b17023SJohn Marino #ifndef _GLIBCXX_HAVE_LOG10L 166*e4b17023SJohn Marino long double log10l(long double x)167*e4b17023SJohn Marino log10l(long double x) 168*e4b17023SJohn Marino { 169*e4b17023SJohn Marino return log10((double) x); 170*e4b17023SJohn Marino } 171*e4b17023SJohn Marino #endif 172*e4b17023SJohn Marino 173*e4b17023SJohn Marino #ifndef _GLIBCXX_HAVE_MODFL 174*e4b17023SJohn Marino long double modfl(long double x,long double * iptr)175*e4b17023SJohn Marino modfl(long double x, long double *iptr) 176*e4b17023SJohn Marino { 177*e4b17023SJohn Marino double result, temp; 178*e4b17023SJohn Marino 179*e4b17023SJohn Marino result = modf((double) x, &temp); 180*e4b17023SJohn Marino *iptr = temp; 181*e4b17023SJohn Marino return result; 182*e4b17023SJohn Marino } 183*e4b17023SJohn Marino #endif 184*e4b17023SJohn Marino 185*e4b17023SJohn Marino #ifndef _GLIBCXX_HAVE_POWL 186*e4b17023SJohn Marino long double powl(long double x,long double y)187*e4b17023SJohn Marino powl(long double x, long double y) 188*e4b17023SJohn Marino { 189*e4b17023SJohn Marino return pow((double) x, (double) y); 190*e4b17023SJohn Marino } 191*e4b17023SJohn Marino #endif 192*e4b17023SJohn Marino 193*e4b17023SJohn Marino #ifndef _GLIBCXX_HAVE_SINL 194*e4b17023SJohn Marino long double sinl(long double x)195*e4b17023SJohn Marino sinl(long double x) 196*e4b17023SJohn Marino { 197*e4b17023SJohn Marino return sin((double) x); 198*e4b17023SJohn Marino } 199*e4b17023SJohn Marino #endif 200*e4b17023SJohn Marino 201*e4b17023SJohn Marino #ifndef _GLIBCXX_HAVE_SINHL 202*e4b17023SJohn Marino long double sinhl(long double x)203*e4b17023SJohn Marino sinhl(long double x) 204*e4b17023SJohn Marino { 205*e4b17023SJohn Marino return sinh((double) x); 206*e4b17023SJohn Marino } 207*e4b17023SJohn Marino #endif 208*e4b17023SJohn Marino 209*e4b17023SJohn Marino #ifndef _GLIBCXX_HAVE_TANL 210*e4b17023SJohn Marino long double tanl(long double x)211*e4b17023SJohn Marino tanl(long double x) 212*e4b17023SJohn Marino { 213*e4b17023SJohn Marino return tan((double) x); 214*e4b17023SJohn Marino } 215*e4b17023SJohn Marino #endif 216*e4b17023SJohn Marino 217*e4b17023SJohn Marino #ifndef _GLIBCXX_HAVE_TANHL 218*e4b17023SJohn Marino long double tanhl(long double x)219*e4b17023SJohn Marino tanhl(long double x) 220*e4b17023SJohn Marino { 221*e4b17023SJohn Marino return tanh((double) x); 222*e4b17023SJohn Marino } 223*e4b17023SJohn Marino #endif 224*e4b17023SJohn Marino } // extern "C" 225