Gael Guennebaud
4375c043ac
minor compilation fixes for Sun CC and ICC
2009-07-20 13:27:41 +02:00
Gael Guennebaud
4c85fa8c73
compilation fix (sun CC)
2009-07-20 10:57:31 +02:00
Gael Guennebaud
c10b919edb
compilation fix
2009-07-20 10:56:03 +02:00
Gael Guennebaud
b3ad796d40
bugfix in operator*= (matrix product)
2009-07-20 10:44:07 +02:00
Gael Guennebaud
a551107cce
bugfix for a = a * b; when a has to be resized
2009-07-20 10:35:47 +02:00
Gael Guennebaud
32b08ac971
re-implement stableNorm using a homemade blocky and
...
vectorization friendly algorithm (slow if no vectorization)
2009-07-17 16:22:39 +02:00
Gael Guennebaud
525da6a464
bugfix in blueNorm
2009-07-16 14:20:36 +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
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
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
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
c6f610093b
add a VectorBlock expr as a specialization of Block
2009-07-05 11:33:55 +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
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
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
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
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
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