$OpenBSD: patch-knumber_knumber_float_cpp,v 1.3 2013/06/06 08:36:47 zhuk Exp $
--- knumber/knumber_float.cpp.orig	Tue May 28 23:30:01 2013
+++ knumber/knumber_float.cpp	Wed Jun  5 17:31:03 2013
@@ -44,11 +44,11 @@ const mpfr_prec_t knumber_float::precision     = 1024;
 template <double F(double)>
 knumber_base *knumber_float::execute_libc_func(double x) {
 	const double r = F(x);
-	if(isnan(r)) {
+	if(std::isnan(r)) {
 		knumber_error *e = new knumber_error(knumber_error::ERROR_UNDEFINED);
 		delete this;
 		return e;
-	} else if(isinf(r)) {
+	} else if(std::isinf(r)) {
 		knumber_error *e = new knumber_error(knumber_error::ERROR_POS_INFINITY);
 		delete this;
 		return e;
@@ -61,11 +61,11 @@ knumber_base *knumber_float::execute_libc_func(double 
 template <double F(double, double)>
 knumber_base *knumber_float::execute_libc_func(double x, double y) {
 	const double r = F(x, y);
-	if(isnan(r)) {
+	if(std::isnan(r)) {
 		knumber_error *e = new knumber_error(knumber_error::ERROR_UNDEFINED);
 		delete this;
 		return e;
-	} else if(isinf(r)) {
+	} else if(std::isinf(r)) {
 		knumber_error *e = new knumber_error(knumber_error::ERROR_POS_INFINITY);
 		delete this;
 		return e;
@@ -89,8 +89,8 @@ knumber_float::knumber_float(const QString &s) {
 //------------------------------------------------------------------------------
 knumber_float::knumber_float(double value) {
 
-	Q_ASSERT(!isinf(value));
-	Q_ASSERT(!isnan(value));
+	Q_ASSERT(!std::isinf(value));
+	Q_ASSERT(!std::isnan(value));
 
 	mpf_init_set_d(mpf_, value);
 }
@@ -101,8 +101,8 @@ knumber_float::knumber_float(double value) {
 //------------------------------------------------------------------------------
 knumber_float::knumber_float(long double value) {
 
-	Q_ASSERT(!isinf(value));
-	Q_ASSERT(!isnan(value));
+	Q_ASSERT(!std::isinf(value));
+	Q_ASSERT(!std::isnan(value));
 
 	mpf_init_set_d(mpf_, value);
 }
@@ -397,7 +397,7 @@ knumber_base *knumber_float::cbrt() {
 	mpfr_clear(mpfr);
 #else
 	const double x = mpf_get_d(mpf_);
-	if(isinf(x)) {
+	if(std::isinf(x)) {
 		delete this;
 		return new knumber_error(knumber_error::ERROR_POS_INFINITY);
 	} else {
@@ -440,7 +440,7 @@ knumber_base *knumber_float::sin() {
 	return this;
 #else
 	const double x = mpf_get_d(mpf_);
-	if(isinf(x)) {
+	if(std::isinf(x)) {
 		delete this;
 		return new knumber_error(knumber_error::ERROR_POS_INFINITY);
 	} else {
@@ -464,7 +464,7 @@ knumber_base *knumber_float::cos() {
 	return this;
 #else
 	const double x = mpf_get_d(mpf_);
-	if(isinf(x)) {
+	if(std::isinf(x)) {
 		delete this;
 		return new knumber_error(knumber_error::ERROR_POS_INFINITY);
 	} else {
@@ -487,7 +487,7 @@ knumber_base *knumber_float::tan() {
 	return this;
 #else
 	const double x = mpf_get_d(mpf_);
-	if(isinf(x)) {
+	if(std::isinf(x)) {
 		delete this;
 		return new knumber_error(knumber_error::ERROR_POS_INFINITY);
 	} else {
@@ -514,7 +514,7 @@ knumber_base *knumber_float::asin() {
 	return this;
 #else
 	const double x = mpf_get_d(mpf_);
-	if(isinf(x)) {
+	if(std::isinf(x)) {
 		delete this;
 		return new knumber_error(knumber_error::ERROR_POS_INFINITY);
 	} else {
@@ -541,7 +541,7 @@ knumber_base *knumber_float::acos() {
 	return this;
 #else
 	const double x = mpf_get_d(mpf_);
-	if(isinf(x)) {
+	if(std::isinf(x)) {
 		delete this;
 		return new knumber_error(knumber_error::ERROR_POS_INFINITY);
 	} else {
@@ -564,7 +564,7 @@ knumber_base *knumber_float::atan() {
 	return this;
 #else
 	const double x = mpf_get_d(mpf_);
-	if(isinf(x)) {
+	if(std::isinf(x)) {
 		delete this;
 		return new knumber_error(knumber_error::ERROR_POS_INFINITY);
 	} else {
@@ -808,7 +808,7 @@ knumber_base *knumber_float::log2() {
 	return this;
 #else
 	const double x = mpf_get_d(mpf_);
-	if(isinf(x)) {
+	if(std::isinf(x)) {
 		delete this;
 		return new knumber_error(knumber_error::ERROR_POS_INFINITY);
 	} else {
@@ -830,7 +830,7 @@ knumber_base *knumber_float::log10() {
 	return this;
 #else
 	const double x = mpf_get_d(mpf_);
-	if(isinf(x)) {
+	if(std::isinf(x)) {
 		delete this;
 		return new knumber_error(knumber_error::ERROR_POS_INFINITY);
 	} else {
@@ -852,7 +852,7 @@ knumber_base *knumber_float::ln() {
 	return this;
 #else
 	const double x = mpf_get_d(mpf_);
-	if(isinf(x)) {
+	if(std::isinf(x)) {
 		delete this;
 		return new knumber_error(knumber_error::ERROR_POS_INFINITY);
 	} else {
@@ -874,7 +874,7 @@ knumber_base *knumber_float::exp2() {
 	return this;
 #else
 	const double x = mpf_get_d(mpf_);
-	if(isinf(x)) {
+	if(std::isinf(x)) {
 		delete this;
 		return new knumber_error(knumber_error::ERROR_POS_INFINITY);
 	} else {
@@ -896,11 +896,12 @@ knumber_base *knumber_float::exp10() {
 	return this;
 #else
 	const double x = mpf_get_d(mpf_);
-	if(isinf(x)) {
+	if(std::isinf(x)) {
 		delete this;
 		return new knumber_error(knumber_error::ERROR_POS_INFINITY);
 	} else {
-		return execute_libc_func< ::exp10>(x);
+		// exp10 is glibc-specific extension, avoid it
+		return execute_libc_func< ::pow>(10, x);
 	}
 #endif
 }
@@ -918,7 +919,7 @@ knumber_base *knumber_float::exp() {
 	return this;
 #else
 	const double x = mpf_get_d(mpf_);
-	if(isinf(x)) {
+	if(std::isinf(x)) {
 		delete this;
 		return new knumber_error(knumber_error::ERROR_POS_INFINITY);
 	} else {
