Index: operation.hpp =================================================================== RCS file: /cvsroot/boost/boost/boost/numeric/ublas/operation.hpp,v retrieving revision 1.17 diff -u -r1.17 operation.hpp --- operation.hpp 21 Mar 2005 16:15:28 -0000 1.17 +++ operation.hpp 22 Mar 2005 13:10:55 -0000 @@ -38,7 +38,7 @@ typedef typename V::size_type size_type; typedef typename V::value_type value_type; - for (size_type i = 0; i < e1.filled1 (); ++ i) { + for (size_type i = 0; i < e1.filled1 () - 1; ++ i) { size_type begin = e1.index1_data () [i]; size_type end = e1.index1_data () [i + 1]; value_type t (v (i)); @@ -57,7 +57,7 @@ V &v, column_major_tag) { typedef typename V::size_type size_type; - for (size_type j = 0; j < e1.filled1 (); ++ j) { + for (size_type j = 0; j < e1.filled1 () - 1; ++ j) { size_type begin = e1.index1_data () [j]; size_type end = e1.index1_data () [j + 1]; for (size_type i = begin; i < end; ++ i) @@ -125,6 +125,7 @@ size_type col_index = layout_type::element2( e1.index1_data () [i], size1, e1.index2_data () [i], size2 ); v( row_index ) += e1.value_data () [i] * e2 () (col_index); } + return v; } template @@ -288,7 +289,7 @@ typedef typename V::size_type size_type; typedef typename V::value_type value_type; - for (size_type j = 0; j < e2.size2 (); ++ j) { + for (size_type j = 0; j < e2.filled1 () - 1; ++ j) { size_type begin = e2.index1_data () [j]; size_type end = e2.index1_data () [j + 1]; value_type t (v (j)); @@ -307,7 +308,7 @@ V &v, row_major_tag) { typedef typename V::size_type size_type; - for (size_type i = 0; i < e2.size1 (); ++ i) { + for (size_type i = 0; i < e2.filled1 () - 1; ++ i) { size_type begin = e2.index1_data () [i]; size_type end = e2.index1_data () [i + 1]; for (size_type j = begin; j < end; ++ j)