Home | History | Annotate | Line # | Download | only in c
      1   1.1  mrg // -*- C++ -*- forwarding header.
      2   1.1  mrg 
      3  1.12  mrg // Copyright (C) 2000-2022 Free Software Foundation, Inc.
      4   1.1  mrg //
      5   1.1  mrg // This file is part of the GNU ISO C++ Library.  This library is free
      6   1.1  mrg // software; you can redistribute it and/or modify it under the
      7   1.1  mrg // terms of the GNU General Public License as published by the
      8   1.1  mrg // Free Software Foundation; either version 3, or (at your option)
      9   1.1  mrg // any later version.
     10   1.1  mrg 
     11   1.1  mrg // This library is distributed in the hope that it will be useful,
     12   1.1  mrg // but WITHOUT ANY WARRANTY; without even the implied warranty of
     13   1.1  mrg // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     14   1.1  mrg // GNU General Public License for more details.
     15   1.1  mrg 
     16   1.1  mrg // Under Section 7 of GPL version 3, you are granted additional
     17   1.1  mrg // permissions described in the GCC Runtime Library Exception, version
     18   1.1  mrg // 3.1, as published by the Free Software Foundation.
     19   1.1  mrg 
     20   1.1  mrg // You should have received a copy of the GNU General Public License and
     21   1.1  mrg // a copy of the GCC Runtime Library Exception along with this program;
     22   1.1  mrg // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
     23   1.1  mrg // <http://www.gnu.org/licenses/>.
     24   1.1  mrg 
     25   1.1  mrg //
     26   1.1  mrg // ISO C++ 14882: 26.5  C library
     27   1.1  mrg //
     28   1.1  mrg 
     29   1.1  mrg #ifndef _GLIBCXX_CMATH
     30   1.1  mrg #define _GLIBCXX_CMATH 1
     31   1.1  mrg 
     32   1.1  mrg #pragma GCC system_header
     33   1.1  mrg 
     34   1.1  mrg #include <bits/c++config.h>
     35   1.1  mrg 
     36   1.1  mrg #include_next <math.h>
     37   1.1  mrg 
     38   1.1  mrg // Get rid of those macros defined in <math.h> in lieu of real functions.
     39   1.1  mrg #undef abs
     40   1.1  mrg #undef div
     41   1.1  mrg #undef acos
     42   1.1  mrg #undef asin
     43   1.1  mrg #undef atan
     44   1.1  mrg #undef atan2
     45   1.1  mrg #undef ceil
     46   1.1  mrg #undef cos
     47   1.1  mrg #undef cosh
     48   1.1  mrg #undef exp
     49   1.1  mrg #undef fabs
     50   1.1  mrg #undef floor
     51   1.1  mrg #undef fmod
     52   1.1  mrg #undef frexp
     53   1.1  mrg #undef ldexp
     54   1.1  mrg #undef log
     55   1.1  mrg #undef log10
     56   1.1  mrg #undef modf
     57   1.1  mrg #undef pow
     58   1.1  mrg #undef sin
     59   1.1  mrg #undef sinh
     60   1.1  mrg #undef sqrt
     61   1.1  mrg #undef tan
     62   1.1  mrg #undef tanh
     63   1.1  mrg 
     64   1.1  mrg #undef fpclassify
     65   1.1  mrg #undef isfinite
     66   1.1  mrg #undef isinf
     67   1.1  mrg #undef isnan
     68   1.1  mrg #undef isnormal
     69   1.1  mrg #undef signbit
     70   1.1  mrg #undef isgreater
     71   1.1  mrg #undef isgreaterequal
     72   1.1  mrg #undef isless
     73   1.1  mrg #undef islessequal
     74   1.1  mrg #undef islessgreater
     75   1.1  mrg #undef isunordered
     76   1.1  mrg 
     77   1.3  mrg namespace std _GLIBCXX_VISIBILITY(default)
     78   1.1  mrg {
     79   1.1  mrg   inline double
     80   1.1  mrg   abs(double __x)
     81   1.1  mrg   { return __builtin_fabs(__x); }
     82   1.1  mrg 
     83   1.1  mrg   inline float
     84   1.1  mrg   abs(float __x)
     85   1.1  mrg   { return __builtin_fabsf(__x); }
     86   1.1  mrg 
     87   1.1  mrg   inline long double
     88   1.1  mrg   abs(long double __x)
     89   1.1  mrg   { return __builtin_fabsl(__x); }
     90   1.1  mrg 
     91   1.1  mrg #if _GLIBCXX_HAVE_MODFF
     92   1.1  mrg   inline float
     93   1.1  mrg   modf(float __x, float* __iptr) { return modff(__x, __iptr); }
     94   1.1  mrg #else
     95   1.1  mrg   inline float
     96   1.1  mrg   modf(float __x, float* __iptr)
     97   1.1  mrg   {
     98   1.1  mrg     double __tmp;
     99   1.1  mrg     double __res = modf(static_cast<double>(__x), &__tmp);
    100   1.1  mrg     *__iptr = static_cast<float>(__tmp);
    101   1.1  mrg     return __res;
    102   1.1  mrg   }
    103   1.1  mrg #endif
    104   1.1  mrg 
    105   1.1  mrg #if _GLIBCXX_HAVE_MODFL
    106   1.1  mrg   inline long double
    107   1.1  mrg   modf(long double __x, long double* __iptr) { return modfl(__x, __iptr); }
    108   1.1  mrg #else
    109   1.1  mrg   inline long double
    110   1.1  mrg   modf(long double __x, long double* __iptr)
    111   1.1  mrg   {
    112   1.1  mrg     double __tmp;
    113   1.1  mrg     double __res = modf(static_cast<double>(__x), &__tmp);
    114   1.1  mrg     * __iptr = static_cast<long double>(__tmp);
    115   1.1  mrg     return __res;
    116   1.1  mrg   }
    117   1.1  mrg #endif
    118   1.1  mrg }
    119   1.1  mrg #endif
    120