/***************************** PDI STD File ***********************************
This file is taken from external sources. this is taken from open source uClibc++ 
library available on github. below is reference link. Thanking to author for
providing this .

This is free software. you can redistribute it and/or modify it but without any
warranty.

referred from   : https://github.com/mike-matera/ArduinoSTL
added Date      : 1st Dec 2024
added by        : Suraj I.
******************************************************************************/

#include <math.h>

#ifndef __PDISTD_HEADER_CMATH
#define __PDISTD_HEADER_CMATH 1

// #undef abs
// #undef acos
// #undef asin
// #undef atan
// #undef atan2
// #undef ceil
// #undef cos
// #undef cosh
// #undef exp
// #undef fabs
// #undef floor
// #undef fmod
// #undef frexp
// #undef ldexp
// #undef log
// #undef log10
// #undef modf
// #undef pow
// #undef sin
// #undef sinh
// #undef sqrt
// #undef tan
// #undef tanh

// namespace pdistd{

// 	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;

// #ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
// 	inline float abs  (float x){
// 		return fabsf(x);
// 	}
// 	inline float acos (float x){
// 		return acosf(x);
// 	}
// 	inline float asin (float x){
// 		return asinf(x);
// 	}
// 	inline float atan (float x){
// 		return atanf(x);
// 	}
// 	inline float atan2(float y, float x){
// 		return atan2f(y, x);
// 	}
// 	inline float ceil (float x){
// 		return ceilf(x);
// 	}
// 	inline float cos  (float x){
// 		return cosf(x);
// 	}
// 	inline float cosh (float x){
// 		return coshf(x);
// 	}
// 	inline float exp  (float x){
// 		return expf(x);
// 	}
// 	inline float fabs (float x){
// 		return fabsf(x);
// 	}
// 	inline float floor(float x){
// 		return floorf(x);
// 	}
// 	inline float fmod (float x, float y){
// 		return fmodf(x, y);
// 	}
// 	inline float frexp(float x, int* exp){
// 		return frexpf(x, exp);
// 	}
// 	inline float ldexp(float x, int exp){
// 		return ldexpf(x, exp);
// 	}
// 	inline float log  (float x){
// 		return logf(x);
// 	}
// 	inline float log10(float x){
// 		return log10f(x);
// 	}
// 	inline float modf (float x, float* inptr){
// 		return modff(x, inptr);
// 	}
// 	inline float pow  (float x, float y){
// 		return powf(x, y);
// 	}
// #if 1 // DR 550 removed this
// 	inline float pow  (float x, int y){
// 		return pow((double)x, (double)y);
// 	}
// #endif
// 	inline float sin  (float x){
// 		return sinf(x);
// 	}
// 	inline float sinh (float x){
// 		return sinhf(x);
// 	}
// 	inline float sqrt (float x){
// 		return sqrtf(x);
// 	}
// 	inline float tan  (float x){
// 		return tanf(x);
// 	}
// 	inline float tanh (float x){
// 		return tanhf(x);
// 	}
// 	inline double abs(double x){
// 		return fabs(x);
// 	}
// 	inline double pow(double x, int y){
// 		return pow((double)x, (double)y);
// 	}

// # ifdef __UCLIBCXX_HAS_LONG_DOUBLE__
// 	inline long double abs  (long double x){
// 		return fabsl(x);
// 	}
// 	inline long double acos (long double x){
// 		return acosl(x);
// 	}
// 	inline long double asin (long double x){
// 		return asinl(x);
// 	}
// 	inline long double atan (long double x){
// 		return atanl(x);
// 	}
// 	inline long double atan2(long double y, long double x){
// 		return atan2l(y, x);
// 	}
// 	inline long double ceil (long double x){
// 		return ceill(x);
// 	}
// 	inline long double cos  (long double x){
// 		return cosl(x);
// 	}
// 	inline long double cosh (long double x){
// 		return coshl(x);
// 	}
// 	inline long double exp  (long double x){
// 		return expl(x);
// 	}
// 	inline long double fabs (long double x){
// 		return fabsl(x);
// 	}
// 	inline long double floor(long double x){
// 		return floorl(x);
// 	}
// 	inline long double frexp(long double x, int* exp){
// 		return frexpl(x, exp);
// 	}
// 	inline long double fmod (long double x, long double y){
// 		return fmodl(x, y);
// 	}
// 	inline long double ldexp(long double x, int y){
// 		return ldexpl(x, y);
// 	}
// 	inline long double log  (long double x){
// 		return logl(x);
// 	}
// 	inline long double log10(long double x){
// 		return log10l(x);
// 	}
// 	inline long double modf (long double x, long double* iptr){
// 		return modfl(x, iptr);
// 	}
// 	inline long double pow  (long double x, long double y){
// 		return powl(x, y);
// 	}
// 	inline long double pow  (long double x, int y){
// 		return powl(x, (long double)y );
// 	}
// 	inline long double sin  (long double x){
// 		return sinl(x);
// 	}
// 	inline long double sinh (long double x){
// 		return sinhl(x);
// 	}
// 	inline long double sqrt (long double x){
// 		return sqrtl(x);
// 	}
// 	inline long double tan  (long double x){
// 		return tanl(x);
// 	}
// 	inline long double tanh (long double x){
// 		return tanhl(x);
// 	}
// # endif	//	 __UCLIBCXX_HAS_LONG_DOUBLE__
// #endif	//	 __CORRECT_ISO_CPP_MATH_H_PROTO
// }

#endif	//__PDISTD_HEADER_CMATH

