Boost logo

Ublas :

From: Thomas Lemaire (thomas.lemaire_at_[hidden])
Date: 2004-12-15 03:00:57


I did not manage to reproduce what I described... Maybie I got it wrong
when I assigned two parts of the symmetric matrix which are not
independant. But even in this case, why was the "equals (m, cm)" not met ?

thomas

Toon Knapen wrote:
> Could you provide a _small_ testcase that triggers this behaviour ?
>
>
> Thomas Lemaire wrote:
>
>> Again, a mail I sent to boost-dev...
>>
>> dear list,
>>
>> I am using ublas from boost 1.32, gcc 3.3.3, solaris 9
>>
>> I need to copy some independant submatrix (matrix_range) of a
>> symmetric matrix. I use the assign() method to do so. first, I compile
>> without NDEBUG, and a postcondition check in assignment is not met...
>>
>> Assertion failed in file
>> /usr/local/boost/include/boost/numeric/ublas/matrix_assign.hpp at line
>> 797:
>> equals (m, cm)
>> E: src/slamEkf.cpp:325: std::exception
>> ** std::exception: **
>> external logic
>>
>> I checked that compiling with NDEBUG the assignement is not correct.
>>
>> If I copy the two submatrix using a stupid for loop, it works...
>>
>> I use the default version of symmetric_matric (lower), and I assign
>> _upper_ part of the matrix. I tried to assign the _lower_ part of the
>> matrix and it works !
>>
>> nothing in the doc tells that using the assign() functions is
>> different with symmetric_matrix... this problem arises only when
>> assigning a submatrix to another submatrix. When assigning an
>> expression to a submatrix in the _upper_ part of the lower symmetric
>> matrix it works fine.
>>
>> Is it a bug, or a feature ??
>
>

-- 
thomas