Modify

Opened 11 years ago

Closed 10 years ago

#688 closed Bugs (fixed)

ublas: bug in mapped_vector_of_mapped_vector

Reported by: troyer Owned by: guwi17
Milestone: Component: uBLAS
Version: None Severity: Problem
Keywords: Cc:

Description

There is a serious bug in the mapped_vector_of_mapped_vector spare  
matrix type. Rows containing only zero elements are not treated  
correctly in prod(). The following code should give a vector that  
contains only 1 in the last element. Instead prod() gives a vector  
containing 1 in each element. In debug mode this bug is found by the  
checks:

Check failed in file boost/boost/numeric/ublas/detail/ 
vector_assign.hpp at line 371:
detail::expression_type_check (v, cv)
Aborted

The bug appears in Boost 1.33 as well as in the CVS version


#include <boost/numeric/ublas/matrix_sparse.hpp>
#include <boost/numeric/ublas/vector.hpp>

int main()
{
   boost::numeric::ublas::mapped_vector_of_mapped_vector<double> 
m 
(64,64);
   boost::numeric::ublas::vector<double> v(64);
   boost::numeric::ublas::vector<double> w(64);
   v[63] = 1.;
   m(63,63) = 1.;
   w = boost::numeric::ublas::prod(m,v);
}


Attachments (0)

Change History (2)

comment:1 Changed 10 years ago by guwi17

  • Owner changed from mistevens to guwi17
  • Severity set to Problem
  • Status changed from assigned to new

the issue was already solved at 07.11.2006 but the patch was never commited.

comment:2 Changed 10 years ago by guwi17

  • Resolution changed from None to fixed
  • Status changed from new to closed

patch commited to SVN. See thread "Serious bug in mapped_vector_of_mapped_vector" of uBLAS mailing list (from sept. 2006!)

On Thursday 07 September 2006 14:04, Gunter Winkler wrote:

On Sunday 23 July 2006 11:13, Matthias Troyer wrote:

There is a serious bug in the mapped_vector_of_mapped_vector spare matrix type. Rows containing only zero elements are not treated correctly in prod(). The following code should give a vector that contains only 1 in the last element. Instead prod() gives a vector containing 1 in each element. In debug mode this bug is found by the

I could reproduce the bug. It is inside the vector_assign logic. The product is correctly computed, but the assignment fails. I will give more details shortly.

I finally found the bug and (hopefully) fixed it. The patch and sample program is attached. Is someone using mapped_vector_of_mapped_vector in a larger program? I'd like to know if the changes have any unexpected side affect.

I changed the behavior of the iterators: Even the outer iterators skip empty rows (or columns).

Add Comment

Modify Ticket

Change Properties
Set your email in Preferences
Action
as closed The owner will remain guwi17.
The resolution will be deleted. Next status will be 'reopened'.
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.