Benoit Jacob
6b48e932e9
*port the Cholesky module to the new solve() API
...
*improve documentation
2009-10-29 21:11:05 -04:00
Hauke Heibel
d0562bd473
corrected the computation cost of mean
2009-10-29 19:58:54 +01:00
Hauke Heibel
c70a603e34
added mean() reduction
2009-10-29 19:56:58 +01:00
Gael Guennebaud
e513cc75c4
oops I forgot to include that file in the previous commit (fixing #65 )
2009-10-29 14:24:09 +01:00
Gael Guennebaud
541eac0828
fix #65 : MatrixBase::nonZero()
2009-10-29 14:22:02 +01:00
Benoit Jacob
e8dd552257
sync with mainline
2009-10-28 19:06:45 -04:00
Benoit Jacob
2840ac7e94
big huge changes, so i dont remember everything.
...
* renaming, e.g. LU ---> FullPivLU
* split tests framework: more robust, e.g. dont generate empty tests if a number is skipped
* make all remaining tests use that splitting, as needed.
* Fix 4x4 inversion (see stable branch)
* Transform::inverse() and geo_transform test : adapt to new inverse() API, it was also trying to instantiate inverse() for 3x4 matrices.
* CMakeLists: more robust regexp to parse the version number
* misc fixes in unit tests
2009-10-28 18:19:29 -04:00
Benoit Jacob
6219f9acfa
* rename new Quat class to Quaternion, remove existing Quaternion
...
* add Copyright line for Mathieu
* cast() was broken (compile errors) and needed anyway to be in QuaternionBase
* it's VectorBlock<T,3>, don't pass additional parameter 1, it has different meaning!!
* make it compile with GCC (put 'typename' at the right location)
2009-10-27 15:45:24 -04:00
Mathieu Gautier
611d2b0b1d
Quaternion could now map an array of 4 scalars :
...
new classes :
* QuaternionBase
* Map<Quaternion>
2009-10-27 13:19:16 +00:00
Hauke Heibel
427f8a87d1
Added dox for the new typedefs.
2009-10-27 16:02:36 +01:00
Hauke Heibel
dbaba9019b
Added more common typedefs.
2009-10-27 15:57:21 +01:00
Hauke Heibel
7cc9fb5d0a
Umeyama is now working with fixed size src and dst points.
2009-10-27 15:29:12 +01:00
Benoit Jacob
1f1c04cac1
sync the documentation examples
2009-10-26 14:37:43 -04:00
Benoit Jacob
44cdbaba4d
* make inverse() do a ReturnByValue
...
* add computeInverseWithCheck
* doc improvements
* update test
2009-10-26 14:16:50 -04:00
Benoit Jacob
07d1bcffda
remove 1 useless layer of functions
2009-10-26 12:30:29 -04:00
Benoit Jacob
ec02388a5d
big rewrite in Inverse.h
...
in particular, the API is essentially finalized and the 4x4 case is fixed to be numerically stable.
2009-10-26 11:18:23 -04:00
Hauke Heibel
66fe5a5f36
It is just not that easy and requires more work to get it done right.
2009-10-24 14:48:34 +02:00
Gael Guennebaud
a382963b04
* extend Map to allow the user to specify whether the mapped data
...
is aligned or not. This is done using the Aligned constant:
Map<MatrixType,Aligned>::Map(data);
* rename ForceAligned to EnforceAlignedAccess, and update its doc,
and emphasize this is mainly an internal stuff.
2009-10-23 14:26:14 +02:00
Hauke Heibel
99bb29abcf
demeaning with colwise expression
2009-10-22 10:11:26 +02:00
Benoit Jacob
68d48511b2
move PartialLU to the new API
2009-10-21 17:06:42 -04:00
Benoit Jacob
c3180b7ffb
MatrixBase:
...
* support resize() to same size (nop). The case of FFT was another case where that make one's life far easier.
hope that's ok with you Gael. but indeed, i don't use it in the ReturnByValue stuff.
FFT:
* Support MatrixBase (well, in the case with direct memory access such as Map)
* adapt unit test
2009-10-20 23:25:49 -04:00
Benoit Jacob
13f31b8daf
* make PartialLU avoid to generate inf/nan when given a singular matrix
...
(result undefined, but at least it won't take forever on intel 387)
* add lots of comments, especially to LU.h
* fix stuff I had broken in Inverse.h
* split inverse test
2009-10-20 00:36:07 -04:00
Benoit Jacob
9a700c2974
* LU unit test: finally test fixed sizes
...
* ReturnByValue: after all don't eval to temporary for generic MatrixBase impl
2009-10-19 10:56:37 -04:00
Benoit Jacob
47eeb40380
remove the m_originalMatrix member. Instead, image() now takes the original matrix as parameter. It was the only method to use it anyway. Introduce m_isInitialized.
2009-10-18 15:21:19 -04:00
Benoit Jacob
d71c7f42d3
* useThreshold -> setThreshold
...
* remove defaultThreshold()
2009-10-18 14:20:14 -04:00
Benoit Jacob
8332c232db
big huge changes in LU!
...
* continue the decomposition until a pivot is exactly zero;
don't try to compute the rank in the decomposition itself.
* Instead, methods such as rank() use a new internal parameter
called 'threshold' to determine which pivots are to be
considered nonzero.
* The threshold is by default determined by defaultThreshold()
but the user can override that by calling useThreshold(value).
* In solve/kernel/image, don't assume that the diagonal of U
is sorted in decreasing order, because that's only approximately
true. Additional work was needed to extract the right pivots.
2009-10-18 00:47:40 -04:00
Gael Guennebaud
7b0c4102fa
* add a Make* expression type builder to allow the
...
construction of generic expressions working
for both dense and sparse matrix. A nicer solution
would be to use CwiseBinaryOp for any kind of matrix.
To this end we either need to change the overall design
so that the base class(es) depends on the kind of matrix,
or we could add a template parameter to each expression
type (e.g., int Kind = ei_traits<MatrixType>::Kind)
allowing to specialize each expression for each kind of matrix.
* Extend AutoDiffScalar to work with sparse vector expression
for the derivatives.
2009-10-16 13:22:38 +02:00
Benoit Jacob
3c4a025a54
merge
2009-10-15 16:09:43 -04:00
Benoit Jacob
41e942d3fb
don't try to finish early
2009-10-15 16:09:17 -04:00
Hauke Heibel
d177c1f3ac
Inlining fixes + fixed typo.
...
Removed ei_assert in presence of static assert.
2009-10-15 21:07:14 +02:00
Hauke Heibel
0927ba1fd3
More warning fixes.
2009-10-14 19:55:23 +02:00
Hauke Heibel
c37cfc32b3
Fixed more W4 warnings.
2009-10-14 11:08:00 +02:00
Hauke Heibel
f4661e696e
Resize is only defined in Matrix and not in MatrixBase.
...
I am not sure whether the better fix is to move the resize functions to MatrixBase.
2009-10-14 11:07:11 +02:00
Gael Guennebaud
8c37b1b5b7
add missing PartialReduxExpr::coeff(index) function
2009-10-13 14:41:57 +02:00
Gael Guennebaud
1443094072
compilation fix: make the generic template ctor explicit
2009-10-13 09:23:09 +02:00
Gael Guennebaud
81a70cef5c
merge
2009-10-07 14:26:42 +02:00
Gael Guennebaud
af31345df3
really fix stable norm compilation for older gcc
2009-10-07 14:25:12 +02:00
Benoit Jacob
24e1d3266a
merge
2009-10-06 09:27:01 -04:00
Benoit Jacob
80ede36b24
allow arbitrary resulttype, fixes Xuewen's issue, and this stuff is going to get deeply refactored soon anyway.
2009-10-06 09:26:28 -04:00
Gael Guennebaud
4cf7366027
fix compilation in stable norm, move a platform check to the unit tests
2009-10-06 10:24:41 +02:00
Gael Guennebaud
904f35d194
discard vectorization in matrix-vector product when data is not even
...
aligned on the scalar type size (e.g., for double on 32 bits system without -malign-double)
2009-10-05 17:22:16 +02:00
Benoit Jacob
bb1cc0d092
after all we're not aligning to 8byte boundary
...
keep most of the changes though as they make the code more extensible
2009-10-05 10:55:42 -04:00
Benoit Jacob
d41577819b
we were already aligning to 16 byte boundary fixed-size objects that are multiple of 16 bytes;
...
now we also align to 8byte boundary fixed-size objects that are multiple of 8 bytes.
That's only useful for now for double, not e.g. for Vector2f, but that didn't seem to hurt. Am I missing something? Do you prefer that we don't align Vector2f at all?
Also, improvements in test_unalignedassert.
2009-10-05 10:11:11 -04:00
Benoit Jacob
71f19d90d0
forgot to hg add this file
2009-10-02 12:40:19 -04:00
Gael Guennebaud
bcdeb68b63
merge
2009-10-01 13:28:22 +02:00
Gael Guennebaud
9a3cae4655
better fix for (v * v') * v, we still have to find a way to reorder it
2009-10-01 13:27:03 +02:00
Benoit Jacob
3529179376
merge
2009-10-01 07:26:47 -04:00
Hauke Heibel
5409ce1625
Fixed wrong line endings.
2009-10-01 07:20:09 +02:00
Benoit Jacob
3a315fdc9a
make Replicate ctor require the exact expected type
2009-09-30 15:47:11 -04:00
Gael Guennebaud
d7a2a37a4c
bugfix in the eigenvalue solvers (forgot to resize the eigen vectors)
2009-09-30 16:48:02 +02:00
Benoit Jacob
fa65b09661
add outerproduct coeff(int,int) method.
...
This is needed to make this expression work:
(vec1*vec2.transpose())*vec3
Gael, no objection? Seems to make sense as that's fast.
2009-09-29 20:30:28 -04:00
Benoit Jacob
eeabd18afc
Fix compilation of HouseholderQR and ColPivotingHouseholderQR for non-square fixed-size matrices.
...
For Colpiv that was just changing MatrixQType to MatrixType in the instantiation of HouseholderSequence.
For HouseholderQR I also re-ported the solve method from Colpiv as there were multiple issues.
2009-09-28 10:49:55 -04:00
Benoit Jacob
67bf7c90c5
* update test to expose bug #57
...
* update createRandomMatrixOfRank to support fixed size
2009-09-28 09:40:18 -04:00
Benoit Jacob
765600458b
* bump to 2.90.0 now that it's agreed that we're doing eigen3
...
---> question: do we change the prefix eigen2/ to eigen3/ now?
no, better wait until we've also changed the repository name
* more message improvements: "Install Eigen" was unclear as it left
out other things like the BLAS library
2009-09-27 18:05:54 -04:00
Benoit Jacob
92480ffd26
* Introduce make targets btest (build tests), blas (build blas lib), demos (build demos).
...
* remove EIGEN_BUILD_TESTS and siblings
* add summary at the end of cmake run, hopefully not too verbose
* fix build of quaternion demo
* kill remnants of old binary library option
2009-09-27 17:48:53 -04:00
Hauke Heibel
e115fa3cea
Ok, too many class bodies - it was only required for ei_svd_precondition_2x2_block_to_be_real.
2009-09-27 17:18:19 +02:00
Hauke Heibel
3c74d6b7d4
Added private, non-implemented assignment operators to functions that don't need them (fixes VC warning on /W4).
2009-09-27 17:03:02 +02:00
Hauke Heibel
13545eab9b
Fixed VC compilation error on the JacobiSVD module.
2009-09-27 17:00:10 +02:00
Benoit Jacob
924b55e9a9
when copying a ReturnByValue into a MatrixBase, first eval it to a PlainMatrixType.
...
This allows to limit the number of instantiations of the big template method evalTo.
Also allows to get rid of the dummy MatrixBase::resize().
See "TODO" comment.
2009-09-26 22:48:16 -04:00
Benoit Jacob
e82ab8a5dd
move also inverse() to ReturnByValue, by doing a solve on NestByValue<Identity>.
...
also: adding resize() to MatrixBase was really needed ;)
2009-09-26 11:40:29 -04:00
Hauke Heibel
104f9954e1
Removed implicit type conversion (VC warning fix).
2009-09-25 14:58:20 +02:00
Hauke Heibel
21d2533723
Matrix::conservativeResize, resize only when necessary.
2009-09-25 14:44:48 +02:00
Gael Guennebaud
bdf603caec
remove some dirty lines
2009-09-25 12:58:41 +02:00
Gael Guennebaud
e12bd2e8d2
extend the support for bool
2009-09-25 12:58:04 +02:00
Hauke Heibel
3d6e4ab879
Uuups that was not yet intended for a commit.
2009-09-25 10:14:16 +02:00
Hauke Heibel
2fbf5ce7df
Fixed issue #57 .
2009-09-25 10:12:09 +02:00
Benoit Jacob
176c26feb5
allow to do xpr = solve(b) etc... just by adding a dummy MatrixBase::resize()
2009-09-22 01:41:09 -04:00
Benoit Jacob
4f9e270343
* make LU::kernel() and LU::image() also use ReturnByValue
...
* make them return zero vector in the degenerate case, instead of asserting
(let's stick to the principle that we only assert on memory errors)
2009-09-22 00:16:51 -04:00
Benoit Jacob
0ad3494bd3
fix docs
2009-09-22 21:51:23 -04:00
Benoit Jacob
ab5cc8284a
convert LU::solve() to the new API
2009-09-22 20:58:29 -04:00
Benoit Jacob
c1c780a94f
* ReturnByValue:
...
-- simpplify by removing the 2nd template parameter
-- rename Functor to Derived, as now it's a usual CRTP
* Homogeneous:
-- in products, honor the Max sizes etc.
2009-09-22 12:20:45 -04:00
Hauke Heibel
c6822d6723
Added EIGEN_REF_TO_TEMPORARY define for rvalue support.
...
Allowed VC10 to make use of static_assert.
2009-09-21 19:59:58 +02:00
Benoit Jacob
1df54e3ac2
fix bug #42 , add missing Transform::Identity()
2009-09-19 19:59:49 -04:00
Benoit Jacob
828a79ac78
allow to override EIGEN_RESTRICT, to satisfy a smart ass blogger who claims
...
that eigen2 owes all its performance to nonstandard restrict keyword.
well, this can also improve portability in case some compiler doesn't have __restrict.
2009-09-19 19:45:58 -04:00
Gael Guennebaud
0b60027f3c
implement __gnuc_forget_about_setZero_its_over_now
2009-09-18 15:36:05 +02:00
Benoit Jacob
6b5f96cb03
undef B0
2009-09-19 19:14:28 -04:00
Gael Guennebaud
3b5a9acba8
fix stable_norm unit test
2009-09-18 11:41:38 +02:00
Gael Guennebaud
add5381be7
finish my evalToDense => evalTo change
2009-09-17 23:51:16 +02:00
Gael Guennebaud
5ba7fe3bee
clean the commented asm instructions because now I'm sure
...
the previous fix is ok
2009-09-17 23:34:00 +02:00
Gael Guennebaud
f2737148b0
merge
2009-09-17 23:21:48 +02:00
Benoit Jacob
760636a237
fix bug #52 : Transform::inverse() should return a Transform
2009-09-18 18:45:45 -04:00
Gael Guennebaud
9395326e44
fix #53 : performance regression, hopefully I did not resurected another
...
perf. issue...
2009-09-17 23:18:21 +02:00
Gael Guennebaud
fcae32cc3f
compilation fixes
2009-09-17 15:11:13 +02:00
Gael Guennebaud
24950bdfcb
make ColPivotingQR use HouseholderSequence
2009-09-16 15:56:20 +02:00
Gael Guennebaud
49dd5d7847
* add a HouseholderSequence class (not good enough yet for Triadiagonalization and HessenbergDecomposition)
...
* rework a bit AnyMatrixBase, and mobe it to a separate file
2009-09-16 14:35:42 +02:00
Gael Guennebaud
77f858f6ab
improve ComplexShur api and doc
2009-09-16 14:34:08 +02:00
Benoit Jacob
a4fd0aa25b
* fix bug in col-pivoting qr, forgot to swap the colNorms when swapping cols
...
* add Gael a copyright line
2009-09-16 14:19:59 -04:00
Benoit Jacob
46be9c9ac1
* fix super nasty bug: vector.maxCoeff(&index) didn't work when 'vector'
...
was a row-vector. Fixed by splitting the vector version from the matrix version.
* add unit test, the visitors weren't covered by any test!!
2009-09-16 14:18:30 -04:00
Gael Guennebaud
9e9abab2b9
bugfixes for ICC (compilation and runtime)
2009-09-15 11:53:24 +02:00
Gael Guennebaud
d5319f4ba8
fix warning in stable norm
2009-09-15 11:16:58 +02:00
Jitse Niesen
220ff54131
Fix LaTeX error in doxygen comment.
2009-09-08 14:41:54 +01:00
Hauke Heibel
3a2499fb11
Fixed conservative_resize compilation errors.
2009-09-08 10:02:19 +02:00
Hauke Heibel
437a79e1ab
Fixed unit test and improved code reusage for resizing.
2009-09-07 17:48:42 +02:00
Hauke Heibel
64095b6610
Changed the AnyMatrixBase / ei_special_scalar_op inheritance order as proposed by Gael.
...
Added conservativeResizeLike as discussed on the mailing list.
2009-09-07 17:22:01 +02:00
Gael Guennebaud
bdcc0bc157
fix compilation of swap for ICC
2009-09-07 11:37:41 +02:00
Gael Guennebaud
225ec02b06
fix another .stride() issue in Cholmod support
2009-09-07 11:15:38 +02:00
Gael Guennebaud
61fe2b6a56
bug fix in SuperLU support: the meaning of Matrix::stride() changed for vectors
2009-09-07 10:55:33 +02:00
Gael Guennebaud
e4f94b8c58
enable ILU in super LU only if the super version supports it
2009-09-04 18:19:34 +02:00
Peter Román
80179e9549
Added support for SuperLU's ILU factorization
2009-08-21 11:14:45 +02:00
Gael Guennebaud
b0aa2520f1
* add real scalar * complex matrix, real matrix * complex scalar,
...
and complex scalar * real matrix overloads
* allows the inner and outer product specialisations to mix real and complex
2009-09-04 11:22:32 +02:00
Gael Guennebaud
6902ef0824
extend mixingtype test to check diagonal products and fix the later for real*complex products
2009-09-04 10:17:28 +02:00
Gael Guennebaud
a7ed998d52
bug fix in novel makeGivens for real
2009-09-04 10:05:22 +02:00
Gael Guennebaud
3fbf71d6b9
compilation fix for conservativeResize
2009-09-04 09:26:00 +02:00
Gael Guennebaud
68b28f7bfb
rename the EigenSolver module to Eigenvalues
2009-09-04 09:23:38 +02:00
Hauke Heibel
7f5256f628
Added conservativeResize + unit test.
2009-09-03 17:27:51 +02:00
Gael Guennebaud
82ad37c730
implement the continuous generation algorithm of Givens rotations by Anderson (2000)
2009-09-03 17:08:38 +02:00
Hauke Heibel
41aea9508e
This seems to be important for MSVC to optimize the size of empty base classes.
2009-09-03 13:46:44 +02:00
Gael Guennebaud
3eb37fe1fb
update mixingtype unit test to reflect current status, but it is still clear
...
we should allow matrix products between complex and real ?
2009-09-03 13:03:26 +02:00
Gael Guennebaud
00f4b46908
typo in sqrt(complex)
2009-09-03 11:50:06 +02:00
Gael Guennebaud
a54b99fa72
move eigen values related stuff of the QR module to a new EigenSolver module.
...
- perhaps we can find a better name ?
- note that the QR module still includes the EigenSolver module for compatibility
2009-09-03 11:39:44 +02:00
Gael Guennebaud
9515b00876
remove the \addexample tags
2009-09-03 11:22:42 +02:00
Gael Guennebaud
16c7b1daab
add examples for makeJacobi and makeGivens
2009-09-03 11:17:16 +02:00
Gael Guennebaud
c893917d65
Fix serious bug discovered with gcc 4.2
2009-09-03 10:45:32 +02:00
Hauke Heibel
8d449bd80e
Removed debug cout.
...
Disabled MSVC inconsistent DLL linkage.
2009-09-02 21:23:09 +02:00
Benoit Jacob
7aa6fd3625
big reorganization in JacobiSVD:
...
- R-SVD preconditioning now done with meta selectors to avoid compiling useless code
- SVD options now honored, with options to hint "at least as many rows as cols" etc...
- fix compilation in bad cases (rectangular and fixed-size)
- the check for termination is now done on the fly, no more goto (should have done that earlier!)
2009-09-03 02:53:51 -04:00
Benoit Jacob
89557ac41d
introduce EIGEN_SIZE_MIN
...
now we should check if some EIGEN_ENUM_MIN usage needs to be replaced by that... potential bug when using mixed-size matrice
2009-09-03 02:50:42 -04:00
Benoit Jacob
7d18c30641
finally the first version was the good one...
2009-09-03 01:25:40 -04:00
Gael Guennebaud
7586f7f706
fix #51 (bad use of std::complex::real)
2009-09-02 15:18:11 +02:00
Gael Guennebaud
b83654b5d0
* rename JacobiRotation => PlanarRotation
...
* move the makeJacobi and make_givens_* to PlanarRotation
* rename applyJacobi* => apply*
2009-09-02 15:04:10 +02:00
Gael Guennebaud
496ea63972
fix wrong assert
2009-09-02 14:08:33 +02:00
Gael Guennebaud
4a8258369a
much simpler fix for Matrix::swap
2009-09-02 13:37:15 +02:00
Benoit Jacob
ec20d58317
* add serious unit test for swap
...
* fix my stupidity in Matrix::swap()
2009-09-02 16:56:48 -04:00
Benoit Jacob
cc375e2f79
merge
2009-09-02 06:37:41 -04:00
Benoit Jacob
e6b77bcc6b
JacobiSVD: implement general R-SVD using full-pivoting QR, so we now support any rectangular matrix size by reducing to the smaller of the two dimensions (which is also an optimization)
2009-09-02 06:36:55 -04:00
Benoit Jacob
c16d65f015
fix compilation errors in swap (could not swap with anything else than the exact same Matrix type)
2009-09-02 06:35:01 -04:00
Hauke Heibel
05ddd32849
added missing JacobiRotation's ...
2009-09-01 23:12:40 +02:00
Gael Guennebaud
4d91229bdc
[mq]: eigensolver
2009-09-01 16:20:56 +02:00
Gael Guennebaud
1e7a9ea70a
fix issue #47 : now m.noalias() = XXX properly resize m if needed
2009-09-01 13:35:44 +02:00
Gael Guennebaud
8392373d96
add a JacobiRotation class wrapping the cosine-sine pair with
...
some convenient features (transpose, adjoint, product)
2009-09-01 13:18:03 +02:00
Benoit Jacob
6e4e94ff32
* JacobiSVD:
...
- support complex numbers
- big rewrite of the 2x2 kernel, much more robust
* Jacobi:
- fix weirdness in initial design, e.g. applyJacobiOnTheRight actually did the inverse transformation
- fully support complex numbers
- fix logic to decide whether to vectorize
- remove several clumsy methods
fix for complex numbers
2009-08-31 22:26:15 -04:00
Gael Guennebaud
a16599751f
fix Matrix::stride for vectors, add a unit test for Block::stride
...
and make use of it where it was relevant
2009-08-31 17:39:56 +02:00
Hauke Heibel
ab6eb6a1a4
Adaptions from .lazy() towards .noalias().
...
Added missing casts.
2009-08-31 17:29:37 +02:00
Hauke Heibel
bc7aec0ef5
ifdef removed from MapBase and warning disabled
2009-08-31 17:24:38 +02:00
Gael Guennebaud
095809edda
fix issue #45 and document the .data() and .stride() functions
2009-08-31 17:07:54 +02:00
Gael Guennebaud
27c9ecc50f
fix copy/paste issue
2009-08-31 16:41:13 +02:00
Hauke Heibel
0a0a805569
Fixed a cast warning in scaleAndAddTo.
...
Fixed lazyness in umeyama.
Added a few missing casts.
2009-08-31 15:34:57 +02:00
Hauke Heibel
32a9aee286
Added MSVC guards to assignment operators.
2009-08-31 14:40:53 +02:00
Hauke Heibel
99bfab6dcf
Removed redundant assignment operators.
2009-08-31 13:47:32 +02:00
Gael Guennebaud
9005eb0788
compilation fix in AmbiVector<int>
2009-08-31 09:32:46 +02:00
Gael Guennebaud
3705498721
add coeff(int,int), coeff(int) and value() functions to the inner product specialization
2009-08-26 00:24:22 +02:00
Thomas Capricelli
d0a5da95b1
fix installation for recently added files
2009-08-25 18:57:59 +02:00
Benoit Jacob
191d5275a7
modernize HouseholderQR too, uniformize all that stuff, update tests
2009-08-24 13:46:14 -04:00
Jitse Niesen
7e4bd70157
Fix comment which may cause latex to hang when generating docs
2009-08-24 18:01:18 +01:00
Gael Guennebaud
078a870a87
fix issue #43
2009-08-24 18:56:27 +02:00
Benoit Jacob
0eb142f559
bring the modern comfort also to ColPivotingHouseholderQR
...
+ some fixes in FullPivotingHouseholderQR
2009-08-24 11:11:41 -04:00
Benoit Jacob
3288e5157a
finally, the correct way of dealing with zero matrices in solve()
2009-08-24 10:51:07 -04:00
Benoit Jacob
b8106e97b4
add logAbsDeterminant()
...
move log and exp functors from Array to Core
update documentation
2009-08-24 09:46:17 -04:00
Benoit Jacob
c9a307f330
give FullPivotingHouseholderQR all the modern comfort
2009-08-24 00:23:35 -04:00
Benoit Jacob
b37ab9b324
clarifications in LU::solve() and in LU documentation
2009-08-24 00:02:49 -04:00
Benoit Jacob
0926549659
fix bug: with complex matrices, the condition (ei_imag(c0)==RealScalar(0)) being wrong could bypass the other condition in the &&.
...
at least that's my explanation why the test_lu was often failing on complex matrices (it uses that via createRandomMatrixOfRank)
and why that's fixed by this diff.
also gcc 4.4 gave a warning about tailSqNorm potentially uninitialized
2009-08-24 00:02:22 -04:00
Benoit Jacob
d38624b1ad
merge
2009-08-23 18:05:33 -04:00
Benoit Jacob
97bc1af1f1
add ColPivotingHouseholderQR
...
rename RRQR to fullPivotingHouseholderQR
2009-08-23 18:04:33 -04:00
Gael Guennebaud
47fda1f3b2
hm, forgot to conjugate the arguments in applyJacobiOnTheLeft
2009-08-24 00:01:02 +02:00
Gael Guennebaud
e86dbd5255
fix apply Jacobi for complexes and add documentation for some *Jacobi* functions
2009-08-23 23:49:44 +02:00
Benoit Jacob
7bedf5e9cb
add initial, rough, full-pivoting RRQR decomposition
...
lots of room for improvement!
and add Gael a (c) line in Householder.h
2009-08-22 01:13:21 -04:00
Benoit Jacob
2f0b4e1abc
fix compilation with gcc 4.1. Indeed the path for recent gcc doesn't work with gcc 4.1, and looking at the implementation of vector in g++ 4.1, it was exactly our fallback case, so use that.
2009-08-21 12:16:37 -04:00
Benoit Jacob
72b002eab9
work around internal compiler error with gcc 4.1 and 4.2, reported on the forum
2009-08-20 12:19:15 -04:00
Gael Guennebaud
d56be9c128
* make HessenbergDecomposition uses the Householder module
...
* bugfix in ei_blas_traits for .conjugate().conjugate()
2009-08-17 17:41:01 +02:00
Gael Guennebaud
ff0f005d4c
change the make householder algorithm so that the remaining coefficient
...
is real, and make Tridiagonalization use it
2009-08-17 17:04:32 +02:00
Gael Guennebaud
e125c199bb
add EIGEN_TRANSFORM_PLUGIN
2009-08-17 09:16:41 +02:00
Gael Guennebaud
737bed19c1
make HouseholderQR uses the Householder module
2009-08-16 19:22:15 +02:00
Gael Guennebaud
fc9480cbb3
bugfix in compute_matrix_flags, optimization in LU,
...
improve doc, and workaround aliasing detection in MatrixBase_eval snippet
(not very nice but I don't know how to do it in a better way)
2009-08-16 10:55:10 +02:00
Benoit Jacob
ee982709d3
in all decs, make the compute() methods return *this
...
(implements feature request #18 )
2009-08-15 23:12:39 -04:00
Gael Guennebaud
65fe5f76fd
rename back MayAliasBit to EvalBeforeAssigningBit
2009-08-16 00:14:05 +02:00
Gael Guennebaud
f5f2b222a3
make SVD reuses applyJacobi
2009-08-16 00:02:36 +02:00
Gael Guennebaud
044dd0c1dd
revert previous change in Quaternion::setFromTwoVectors
2009-08-15 23:37:20 +02:00
Benoit Jacob
03c1e79f35
svd: sort in decreasing order, remove unused code
2009-08-15 19:20:48 -04:00
Gael Guennebaud
239ada95b7
add overloads of lazyAssign to detect common aliasing issue with
...
transpose and adjoint
2009-08-15 22:19:29 +02:00
Benoit Jacob
a3e6047c25
fix and improve docs
2009-08-15 15:29:44 -04:00
Gael Guennebaud
50c703f0c7
As proposed on the list:
...
- rename EvalBeforeAssignBit to MayAliasBit
- make .lazy() remove the MayAliasBit only, and mark it as deprecated
- add a NoAlias pseudo expression, and MatrixBase::noalias() function
Todo:
- we have to decide whether += and -= assume no aliasing by default ?
- once we agree on the API: update the Sparse module and the unit tests respectively.
2009-08-15 18:35:51 +02:00
Gael Guennebaud
13a8956188
bugfix in inner-product specialization,
...
compilation fix in stable norm,
optimize apply householder
2009-08-15 13:12:50 +02:00
Gael Guennebaud
7b60713e87
my previous fix was not very good
2009-08-15 11:52:50 +02:00
Gael Guennebaud
0da31a6e1d
bugfix and compilation fix in ProductBase
2009-08-15 10:55:11 +02:00
Gael Guennebaud
bff4238d15
fix setFromTwoVectors because of the change in sorting of the the singular values
2009-08-15 10:24:27 +02:00
Gael Guennebaud
109a4f650b
fix a couple of warnings
2009-08-15 10:20:01 +02:00
Benoit Jacob
fe4a86443f
fix warning
2009-08-14 20:16:04 -04:00
Benoit Jacob
a5f820b873
forgot to update this
2009-08-14 20:03:14 -04:00
Benoit Jacob
2f74801ca4
as discussed on list: default to align cols, reorganize parameters accordingly so that the default corresponds to 0 flag,
...
and implement FullPrecision output (non-default).
2009-08-14 16:31:42 -04:00
Benoit Jacob
16abc0ba7f
try to support 16 bit platforms... optimistic, but can't hurt
2009-08-14 15:49:14 -04:00
Benoit Jacob
22ae236d4e
machine_epsilon -> epsilon as wrapper around numeric_traits
2009-08-14 15:12:32 -04: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
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
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
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
Benoit Jacob
ce033ebdfe
add EIGEN_DEBUG_VAR
2009-08-11 16:12:34 -04: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
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
Gael Guennebaud
fe813911f2
make LU::solve() not to crash when rank=0
2009-08-09 00:06:53 +02:00
Benoit Jacob
5f8d58f36a
fix bug in sorting of singular values
2009-08-09 00:05:38 +02:00
Gael Guennebaud
f5e1c896c7
replace custom rank one update in LU by an expression
2009-08-08 00:01:43 +02:00
Gael Guennebaud
d1dc088ef0
* implement a second level of micro blocking (faster for small sizes)
...
* workaround GCC bad implementation of _mm_set1_p*
2009-08-07 11:09:34 +02:00
Gael Guennebaud
543a785756
Fix compilation in sparse module
2009-08-06 17:28:49 +02:00
Gael Guennebaud
2707a6b87c
fix determinant in PartialLU
2009-08-06 17:28:31 +02:00
Gael Guennebaud
1d1e4884da
oops, one more bug fix in homogeneous
2009-08-06 16:56:10 +02:00
Gael Guennebaud
9822493aaf
fixes in determinant and homogeneous
2009-08-06 16:54:55 +02:00
Gael Guennebaud
3ac01b1400
compilation fix in EigenSolver,
...
bugfix in PartialLU
2009-08-06 16:41:54 +02:00
Gael Guennebaud
e82e30862a
typo
2009-08-06 15:04:42 +02:00
Gael Guennebaud
03febf00a0
fix VS compilation issue in MapBase::operator+= and -=
2009-08-06 15:03:37 +02:00
Gael Guennebaud
2e46e9f2b4
shame on me
2009-08-06 14:57:38 +02:00
Gael Guennebaud
d34c5ef509
fix my bad fix of Hauke's fix ;)
2009-08-06 14:54:25 +02:00
Gael Guennebaud
1d4fea48b5
fix a couple of compilations issues
2009-08-06 14:10:02 +02:00
Hauke Heibel
c2861dd41a
fixed inversion for AffineCompact matrices
2009-08-06 12:25:18 +02:00
Gael Guennebaud
56d00779db
more product refactoring
2009-08-06 12:20:02 +02:00
Hauke Heibel
6b2ab13ac5
fix vs.net compilation issue
2009-08-06 11:40:25 +02:00
Hauke Heibel
8163757cf0
fix vs.net compilation issue
2009-08-06 11:27:25 +02:00
Gael Guennebaud
fa55cf5ce7
fix compilation and segfault issues
2009-08-06 11:19:36 +02:00
Gael Guennebaud
b9b17ea5a5
add the missing Affine Transform * set of column vectors products...
2009-08-06 11:02:03 +02:00
Benoit Jacob
0744638b6f
remove remnant of MultiplierBase
2009-08-06 10:35:13 +02:00
Gael Guennebaud
84a7659bef
implement the missing outer product,
...
and attempt to workaround a gcc internal error
2009-08-05 17:39:11 +02:00
Gael Guennebaud
88147e0a91
big refactoring in Product.h:
...
- all specialized products now inherits ProductBase
- the default product evaluated by Assign is still here,
but it is currently enabled for small fixed sizes only
- => this significantly speed up compilation for large matrices
- I left the OuterProduct specialization empty as an exercise...
2009-08-05 15:23:35 +02:00
Benoit Jacob
014c581a5b
fix assertions, improve docs.
...
we never assert on conditions that depend on the result of a computation!!
also the assertion that rank>0 amounts to matrix!=0 which we have to leave under the responsibility of the user.
2009-08-05 10:15:28 +02:00
Gael Guennebaud
7d607048a9
implement a ProductBase class and, as a proof of concept, update TriangularProduct
...
and SelfAdjointMatrixProduct to take advantage of it => fewer LOC
2009-08-04 16:54:17 +02:00
Gael Guennebaud
f3a6bc48c4
fix a couple of compilation issue due to the removal of MultiplierBase
2009-08-04 13:16:40 +02:00
Gael Guennebaud
2089a263f8
merge
2009-08-04 11:31:25 +02:00
Gael Guennebaud
4bec101470
implement two levels of blocking in PartialLU => high speedup
2009-08-04 11:28:02 +02:00
Benoit Jacob
4436a4d68c
use explicit Block/VectorBlock xprs to make sure that compile-time known sizes are used
2009-08-04 00:27:58 +02:00
Benoit Jacob
523cdedf58
make the dot product linear in the second variable, not the first variable
2009-08-03 17:20:45 +02:00
Gael Guennebaud
912da9fade
merge with special_matrix branch
2009-08-03 16:17:32 +02:00
Gael Guennebaud
a8f943127c
merge
2009-08-03 16:11:30 +02:00
Benoit Jacob
d10c710b15
add new Householder module
2009-08-03 16:06:57 +02:00
Gael Guennebaud
3cf5bb31f6
* Bye bye MultiplierBase, extend a bit AnyMatrixBase to allow =, +=, and -=
...
* This probably makes ReturnByValue needless
2009-08-03 16:05:15 +02:00
Benoit Jacob
66ee2044ce
small fixes
2009-08-03 16:05:07 +02:00
Benoit Jacob
3cde9c0e35
apply Gael's idea for auto transpose in mixed fixed/dynamic case
2009-08-03 16:04:15 +02:00
Gael Guennebaud
ce1dc1ab16
implements a blocked version of PartialLU
2009-08-03 12:11:18 +02:00
Gael Guennebaud
0103de8512
bugfix in trsm
2009-08-02 15:32:43 +02:00
Gael Guennebaud
48fc64458c
add blocked LLT, and bugfix in trsm asserts
2009-08-01 23:42:51 +02:00
Gael Guennebaud
18429156a1
add selfadjointView from a trinagularView
2009-07-31 17:35:55 +02:00
Gael Guennebaud
2796bcabb1
some cleaning
2009-07-31 17:35:20 +02:00
Gael Guennebaud
a156f5a869
faster trsm kernel and fix a couple of issues
2009-07-31 13:18:19 +02:00
Gael Guennebaud
21f686846b
s/std::atan2/ei_atan2
2009-07-31 10:08:23 +02:00
Manuel Yguel
ae5e26a363
add missing ei_atan2 without painfull warnings
2009-07-31 09:21:31 +02:00
Gael Guennebaud
2e9f7f80bf
compilation fixes for sun CC
2009-07-31 10:04:34 +02:00
Benoit Jacob
d8bfd151d1
forward-port Anthony Truchet's changeset 8eab0bccbf
2009-07-30 16:05:38 +02:00
Gael Guennebaud
ff20a2ba94
add explicit "on the right" triangular solving,
...
=> no temporary when the rhs/unknows is row major
2009-07-30 16:03:06 +02:00