Gael Guennebaud
ab17f92728
more sun studio fixes
2009-07-10 16:27:01 +02:00
Gael Guennebaud
ec5c608aa3
Set of fixes and workaround to make sun studio more happy.
...
Still remains the problem of alignment and vectorization.
2009-07-10 16:10:03 +02:00
Gael Guennebaud
b47dea8b7a
add a meta unroller for the triangular solver (only for vectors as rhs)
2009-07-10 11:30:46 +02:00
Gael Guennebaud
1a1b2e9f27
finally directly calling the low-level products is faster
2009-07-10 10:41:26 +02:00
Gael Guennebaud
1c52985aa7
merge
2009-07-10 08:21:57 +02:00
Gael Guennebaud
629e083d81
slight change in the comparison to -1
2009-07-10 08:21:20 +02:00
Gael Guennebaud
8885d56928
commit woking versions of triangular solvers naturally
...
handling conjuagted expression. still have to bench whether it
is faster (runtime and compile time) to directly call the
cache friendly functions, whence all the commented piece of code...
2009-07-09 23:59:18 +02:00
Gael Guennebaud
fa60c72398
started to simplify the triangular solvers
2009-07-09 17:11:03 +02:00
Gael Guennebaud
96e7d9f896
ok now all the complex mat-mat and mat-vec products involving conjugate,
...
adjoint, -, and scalar multiple seems to be well handled. It only remains
the simpler case: C = alpha*(A*B) ... for the next commit
2009-07-08 18:24:37 +02:00
Gael Guennebaud
13b2dafb50
conjugate expressions are now properly caught by Product
...
=> significant speedup in expr. like a.adjoint() * b,
for complex scalar type (~ x3)
2009-07-07 21:30:20 +02:00
Gael Guennebaud
5ed6ce90d3
started to catch scalar multiple and conjugate xpr in Product
2009-07-07 16:55:51 +02:00
Gael Guennebaud
ea23f36c78
* change the nesting order of adjoint_return_type to
...
1 - make it easier to catch conjugate expressions
2 - make sure there is no unecessary copy (we had NestByValue<Derived> which seems to be very bad)
* update eigensolver wrt recent changes
2009-07-07 15:56:13 +02:00
Gael Guennebaud
79877a9917
* take advantage of new possibilies in LLT (mat -= product)
...
* fix Block::operator+= product which was not optimized
* fix some compilation issues
2009-07-07 15:32:21 +02:00
Gael Guennebaud
92a35c93b2
* extended the cache friendly products to support C = alpha * A * M and C += alpha * A * B
...
* this allows to optimize xpr like C -= lazy_product, still have to catch "scalar_product_of_lazy_product"
* started to support conjugate in cache friendly products (very useful to evaluate A * B.adjoint() without
evaluating B.adjoint() into a temporary
* compilation fix
2009-07-07 11:39:19 +02:00
Gael Guennebaud
544888e342
add a generic mechanism to copy a special matrix to a dense matrix so that
...
we don't need to add other specialization of MatrixBase::operator=, Matrix::=,
and Matrix::Matrix(...)
2009-07-07 09:05:20 +02:00
Gael Guennebaud
1aea45335f
* bybye Part, welcome TriangularView and SelfAdjointView.
...
* move solveTriangular*() to TriangularView::solve*()
* move .llt() to SelfAdjointView
* add a high level wrapper to the efficient selfadjoint * vector product
* improve LLT so that we can specify which triangular part is meaningless
=> there are still many things to do (doc, cleaning, improve the matrix products, etc.)
2009-07-06 23:43:20 +02:00
Benoit Jacob
889726bf7c
add matrixQR() method exposing the storage. that's where the householder thing impacts the API.
2009-07-06 17:24:11 +02:00
Benoit Jacob
e057beee4e
fix some search-and-replace damage
2009-07-06 17:20:07 +02:00
Benoit Jacob
e093b43b2c
* rename QR to HouseholderQR because really that impacts the API, not just the impl.
...
* rename qr() to householderQr(), for same reason.
* clarify that it's non-pivoting, non-rank-revealing, so remove all the rank API, make solve() be void instead of bool, update the docs/test, etc.
* fix warning in SVD
2009-07-06 17:12:10 +02:00
Gael Guennebaud
f84bd3e7b1
include the fixes of the third edition
2009-07-06 15:01:30 +02:00
Gael Guennebaud
0c2232e5d9
quick reimplementation of SVD from the numeral recipes book:
...
this is still not Eigen style code but at least it works for
n>m and it is more accurate than the JAMA based version. (I needed
it now, this is why I did that)
2009-07-06 13:47:41 +02:00
Gael Guennebaud
0cd158820c
switch from eigensolver to SVD which seems to be more accurate with float
2009-07-06 11:15:38 +02:00
Gael Guennebaud
90f1e24579
significantly improve the accuracy of setFromTwoVectors ( fixes #21 )
2009-07-06 10:35:20 +02:00
Gael Guennebaud
ecc4f07af5
fix doc of Quaternion::setFromTwoVectors
2009-07-06 09:17:25 +02:00
Gael Guennebaud
c6f610093b
add a VectorBlock expr as a specialization of Block
2009-07-05 11:33:55 +02:00
Gael Guennebaud
eec334c604
fixes a segfault
2009-07-05 10:48:57 +02:00
Benoit Jacob
60467e54a5
some docs improvements
2009-07-05 01:52:42 +02:00
Manuel Yguel
c398d0edcf
another test in the non invertible case
2009-07-04 14:55:25 +02:00
Gael Guennebaud
08e419dcb1
* update sparse module wrt new diagonal matrix impl
...
* fix a bug is SparseMatrix
2009-07-04 11:16:27 +02:00
Gael Guennebaud
d457ec5810
fix #20 : SVD::solve() now resize the result
2009-07-04 09:28:11 +02:00
Benoit Jacob
7b750182f2
* polish computeInverseWithCheck to share more code, fix documentation, fix coding style
...
* add snippet for computeInverseWithCheck documentation
* expand unit-tests to cover computeInverseWithCheck
2009-06-29 22:07:37 +02:00
Manuel Yguel
126a031a39
computeInverseWithCheck method added to matrix base (specialization for 1D to 4D)
2009-06-29 20:47:37 +02:00
Benoit Jacob
632cb7a4a1
patch by Myguel from the forum: fix documentation
2009-06-29 19:26:20 +02:00
Benoit Jacob
2de9b7f537
fully vectorize DiagonalProduct
...
(it used to be partially vectorized and that had been lost in the big changes from the previous commit)
2009-06-29 04:01:31 +02:00
Benoit Jacob
bf91003d37
FreeBSD: determine precisely when malloc is 16-byte aligned
2009-06-29 00:08:34 +02:00
Benoit Jacob
5eabf2b75d
double precision() : change to 1e-12 instead of 1e-11 (as discussed several times on the list)
2009-06-29 00:00:29 +02:00
Benoit Jacob
6809f7b1cd
new implementation of diagonal matrices and diagonal matrix expressions
2009-06-28 21:27:37 +02:00
Benoit Jacob
fc9000f23e
only disable the inline ASM if we're NEITHER gcc nor icc. right ??
2009-06-26 05:32:21 +02:00
Benoit Jacob
6ccb97620a
patch by Patrick Mihelich: use empty struct + anonymous namespace for NoChange
2009-06-25 03:33:47 +02:00
Benoit Jacob
60e6ac3178
use system variable instead of custom one
2009-06-25 01:06:53 +02:00
Benoit Jacob
903acf0d5c
add missing code snippets for newer Matrix methods and PartialLU::solve()
2009-06-25 00:57:51 +02:00
Benoit Jacob
03ad303d14
* add resize(int, NoChange) and resize(NoChange, int)
...
* add missing assert in resize(int)
* add examples for all resize variants
* expand docs (part of which is from Tim Hutt's e-mail)
2009-06-24 22:07:03 +02:00
Benoit Jacob
96dca681b0
use <...> for system headers
2009-06-24 16:35:02 +02:00
Gael Guennebaud
a44f7cf440
re-enable the fast unaligned loads for gcc and icc using inline assembly
...
(this allows to avoid incompatible pointer casts and to specify the dependency to the data explicitely)
2009-06-24 10:48:36 +02:00
Gael Guennebaud
aa17b5b514
use the slower unaligned load intrinsics in ei_ploadu because GCC mess up with my tricks
2009-06-23 23:28:34 +02:00
Benoit Jacob
3934a8b5e8
check version number using newer cmake functionality, instead of kde macro
2009-06-23 15:39:46 +02:00
Gael Guennebaud
ec8596f863
update the stack alignment doc
2009-06-22 10:44:09 +02:00
Benoit Jacob
ac9680fb20
document the "wrong stack alignment" issue.
2009-06-21 17:25:57 +02:00
Benoit Jacob
7d48ed4be3
refine the check to disable alignment. now it's disabled on gcc3 (where we don't vectorize anyway)
2009-06-21 04:56:01 +02:00
Benoit Jacob
8be088bfb0
add Eigen/Eigen
2009-06-19 20:46:55 +02:00