ABACUS/src/FITTING/covsrt.cc

42 wiersze
812 B
C++

/**********************************************************
This software is part of J.-S. Caux's C++ library.
Copyright (c) 2007.
-----------------------------------------------------------
File: mrqmin.cc
Purpose: Nonlinear fitting
Last modified: 14/08/07
***********************************************************/
#include "JSC.h"
using namespace std;
namespace JSC {
void covsrt (SQMat_DP& covar, Vect<bool>& ia, const int mfit)
{
int i, j, k;
int ma = ia.size();
for (i = mfit; i < ma; i++)
for (j = 0; j < i+1; j++) covar[i][j] = covar[j][i] = 0.0;
k = mfit - 1;
for (j = ma - 1; j >= 0; j--) {
if (ia[j]) {
for (i = 0; i < ma; i++) SWAP(covar[i][k], covar[i][j]);
for (i = 0; i < ma; i++) SWAP(covar[k][i], covar[j][i]);
k--;
}
}
}
}