double Det(CMatrix &mat) { double dDet=1; CVector vdEigenvalues; if(! mat.Defined()) {throw ELENotDefined; } if(mat.m_pnDimSize[0] != mat.m_pnDimSize[1]) {throw ELEDimensionMisMatch; } vdEigenvalues = mat.Eigenvalues(); for(int i=0; i<vdEigenvalues.m_pnDimSize[0]; i++) { dDet *= double(vdEigenvalues[i]); } // for i if(mat.Allocated()) {delete &mat; } // This should call for the destructor return dDet; } // Det