aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Core/Product.h
Commit message (Collapse)AuthorAge
* * GEMM enhencement: no need to pre-transpose the rhsGravatar Gael Guennebaud2009-07-22
| | | | | | | => 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
* more refactoring in the level3 productsGravatar Gael Guennebaud2009-07-22
|
* * bugfixes in Product, and test/product_selfadjointGravatar Gael Guennebaud2009-07-16
| | | | * speed up in the extraction of the matrix Q in Tridiagonalization
* synch with main devel branchGravatar Gael Guennebaud2009-07-15
|\
| * fix issue #25 : the problem was that we assumed Dynamic was a multiple of a ↵Gravatar Gael Guennebaud2009-07-15
| | | | | | | | | | | | packet size (also disable the test of blueNorm)
* | synch with main devel branchGravatar Gael Guennebaud2009-07-14
|\|
* | Add an efficient rank2 update function (like the level2 blas xSYR2 routine).Gravatar Gael Guennebaud2009-07-11
| | | | | | | | Note that it is already used in Tridiagonalization.
| * more sun studio fixesGravatar Gael Guennebaud2009-07-10
| |
| * Set of fixes and workaround to make sun studio more happy.Gravatar Gael Guennebaud2009-07-10
| | | | | | | | Still remains the problem of alignment and vectorization.
* | finally directly calling the low-level products is fasterGravatar Gael Guennebaud2009-07-10
| |
* | commit woking versions of triangular solvers naturallyGravatar Gael Guennebaud2009-07-09
| | | | | | | | | | | | 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...
* | started to simplify the triangular solversGravatar Gael Guennebaud2009-07-09
| |
* | ok now all the complex mat-mat and mat-vec products involving conjugate,Gravatar Gael Guennebaud2009-07-08
| | | | | | | | | | adjoint, -, and scalar multiple seems to be well handled. It only remains the simpler case: C = alpha*(A*B) ... for the next commit
* | conjugate expressions are now properly caught by ProductGravatar Gael Guennebaud2009-07-07
| | | | | | | | | | => significant speedup in expr. like a.adjoint() * b, for complex scalar type (~ x3)
* | started to catch scalar multiple and conjugate xpr in ProductGravatar Gael Guennebaud2009-07-07
| |
* | * change the nesting order of adjoint_return_type toGravatar Gael Guennebaud2009-07-07
| | | | | | | | | | | | 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
* | * extended the cache friendly products to support C = alpha * A * M and C += ↵Gravatar Gael Guennebaud2009-07-07
| | | | | | | | | | | | | | | | | | 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
* | * bybye Part, welcome TriangularView and SelfAdjointView.Gravatar Gael Guennebaud2009-07-06
| | | | | | | | | | | | | | | | * 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.)
* | new implementation of diagonal matrices and diagonal matrix expressionsGravatar Benoit Jacob2009-06-28
|/
* remove sentence "Eigen itself is part of the KDE project."Gravatar Benoit Jacob2009-05-22
| | | | it never made very precise sense. but now does it still make any?
* constant Diagonal ---> DiagonalBitsGravatar Benoit Jacob2009-05-10
| | | | | | introduce ei_is_diagonal to check for it DiagonalCoeffs ---> Diagonal and allow Index to by Dynamic -> add MatrixBase::diagonal(int) with unittest and doc
* Big rewrite in the Sparse module: SparseMatrixBase no longer inherits ↵Gravatar Gael Guennebaud2009-01-14
| | | | | | | | | | | | | | MatrixBase. That means a lot of features which were available for sparse matrices via the dense (and super slow) implemention are no longer available. All features which make sense for sparse matrices (aka can be implemented efficiently) will be implemented soon, but don't expect to see an API as rich as for the dense path. Other changes: * no block(), row(), col() anymore. * instead use .innerVector() to get a col or row vector of a matrix. * .segment(), start(), end() will be back soon, not sure for block() * faster cwise product
* the big memory changes. the most important changes are:Gravatar Benoit Jacob2009-01-08
| | | | | | | ei_aligned_malloc now really behaves like a malloc (untyped, doesn't call ctor) ei_aligned_new is the typed variant calling ctor EIGEN_MAKE_ALIGNED_OPERATOR_NEW now takes the class name as parameter
* * In LU solvers: no need anymore to use row-major matricesGravatar Benoit Jacob2009-01-03
| | | | | | | | * Matrix: always inherit WithAlignedOperatorNew, regardless of vectorization or not * rename ei_alloc_stack to ei_aligned_stack_alloc * mixingtypes test: disable vectorization as SSE intrinsics don't allow mixing types and we just get compile errors there.
* fix the nomalloc test: it didn't catch the ei_stack_alloc inGravatar Benoit Jacob2008-12-31
| | | | | | | | | | | cachefriendlyproduct, that should be banned as well as depending on the platform they can give a malloc, and they could happen even with (large enough) fixed size matrices. Corresponding fix in Product.h: cachefriendly is now only used for dynamic matrices -- fixedsize, no matter how large, doesn't use the cachefriendly product. We don't need to care (in my opinion) about performance for large fixed size, as large fixed size is a bad idea in the first place and it is more important to be able to guarantee clearly that fixed size never causes a malloc.
* * add unit-tests to check allowed and forbiddent mixing of different scalar ↵Gravatar Benoit Jacob2008-12-22
| | | | | | | types * fix issues in Product revealed by this test * in Dot.h forbid mixing of different types (at least for now, might allow real.dot(complex) in the future).
* * fix a vectorization issue in ProductGravatar Gael Guennebaud2008-12-19
| | | | | | * use _mm_malloc/_mm_free on other platforms than linux of MSVC (eg., cygwin, OSX) * replace a lot of inline keywords by EIGEN_STRONG_INLINE to compensate for poor MSVC inlining
* * forgot to svn add 2 filesGravatar Benoit Jacob2008-12-18
| | | | * idea of Keir Mierle: make the static assert error msgs UPPERCASE
* * fix in IO.h, a useless copy was made because of assignment fromGravatar Benoit Jacob2008-12-18
| | | | | | | | | | | | | | | Derived to MatrixBase. * the optimization of eval() for Matrix now consists in a partial specialization of ei_eval, which returns a reference type for Matrix. No overriding of eval() in Matrix anymore. Consequence: careful, ei_eval is no longer guaranteed to give a plain matrix type! For that, use ei_plain_matrix_type, or the PlainMatrixType typedef. * so lots of changes to adapt to that everywhere. Hope this doesn't break (too much) MSVC compilation. * add code examples for the new image() stuff. * lower a bit the precision for floats in the unit tests as we were already doing some workarounds in inverse.cpp and we got some failed tests.
* * replace postfix ++ by prefix ++ wherever that makes sense in Eigen/Gravatar Benoit Jacob2008-12-17
| | | | | * fix some "unused variable" warnings in the tests; there remains a libstdc++ "deprecated" warning which I haven't looked much into
* bugfix in DiagonalProduct: a "DiagonalProduct<SomeXpr>" expressionGravatar Gael Guennebaud2008-12-10
| | | | | is now evaluated as a "DiagonalProduct<Matrix<SomeXpr::Eval> >". Note that currently this only happens in DiagonalProduct.
* * Much better, consistent error msgs when mixing different scalar types:Gravatar Benoit Jacob2008-12-03
| | | | | | | | | | | | | - in matrix-matrix product, static assert on the two scalar types to be the same. - Similarly in CwiseBinaryOp. POTENTIALLY CONTROVERSIAL: we don't allow anymore binary ops to take two different scalar types. The functors that we defined take two args of the same type anyway; also we still allow the return type to be different. Again the reason is that different scalar types are incompatible with vectorization. Better have the user realize explicitly what mixing different numeric types costs him in terms of performance. See comment in CwiseBinaryOp constructor. - This allowed to fix a little mistake in test/regression.cpp, mixing float and double - Remove redundant semicolon (;) after static asserts
* Update e-mail addressGravatar Benoit Jacob2008-11-24
|
* improve assertion checking in productGravatar Gael Guennebaud2008-10-25
|
* As discussed on ML:Gravatar Gael Guennebaud2008-10-24
| | | | | | | | | | * remove the automatic resizing feature of operator = * add function Matrix::set() to be used when the previous behavior is wanted * the default constructor of dynamic-size matrices now creates a "null" matrix (data=0, rows = cols = 0) instead of a 1x1 matrix * fix UnixX typos ;)
* Solve the issue found by Timothy in solveTriangular:Gravatar Gael Guennebaud2008-10-13
| | | | | | => row-major rhs are now evaluated to a column-major temporary before the computations. Add solveInPlace in Cholesky*
* compilation fixes with MSVCGravatar Gael Guennebaud2008-09-03
|
* doc and use sed to clean the class hierarchy instead ofGravatar Gael Guennebaud2008-08-28
| | | | preprocessor directives.
* * move memory related stuff to util/Memory.hGravatar Gael Guennebaud2008-08-26
| | | | | * clean ugly doxygen inheritence of expressions * keep improving the documentation... slowly !
* bugfix in Product and ei_L2_block_traitsGravatar Gael Guennebaud2008-08-24
|
* * remove LargeBit and related stuffGravatar Gael Guennebaud2008-08-23
| | | | | | | * replaced the Flags template parameter of Matrix by StorageOrder and move it back to the 4th position such that we don't have to worry about the two Max* template parameters * extended EIGEN_USING_MATRIX_TYPEDEFS with the ei_* math functions
* * Fix CMakeLists.txt issue with SVDGravatar Gael Guennebaud2008-08-20
| | | | * Fix on stack memory allocation issues
* Various compilation fixes for MSVC 9. All tests compile but someGravatar Gael Guennebaud2008-08-19
| | | | still fail at runtime in ei_aligned_free() (even without vectorization).
* * doc improvements in Cwise and PartialRedux:Gravatar Benoit Jacob2008-08-19
| | | | | | | | | - 33 new snippets - unfuck doxygen output in Cwise (issues with function macros) - more see-also links from outside, making Cwise more discoverable * rename matrixNorm() to operatorNorm(). There are many matrix norms (the L2 is another one) but only one is called the operator norm. Risk of confusion with keyword operator is not too scary after all.
* only use alloca on linux. Use malloc on other platforms. Needed for mingwGravatar Benoit Jacob2008-08-18
| | | | compatibility.
* fix two perf issues in product.Gravatar Gael Guennebaud2008-08-03
| | | | | fix positive definite test in Cholesky. remove #include <cstring> in CoreDeclaration.
* fix compile errors with gcc 4.3: unresolved func call toGravatar Benoit Jacob2008-08-03
| | | | ei_cache_friendly_product, and undeclared memcpy
* Added a ei_palign function align a packet from two others.Gravatar Gael Guennebaud2008-08-03
| | | | | This allows much faster code dealing with unligned as in the updated matrix-vector product functions.
* fix some internal asserts in CacheFrinedlyProductGravatar Gael Guennebaud2008-07-27
|
* Fix a couple issues introduced in the previous commit:Gravatar Gael Guennebaud2008-07-26
| | | | | * removed DirectAccessBit from Part * use a template specialization in inverseProduct() to transform a Part xpr to a Flagged xpr