Boost logo

Ublas :

From: Chen Jiusheng (atitos_at_[hidden])
Date: 2005-11-10 09:09:45


Hi
        
     I writed a small piece of codes here

/////////////////////////////////////////////////////////////////
#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/matrix_proxy.hpp>
#include <boost/numeric/ublas/io.hpp>

#include <boost/numeric/ublas/storage.hpp> //range

#include <boost/numeric/ublas/matrix_sparse.hpp> //sparse matrix

int main () {
    using namespace boost::numeric::ublas;
    coordinate_matrix<double> m (3, 3); //matrix<double> works well
    for (unsigned i = 0; i < m.size1 (); ++ i)
        for (unsigned j = 0; j < m.size2 (); ++ j)
            m (i, j) = 3 * i + j;

        std::cout<< m << std::endl;

        m.resize(4, 3); //root of evil
        std::cout<< m << std::endl;
}

these codes generate a runtime error, here is the error message:

[3,3]((0,1,2),(3,4,5),(6,7,8))
Assertion failed in file D:\Work\Algos\Boost\boost_1_33_0\boost/numeric/ublas/m
trix_sparse.hpp at line 4002:
!preserve

δ´¦ÀíµÄÒì³££º System.Runtime.InteropServices.SEHException: Íⲿ×é¼þ·¢ÉúÒì³£¡£
   at _CxxThrowException(Void* , _s__ThrowInfo* )
   at boost.numeric.ublas.internal_logic.raise(internal_logic* ) in d:\work\alg
s\boost\boost_1_33_0\boost\numeric\ublas\exception.hpp:line 62
   at boost.numeric.ublas.coordinate_matrix<double,boost::numeric::ublas::basic
row_major<unsigned int,int>,0,boost::numeric::ublas::unbounded_array<unsigned i
t,std::allocator<unsigned int> >,boost::numeric::ublas::unbounded_array<double,
td::allocator<double> > >.resize(coordinate_matrix<double,boost::numeric::ublas
:basic_row_major<unsigned int,int>,0,boost::numeric::ublas::unbounded_array<uns
gned int,std::allocator<unsigned int> >,boost::numeric::ublas::unbounded_array<
ouble,std::allocator<double> > >* , UInt32 size1, UInt32 size2, Boolean preserv
) in d:\work\algos\boost\boost_1_33_0\boost\numeric\ublas\matrix_sparse.hpp:lin
 4002
   at main() in d:\work\mfa\codes\libcleml_1.0.1\mfa_tests\test1.cpp:line 27
 Press any key to continue

after i have changed 'coordinate_matrix' to 'matrix', these errors disappeared, so i think there is a bug
in the method 'resize' of coordinate_matrix.
        

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Best regards£¡
                                 

Chen Jiusheng
Department of Computer Science and Technology,
University of Science and Technology of China,
HeFei, China