aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2012-02-10 19:38:31 +0100
committerGravatar Gael Guennebaud <g.gael@free.fr>2012-02-10 19:38:31 +0100
commitef7f1371b2798a4b21460952500ababd43f66d8f (patch)
tree3d3b7becf1929406debf4a47bef35a8015675b59 /Eigen
parent16da7299dd419d9ddaa19ddd9c8f5244ad52dfbc (diff)
some cleaning and add copyrights
Diffstat (limited to 'Eigen')
-rw-r--r--Eigen/src/IterativeLinearSolvers/BiCGSTAB.h12
-rw-r--r--Eigen/src/IterativeLinearSolvers/IncompleteLUT.h19
2 files changed, 16 insertions, 15 deletions
diff --git a/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h b/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h
index d813ea8f5..9ad41e24a 100644
--- a/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h
+++ b/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h
@@ -2,6 +2,7 @@
// for linear algebra.
//
// Copyright (C) 2011 Gael Guennebaud <gael.guennebaud@inria.fr>
+// Copyright (C) 2012 Désiré Nuentsa-Wakam <desire.nuentsa_wakam@inria.fr>
//
// Eigen is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
@@ -70,7 +71,6 @@ bool bicgstab(const MatrixType& mat, const Rhs& rhs, Dest& x,
while ( r.squaredNorm()/r0_sqnorm > tol2 && i<maxIters )
{
-// std::cout<<i<<" : Relative residual norm " << sqrt(r.squaredNorm()/r0_sqnorm)<<"\n";
Scalar rho_old = rho;
rho = r0.dot(r);
@@ -216,17 +216,19 @@ public:
template<typename Rhs,typename Dest>
void _solveWithGuess(const Rhs& b, Dest& x) const
{
- bool ok;
+ bool failed = false;
for(int j=0; j<b.cols(); ++j)
{
m_iterations = Base::maxIterations();
m_error = Base::m_tolerance;
typename Dest::ColXpr xj(x,j);
- ok = internal::bicgstab(*mp_matrix, b.col(j), xj, Base::m_preconditioner, m_iterations, m_error);
+ if(!internal::bicgstab(*mp_matrix, b.col(j), xj, Base::m_preconditioner, m_iterations, m_error))
+ failed = true;
}
- if (ok == false) m_info = NumericalIssue;
- else m_info = m_error <= Base::m_tolerance ? Success : NoConvergence;
+ m_info = failed ? NumericalIssue
+ : m_error <= Base::m_tolerance ? Success
+ : NoConvergence;
m_isInitialized = true;
}
diff --git a/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h b/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h
index ce451aeeb..e8bde24b0 100644
--- a/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h
+++ b/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h
@@ -1,7 +1,7 @@
// This file is part of Eigen, a lightweight C++ template library
// for linear algebra.
//
-// Copyright (C) 2011 Gael Guennebaud <gael.guennebaud@inria.fr>
+// Copyright (C) 2012 Désiré Nuentsa-Wakam <desire.nuentsa_wakam@inria.fr>
//
// Eigen is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
@@ -63,11 +63,11 @@ class IncompleteLUT
public:
typedef Matrix<Scalar,Dynamic,Dynamic> MatrixType;
- IncompleteLUT() : m_droptol(NumTraits<Scalar>::dummy_precision()),m_fillfactor(10),m_isInitialized(false),m_analysisIsOk(false),m_factorizationIsOk(false) {};
+ IncompleteLUT() : m_droptol(NumTraits<Scalar>::dummy_precision()),m_fillfactor(10),m_analysisIsOk(false),m_factorizationIsOk(false),m_isInitialized(false) {}
template<typename MatrixType>
IncompleteLUT(const MatrixType& mat, RealScalar droptol, int fillfactor)
- : m_droptol(droptol),m_fillfactor(fillfactor),m_isInitialized(false),m_analysisIsOk(false),m_factorizationIsOk(false)
+ : m_droptol(droptol),m_fillfactor(fillfactor),m_analysisIsOk(false),m_factorizationIsOk(false),m_isInitialized(false)
{
eigen_assert(fillfactor != 0);
compute(mat);
@@ -105,7 +105,7 @@ class IncompleteLUT
Vector u(n) ; /* real values of the row -- maximum size is n -- */
VectorXi ju(n); /*column position of the values in u -- maximum size is n*/
VectorXi jr(n); /* Indicate the position of the nonzero elements in the vector u -- A zero location is indicated by -1*/
- int j, k, ii, jj, jpos, minrow, len;
+ int j, k, jj, jpos, minrow, len;
Scalar fact, prod;
RealScalar rownorm;
@@ -320,8 +320,8 @@ protected:
FactorType m_lu;
RealScalar m_droptol;
int m_fillfactor;
- bool m_factorizationIsOk;
- bool m_analysisIsOk;
+ bool m_analysisIsOk;
+ bool m_factorizationIsOk;
bool m_isInitialized;
template <typename VectorV, typename VectorI>
int QuickSplit(VectorV &row, VectorI &ind, int ncut);
@@ -369,10 +369,9 @@ void IncompleteLUT<Scalar>::setFillfactor(int fillfactor)
**/
template <typename Scalar>
template <typename VectorV, typename VectorI>
-int IncompleteLUT<Scalar>::QuickSplit(VectorV &row, VectorI &ind, int ncut)
+int IncompleteLUT<Scalar>::QuickSplit(VectorV &row, VectorI &ind, int ncut)
{
- int i,j,mid;
- Scalar d;
+ int mid;
int n = row.size(); /* lenght of the vector */
int first, last ;
@@ -384,7 +383,7 @@ int IncompleteLUT<Scalar>::QuickSplit(VectorV &row, VectorI &ind, int ncut)
do {
mid = first;
RealScalar abskey = std::abs(row(mid));
- for (j = first + 1; j <= last; j++) {
+ for (int j = first + 1; j <= last; j++) {
if ( std::abs(row(j)) > abskey) {
++mid;
std::swap(row(mid), row(j));