Modify

Ticket #688 (closed Bugs: fixed)

Opened 8 years ago

Last modified 7 years ago

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

Change History

comment:1 Changed 7 years ago by guwi17

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

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

comment:2 Changed 7 years ago by guwi17

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

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).

View

Add a comment

Modify Ticket

Change Properties
<Author field>
Action
as closed
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.