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
Gael Guennebaud
6373c3cd00
oops bis, I forgot that SelfAdjointEigneSolver directly called the selector...
2009-08-14 13:49:29 +02:00
Gael Guennebaud
8abec72259
oops forgot to remove the #include in Core
2009-08-14 09:49:33 +02:00
Gael Guennebaud
13e95f7f68
optimize "apply Jacobi" for small sizes, and move it to Jacobi.h
2009-08-14 00:17:14 +02:00
Benoit Jacob
f2536416da
* remove EIGEN_DONT_INLINE that harm performance for small sizes
...
* normalize left Jacobi rotations to avoid having to swap rows
* set precision to 2*machine_epsilon instead of machine_epsilon, we lose 1 bit of precision
but gain between 10% and 100% speed, plus reduce the risk that some day we hit a bad matrix
where it's impossible to approach machine precision
2009-08-13 14:56:39 -04: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
Benoit Jacob
76a3089a43
oops, don't set the precision to -1 !!
2009-08-13 09:56:53 -04:00
Benoit Jacob
13b191d94b
apply Koldo's workaround for MSVC bug
2009-08-13 09:53:47 -04:00
Gael Guennebaud
1b257a7620
add an optimized "apply in place a rotation in the plane",
...
and make Jacobi and SelfAdjointEigenSolver use it
=> ~ x1.75 speedup for JacobiSVD and x2 for SelfAdjointEigenSolver
2009-08-13 11:42:02 +02:00
Benoit Jacob
1d80f561ad
apply change discussed on the list :
...
* new default precision "-1" means use the current stream precision
* otherwise, save and restore the stream precision
2009-08-13 22:50:55 -04:00
Benoit Jacob
99802094e4
do without an empirical homemade formula that i wasn't comfortable about...
...
turns out it's not needed anymore and removing it seems to only increase the precision
2009-08-12 18:30:37 -04:00
Benoit Jacob
6bb6810c5e
merge
2009-08-12 18:25:13 -04:00
Benoit Jacob
2b618a2c16
make jacobi SVD more robust after experimenting with very nasty matrices...
...
it turns out to be better to repeat the jacobi steps on a given (p,q) pair until it
is diagonal to machine precision, before going to the next (p,q) pair. it's also
an optimization as experiments show that in a majority of cases this allows to find out
that the (p,q) pair is already diagonal to machine precision.
2009-08-12 18:23:39 -04:00
Jitse Niesen
f71f878bab
Add support for matrix exponential of floats and complex numbers.
2009-08-12 15:44:22 +01:00
Benoit Jacob
309d540d4a
add parentheses; hopefully this solves Koldos MSVC compilation issue...
2009-08-12 10:14:15 -04:00
Benoit Jacob
22d65d47d0
finally, the good approach was two-sided Jacobi. Indeed, it allows
...
to guarantee the precision of the output, which is very valuable.
Here, we guarantee that the diagonal matrix returned by the SVD is
actually diagonal, to machine precision.
Performance isn't bad at all at 50% of the current householder SVD
performance for a 200x200 matrix (no vectorization) and we have
lots of room for improvement.
2009-08-12 02:35:07 -04: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
Benoit Jacob
ce033ebdfe
add EIGEN_DEBUG_VAR
2009-08-11 16:12:34 -04:00
Thomas Capricelli
5ac17b4680
add another Nist test of medium difficutly : MGH17
2009-08-11 20:24:02 +02:00
Gael Guennebaud
afbd73b5cd
overload operartor* with a ProductBase such that "scalar * (mat * mat)" is optimized
...
as one could naturally expect
2009-08-11 15:15:06 +02:00
Gael Guennebaud
a4f6642518
fix issue #36 (missing return *this in Rotation2D
2009-08-11 15:11:47 +02:00
Gael Guennebaud
ea884e6f48
remove #include Bidiagonalization, and add missing ";"
2009-08-11 15:08:03 +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
Gael Guennebaud
35b4077a5d
merge
2009-08-09 23:11:25 +02:00
Gael Guennebaud
ef55e7f4ce
make custom asm directive volatile
2009-08-09 23:09:46 +02:00
Benoit Jacob
216ee335ac
LinearVectorization: If the destination isn't aligned,
...
we have to do runtime checks and we don't unroll, so it's only good for large enough sizes
2009-08-09 22:19:12 +02:00
Benoit Jacob
1f1705868b
now you can #define EIGEN_DEBUG_ASSIGN, and all the values in ei_assign_traits are printed
2009-08-09 21:35:13 +02:00
Benoit Jacob
527557672a
disable the assembly for fast unaligned stores. indeed, there is a strange bug that is triggered by this code:
...
#include<Eigen/Core>
int main()
{
Eigen::Matrix4f m;
m <<1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16;
m.col(0).swap(m.col(1));
std::cout << m << std::endl;
}
when the fast unaligned stores are used, the column is copied instead of being swapped.
2009-08-09 20:49:55 +02:00
Benoit Jacob
8e08680119
don't depend on uninitialized value
2009-08-09 17:18:42 +02:00
Benoit Jacob
3ed83fa681
* add Jacobi transformations
...
* add Jacobi (Hestenes) SVD decomposition for square matrices
* add function for trivial Householder
2009-08-09 16:58:13 +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