$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-users] [uBLAS] Identity Matrix Constructor vs Resize
From: Ryan (mccorywork_at_[hidden])
Date: 2011-03-14 14:51:37
I have an identity matrix that when initialized with the constructor I don't
get an error.  If I do a default construction and then resize the matrix I
get a runtime error.  I'm not sure the difference.  Could someone enlighten
me?
Ryan
using namespace boost::numeric::ublas;
template<typename matrixT>
matrix_range<matrixT> topleft (matrixT & M) { return subrange(M, 0, 3, 0,
3); }
int main(int, char const* []) {
  vector<double> initial(3);
  initial[0] = 10;
   initial[0] = 100;
  initial[0] = 2;
  //I realize that "matrix<double> P(zero_matrix<double>(9,9));" would do
the same thing as below.
  //This is extracted from a class and the constructor needs to to this.
  matrix<double> P;  //This is a class variable
  P.resize(9,9);     //This happens in the constructor
  P.clear();         //This happens in the constructor
  //The following runs without errors
  //identity_matrix<double> identity(3);
  //This causes a run time error.
  identity_matrix<double> identity;
  identity.resize(3);
  topleft(P) = initial[0] * identity;
  return 0;
}