libm lacks C99 functions -> no c++11 cmath in libstdc++

Steve Kargl sgk at troutmask.apl.washington.edu
Wed Jan 29 23:34:40 UTC 2014


On Thu, Jan 30, 2014 at 02:23:25AM +0400, Dmitry Marakasov wrote:
> * Steve Kargl (sgk at troutmask.apl.washington.edu) wrote:
> 
> > > > > - bad enough by itself, it affects libstdc++ from ports' gcc in such a
> > > > >   way that it disables C++11 math completely (along with a lot more
> > > > >   other more widely used math functions)
> > > > >
> > > > >
> > > > > - we may probably implement these by calling less-precise
> > > > >   erf erfc lgamma tgamma as we do with other functions as we alredy
> > > > >   do with some others
> > > > 
> > > > This, unfortuantely, has already been done, although it may only 
> > > > be available in FreeBSD-current.  See src/lib/msun/src/imprecise.c.
> > > 
> > > I know, it's available on 10.0 as well. However that's not the case for
> > > 9.x, for which it's impossible to build c++11 math using software (even
> > > if it doesn't use unimplemented functions), neither with system gcc
> > > nor with gcc from ports.
> > > 
> > 
> > It's not impossible.  Add whatever C++-fu you need
> > that is equivalent to
> > 
> > #include <math.h>
> > #ifndef fool
> > #define fool(x)	foo((double)(x))
> > #endif
> 
> The point was that one should not be required to do something like this
> to build std::hypot - using software on FreeBSD.
> 

My point is that specifically adding this #define
kludge to whatever software needs it is preferrable to
the travesty foisted on libm by msun/src/imprecise.c.
What imprecise.c does is not documented.

-- 
steve


More information about the freebsd-current mailing list