From: Jens Maurer (jmaurer_at_[hidden])
Date: 2000-03-09 17:11:25
Here is the next round.
Changes relative to previous version:
- Made nearly every function global
- Implemented in(scalar, interval), subset(interval, interval),
proper_subset(interval, interval). Implementing the latter for
(scalar, interval) is not intuitive, if you need it, use
- Renamed do_overlap() to overlap()
- Implemented pos?? "possibly less/greater" comparison functions
- Renamed inv() to multiplicative_inverse()
- Added interval_traits_exceptions<>, automatically choose the
traits class depending on std::numeric_limits<>::traps (thanks
to Gabriel for the hint)
- Adapted to MSVC brokenness, added multipliable2<> dividable2<>
templates to operators.hpp (patch in the docvault)
- Specialization of std::less<>, giving a total order on
intervals. Suitable for std::map<>. Do we really need this?
- Updated acknowledgements.
Please have a look at the docvault, and please report back
if you have compiler trouble, especially with MSVC.
(1) Functions for the bounds. lower(i), inf(i), or
lower_bound(i) seem to be the current favourites. I'm still
for lower(i), however lower_bound(i) is used in the STL (with
a different number of parameters, though). I'll leave in
lower() for now.
(2) I would like to make isnan(interval) a free function (it's
now interval.is_nan()), however, it's a macro in my implementation
of ISO C99, which is crap. I'll probably make a free function
(3) I've left out pos_sect()/ neg_sect() (or *_half()),
because they should probably have positive/negative 0 as bounds,
but I cannot get at that reasonably, so I would have to extend
the traits class, which I don't like.
I'll post to the reliable_computing mailing list Friday evening
or Saturday morning.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk