14 #if defined(DEBUG) || defined(WARNINGMSG) 
   24 MnUserCovariance MnCovarianceSqueeze::operator()(
const MnUserCovariance& cov, 
unsigned int n)
 const {
 
   28    assert(cov.Nrow() > 0);
 
   29    assert(n < cov.Nrow());
 
   31    MnAlgebraicSymMatrix hess(cov.Nrow());
 
   32    for(
unsigned int i = 0; i < cov.Nrow(); i++) {
 
   33       for(
unsigned int j = i; j < cov.Nrow(); j++) {
 
   38    int ifail = Invert(hess);
 
   42       MN_INFO_MSG(
"MnUserCovariance inversion failed; return diagonal matrix;");
 
   44       MnUserCovariance result(cov.Nrow() - 1);
 
   45       for(
unsigned int i = 0, j =0; i < cov.Nrow(); i++) {
 
   47          result(j,j) = cov(i,i);
 
   53    MnAlgebraicSymMatrix squeezed = (*this)(hess, n);
 
   55    ifail = Invert(squeezed);
 
   58       MN_INFO_MSG(
"MnUserCovariance back-inversion failed; return diagonal matrix;");
 
   60       MnUserCovariance result(squeezed.Nrow());
 
   61       for(
unsigned int i = 0; i < squeezed.Nrow(); i++) {
 
   62          result(i,i) = 1./squeezed(i,i);
 
   67    return MnUserCovariance(std::vector<double>(squeezed.Data(), squeezed.Data() + squeezed.size()), squeezed.Nrow());
 
   70 MinimumError MnCovarianceSqueeze::operator()(
const MinimumError& err, 
unsigned int n)
 const {
 
   74    MnAlgebraicSymMatrix hess = err.Hessian();
 
   75    MnAlgebraicSymMatrix squeezed = (*this)(hess, n);
 
   76    int ifail = Invert(squeezed);
 
   79       MN_INFO_MSG(
"MnCovarianceSqueeze: MinimumError inversion fails; return diagonal matrix.");
 
   81       MnAlgebraicSymMatrix tmp(squeezed.Nrow());
 
   82       for(
unsigned int i = 0; i < squeezed.Nrow(); i++) {
 
   83          tmp(i,i) = 1./squeezed(i,i);
 
   85       return MinimumError(tmp, MinimumError::MnInvertFailed());
 
   88    return MinimumError(squeezed, err.Dcovar());
 
   91 MnAlgebraicSymMatrix MnCovarianceSqueeze::operator()(
const MnAlgebraicSymMatrix& hess, 
unsigned int n)
 const {
 
   93    assert(hess.Nrow() > 0);
 
   94    assert(n < hess.Nrow());
 
   96    MnAlgebraicSymMatrix hs(hess.Nrow() - 1);
 
   97    for(
unsigned int i = 0, j = 0; i < hess.Nrow(); i++) {
 
   99       for(
unsigned int k = i, l = j; k < hess.Nrow(); k++) {