[T106][ZXW-22]7520V3SCV2.01.01.02P42U09_VEC_V0.8_AP_VEC origin source commit
Change-Id: Ic6e05d89ecd62fc34f82b23dcf306c93764aec4b
diff --git a/ap/build/uClibc/libm/ldouble_wrappers.c b/ap/build/uClibc/libm/ldouble_wrappers.c
new file mode 100644
index 0000000..118a78f
--- /dev/null
+++ b/ap/build/uClibc/libm/ldouble_wrappers.c
@@ -0,0 +1,400 @@
+/* vi: set sw=4 ts=4: */
+/*
+ * Wrapper functions implementing all the long double math functions
+ * defined by SuSv3 by actually calling the double version of
+ * each function and then casting the result back to a long double
+ * to return to the user.
+ *
+ * Copyright (C) 2005 by Erik Andersen <andersen@uclibc.org>
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+#include <features.h>
+/* Prevent math.h from defining colliding inlines */
+#undef __USE_EXTERN_INLINES
+#include "math.h"
+#include <complex.h>
+
+#define WRAPPER1(func) \
+long double func##l(long double x) \
+{ \
+ return (long double) func((double) x); \
+}
+#define WRAPPER2(func) \
+long double func##l(long double x, long double y) \
+{ \
+ return (long double) func((double) x, (double) y); \
+}
+#define int_WRAPPER1(func) \
+int func##l(long double x) \
+{ \
+ return func((double) x); \
+}
+#define long_WRAPPER1(func) \
+long func##l(long double x) \
+{ \
+ return func((double) x); \
+}
+#define long_long_WRAPPER1(func) \
+long long func##l(long double x) \
+{ \
+ return func((double) x); \
+}
+
+/* Implement the following, as defined by SuSv3 */
+#if 0
+long double acoshl(long double);
+long double acosl(long double);
+long double asinhl(long double);
+long double asinl(long double);
+long double atan2l(long double, long double);
+long double atanhl(long double);
+long double atanl(long double);
+long double cargl(long double complex);
+long double cbrtl(long double);
+long double ceill(long double);
+long double copysignl(long double, long double);
+long double coshl(long double);
+long double cosl(long double);
+long double erfcl(long double);
+long double erfl(long double);
+long double exp2l(long double);
+long double expl(long double);
+long double expm1l(long double);
+long double fabsl(long double);
+long double fdiml(long double, long double);
+long double floorl(long double);
+long double fmal(long double, long double, long double);
+long double fmaxl(long double, long double);
+long double fminl(long double, long double);
+long double fmodl(long double, long double);
+long double frexpl(long double value, int *);
+long double hypotl(long double, long double);
+int ilogbl(long double);
+long double ldexpl(long double, int);
+long double lgammal(long double);
+long long llrintl(long double);
+long long llroundl(long double);
+long double log10l(long double);
+long double log1pl(long double);
+long double log2l(long double);
+long double logbl(long double);
+long double logl(long double);
+long lrintl(long double);
+long lroundl(long double);
+long double modfl(long double, long double *);
+long double nearbyintl(long double);
+long double nextafterl(long double, long double);
+long double nexttowardl(long double, long double);
+long double powl(long double, long double);
+long double remainderl(long double, long double);
+long double remquol(long double, long double, int *);
+long double rintl(long double);
+long double roundl(long double);
+long double scalblnl(long double, long);
+long double scalbnl(long double, int);
+long double sinhl(long double);
+long double sinl(long double);
+long double sqrtl(long double);
+long double tanhl(long double);
+long double tanl(long double);
+long double tgammal(long double);
+long double truncl(long double);
+#endif
+
+#ifdef L_acoshl
+WRAPPER1(acosh)
+#endif
+
+#ifdef L_acosl
+WRAPPER1(acos)
+#endif
+
+#ifdef L_asinhl
+WRAPPER1(asinh)
+#endif
+
+#ifdef L_asinl
+WRAPPER1(asin)
+#endif
+
+#ifdef L_atan2l
+WRAPPER2(atan2)
+#endif
+
+#ifdef L_atanhl
+WRAPPER1(atanh)
+#endif
+
+#ifdef L_atanl
+WRAPPER1(atan)
+#endif
+
+#ifdef L_cargl
+long double cargl (long double complex x)
+{
+ return (long double) carg( (double complex)x );
+}
+#endif
+
+#ifdef L_cbrtl
+WRAPPER1(cbrt)
+#endif
+
+#ifdef L_ceill
+WRAPPER1(ceil)
+#endif
+
+#ifdef L_copysignl
+WRAPPER2(copysign)
+#endif
+
+#ifdef L_coshl
+WRAPPER1(cosh)
+#endif
+
+#ifdef L_cosl
+WRAPPER1(cos)
+#endif
+
+#ifdef L_erfcl
+WRAPPER1(erfc)
+#endif
+
+#ifdef L_erfl
+WRAPPER1(erf)
+#endif
+
+#ifdef L_exp2l
+WRAPPER1(exp2)
+#endif
+
+#ifdef L_expl
+WRAPPER1(exp)
+#endif
+
+#ifdef L_expm1l
+WRAPPER1(expm1)
+#endif
+
+#ifdef L_fabsl
+WRAPPER1(fabs)
+#endif
+
+#ifdef L_fdiml
+WRAPPER2(fdim)
+#endif
+
+#ifdef L_floorl
+WRAPPER1(floor)
+#endif
+
+#ifdef L_fmal
+long double fmal (long double x, long double y, long double z)
+{
+ return (long double) fma( (double)x, (double)y, (double)z );
+}
+#endif
+
+#ifdef L_fmaxl
+WRAPPER2(fmax)
+#endif
+
+#ifdef L_fminl
+WRAPPER2(fmin)
+#endif
+
+#ifdef L_fmodl
+WRAPPER2(fmod)
+#endif
+
+#ifdef L_frexpl
+long double frexpl (long double x, int *ex)
+{
+ return (long double) frexp( (double)x, ex );
+}
+#endif
+
+#ifdef L_gammal
+WRAPPER1(gamma)
+#endif
+
+#ifdef L_hypotl
+WRAPPER2(hypot)
+#endif
+
+#ifdef L_ilogbl
+int_WRAPPER1(ilogb)
+#endif
+
+#ifdef L_ldexpl
+long double ldexpl (long double x, int ex)
+{
+ return (long double) ldexp( (double)x, ex );
+}
+#endif
+
+#ifdef L_lgammal
+WRAPPER1(lgamma)
+#endif
+
+#ifdef L_llrintl
+long_long_WRAPPER1(llrint)
+#endif
+
+#ifdef L_llroundl
+long_long_WRAPPER1(llround)
+#endif
+
+#ifdef L_log10l
+WRAPPER1(log10)
+#endif
+
+#ifdef L_log1pl
+WRAPPER1(log1p)
+#endif
+
+#ifdef L_log2l
+WRAPPER1(log2)
+#endif
+
+#ifdef L_logbl
+WRAPPER1(logb)
+#endif
+
+#ifdef L_logl
+WRAPPER1(log)
+#endif
+
+#ifdef L_lrintl
+long_WRAPPER1(lrint)
+#endif
+
+#ifdef L_lroundl
+long_WRAPPER1(lround)
+#endif
+
+#ifdef L_modfl
+long double modfl (long double x, long double *iptr)
+{
+ double y, result;
+ result = modf ( x, &y );
+ *iptr = (long double)y;
+ return (long double) result;
+}
+#endif
+
+#ifdef L_nearbyintl
+WRAPPER1(nearbyint)
+#endif
+
+#ifdef L_nextafterl
+WRAPPER2(nextafter)
+#endif
+
+/* Disabled in Makefile.in */
+#if 0 /* def L_nexttowardl */
+WRAPPER2(nexttoward)
+libm_hidden_def(nexttowardl)
+#endif
+
+#ifdef L_powl
+WRAPPER2(pow)
+#endif
+
+#ifdef L_remainderl
+WRAPPER2(remainder)
+#endif
+
+#ifdef L_remquol
+long double remquol (long double x, long double y, int *quo)
+{
+ return (long double) remquo( (double)x, (double)y, quo );
+}
+#endif
+
+#ifdef L_rintl
+WRAPPER1(rint)
+#endif
+
+#ifdef L_roundl
+WRAPPER1(round)
+#endif
+
+#ifdef L_scalblnl
+long double scalblnl (long double x, long ex)
+{
+ return (long double) scalbln( (double)x, ex );
+}
+#endif
+
+#ifdef L_scalbnl
+long double scalbnl (long double x, int ex)
+{
+ return (long double) scalbn( (double)x, ex );
+}
+#endif
+
+/* scalb is an obsolete function */
+
+#ifdef L_sinhl
+WRAPPER1(sinh)
+#endif
+
+#ifdef L_sinl
+WRAPPER1(sin)
+#endif
+
+#ifdef L_sqrtl
+WRAPPER1(sqrt)
+#endif
+
+#ifdef L_tanhl
+WRAPPER1(tanh)
+#endif
+
+#ifdef L_tanl
+WRAPPER1(tan)
+#endif
+
+#ifdef L_tgammal
+WRAPPER1(tgamma)
+#endif
+
+#ifdef L_truncl
+WRAPPER1(trunc)
+#endif
+
+#ifdef L_significandl
+WRAPPER1(significand)
+#endif
+
+#if defined __DO_C99_MATH__ && !defined __NO_LONG_DOUBLE_MATH
+
+# ifdef L___fpclassifyl
+int_WRAPPER1(__fpclassify)
+libm_hidden_def(__fpclassifyl)
+# endif
+
+# ifdef L___finitel
+int_WRAPPER1(__finite)
+libm_hidden_def(__finitel)
+# endif
+
+# ifdef L___signbitl
+int_WRAPPER1(__signbit)
+libm_hidden_def(__signbitl)
+# endif
+
+# ifdef L___isnanl
+int_WRAPPER1(__isnan)
+libm_hidden_def(__isnanl)
+# endif
+
+# ifdef L___isinfl
+int_WRAPPER1(__isinf)
+libm_hidden_def(__isinfl)
+# endif
+
+#endif