Commit Graph

848 Commits

Author SHA1 Message Date
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
2727099906 remove redundant code, fix bounds in those loops that still come from
fortran
2009-08-23 02:32:08 +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
93fabbff5e use blueNorm() instead of norm() 2009-08-22 07:05:10 +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
Gael Guennebaud
9515b00876 remove the \addexample tags 2009-09-03 11:22:42 +02:00
Jitse Niesen
32f95ec267 Bug fix in MatrixExponential.h
Initialize matrices for intermediate results to correct dimension
2009-09-01 10:50:54 +01:00
Hauke Heibel
ab6eb6a1a4 Adaptions from .lazy() towards .noalias().
Added missing casts.
2009-08-31 17:29:37 +02:00
Thomas Capricelli
20480a5438 merging ei_lmdif() and lmdif_template() 2009-08-21 04:24:59 +02:00
Thomas Capricelli
2e3d17c3ce be (hopefully) smarter with indices convention : we keep the c convention
(0->n-1) as much as possible, and only convert at borders with
fortran-expecting methods, that will eventually dissapear.
2009-08-21 04:16:37 +02:00
Thomas Capricelli
524e112ee5 merging ei_lmstr() and lmstr_template() 2009-08-21 03:41:19 +02:00
Thomas Capricelli
e48b6ad905 merging ei_hybrj() and hybrj_template() 2009-08-21 03:26:28 +02:00
Thomas Capricelli
f2ff0d3903 merging ei_hybrd() and hybrd_template() 2009-08-21 03:13:42 +02:00
Thomas Capricelli
1715e2cb3b merging ei_lmder and lmder_template into ei_lmder() which takes eigen
argument, but still uses f2c code inside.
2009-08-21 02:34:40 +02:00
Thomas Capricelli
6a8b52b3aa simplifying 2009-08-21 01:24:04 +02:00
Thomas Capricelli
0abb148b7d use ei_sqrt instead of sqrt 2009-08-21 00:27:11 +02:00
Thomas Capricelli
1ad042c981 rename i__ to i. i really wonder how f2c can produce such things 2009-08-21 00:26:37 +02:00
Thomas Capricelli
9294d33a11 use references intead of pointers for njev/nfev 2009-08-21 00:23:26 +02:00
Thomas Capricelli
054652b789 use math function adapted to the Scalar type instead of hardcoding float or
double
2009-08-21 00:04:41 +02:00
Thomas Capricelli
d05af200a5 some more trivial fixes to f2c generated code 2009-08-20 23:56:13 +02:00
Thomas Capricelli
9e71c2827a nothing more than indentation fixes (using vim '=' command) 2009-08-20 23:36:03 +02:00
Thomas Capricelli
b1e0662785 cleaning f2c mess 2009-08-20 23:33:45 +02:00
Thomas Capricelli
275a658ec5 porting chkder to eigen 2009-08-20 23:26:40 +02:00
Thomas Capricelli
2e3fa34b9f cleaning a little bit the f2c mess for chkder 2009-08-20 23:07:16 +02:00
Thomas Capricelli
b09ebe01da * porting lmdif1 to eigen
* qtf was missing in lmdif signature (this is an output of the method)
2009-08-20 22:59:09 +02:00
Thomas Capricelli
8d2f6ad7e1 iwa is not really an argument, but just an old fashioned 'work array' :
remove it from the eigen API
2009-08-20 22:46:38 +02:00
Thomas Capricelli
b423e640a6 porting hybrj1 to eigen 2009-08-20 22:41:56 +02:00
Thomas Capricelli
6027c4bedf porting hybrd1 to eigen 2009-08-20 22:36:24 +02:00
Thomas Capricelli
de7d14b2b3 porting lmstr1 to eigen 2009-08-20 22:16:30 +02:00
Thomas Capricelli
980c40f72c porting lmder1 to eigen (no more wrapper) 2009-08-20 22:09:05 +02:00
Thomas Capricelli
a84dc9a5c1 coherency for scalar typename : use "Scalar" everywhere 2009-08-20 21:10:28 +02:00
Thomas Capricelli
df98e66019 oops fix hardcoded typename, which is actually provided as template
parameter
2009-08-20 21:06:26 +02:00
Thomas Capricelli
9a876806e1 use eigen stableNorm() instead of cminpack 'enorm'. The results are mostly
slightly better in tests (one test needs 15 iterations intead of 16, for
the same result). Some numerical results have improved slightly, too.

