
On Tue, Sep 21, 2004 at 06:58:23PM +0200, Guillaume Melquiond wrote:
Le mar 21/09/2004 ? 18:16, Bronek Kozicki a ?crit :
Guillaume Melquiond wrote:
To fix these problems, I need to know where (header, namespace) the inverse hyperbolic functions acosh, asinh, atanh are defined for this platform/compiler/standard library. As a side note, the same question
it's not defined in MinGW at all. Here's relevant part of math.h
/* * TODO: asinh, acosh, atanh */
This math.h belongs to MinGW runtime. I have most recent version, mingw-runtime-3.3, released May 02, 2004. MD5 of my math.h is fad9df375a225e55f7b399c1481e683e, file size 21194 bytes, file time 2004-05-02 11:43.
Interestingly, the same mingw-runtime is used with GCC 3.3.1 (toolset "mingw" in tests I'm running) and all tests pass on this compiler. I guess some workaround is applied here?
The logic behind the inverse hyperbolic functions is in the numeric/interval/detail/bugs.hpp header. There are two parts: first finding if the three functions exist, then defining the namespace they lie in. The first part is:
#if defined(__GLIBC__) && !defined(__GLIBCPP__) && (defined(__USE_MISC) || defined(__USE_XOPEN_EXTENDED) || defined(__USE_ISOC99)) && !defined(__ICC) # define BOOST_HAS_INV_HYPERBOLIC #endif
This test is outdated, GCC 3.4 changed the stdlib macro from __GLIBCPP__ to __GLIBCXX__, so this test fails to catch GCC 3.4's stdlib.
However, in the meantime, could you tell me which test to add to the line so that the macro is not defined when MinGW is used?
Something like this: #if defined(__GLIBC__) && !(defined(__GLIBCPP__) || defined(__GLIBCXX__)) && (defined(__USE_MISC) || defined(__USE_XOPEN_EXTENDED) || defined(__USE_ISOC99)) && !defined(__ICC) # define BOOST_HAS_INV_HYPERBOLIC #endif jon -- "It is useless to attempt to reason a man out of a thing he was never reasoned into." - Jonathan Swift