Boost logo

Boost :

From: Peter Dimov (pdimov_at_[hidden])
Date: 2001-11-07 07:28:56


From: "Ed Brey" <edbrey_at_[hidden]>
> From: "Peter Dimov" <pdimov_at_[hidden]>
>
> > [...]
> > > 1. Many constants are the return values of functions taking a certain
> > parameter. In a perfect world, these wouldn't be constants at all, but
> > would simply be written sqrt(2) or gamma(1/3.), or the like.
> >
> > sqrt(2) can be done by a boost::sqrt(int) that checks for the constants
it
> > recognizes. The rest will be computed on the fly.
>
> I thought about that, but it leads to the problem of the user needing to
know whether to use boost::sqrt or std::sqrt, since each would be faster in
its own situation.

No, std::sqrt fails for ints. boost::sqrt(float/double/etc) would simply
call std::sqrt (since equality comparisons on FP numbers are unreliable.)
boost::sqrt(int) would check for 'magic' numbers (i.e. argument is in [0,
512).)

The check will usually be faster than the int -> double conversion.

Of course now we have the problem with the return type of boost::sqrt(int).
;-)

--
Peter Dimov
Multi Media Ltd.

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk