diff --git a/nonclass.cc b/nonclass.cc index 3a18a08..14690ca 100644 --- a/nonclass.cc +++ b/nonclass.cc @@ -1317,6 +1317,29 @@ for(int i=0; i +const SparseMat realpart > >(const SparseMat< std::complex > &a) +{ +SparseMat result(a.nrows(), a.ncols()); +for(SparseMat< std::complex >::iterator p=a.begin(); p!=a.end(); ++p) + { + result.add(p->row,p->col,p->elem.real()); + } +if(a.issymmetric()) result.setsymmetric(); +return result; +} + +template<> +const SparseMat imagpart > >(const SparseMat< std::complex > &a) +{ +SparseMat result(a.nrows(), a.ncols()); +for(SparseMat< std::complex >::iterator p=a.begin(); p!=a.end(); ++p) + { + result.add(p->row,p->col,p->elem.imag()); + } +if(a.issymmetric()) result.setsymmetric(); +return result; +} template<> const NRMat realpart > >(const NRMat< std::complex > &a)