Boost logo

Ublas :

From: Paul C. Leopardi (leopardi_at_[hidden])
Date: 2005-07-19 09:38:33


Hi Michael, my responses below. Best regards
On Tue, 19 Jul 2005 06:23 pm, Michael Stevens wrote:
> I am a bit confused. It would good if we could test against the pending
> Boost 1.33 release
I am a little confused myself. GluCat 0.1.9 works with Boost 1.31 and works
with the uBLAS directory of Boost CVS, but does not work with Boost 1.32.
But Boost CVS is later than Boost 1.32.

Also, how do I test with the pending Boost 1.33? Isn't this the same as Boost
CVS? Or do I need to do an update with a special tag?

> On Sunday 17 July 2005 12:40, Paul C. Leopardi wrote:
...
> > Where is the best place to obtain a list of changes in uBLAS between
> > Boost 1.31.0 and Boost 1.32.0? Is it CVS?
...
> Raw diffs are probably not of any use due to code re-arrangements and a
> multitude of minor syntax changes. The commit comments are more useful but
> hard to extract out of CVS other then on a per file basis.

OK. I understand. I used cvs2cl.pl in the updated ublas directory and this
gave me a Changelog file going back to 2001. I will look at this.
For cvs2cl.pl, see http://www.red-bean.com/cvs2cl/

> > It would also help if someone else could reproduce my results. GluCat
> > 0.1.8, currently on SourceForge, is not compatible with Boost 1.32.0. I
> > have attached to this message the relevant patches to GluCat 0.1.8 to
> > enable it to compile with Boost 1.32.0. I call the patched version GluCat
> > 0.1.9. The essential change in both configure and glucat.h is to remove
> > the line containing
> > #include <boost/numeric/ublas/config.hpp>
> >
> > Hopefully this investigation will come up with a set of assumptions made
> > in GluCat which are violated in the Boost 1.32.0 version of uBLAS.
>
> The most likely candidate for your problem is an uninitialised
> vector/matrix element. uBLAS now NEVER initialises Dense Vector or Matrix
> elements. This change happened with the cleanup of the Storage Concept.
> Since I always derive my own vector/matrix types from uBLAS bases I find
> the following idiom very handy to track down uninitialised elements.
>
> explicit FMVec(typename VecBase::size_type size) : VecBase(size)
> { // Sized constructor
> assign (ublas::scalar_vector<value_type>(size,
> std::numeric_limits<value_type>::signaling_NaN()));
> }

OK, but I'm still puzzled as to why the CVS version works when 1.32.0 does
not. From the dates on files in the 1.32.0 ublas directory and from the
Changelog, I am assuming that changes before and including 5 November 2004
made it into 1.32.0, and changes after this date are in the CVS version only.
For example, the ublas_pure merge was January and the fixes which now never
initialize vectors/matrces were in February, and these changes are in CVS
only, and not in 1.32.0. Is this correct?