aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Core/Transpose.h
Commit message (Collapse)AuthorAge
...
* | miserable half-working state, commiting to a fork just in case, just to perfectGravatar Benoit Jacob2010-02-18
|/ | | | | my day, my hard disk would die. Will write a more detailed commit message once it's working.
* get rid of NestParentByRefBitGravatar Gael Guennebaud2010-02-08
|
* Introduced NestParentByRefBit and NestByRefBit - this should fix temporaries ↵Gravatar Hauke Heibel2010-02-06
| | | | | | related to nested products. Fixed a few typos and a few warnings.
* Added an ei_linspaced_op to create linearly spaced vectors.Gravatar Hauke Heibel2010-01-26
| | | | | | | | | Added setLinSpaced/LinSpaced functionality to DenseBase. Improved vectorized assignment - overcomes MSVC optimization issues. CwiseNullaryOp is now requiring functors to offer 1D and 2D operators. Adapted existing functors to the new CwiseNullaryOp requirements. Added ei_plset to create packages as [a, a+1, ..., a+size]. Added more nullaray unit tests.
* lot of cleaning:Gravatar Gael Guennebaud2010-01-22
| | | | | | - clean the *_PUBLIC_INTERFACE_* - update Diagonal, ReturnByValue, ForceAlignedAccess, UnaryView, etc. to support array - many other small stuff
* remove the Triangular suffix to Upper, Lower, UnitLower, etc,Gravatar Gael Guennebaud2010-01-07
| | | | and remove the respective bit flags
* fix aliasing detectionGravatar Gael Guennebaud2010-01-05
|
* s/asMatrix()/matrix()Gravatar Gael Guennebaud2010-01-04
|
* merge with default branchGravatar Gael Guennebaud2009-12-22
|\
* | extend the DenseStorageMatrix mechanism to all expressionsGravatar Gael Guennebaud2009-12-22
| |
| * fix compilation when mixing typesGravatar Gael Guennebaud2009-12-16
| |
| * * fix aliasing checks when the lhs is also transposed. At the same time,Gravatar Gael Guennebaud2009-12-16
| | | | | | | | | | | | significantly simplify the code of these checks while extending them to catch much more expressions! * move the enabling/disabling of vectorized sin/cos to the architecture traits
* | add a DenseBase class for MAtrixBase and ArrayBase and more code factorisationGravatar Gael Guennebaud2009-12-04
| |
| * Much more NestByValue cleanup.Gravatar Hauke Heibel2009-12-01
| |
* | Experiment the ET refactoring on Transpose for Dense and Sparse storages.Gravatar Gael Guennebaud2009-11-16
|/ | | | All tests work fine.
* oops I forgot to include that file in the previous commit (fixing #65)Gravatar Gael Guennebaud2009-10-29
|
* add overloads of lazyAssign to detect common aliasing issue withGravatar Gael Guennebaud2009-08-15
| | | | transpose and adjoint
* add blocked LLT, and bugfix in trsm assertsGravatar Gael Guennebaud2009-08-01
|
* improve the expression analyzer to bypass Transpose expressionGravatar Gael Guennebaud2009-07-28
|
* * 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
* * 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.)
* 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
* * Find SuperLU also when it is installed without a superlu/ prefixGravatar Benoit Jacob2009-04-01
| | | | * Some more CoeffReturnType changes
* add adjointInPlace() and add documentation warnings on adjoint() and ↵Gravatar Benoit Jacob2009-03-31
| | | | transpose() about aliasing effects.
* * remove set(), revert to old behavior where = resizesGravatar Benoit Jacob2009-01-21
| | | | | | | | | | * try to be clever in matrix ctors and operator=: be lazy when we can, always allow to copy rowvector into columnvector, check the template parameters, try to factor the code better * add missing copy ctor in UnalignedType * fix bug in the traits of DiagonalProduct * renaming: EIGEN_TUNE_FOR_CPU_CACHE_SIZE * update the dox a little
* 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 Upper->UpperTriangular changeGravatar Benoit Jacob2008-12-20
| | | | * finally get ei_add_test right
* Update e-mail addressGravatar Benoit Jacob2008-11-24
|
* add transposeInPlace (not optimized yet for rectangular matrix)Gravatar Gael Guennebaud2008-10-29
|
* 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 !
* * added optimized paths for matrix-vector and vector-matrix productsGravatar Gael Guennebaud2008-07-09
| | | | | | (using either a cache friendly strategy or re-using dot-product vectorized implementation) * add LinearAccessBit to Transpose
* * added innerSize / outerSize functions to MatrixBaseGravatar Gael Guennebaud2008-06-28
| | | | | | | * added complete implementation of sparse matrix product (with a little glue in Eigen/Core) * added an exhaustive bench of sparse products including GMM++ and MTL4 => Eigen outperforms in all transposed/density configurations !
* various work on the Sparse module:Gravatar Gael Guennebaud2008-06-26
| | | | | | | | | | | | | | | | * added some glue to Eigen/Core (SparseBit, ei_eval, Matrix) * add two new sparse matrix types: HashMatrix: based on std::map (for random writes) LinkedVectorMatrix: array of linked vectors (for outer coherent writes, e.g. to transpose a matrix) * add a SparseSetter class to easily set/update any kind of matrices, e.g.: { SparseSetter<MatrixType,RandomAccessPattern> wrapper(mymatrix); for (...) wrapper->coeffRef(rand(),rand()) = rand(); } * automatic shallow copy for RValue * and a lot of mess ! plus: * remove the remaining ArrayBit related stuff * don't use alloca in product for very large memory allocation
* change derived classes methods from "private:_method()"Gravatar Benoit Jacob2008-06-26
| | | | | | | | to "public:method()" i.e. reimplementing the generic method() from MatrixBase. improves compilation speed by 7%, reduces almost by half the call depth of trivial functions, making gcc errors and application backtraces nicer...
* * Block: row and column expressions in the inner directionGravatar Benoit Jacob2008-06-16
| | | | | | | | | now have the Like1D flag. * Big renaming: packetCoeff ---> packet VectorizableBit ---> PacketAccessBit Like1DArrayBit ---> LinearAccessBit
* * Big rework of Assign.h:Gravatar Benoit Jacob2008-06-16
| | | | | | | | | | | | | | | ** Much better organization ** Fix a few bugs ** Add the ability to unroll only the inner loop ** Add an unrolled path to the Like1D vectorization. Not well tested. ** Add placeholder for sliced vectorization. Unimplemented. * Rework of corrected_flags: ** improve rules determining vectorizability ** for vectors, the storage-order is indifferent, so we tweak it to allow vectorization of row-vectors. * fix compilation in benchmark, and a warning in Transpose.
* * split Product to a DiagonalProduct template specializationGravatar Gael Guennebaud2008-06-15
| | | | | | | | | | to optimize matrix-diag and diag-matrix products without making Product over complicated. * compilation fixes in Tridiagonalization and HessenbergDecomposition in the case of 2x2 matrices. * added an Orientation2D small class with similar interface than Quaternion (used by Transform to handle 2D and 3D orientations seamlessly) * added a couple of features in Transform.
* * Added a generalized eigen solver for the selfadjoint case.Gravatar Gael Guennebaud2008-06-14
| | | | | | (as new members to SelfAdjointEigenSolver) The QR module now depends on Cholesky. * Fix Transpose to correctly preserve the *TriangularBit.
* * added _*coeffRef members in NestedByValueGravatar Gael Guennebaud2008-05-28
| | | | | | * added ConjugateReturnType and AdjointReturnType that are type-defined to Derived& and Transpose<Derived> if the scalar type is not complex: this avoids abusive copies in the cache friendly Product
* hehe, the complicated nesting scheme in Flagged in the previous commitGravatar Benoit Jacob2008-05-28
| | | | | | | | | | | was a sign that we were doing something wrong. In fact, having NestByValue as a special case of Flagged was wrong, and the previous commit, while not buggy, was inefficient because then when the resulting NestByValue xpr was nested -- hence copied -- the original xpr which was already nested by value was copied again; hence instead of 1 copy we got 3 copies. The solution was to ressuscitate the old Temporary.h (renamed NestByValue.h) as it was the right approach.
* * find the proper way of nesting the expression in Flagged:Gravatar Benoit Jacob2008-05-28
| | | | | | | | | | | | | finally that's more subtle than just using ei_nested, because when flagging with NestByValueBit we want to store the expression by value already, regardless of whether it already had the NestByValueBit set. * rename temporary() ----> nestByValue() * move the old Product.h to disabled/, replace by what was ProductWIP.h * tweak -O and -g flags for tests and examples * reorder the tests -- basic things go first * simplifications, e.g. in many methoeds return derived() and count on implicit casting to the actual return type. * strip some not-really-useful stuff from the heaviest tests
* - introduce Part and Extract classes, splitting and extending the formerGravatar Benoit Jacob2008-05-27
| | | | | | | | | | Triangular class - full meta-unrolling in Part - move inverseProduct() to MatrixBase - compilation fix in ProductWIP: introduce a meta-selector to only do direct access on types that support it. - phase out the old Product, remove the WIP_DIRTY stuff. - misc renaming and fixes
* remove Like1DArrayBit in TransposeGravatar Gael Guennebaud2008-05-22
|
* Introduce generic Flagged xpr, remove already Lazy.h and Temporary.hGravatar Benoit Jacob2008-05-14
| | | | Rename DefaultLostFlagMask --> HerediraryBits
* * Added several cast to int of the enums (needed for some compilers)Gravatar Gael Guennebaud2008-05-12
| | | | | | * Fix a mistake in CwiseNullary. * Added a CoreDeclarions header that declares only the forward declarations and related basic stuffs.
* put inline keywords everywhere appropriate. So we don't need anymore to passGravatar Benoit Jacob2008-05-12
| | | | -finline-limit=1000 to gcc to get good performance. By the way some cleanup.
* * Draft of a eigenvalues solverGravatar Gael Guennebaud2008-05-12
| | | | | | | | | | | | | | | (does not support complex and does not re-use the QR decomposition) * Rewrite the cache friendly product to have only one instance per scalar type ! This significantly speeds up compilation time and reduces executable size. The current drawback is that some trivial expressions might be evaluated like conjugate or negate. * Renamed "cache optimal" to "cache friendly" * Added the ability to directly access matrix data of some expressions via: - the stride()/_stride() methods - DirectAccessBit flag (replace ReferencableBit)
* * Started support for unaligned vectorization.Gravatar Gael Guennebaud2008-05-05
| | | | | | | | | | | | | * Introduce a new highly optimized matrix-matrix product for large matrices. The code is still highly experimental and it is activated only if you define EIGEN_WIP_PRODUCT at compile time. Currently the third dimension of the product must be a factor of the packet size (x4 for floats) and the right handed side matrix must be column major. Moreover, currently c = a*b; actually computes c += a*b !! Therefore, the code is provided for experimentation purpose only ! These limitations will be fixed soon or later to become the default product implementation.