Boost logo

Boost :

From: Joerg Walter (jhr.walter_at_[hidden])
Date: 2002-09-07 07:01:12

----- Original Message -----
From: "Beman Dawes" <bdawes_at_[hidden]>
To: "Boost main mailing list" <boost_at_[hidden]>
Sent: Friday, September 06, 2002 10:37 PM
Subject: [boost] Interval Library reminder

> The Formal Review period of the Interval Library ends on Monday, September
> 9.
> While there has been a lot of discussion of comparison operator issues, we
> need more reviews of the library in its entirety.


Here is my trial to review the interval library. I'll answer the questions
as listed at the boost website.

- What is your evaluation of the design?

I'm not a domain expert, so I didn't try to evaluate the design as a whole.
I tried to evaluate the usefulness of the library as a generic component,
porting an uBLAS test and an uBLAS benchmark to use intervals of floating
point numbers instead of floating point numbers. This worked seamlessly. So
the design is intuitive and seems appropriate.

Remark: the documentation states

Conversion from interval<T1> to interval<T>. There is no such conversion in
the library. Specifically, there is no way to change the base number type
without explicitly casting both the lower and upper bounds from T1 to T2 and
using a constructor.
I understand the reasoning behind this decision for truncating conversions
(i.e. conversion of interval<double> to interval<float>), but it should be
possible to support some kind of mixed operations (i.e. interval<double> =
interval<double> + interval<float>). If I'm not mistaken, the library is not
designed to support mixed operations. This is a severe limitation IMHO.
- What is your evaluation of the implementation?
I skimmed the implementation and it looked fine to me.
- What is your evaluation of the documentation?
The documentation seems to be comprehensive and comprehensible.
- What is your evaluation of the potential usefulness of the library?
The library is surely useful for verified numerical computing.
- Did you try to use the library?  With what compiler?  Did you have any
I checked the implementation with GCC 3.1 under Linux on a Intel CPU. I had
some problems building parts of the supplied examples and tests, but didn't
investigate further.
Everything else worked fine, the results looked reasonable, the performance
was acceptable even without the unprotected rounding optimization.
Remark: the documentation states
There are some issues with Borland on x86 (Windows), and Visual C++ which
we're working on. We know some workarounds but they wouldn't be portable
enough to put into the library.
I don't understand the second sentence and therefore have to assume, that
the problems with BCC and MSVC aren't solvable through conditional
compilation. That's sad.
- How much effort did you put into your evaluation? A glance? A quick
reading? In-depth study?
I didn't spent enough time to evaluate it ;-(.
- Are you knowledgeable about the problem domain?
I've some mathematical background.
- Do you think the library should be accepted as a Boost library?
Yes, provided the mixed operation problem will be considered.
P.S.: I've seen another severe restriction, but I don't believe that this is
a problem of the interval library. It isn't possible to instantiate
std::complex<interval<float> >. How shall we cope with this?

Boost list run by bdawes at, gregod at, cpdaniel at, john at