Hi list.
I got a problem of matrix initialization. Please
see the following code:
#include <iostream>
#include <iterator>
#include
#include
using namespace std;
using namespace boost::numeric::ublas;
int main ()
{
matrix<double> m(3, 3);
for (unsigned i = 0; i < 3; i++)
m(i, i) = -i;
cout << m << endl;
return EXIT_SUCCESS;
}
In this code, I'm trying to initialize the diagonal with
-1, -2, -3. But, the result is obviously different from
what I expected:
[3,3]((0,0,0),(0,4.29497e+09,0),(0,0,4.29497e+09))
This must be due to type conversion from unsigned from double
that occurs at 'm(i, i) = -i'. IMHO, the code must works as follows
i // unsigned
-i // (-1) * i = int * unsigned = int
m(i, i) = -i // lhs is double, so int on rhs should be converted
// into double.
But the result implies that I'm wrong. Anybody knows what I'm
missing here?
How would you correct the above code?
Sincerely,
Minkoo Seo