$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: helmut.zeisel_at_[hidden]
Date: 2001-06-29 02:23:36
--- In boost_at_y..., Daryle Walker <darylew_at_m...> wrote:
> 
> Are we starting it now?  I guess the structure could be:
> 
> - BOOST_ROOT
>     - boost
>         - math
>             quaternion.hpp
>             octonion.hpp
>             advanced_trignometric.hpp (atanh, sinc_pi, sinhc_pi)
>             rational.hpp
>     - libs
>         - math
>             - doc
>                 quaternion.html
>                 octonion.html
>                 advanced_trignometric.html
>                 rational.html
>               index.html
>             + src
>             + test
> 
How would you handle functions that might have slightly different
implementations depending on the domain?
Look at pow(T x,I n):
it is defined for every integer n if T is
a group (e.g. x is float),
it is defined only for non-negative n if T is a monoid
(e.g. x is int),
and it is defined only for n>0 of T is a semigroup.
Similar things apply to binomial coefficients:
binom(m,n)=binom(m,m-n) if both m and n are integral,
but binom(x,n) != binom(x,x-n) (the latter is not defined)
if x is float.
One solution might be to have a
group::pow,
monoid::pow,
and semigroup::pow.
This might be easier to implement than
to have clever template specialisation techniques
the derive the respective algorithm from the template types.
Helmut