
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 It was written by Jens Maurer something like four years ago. It is quite a ugly preprocessor code. And I must say I was quite happy to let it live as it was until now. Moreover, since these functions are in fact seldom used, nobody ever complained that there was no support for them on their particular platform. I can't even understand why the functions are declared non-existent for your GCC 3.3.1 compiler. Maybe it is time to put such a macro in the config subsystem and to do the detection properly. 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? Best regards, Guillaume