Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/llvm/llvm-project.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Chisnall <csdavec@swan.ac.uk>2012-02-29 17:05:08 +0400
committerDavid Chisnall <csdavec@swan.ac.uk>2012-02-29 17:05:08 +0400
commit14c25b80e9be5aab9b503a53f810c5bbffe4d632 (patch)
tree199ca992efe98f7ab5e558763404fe70f488dd1c /libcxx/include/cmath
parent66d45737860948d34b3f7e46d6d571a9de6cb22c (diff)
Solaris port. Currently sees around 200 test failures, mostly related to
Solaris not providing some of the locales that the test suite uses. Note: This depends on an xlocale (partial) implementation for Solaris and a couple of fixed standard headers. These will be committed to a branch later today. llvm-svn: 151720
Diffstat (limited to 'libcxx/include/cmath')
-rw-r--r--libcxx/include/cmath34
1 files changed, 33 insertions, 1 deletions
diff --git a/libcxx/include/cmath b/libcxx/include/cmath
index f0b985c8b0df..50316bd5e523 100644
--- a/libcxx/include/cmath
+++ b/libcxx/include/cmath
@@ -646,13 +646,17 @@ using ::isunordered;
using ::float_t;
using ::double_t;
+#ifndef __sun__
// abs
+#endif // __sun__
template <class _A1>
inline _LIBCPP_INLINE_VISIBILITY
typename enable_if<is_floating_point<_A1>::value, _A1>::type
abs(_A1 __x) {return fabs(__x);}
+#ifndef __sun__
+
// acos
using ::acos;
@@ -769,16 +773,20 @@ inline _LIBCPP_INLINE_VISIBILITY
typename enable_if<is_integral<_A1>::value, double>::type
cosh(_A1 __x) {return cosh((double)__x);}
+#endif // __sun__
// exp
using ::exp;
using ::expf;
+#ifndef __sun__
+
#ifndef _MSC_VER
inline _LIBCPP_INLINE_VISIBILITY float exp(float __x) {return expf(__x);}
inline _LIBCPP_INLINE_VISIBILITY long double exp(long double __x) {return expl(__x);}
#endif
+
template <class _A1>
inline _LIBCPP_INLINE_VISIBILITY
typename enable_if<is_integral<_A1>::value, double>::type
@@ -816,8 +824,10 @@ floor(_A1 __x) {return floor((double)__x);}
// fmod
+#endif //__sun__
using ::fmod;
using ::fmodf;
+#ifndef __sun__
#ifndef _MSC_VER
inline _LIBCPP_INLINE_VISIBILITY float fmod(float __x, float __y) {return fmodf(__x, __y);}
@@ -840,6 +850,7 @@ fmod(_A1 __x, _A2 __y)
return fmod((__result_type)__x, (__result_type)__y);
}
+
// frexp
using ::frexp;
@@ -872,8 +883,10 @@ ldexp(_A1 __x, int __e) {return ldexp((double)__x, __e);}
// log
+#endif // __sun__
using ::log;
using ::logf;
+#ifndef __sun__
#ifndef _MSC_VER
inline _LIBCPP_INLINE_VISIBILITY float log(float __x) {return logf(__x);}
@@ -885,6 +898,7 @@ inline _LIBCPP_INLINE_VISIBILITY
typename enable_if<is_integral<_A1>::value, double>::type
log(_A1 __x) {return log((double)__x);}
+
// log10
using ::log10;
@@ -912,9 +926,12 @@ inline _LIBCPP_INLINE_VISIBILITY long double modf(long double __x, long double*
// pow
+#endif // __sun__
using ::pow;
using ::powf;
+#ifndef __sun__
+
#ifndef _MSC_VER
inline _LIBCPP_INLINE_VISIBILITY float pow(float __x, float __y) {return powf(__x, __y);}
inline _LIBCPP_INLINE_VISIBILITY long double pow(long double __x, long double __y) {return powl(__x, __y);}
@@ -936,6 +953,7 @@ pow(_A1 __x, _A2 __y)
return pow((__result_type)__x, (__result_type)__y);
}
+
// sin
using ::sin;
@@ -968,10 +986,12 @@ sinh(_A1 __x) {return sinh((double)__x);}
// sqrt
+#endif // __sun__
using ::sqrt;
using ::sqrtf;
-#ifndef _MSC_VER
+
+#if !(defined(_MSC_VER) || defined(__sun__))
inline _LIBCPP_INLINE_VISIBILITY float sqrt(float __x) {return sqrtf(__x);}
inline _LIBCPP_INLINE_VISIBILITY long double sqrt(long double __x) {return sqrtl(__x);}
#endif
@@ -981,10 +1001,14 @@ inline _LIBCPP_INLINE_VISIBILITY
typename enable_if<is_integral<_A1>::value, double>::type
sqrt(_A1 __x) {return sqrt((double)__x);}
+#ifndef __sun__
+
// tan
+#endif // __sun__
using ::tan;
using ::tanf;
+#ifndef __sun__
#ifndef _MSC_VER
inline _LIBCPP_INLINE_VISIBILITY float tan(float __x) {return tanf(__x);}
@@ -1294,11 +1318,13 @@ using ::lgammaf;
inline _LIBCPP_INLINE_VISIBILITY float lgamma(float __x) {return lgammaf(__x);}
inline _LIBCPP_INLINE_VISIBILITY long double lgamma(long double __x) {return lgammal(__x);}
+
template <class _A1>
inline _LIBCPP_INLINE_VISIBILITY
typename enable_if<is_integral<_A1>::value, double>::type
lgamma(_A1 __x) {return lgamma((double)__x);}
+
// llrint
using ::llrint;
@@ -1392,8 +1418,10 @@ lround(_A1 __x) {return lround((double)__x);}
// nan
+#endif // __sun__
using ::nan;
using ::nanf;
+#ifndef __sun__
// nearbyint
@@ -1635,6 +1663,10 @@ using ::tgammal;
using ::truncl;
#endif // !_MSC_VER
+#else
+using ::lgamma;
+using ::lgammaf;
+#endif // __sun__
_LIBCPP_END_NAMESPACE_STD
#endif // _LIBCPP_CMATH