Boost logo

Boost Users :

Subject: [Boost-users] Using boost with PathScale v4.x under Linux
From: Roberto Fichera (kernel_at_[hidden])
Date: 2012-02-29 04:49:01


Hi there,

I've compiled the last boost v1.49 against PathScale v4.x compiler under 64bit linux distribution,
but when compiling certain library that uses the boost/numeric/interval/rounded_transc.hpp
include file, I end up on getting some error regarding asinh(), acosh() and atanh() which were
searched in the std namespace. Compiling the same library against g++ or MSVC goes pretty
straight without problems.

/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp: In member function 'T
boost::numeric::interval_lib::rounded_transc_exact<T, Rounding>::asinh_down(const T&)':
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp:42: error: 'std::asinh' has not been declared
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp: In member function 'T
boost::numeric::interval_lib::rounded_transc_exact<T, Rounding>::asinh_up(const T&)':
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp:42: error: 'std::asinh' has not been declared
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp: In member function 'T
boost::numeric::interval_lib::rounded_transc_exact<T, Rounding>::acosh_down(const T&)':
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp:43: error: 'std::acosh' has not been declared
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp: In member function 'T
boost::numeric::interval_lib::rounded_transc_exact<T, Rounding>::acosh_up(const T&)':
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp:43: error: 'std::acosh' has not been declared
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp: In member function 'T
boost::numeric::interval_lib::rounded_transc_exact<T, Rounding>::atanh_down(const T&)':
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp:44: error: 'std::atanh' has not been declared
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp: In member function 'T
boost::numeric::interval_lib::rounded_transc_exact<T, Rounding>::atanh_up(const T&)':
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp:44: error: 'std::atanh' has not been declared
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp: In member function 'T
boost::numeric::interval_lib::rounded_transc_std<T, Rounding>::asinh_down(const T&)':
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp:77: error: 'std::asinh' has not been declared
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp: In member function 'T
boost::numeric::interval_lib::rounded_transc_std<T, Rounding>::asinh_up(const T&)':
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp:77: error: 'std::asinh' has not been declared
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp: In member function 'T
boost::numeric::interval_lib::rounded_transc_std<T, Rounding>::acosh_down(const T&)':
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp:78: error: 'std::acosh' has not been declared
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp: In member function 'T
boost::numeric::interval_lib::rounded_transc_std<T, Rounding>::acosh_up(const T&)':
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp:78: error: 'std::acosh' has not been declared
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp: In member function 'T
boost::numeric::interval_lib::rounded_transc_std<T, Rounding>::atanh_down(const T&)':
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp:79: error: 'std::atanh' has not been declared
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp: In member function 'T
boost::numeric::interval_lib::rounded_transc_std<T, Rounding>::atanh_up(const T&)':
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp:79: error: 'std::atanh' has not been declared
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp: In member function 'T
boost::numeric::interval_lib::rounded_transc_opp<T, Rounding>::asinh_down(const T&)':
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp:122: error: 'std::asinh' has not been declared
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp: In member function 'T
boost::numeric::interval_lib::rounded_transc_opp<T, Rounding>::asinh_up(const T&)':
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp:122: error: 'std::asinh' has not been declared
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp: In member function 'T
boost::numeric::interval_lib::rounded_transc_opp<T, Rounding>::atanh_down(const T&)':
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp:123: error: 'std::atanh' has not been declared
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp: In member function 'T
boost::numeric::interval_lib::rounded_transc_opp<T, Rounding>::atanh_up(const T&)':
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp:123: error: 'std::atanh' has not been declared
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp: In member function 'T
boost::numeric::interval_lib::rounded_transc_opp<T, Rounding>::acosh_down(const T&)':
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp:132: error: 'std::acosh' has not been declared
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp: In member function 'T
boost::numeric::interval_lib::rounded_transc_opp<T, Rounding>::acosh_up(const T&)':
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp:132: error: 'std::acosh' has not been declared

Thus, I had a look in the boost include file boost/numeric/interval/detail/bugs.hpp and look like
that apply the patch below fixes the compilation error:

--- numeric/interval/detail/bugs.hpp.orig 2012-02-29 10:44:06.876597264 +0100
+++ numeric/interval/detail/bugs.hpp 2012-02-29 10:18:42.831581398 +0100
@@ -25,7 +25,7 @@
 #else
 # define BOOST_NUMERIC_INTERVAL_using_math(a) using std::a
 # if defined(BOOST_HAS_INV_HYPERBOLIC)
-# if defined(__GLIBCPP__) || defined(__GLIBCXX__)
+# if defined(__GLIBCPP__) || defined(__GLIBCXX__) || defined(__GLIBC__)
 # define BOOST_NUMERIC_INTERVAL_using_ahyp(a) using ::a
 # else
 # define BOOST_NUMERIC_INTERVAL_using_ahyp(a) using std::a

does anyone can comment?

Thanks in advance,
Roberto Fichera.


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net