void SymmetricBandMatrix<TYPE>::operator<<(const BaseMatrix<TYPE>& bm) { if (&bm == this) { return; } assert(bm.Nrows() == GeneralMatrix<TYPE>::nrows && bm.Ncols() == GeneralMatrix<TYPE>::ncols); int n = GeneralMatrix<TYPE>::nrows, lb = this->BandWidth().Lower(); if (bm.Search(*this) == 0) { for (int i = 0; i <= lb; ++i) { for (int j = 1; j <= n - i; ++j) { operator()(j + i, j) = bm(j + i, j); } } } else { SymmetricBandMatrix<TYPE> t(n, lb); t << bm; this->Swap(t); } }