Opened 16 years ago
Closed 15 years ago
#688 closed Bugs (fixed)
ublas: bug in mapped_vector_of_mapped_vector
| Reported by: | Matthias Troyer | Owned by: | Gunter |
|---|---|---|---|
| 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);
}
Change History (2)
comment:1 by , 15 years ago
| Owner: | changed from to |
|---|---|
| Severity: | → Problem |
| Status: | assigned → new |
comment:2 by , 15 years ago
| Resolution: | None → fixed |
|---|---|
| Status: | new → 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).

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