Boost logo

Boost :

From: Guillaume Melquiond (guillaume.melquiond_at_[hidden])
Date: 2004-09-21 11:58:23

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)

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,


Boost list run by bdawes at, gregod at, cpdaniel at, john at