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.