Commit Graph

122 Commits

Author SHA1 Message Date
Thomas Capricelli
858acfcc64 remove the boring, old-school nprint option, we'll have a dedicated
method for 'one iteration' anyway.
2009-08-25 17:11:14 +02:00
Thomas Capricelli
613a464320 cleaning 2009-08-25 16:48:09 +02:00
Thomas Capricelli
6c1a9703b1 move most of results vectors/matrices inside respective classes. 2009-08-25 16:08:09 +02:00
Thomas Capricelli
38fc6c8553 cleaning 2009-08-25 14:28:19 +02:00
Thomas Capricelli
201f58e528 merge both c methods lmstr/lmstr1 into one class
LevenbergMarquardtOptimumStorage with two methods.
2009-08-25 14:18:38 +02:00
Thomas Capricelli
3f1b81e129 merge both c methods lmdif/lmdif1 into one class
LevenbergMarquardtNumericalDiff with two methods.
2009-08-25 14:09:19 +02:00
Thomas Capricelli
a736378331 cleaning 2009-08-25 14:03:30 +02:00
Thomas Capricelli
d880e6f774 merge both c methods hybrj1/hybrj into one class HybridNonLinearSolver with
two methods. hybrd stuff renamed to HybridNonLinearSolverNumericalDiff.
2009-08-25 13:56:25 +02:00
Thomas Capricelli
a043708e87 merge both c methods hybrd/hybrd1 into one class HybridNonLinearSolver with
two methods.
2009-08-25 13:48:25 +02:00
Thomas Capricelli
602b13815f merge both c methods lmder/lmder1 into one class LevenbergMarquardt with
two methods.
2009-08-25 13:40:45 +02:00
Thomas Capricelli
86cb9364c9 clean fortran stuff in fdjac* 2009-08-24 21:53:08 +02:00
Thomas Capricelli
45442b8d41 some more work on Functors 2009-08-24 21:48:22 +02:00
Thomas Capricelli
15d2c3af90 playing with functors 2009-08-24 19:45:35 +02:00
Thomas Capricelli
4e62e29869 cleaning covar 2009-08-24 17:49:37 +02:00
Thomas Capricelli
17905c7399 eigenization of ei_covar() 2009-08-24 17:47:35 +02:00
Thomas Capricelli
f69869c42a covar : cleaning, removing goto's 2009-08-24 16:49:38 +02:00
Thomas Capricelli
312ab1abb3 further cleaning/ goto removing 2009-08-24 16:39:49 +02:00
Thomas Capricelli
c6d7da6edc cleaning some more 2009-08-24 16:08:13 +02:00
Thomas Capricelli
63071ac968 cleaning, removing goto's, uniformization (try to reduce diff between
hybr[dj].h  or lm[der,dif,str].h as much as possible), for future merging.
2009-08-24 16:05:57 +02:00
Thomas Capricelli
91a2145cb3 clean, remove goto's 2009-08-24 15:32:06 +02:00
Thomas Capricelli
d4968cd059 cleaning, fixing most goto's 2009-08-24 15:13:12 +02:00
Thomas Capricelli
e65a7c7c70 misc cleaning 2009-08-24 09:28:29 +02:00
Thomas Capricelli
6e41f15fea use a local variable for qrfac 2009-08-24 09:13:06 +02:00
Thomas Capricelli
88f5d06b08 move ipvt/fortran fixing deeper 2009-08-24 08:45:06 +02:00
Thomas Capricelli
950eb4a254 various cleaning and homogeneization 2009-08-24 08:28:31 +02:00
Thomas Capricelli
930651ff9a dogleg, lmpar : use more eigen features 2009-08-23 21:52:39 +02:00
Thomas Capricelli
4958c53bfb trivial fixes 2009-08-23 21:47:55 +02:00
Thomas Capricelli
5e8dee7a19 eigenize dogleg() 2009-08-23 21:39:47 +02:00
Thomas Capricelli
f793dbe45c only indentation fixes (this eases porting) 2009-08-23 21:06:57 +02:00
Thomas Capricelli
feb5af3ede porting lmpar() to eigen : both api and some of the code 2009-08-23 21:04:55 +02:00
Thomas Capricelli
9a8c5cbd2c misc cleaning 2009-08-23 06:16:05 +02:00
Thomas Capricelli
264e61932c cleaning fdjac*() 2009-08-23 06:04:06 +02:00
Thomas Capricelli
f01332043b only indentation 2009-08-23 05:56:12 +02:00
Thomas Capricelli
8b9b671e83 some eigenization in main algorithms 2009-08-23 05:55:43 +02:00
Thomas Capricelli
134dea76d3 beautify functors for lmdif, lmstr, hybrj, hybrd 2009-08-23 04:57:48 +02:00
Thomas Capricelli
acd757737a beautify Functor for lmder : we now have f,df,debug methods 2009-08-23 04:39:22 +02:00
Thomas Capricelli
878f15b8a5 * use eigen object for callbacks for hybrd and lmdif
* use Functor instead of argument for ei_fdjac*()
2009-08-23 04:06:16 +02:00
Thomas Capricelli
f2fcbb0207 use eigen objects for ei_fdjac*(), this is a prerequisite before porting
hybrd/lmdif..
2009-08-23 03:54:40 +02:00
Thomas Capricelli
8a27e774f8 use eigen objects for hybrj and lmstr 2009-08-23 03:14:42 +02:00
Thomas Capricelli
3251e12258 use eigen objects for the lmder callback 2009-08-23 03:02:03 +02:00
Thomas Capricelli
1225704753 we do not need/use the 'void *p' parameter 2009-08-23 01:59:20 +02:00
Thomas Capricelli
a3e8a14e3a forgot to clean this one 2009-08-22 07:40:43 +02:00
Thomas Capricelli
c5218c7d38 ei_lmpar : use a reference for the parameter 2009-08-22 07:37:23 +02:00
Thomas Capricelli
b3f8d02df4 use const for machine constants 2009-08-22 07:31:14 +02:00
Thomas Capricelli
bb6ffafdb9 keep on cleaning f2c mess 2009-08-22 07:27:17 +02:00
Thomas Capricelli
a35586504e cleaning f2c mess / trivial stuff 2009-08-22 07:14:17 +02:00
Thomas Capricelli
aa3a7c3303 raw import of covar() : this is the last one, and we now do not depend on
the cminpack library anymore.
2009-08-22 06:44:41 +02:00
Thomas Capricelli
16061a46db Now that the main algorithms are imported into eigen, we import subroutines
used by those algorithms (aka "second level").

This is a row import : we copy/paste the files from cminpack and make
very few changes :
* template<Scalar> them (replace double)
* dpmpar() replaced by c++ standard equivalent
* abs/fabs/sqrt/min/max replaced by ei_* or std::*
* use eigen norms instead of enorm()

Important Notes:
* The use of stableNorm() was not enough in some cases, but using
  blueNorm() instead fixed the problems (some tests gave bad results,
  either in number of iterations or precision of the results)
* As a whole, the only test that changed is testNistMGH17() : it now takes
  some few steps less to get the same result. So this is a small improvement.

After this commit, the only remaining dependency from the cminpack
static library is 'covar', only used from the tests.
2009-08-22 06:40:22 +02:00
Thomas Capricelli
783f355904 cleaning defines from f2c (use std::min and such instead of own ones) 2009-08-22 05:32:17 +02:00
Thomas Capricelli
11c3762068 cleaning : removing #define, use std:min() and such 2009-08-22 05:29:33 +02:00