// cmath standard header -*-c++-*-
// Copyright 2009-2017 IAR Systems AB.
#ifndef _CMATH_
#define _CMATH_

#ifndef _SYSTEM_BUILD
  #pragma system_include
#endif

#include <math.h>

namespace std {
  #if __AEABI_PORTABILITY_INTERNAL_LEVEL
    using ::__aeabi_HUGE_VAL;
    #if !_DLIB_ONLY_C89
      using ::__aeabi_HUGE_VALF;
      using ::__aeabi_HUGE_VALL;
      using ::__aeabi_INFINITY;
      using ::__aeabi_NAN;
    #endif
  #endif

  using ::abs; using ::acos; using ::asin;
  using ::atan; using ::atan2; using ::ceil;
  using ::cos; using ::cosh; using ::exp;
  using ::fabs; using ::floor; using ::fmod;
  using ::frexp; using ::ldexp; using ::log;
  using ::log10; using ::modf; using ::pow;
  using ::sin; using ::sinh; using ::sqrt;
  using ::tan; using ::tanh;

  #if !_DLIB_ONLY_C89
    using ::acosf; using ::asinf;
    using ::atanf; using ::atan2f; using ::ceilf;
    using ::cosf; using ::coshf; using ::expf;
    using ::fabsf; using ::floorf; using ::fmodf;
    using ::frexpf; using ::ldexpf; using ::logf;
    using ::log10f; using ::modff; using ::powf;
    using ::sinf; using ::sinhf; using ::sqrtf;
    using ::tanf; using ::tanhf;

    using ::acosl; using ::asinl;
    using ::atanl; using ::atan2l; using ::ceill;
    using ::cosl; using ::coshl; using ::expl;
    using ::fabsl; using ::floorl; using ::fmodl;
    using ::frexpl; using ::ldexpl; using ::logl;
    using ::log10l; using ::modfl; using ::powl;
    using ::sinl; using ::sinhl; using ::sqrtl;
    using ::tanl; using ::tanhl;

    using ::float_t; using ::double_t;

    using ::acosh; using ::asinh; using ::atanh;
    using ::cbrt; using ::exp2;
    using ::hypot; using ::ilogb;
    using ::log1p; using ::log2; using ::logb;
    using ::llrint; using ::lrint; using ::nearbyint;
    using ::rint; using ::llround; using ::lround;
    using ::fdim; using ::fmax; using ::fmin;
    using ::round; using ::trunc;
    using ::remainder; using ::remquo;
    using ::copysign; using ::nan; using ::nextafter;
    using ::scalbn; using ::scalbln; using ::nexttoward;

    using ::acoshf; using ::asinhf; using ::atanhf;
    using ::cbrtf; using ::exp2f;
    using ::hypotf; using ::ilogbf;
    using ::log1pf; using ::log2f; using ::logbf;
    using ::llrintf; using ::lrintf; using ::nearbyintf;
    using ::rintf; using ::llroundf; using ::lroundf;
    using ::fdimf; using ::fmaxf; using ::fminf;
    using ::roundf; using ::truncf;
    using ::remainderf; using ::remquof;
    using ::copysignf; using ::nanf;
    using ::nextafterf; using ::scalbnf; using ::scalblnf;
    using ::nexttowardf;

    using ::acoshl; using ::asinhl; using ::atanhl;
    using ::cbrtl; using ::exp2l;
    using ::hypotl; using ::ilogbl;
    using ::log1pl; using ::log2l; using ::logbl;
    using ::llrintl; using ::lrintl; using ::nearbyintl;
    using ::rintl; using ::llroundl; using ::lroundl;
    using ::fdiml; using ::fmaxl; using ::fminl;
    using ::roundl; using ::truncl;
    using ::remainderl; using ::remquol;
    using ::copysignl; using ::nanl;
    using ::nextafterl; using ::scalbnl; using ::scalblnl;
    using ::nexttowardl;

    #if _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH
      using ::erf; using ::erfc;
      using ::erff; using ::erfcf;
      using ::erfl; using ::erfcl;
      using ::expm1; using ::expm1f; using ::expm1l;
      using ::lgamma; using ::lgammaf; using ::lgammal;
      using ::tgamma; using ::tgammaf; using ::tgammal;
      using ::fma; using ::fmaf; using ::fmal;
    #endif

    #if __AEABI_PORTABILITY_INTERNAL_LEVEL == 0
      using ::__iar_cos_medium;   using ::__iar_exp_medium;
      using ::__iar_log_medium;   using ::__iar_log10_medium;
      using ::__iar_log2_medium;  using ::__iar_pow_medium;
      using ::__iar_sin_medium;   using ::__iar_tan_medium;
      using ::__iar_cos_mediumf;  using ::__iar_exp_mediumf;
      using ::__iar_log_mediumf;  using ::__iar_log10_mediumf;
      using ::__iar_log2_mediumf; using ::__iar_pow_mediumf;
      using ::__iar_sin_mediumf;  using ::__iar_tan_mediumf;
      using ::__iar_cos_mediuml;  using ::__iar_exp_mediuml;
      using ::__iar_log_mediuml;  using ::__iar_log10_mediuml;
      using ::__iar_log2_mediuml; using ::__iar_pow_mediuml;
      using ::__iar_sin_mediuml;  using ::__iar_tan_mediuml;

      #if _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH && \
          !defined(_DLIB_DO_NOT_ADD_ACCURATE_FUNCTIONS)
        using ::__iar_tan_accurate; using ::__iar_cos_accurate;
        using ::__iar_sin_accurate; using ::__iar_pow_accurate;
        using ::__iar_tan_accuratef; using ::__iar_cos_accuratef;
        using ::__iar_sin_accuratef; using ::__iar_pow_accuratef;
        using ::__iar_tan_accuratel; using ::__iar_cos_accuratel;
        using ::__iar_sin_accuratel; using ::__iar_pow_accuratel;
      #endif

      #ifndef _DLIB_DO_NOT_ADD_SMALL_FUNCTIONS
        using ::__iar_cos_small; using ::__iar_exp_small;
        using ::__iar_log_small; using ::__iar_log10_small;
        using ::__iar_pow_small; using ::__iar_sin_small;
        using ::__iar_tan_small; using ::__iar_log2_small;
        using ::__iar_cos_smallf; using ::__iar_exp_smallf;
        using ::__iar_log_smallf; using ::__iar_log10_smallf;
        using ::__iar_pow_smallf; using ::__iar_sin_smallf;
        using ::__iar_tan_smallf; using ::__iar_log2_smallf;

        using ::__iar_cos_smalll; using ::__iar_exp_smalll;
        using ::__iar_log_smalll; using ::__iar_log10_smalll;
        using ::__iar_pow_smalll; using ::__iar_sin_smalll;
        using ::__iar_tan_smalll; using ::__iar_log2_smalll;
      #endif
    #endif /* __AEABI_PORTABILITY_INTERNAL_LEVEL == 0 */

    using ::fpclassify;
    using ::signbit; using ::isfinite; using ::isinf;
    using ::isnan; using ::isnormal;
    using ::isgreater; using ::isgreaterequal;
    using ::isless; using ::islessequal; using ::islessgreater;
    using ::isunordered;
  #endif /* !_DLIB_ONLY_C89 */
} /* namespace std */
#endif /* _CMATH_ */

/*
 * Copyright (c) by P.J. Plauger. All rights reserved.
 * Consult your license regarding permissions and restrictions.
V6.50:0576 */
