std::complexのcompressed_matrixでuBLASのlu_factorizeを使う
uBLASを使って複素数の線形方程式を解きたいとき, 通常のmatrixなら問題ないのにcompressed_matrixでlu_factorizeしようとするとエラーが出てコンパイルできない.
/usr/include/boost/numeric/ublas/lu.hpp:146: error: no match for 'operator/' in ...原因がよくわからなかったのだが, uBLASのメーリングリストが検索でかかった.
BTW, I've solved my compile problem by changing the LINE 147 of lu.cpp from現在のsubversionのrepositoryをみると, 以下のようになっているのだがどうなんでしょうかね.
project (mci, range (i + 1, size1)) *= value_type (1) / m (i, i);
to
project (mci, range (i + 1, size1)) *= value_type (1);
project (mci, range (i + 1, size1)) /= m (i, i);
value_type m_inv = value_type (1) / m (i, i);とりあえず, 前述のメーリングリストの方法でうまくいったので, そのように直して使っています.
project (mci, range (i + 1, size1)) *= m_inv;