Boost logo

Boost :

Subject: Re: [boost] Review Request: Boost.Itl; The Interval Template Library
From: Joachim Faulhaber (afojgo_at_[hidden])
Date: 2009-09-21 14:47:35


2009/9/21 Markus Werle <numerical.simulation_at_[hidden]>:
> Joachim Faulhaber <afojgo <at> googlemail.com> writes:
>
>>
>> the Interval Template Library is now in a state
>> where I think it does conform the requirements
>> and guidelines for boost libraries fairly well.
>
> Actually I am very unlucky with the name "itl".
>
> 1. Any boost library is using templates, so using "Template" in the library
> name is somewhat redundant. Same with "Library". All boost components
> are libraries, except Boost.Build and Boost.Book
>
isn't it amazing how much redundancy can be put into
such a short name ;-)

Joking aside -- you are addressing a good point.
Names should be concise. The *tl naming fashion
is surely widespread and carries unnecessary redundancy.
Yet it is very tempting for an author of a generic
library to follow the footsteps of the giant ancestor (stl).

Itl is a working title for me and after using it for more than
two years now in postings and titles like in my talk in the
boostcon09 it has gathered some recognition, so I am not
going to change it lightly.

But I agree, there may be other suitable names that
can be precise and more appropriate.

> Remains "Interval" which is already in use:
> http://www.boost.org/doc/libs/1_40_0/libs/numeric/interval/doc/interval.htm
>
> Can you please take the time to explain the difference in math and
> aim of the lib compared to Boost.Interval?
>

There are two major differences between boost::numeric::intervals
and itl::intervals.

(1) A numeric::interval from the boost Interval Arithmetic Library
works on intervals of (floating point) numbers.
    An itl::interval can be instantiated with numeric and
non numeric data types. The only requirement for an
itl::interval<T> is that there is a strict weak ordering on T.
So an itl::interval can be instantiated with floating point
numbers, intergral numbers, std::strings and many types
more.

(2) boost::numeric::intervals are always closed: They
contain their lower and upper bound.
    Itl::intervals can have open or closed bounds. This
property is decisive for the design of the itl, because
we want to combine e.g. intervals [0.0, 1.0) and [1.0, 2.0]
and decide if those intervals are combinable to single new
interval, if they abut without intersecting e.t.c.

Boost::numeric::interval and itl::interval can coexist
nicely, because of their different scopes and purposes.
While boost::numeric::interval implements interval
arithmetic itl::interval does not aim to implement
interval arithmetic at all.

The aim of itl::intervals is to model sets of values
that occur between a lower and upper bound w.r.t.
a given order.

> 2. ITL is already in use for the iterative template library
> http://www.osl.iu.edu/research/itl/
> which has functionality that should enter boost within the next decade - IMHO.
> (Where its name will be "iterative"? or "krylov_subspace_methods"? ...)
>
> My plea: Try to find a unique name, not something that gives you
> 4.710.000 hits on google.
>
I am not worrying about the number of hits. Yet I am going to
consider your plea because your arguments are justified.

> Besides that I find your library promising and will try to use it
> in a future project.
>
Good! Let me know about your experiences, critics and suggestions.

Cheers
Joachim


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