If one uses blueNorm() instead, an assert for 'overflow' is raised from
blueNorm()
2009-08-20 21:04:38 +02:00
Thomas Capricelli
6953cad81d remove unneeded "Eigen::", we already 'use' Eigen namespace 2009-08-19 20:06:34 +02:00
Thomas Capricelli
369693aa1c oops, forgot those ones 2009-08-19 20:02:49 +02:00
Thomas Capricelli
01622e9855 use machine precision from eigen instead of the one from cminpack. The test
pass though they would not if using a value of 2.220e-16 (the real value
for 'double' is 2.22044604926e-16). How sensitive those tests are :)
2009-08-19 19:56:51 +02:00
Thomas Capricelli
3093e92da5 machine_epsilon is now called epsilon in latest eigen 2009-08-19 19:53:08 +02:00
Thomas Capricelli
47ac354190 merge with the main dev branch 2009-08-19 19:46:37 +02:00
Thomas Capricelli
fb54cfb013 import main files from cminpack as *.h files:
* function names are changed by appending _template
* it uses basic templating : template<typename T>
* wrappers now use those versions instead of the ones from cminpack
* lot of external methods from cminpack are still used
* tests pass though they are unchanged (they use wrappers)
2009-08-19 18:38:45 +02:00
Thomas Capricelli
703198a1a6 wrapper for chkder() : this was the last wrapper missing 2009-08-19 18:32:37 +02:00
Jitse Niesen
59a0c4a0d2 Add new unsupported modules to doc/unsupported_modules.dox 2009-08-18 15:30:38 +01:00
Jitse Niesen
7262716b78 Correct syntax error in doxygen comment. 2009-08-18 11:09:20 +01:00
Gael Guennebaud
ef13c3e754 add normalize and normalized overloads in AlignedVector3 2009-08-16 11:51:46 +02:00
Thomas Capricelli
3f63d6f97f fix BoxBOD in the first case : now all tests pass 2009-08-14 19:04:09 +02:00
Thomas Capricelli
3856c2d84d oops, i missed one : real last difficult nist test : Eckerle4 2009-08-14 18:54:28 +02:00
Thomas Capricelli
93627fefcf last 'hard' test from Nist : ratkowsky3 2009-08-14 18:31:04 +02:00
Thomas Capricelli
91f61f7679 fix bad urls 2009-08-14 17:48:04 +02:00
Thomas Capricelli
d8c671f475 yet another (difficult) Nist test : Thurber 2009-08-14 17:46:28 +02:00
Thomas Capricelli
e057d1ef47 tweak precision for Chwirut2 test 2009-08-14 17:25:39 +02:00
Thomas Capricelli
56127cfb1a add yet another easy Nist test : Chwirut2 2009-08-14 17:21:31 +02:00
Thomas Capricelli
f7cd4c8923 cleaning : wa1 used in 'covar' needs not be the same as in lmder* and all.
it's just an old-fashioned way to re-use memory without allocation...
2009-08-13 16:29:17 +02:00
Jitse Niesen
f71f878bab Add support for matrix exponential of floats and complex numbers. 2009-08-12 15:44:22 +01:00
Thomas Capricelli
7b922eb634 BoxBOD : oops.. shame on me, i did a mistake in the derivative.... now we need 16
iterations instead of 7693 ;-)
the first test still fails though.
2009-08-12 02:34:22 +02:00
Thomas Capricelli
fd307b8f3f fix a bug in BoxBOD Nist test : we now get the actual value for 'start 2'
'start 1' still fails though :/
2009-08-12 02:27:44 +02:00
Thomas Capricelli
3c675609bf add another Nist test of 'hard' difficutly : Bennett5 2009-08-12 02:13:04 +02:00
Thomas Capricelli
54d09a8122 add another Nist test of 'hard' difficutly : MGH09 2009-08-12 01:50:56 +02:00
Thomas Capricelli
5ac17b4680 add another Nist test of medium difficutly : MGH17 2009-08-11 20:24:02 +02:00
Thomas Capricelli
d1bc9144cb wrapper for lmstr1 and lmstr + eigenization of calling tests 2009-08-10 17:37:27 +02:00
Thomas Capricelli
bb1204a145 wrapper for lmdif1 + eigenization of calling test 2009-08-10 17:16:43 +02:00
Thomas Capricelli
80372c18ee wrapper for lmdif (+test call eigenization) 2009-08-10 16:54:53 +02:00
Thomas Capricelli
4a26baa718 wrapper for hybrj1 2009-08-10 16:32:45 +02:00
Thomas Capricelli
1d53ce8d48 wrapper for hybrj 2009-08-10 16:21:22 +02:00
Thomas Capricelli
120235deef add another (actuallY) difficult NIST test : BoxBOD.
The first try fails, the second one passes, but with a very bad accuracy
(~4 digits only).
anyway, my aim is to check we do not change cminpack while portint, so i
keep this test.
2009-08-10 14:11:55 +02:00
Thomas Capricelli
bcfe874968 add another 'difficult'-rated NIST test, which passes 2009-08-10 13:47:18 +02:00
Thomas Capricelli
7d65bd42eb fix testNistHahn1 : i had swapped x[] and y[].... :/ 2009-08-10 13:46:43 +02:00
Thomas Capricelli
b71aa34946 a Nist test rated 'difficult', which passes. 2009-08-10 13:05:30 +02:00
Thomas Capricelli
9b1130b82a another nist test with difficulty 'leverage', it passes. 2009-08-10 12:49:44 +02:00
Thomas Capricelli
7ecbbc9aa4 another nist test with difficulty 'leverage', this one passes 2009-08-10 12:34:51 +02:00
Thomas Capricelli
1045bc17f5 another nist test ('average' difficulty), which fails. It is disabled until
further notice.
2009-08-10 12:08:31 +02:00
Thomas Capricelli
c7a72958ba add an easy test from the NIST set :
http://www.itl.nist.gov/div898/strd/nls/data/misra1a.shtml
2009-08-10 10:47:55 +02:00
Thomas Capricelli
ec2b9f90a3 hybrd : wrapper + eigenize test 2009-08-10 03:39:50 +02:00
Thomas Capricelli
953c37f8e5 i wonder how useful this really is, but others do this way. Probably
related to doxygen.
2009-08-09 05:14:45 +02:00
Thomas Capricelli
50c192961c eigenize lmder + some other small fixes 2009-08-09 05:07:59 +02:00
Thomas Capricelli
a6625f22d4 eigenize the test for lmder1, clean functor stuff.
(and check the tests still pass, of course, that's the whole point..)
2009-08-09 03:54:36 +02:00
Thomas Capricelli
5e4cf6cae1 oops.. use the template paramater instead of hard coding 'double' 2009-08-09 03:34:32 +02:00
Thomas Capricelli
ceeb023ff2 use template parameter Scalar instead of VectorType, fix a segfault. 2009-08-09 03:33:04 +02:00
Thomas Capricelli
7db4052749 eigenize the test a little more 2009-08-09 03:16:24 +02:00
Thomas Capricelli
f19eda7cf6 first test for a basic wrapper (and only wrapper!) for cminpack functions 2009-08-09 03:07:34 +02:00
Thomas Capricelli
2b9f110639 actually use eigen include file 2009-08-09 01:12:14 +02:00
Thomas Capricelli
b695113a81 Add all other file from cminpack/examples as tests.
Important : one test was failing because cminpack-1.0.2 does x[3]=1. on x
which is of size 3. Probably because fortran indices are shifted wrt to C
indices and someone forgot to fix this one.

This is correct in this commit and this is the only change I've done on files
from cminpack examples.

(i've also reported the bug to cminpack author)
2009-08-08 23:41:54 +02:00
Thomas Capricelli
d646d99366 Start of module "NonLinear". We start out of cminpack-1.0.2
(http://devernay.free.fr/hacks/cminpack.html)
The first test is adapted from the example/ directory.
Some stuff is hard coded for our initial tests.
2009-08-08 22:18:48 +02:00
Mark Borgerding
fb9a15e451 added copyright notice 2009-06-17 00:09:18 -04:00
Mark Borgerding
e577c70e49 candidate header for Eigen/Complex 2009-06-16 23:54:58 -04:00
Mark Borgerding
218711e18b example file 2009-06-10 23:25:27 -04:00
Mark Borgerding
4d6b962ba4 added FindFFTW, but I don't think it's right yet 2009-06-10 22:16:32 -04:00
Mark Borgerding
1c54340174 more work on ei_fftw_impl 2009-05-31 15:44:57 -04:00
Mark Borgerding
1fd6dfe428 added ei_fftw_impl 2009-05-30 17:55:47 -04:00
Mark Borgerding
f13e000b45 various comment changes 2009-05-27 21:32:42 -04:00
Mark Borgerding
09b4733255 added real-optimized inverse FFT (NFFT must be multiple of 4) 2009-05-25 23:52:21 -04:00
Mark Borgerding
03ed6f9bfb refactored ei_kissfft_impl to maintain a cache of cpx fft plans 2009-05-25 23:06:49 -04:00
Mark Borgerding
210092d16c changed name from simple_fft_traits to ei_kissfft_impl 2009-05-25 20:35:24 -04:00
Mark Borgerding
326ea77390 added FFT inverse complex-to-scalar interface (not yet optimized) 2009-05-23 22:50:07 -04:00
Mark Borgerding
3047988172 scalar forward FFT optimized for even size, converts to cpx for odd 2009-05-23 12:50:07 -04:00
Mark Borgerding
9c0fcd0f62 started real optimization, added benchmark for FFT 2009-05-23 10:09:48 -04:00
Mark Borgerding
8b4afe3deb added non-optimized real forward fft (no inverse yet) 2009-05-22 22:37:59 -04:00
Benoit Jacob
6347b1db5b remove sentence "Eigen itself is part of the KDE project."
it never made very precise sense. but now does it still make any?
2009-05-22 20:25:33 +02:00
Mark Borgerding
68cad98bc9 indent level change 2009-05-19 00:34:38 -04:00
Mark Borgerding
be1b2ad4ec removed unused code 2009-05-19 00:26:19 -04:00
Mark Borgerding
92ca9fc032 initial pass of FFT module -- includes complex 1-d case only 2009-05-19 00:21:04 -04:00
Jitse Niesen
72f66d717d Evaluate argument of matrix exponential only once. 2009-05-18 23:14:53 +01:00
Gael Guennebaud
159c99a288 fix adolc unit test for dynamic sizes 2009-05-12 07:38:46 +00:00
Benoit Jacob
eac79b6d2e CREDIT Hauke Heibel, fix MSVC warnings 2009-05-09 03:41:17 +00:00
Benoit Jacob
3b79d99f71 *make coeff() return a const reference (required with the recent change with CoeffReturnType)
*fix a unused variable warning
2009-05-09 03:39:31 +00:00
Benoit Jacob
159ab4a043 CREDIT Hauke Heibel, windows compatibility fixes in MatrixExponential 2009-05-07 18:11:49 +00:00
Gael Guennebaud
7080282a6d forgot a svn add CMakeLists.txt 2009-05-07 14:49:56 +00:00
Benoit Jacob
834eb5bfc8 new unsupported module by Jitse Niesen: matrix exponential 2009-05-05 20:46:55 +00:00
Gael Guennebaud
c25fc50d54 add an AlignedVector3 module suitable for vectorization of 3D vectors 2009-05-03 17:19:19 +00:00
Gael Guennebaud
e201091d89 remove unsupported/doc from make's "all" target 2009-04-23 12:22:10 +00:00
Gael Guennebaud
acb32c69d4 * update BVH to explicitely use aligned_allocator
* fix warning in StdVector
2009-04-23 11:33:36 +00:00
Christian Ehrlicher
b14d1139df not compilable with msvc :( 2009-04-15 17:13:23 +00:00
Gael Guennebaud
c744960984 patch from Ilya Baran: This small patch fixes a potential initialization
bug in BVAlgorithms and slightly corrects the BVH doc.
2009-04-15 05:54:07 +00:00
Benoit Jacob
2bb1c9e8dc finally commit Rohit's work as the start of a new (currently
unsupported) module, MoreVectorization.

CCMAIL:rpg.314@gmail.com
2009-04-14 13:15:53 +00:00
Gael Guennebaud
ea41a18b80 clean asm comments 2009-04-09 21:29:31 +00:00
Jos van den Oever
5a628567b0 Compile fix. 2009-04-05 14:26:47 +00:00
Gael Guennebaud
0170eb0dbe add an auto-diff module in unsupported. it is similar to adolc's forward
mode but the advantage of using Eigen's expression template to compute
the derivatives (unless you nest an AutoDiffScalar into an Eigen's
matrix).
2009-04-01 14:43:37 +00:00
Andrew Coles
64fbd93cd9 As values may be used uninitialised, they have now been given
sensible defaults; or, in other words, if worse comes to worst,
we'll get a guaranteed segfault rather than a heisenburg.
2009-03-23 21:15:33 +00:00
Gael Guennebaud
4bb5221d22 Add BVH module in unsupported (patch from Ilya Baran)
(I thought I committed it a week ago but it seems the command failed)
2009-03-18 20:06:06 +00:00
Gael Guennebaud
40774c625e add a proof of concept autodiff jacobian helper class based on adolc
with unit test and FindAdolc cmake module
2009-02-27 16:19:13 +00:00
Laurent Montel
2d6d14a3d3 Add COMPONENT Devel 2009-02-23 07:50:56 +00:00
Gael Guennebaud
8f83b37b2a fix install of IterativeSolvers module 2009-02-18 13:11:29 +00:00
Gael Guennebaud
40ad661183 added an experimental IterativeSolvers module (currently in unsupported)
with a constrained conjugate gradient algorithm adapted from GMM++/ITL.
This algorithm is needed for Step.
2009-02-10 10:02:41 +00:00
Gael Guennebaud
dc97079905 add optimization flag for MSVC and heavy tests
remove unsupported namespace
2009-02-05 22:13:50 +00:00
Gael Guennebaud
a4487ef198 add snippet for sub/super diagonal
fix a few doc issues
2009-02-05 21:19:40 +00:00
Gael Guennebaud
5e6707d7f7 forgot to add EigenTesting.cmake file 2009-02-04 17:11:04 +00:00
Gael Guennebaud
c26dc9ab1b nothing interesting to see 2009-02-04 16:22:56 +00:00
Gael Guennebaud
82e0cbbac5 extend unsupported/README.txt file 2009-02-04 15:44:59 +00:00
Gael Guennebaud
95db32fcdc setup the unsupported directory structure.
The unsupported module documentation is automatically generated in:
  build/doc/unsupported/
with bidirectional cross references.
I leave a class Foo in AdolcForward module to illustrate the
cross-reference behavior. I will remove it in the next commit.
2009-02-04 15:37:00 +00:00
Gael Guennebaud
44a527dfa5 * classify and sort the doxygen "related pages"
by tweaking the filename and adding 2 categories:
   Troubleshooting and Advanced
* use the EXCLUDE_SYMBOLS to clean the class list
  (insteaded of a homemade bash script)
* remove the broken "exemple list"
* re-structure the unsupported directory as mentionned in the ML and
  integrate the doc as follow:
  - snippets of the unsupported directory are directly imported from the
    main snippets/CMakefile.txt (no need to duplicate code)
  - add a top level "Unsupported modules" group
  - unsupported modules have to defined their own sub group and nest it
    using \ingroup Unsupported_modules
  - then a pair of //@{ //@} will put everything in the submodule
  - this is just a proposal !
2009-02-04 09:44:44 +00:00
Gael Guennebaud
6c5868cc99 add a short unsupported/readme file 2009-02-03 09:02:55 +00:00
Gael Guennebaud
42fa03948c add unsupported/ directory with a first contribution from myself:
a header file providing support for adolc's adouble type in forward
mode. (adolc is an automatic differentiation library)
2009-02-03 08:34:09 +00:00