Boost logo

Boost :

From: Gennaro Prota (gennaro_prota_at_[hidden])
Date: 2003-06-18 09:45:18


On Wed, 18 Jun 2003 15:15:24 +0100, "Paul A Bristow"
<boost_at_[hidden]> wrote:

[...]

>Maximum possible accuracy is a central feature,
>promising the best possible portability,
>especially for intervals where every really bit really counts.
>
>It was also agree that any casting to obtain other types did not
>garanteed accuracy and this was why the proposed code uses namespaces
>to allow selection of the FP size either individually:

In Daniel's solution static_cast<type>(x) simply "selects" the
corresponding specialization of x_value. So

  static_cast<float>(pi)

is fundamentally different from, say,

  double pi = ...;
  static_cast<float>(pi)

[...]
>
>Although your operators are neat, speeding -sin(pi/two),
>my suspicion is that it is better to pre-calculate as many
>constants as possible, and as accurately as possible.
>I don't think this counts as "premature optimisation" :-)

In fact it's not a matter of speed, but of precision. I'm sure there
are compilers where the -sin(pi/2.) in the example code is faster than
-sin(pi/two ). However an overload allows you to specify that the
value of, say, arccos(-1) [math::acos(minus_one)] is exactly pi.

Genny.


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