Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

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