Commit Graph

1249 Commits

Author SHA1 Message Date
Gael Guennebaud
b67abe22b3 oops,, update SYRK so that the rhs can be non-square² 2009-07-23 20:56:04 +02:00
Gael Guennebaud
a81388fae9 Implement efficient sefladjoint product (aka SYRK) : C += alpha * U U^T
It is currently available via SelfAdjointView::rankKupdate.
TODO: allows to write SelfAdjointView += u * u.adjoint()
2009-07-23 19:01:20 +02:00
Gael Guennebaud
713c92140c improve SYMV it is now faster and ready for use 2009-07-23 14:20:45 +02:00
Gael Guennebaud
eee14846e3 formating 2009-07-23 10:19:58 +02:00
Gael Guennebaud
ddb3ac98a2 addd matrix * self adjoint high level API 2009-07-23 10:05:38 +02:00
Gael Guennebaud
f696efc00e bugfix in SYMM 2009-07-22 23:48:42 +02:00
Gael Guennebaud
0cb4f32e12 implement high level API for SYMM and fix a couple of bugs related to complex 2009-07-22 23:12:22 +02:00
Gael Guennebaud
e7f8e939e2 * GEMM enhencement: no need to pre-transpose the rhs
=> faster a * b.transpose() product
  => this also fix a bug in a so far untested situation
* SYMM is now ready for use => still have to write the high level
  stuff to convert natural expressions into a call to SYMM
2009-07-22 18:04:16 +02:00
Gael Guennebaud
d6475ea390 more refactoring in the level3 products 2009-07-22 11:54:58 +02:00
Gael Guennebaud
d6627d540e * refactoring of the matrix product into multiple small kernels
* started an efficient selfadjoint matrix * general matrix product
  based on the generic kernels ( => need a very little LOC)
2009-07-21 16:58:35 +02:00
Gael Guennebaud
afa8f2ca95 * various fixes related to sub diagonals and band matrix
* allows 0 sized objects in Block/Map
2009-07-21 11:19:52 +02:00
Gael Guennebaud
34490f1493 * bugfixes in Product, and test/product_selfadjoint
* speed up in the extraction of the matrix Q in Tridiagonalization
2009-07-16 00:03:17 +02:00
Gael Guennebaud
97c9445c60 synch with main devel branch 2009-07-15 19:54:31 +02:00
Gael Guennebaud
079fa81d84 add a TridiagonalMatrix wrapper arround BandMatrix, and extend this latter 2009-07-15 19:53:08 +02:00
Gael Guennebaud
4f792583c7 add BandMatrix::col() 2009-07-15 18:00:11 +02:00
Gael Guennebaud
df6561a73f change the implementation of BandMatrix to follow the BLAS/LAPACK storage scheme 2009-07-15 17:00:49 +02:00
Gael Guennebaud
1578421ed1 fix issue #25 : the problem was that we assumed Dynamic was a multiple of a packet size
(also disable the test of blueNorm)
2009-07-15 14:20:45 +02:00
Gael Guennebaud
587029a612 started an implementation of BandMatrix: at least the read/write access
to the main/sub/super diagonals seems to work well.
2009-07-14 23:27:37 +02:00
Gael Guennebaud
8120a5cecd synch with main devel branch 2009-07-14 23:06:25 +02:00
Gael Guennebaud
7a9519a9be fix typo in blue norm 2009-07-14 23:00:53 +02:00
Gael Guennebaud
279cedc1ce some cleaning/renaming is Triangular/SelfadjointView 2009-07-14 22:38:21 +02:00
Gael Guennebaud
f5d2317b12 add a blueNorm() function implementing the Blues's stable norm
algorithm. it is currently provided for experimentation
purpose only.
2009-07-13 21:14:47 +02:00
Gael Guennebaud
ddbaaebf9e one more fix of the previous commit (forgot to update ei_must_nest_by_value) 2009-07-13 15:27:01 +02:00
Gael Guennebaud
bd506d837c fix typo in previous commit 2009-07-13 15:21:32 +02:00
Gael Guennebaud
1e7b1a8a85 add a SparseNestByValue expression and fix issue in sparse adjoint evaluation 2009-07-13 14:55:03 +02:00
Gael Guennebaud
a2cf7ba955 add triangular * vector product 2009-07-13 13:17:55 +02:00
Gael Guennebaud
a2087cd7a3 Add an efficient rank2 update function (like the level2 blas xSYR2 routine).
Note that it is already used in Tridiagonalization.
2009-07-11 21:14:59 +02:00
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