*** empty log message ***

This commit is contained in:
jiri
2007-06-22 14:24:55 +00:00
parent 2a8913b72b
commit 0a195e1213
3 changed files with 58 additions and 5 deletions

View File

@@ -137,9 +137,20 @@ static void linear_solve_do(NRMat<double> &A, double *B, const int nrhs, const i
//take into account some numerical instabilities in dgesv for singular matrices
for (int i=0; i<n; ++i) {double t=A[i][i]; if(!finite(t) || abs(t) < EPSDET ) {*det=0.; break;} else *det *=t;}
//change sign of det by parity of ipiv permutation
if(*det) for (int i=0; i<n; ++i) if(i!=ipiv[i]) *det = -(*det);
if(*det) for (int i=0; i<n; ++i) if(
#ifdef NONCBLAS
i+1
#else
i
#endif
!=ipiv[i]) *det = -(*det);
}
if(det && r>0) *det = 0;
/*
cout <<"ipiv = ";
for (int i=0; i<n; ++i) cout <<ipiv[i]<<" ";
cout <<endl;
*/
delete [] ipiv;
if (r>0 && B) laerror("singular matrix in lapack_gesv");
}