aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Core/CwiseBinaryOp.h
Commit message (Collapse)AuthorAge
* * allow matrix dimensions to be 0 (also at compile time) and provide a ↵Gravatar Benoit Jacob2010-03-21
| | | | | | | | | | | | | | | specialization of ei_matrix_array for size 0 * adapt many xprs to have the right storage order, now that it matters * add static assert on expressions to check that vector xprs have the righ storage order * adapt ei_plain_matrix_type_(column|row)_major * implement assignment of selfadjointview to matrix (was before failing to compile) and add nestedExpression() methods * expand product_symm test * in ei_gemv_selector, use the PlainObject type instead of a custom Matrix<...> type * fix VectorBlock and Block mistakes
* Ups - again a missing typename.Gravatar Hauke Heibel2010-03-14
|
* Propagate fixed size dimensions if available (on MSVC it leads >2.5x speedup ↵Gravatar Hauke Heibel2010-03-13
| | | | for some reductions).
* 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.
* 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
* Fixes #81.Gravatar Hauke Heibel2010-01-12
|
* merge with default branchGravatar Gael Guennebaud2009-12-22
|\
* | a couple of fixes, now Array passes the linearstructure testGravatar Gael Guennebaud2009-12-17
| |
* | a lot of cleaning and fixesGravatar Gael Guennebaud2009-12-16
| |
* | add a DenseBase class for MAtrixBase and ArrayBase and more code factorisationGravatar Gael Guennebaud2009-12-04
| |
* | Add the concept of base class plugins, and started to write the ArrayBase class.Gravatar Gael Guennebaud2009-11-20
| | | | | | | | Sorry for this messy commit but I have to commit it...
* | Hey, finally the copyCoeff stuff is not only used to implement swap anymore :)Gravatar Gael Guennebaud2009-11-20
| | | | | | | | | | | | Add an internal pseudo expression allowing to optimize operators like +=, *= using the copyCoeff stuff. This allows to easily enforce aligned load for the destination matrix everywhere.
| * fix bugs, old and new:Gravatar Benoit Jacob2009-11-18
| | | | | | | | | | * old bug: in CwiseBinaryOp: only set the LinearAccessBit if both sides have the same storage order. * new bug: in Assign.h, only consider linear traversal if both sides have the same storage order.
* | Another big refactoring change:Gravatar Gael Guennebaud2009-11-18
| | | | | | | | | | | | * add a new Eigen2Support module including Cwise, Flagged, and some other deprecated stuff * add a few cwiseXxx functions * adapt a few modules to use cwiseXxx instead of the .cwise() prefix
* | more ET refactoring:Gravatar Gael Guennebaud2009-11-17
| | | | | | | | | | * extend Cwise for multiple storage base class * a lot of cleaning in the Sparse module
* | adapt CwiseBinaryOp and the Sparse counter partGravatar Gael Guennebaud2009-11-17
| |
* | Experiment the ET refactoring on Transpose for Dense and Sparse storages.Gravatar Gael Guennebaud2009-11-16
|/ | | | All tests work fine.
* remove the \addexample tagsGravatar Gael Guennebaud2009-09-03
|
* add overloads of lazyAssign to detect common aliasing issue withGravatar Gael Guennebaud2009-08-15
| | | | transpose and adjoint
* 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?
* 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
* * move cwise *= and /= to Core (like * and /)Gravatar Benoit Jacob2009-01-12
| | | | | * tidy the StdVector module * fix warnings (especially a | instead of ||) in stdvector test
* unfuck v.cwise()*w where v is real and w is complexGravatar Benoit Jacob2008-12-21
|
* * 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
* Macros: add MSVC paths, add an important comment on EIGEN_ALIGN_128Gravatar Benoit Jacob2008-12-18
|
* somehow we had forgotten this very important static assertion...Gravatar Benoit Jacob2008-12-18
|
* add big "what happens inside eigen" tutorial for people interested inGravatar Benoit Jacob2008-12-05
| | | | Eigen internals
* * 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
|
* 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 !
* * 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.
* * Big change in Block and Map:Gravatar Gael Guennebaud2008-08-09
| | | | | | | | | | | | | | - added a MapBase base xpr on top of which Map and the specialization of Block are implemented - MapBase forces both aligned loads (and aligned stores, see below) in expressions such as "x.block(...) += other_expr" * Significant vectorization improvement: - added a AlignedBit flag meaning the first coeff/packet is aligned, this allows to not generate extra code to deal with the first unaligned part - removed all unaligned stores when no unrolling - removed unaligned loads in Sum when the input as the DirectAccessBit flag * Some code simplification in CacheFriendly product * Some minor documentation improvements
* Several compilation fixes for MSVC and NVCC, basically:Gravatar Gael Guennebaud2008-07-29
| | | | | | | | - added explicit enum to int conversion where needed - if a function is not defined as declared and the return type is "tricky" then the type must be typedefined somewhere. A "tricky return type" can be: * a template class with a default parameter which depends on another template parameter * a nested template class, or type of a nested template class
* * Rewrite the triangular solver so that we can take advantage of our ↵Gravatar Gael Guennebaud2008-07-26
| | | | | | | | | | | efficient matrix-vector products: => up to 6 times faster ! * Added DirectAccessBit to Part * Added an exemple of a cwise operator * Renamed perpendicular() => someOrthogonal() (geometry module) * Fix a weired bug in ei_constant_functor: the default copy constructor did not copy the imaginary part when the single member of the class is a complex...
* Added an automatically generated list of selected examples in the documentation.Gravatar Gael Guennebaud2008-07-19
| | | | Added the custom gemetry_module tag, and use it.
* - many updates after Cwise changeGravatar Benoit Jacob2008-07-08
| | | | | - fix compilation in product.cpp with std::complex - fix bug in MatrixBase::operator!=
* the big Array/Cwise rework as discussed on the mailing list. The new APIGravatar Benoit Jacob2008-07-08
| | | | can be seen in Eigen/src/Core/Cwise.h.
* 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...
* * add bench/benchVecAdd.cpp by Gael, fix crash (ei_pload on non-aligned)Gravatar Benoit Jacob2008-06-26
| | | | | | | | | | | | * introduce packet(int), make use of it in linear vectorized paths --> completely fixes the slowdown noticed in benchVecAdd. * generalize coeff(int) to linear-access xprs * clarify the access flag bits * rework api dox in Coeffs.h and util/Constants.h * improve certain expressions's flags, allowing more vectorization * fix bug in Block: start(int) and end(int) returned dyn*dyn size * fix bug in Block: just because the Eval type has packet access doesn't imply the block xpr should have it too.
* add experimental code for sparse matrix:Gravatar Gael Guennebaud2008-06-23
| | | | | | | | - uses the common "Compressed Column Storage" scheme - supports every unary and binary operators with xpr template assuming binaryOp(0,0) == 0 and unaryOp(0) = 0 (otherwise a sparse matrix doesnot make sense) - this is the first commit, so of course, there are still several shorcommings !
* * 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
* moved purely "array" related stuff to a new module Array.Gravatar Gael Guennebaud2008-05-31
| | | | | | | | This include: - cwise Pow,Sin,Cos,Exp... - cwise Greater and other comparison operators - .any(), .all() and partial reduction - random
* - 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
* some documentation fixes (Cwise* and Cholesky)Gravatar Gael Guennebaud2008-05-22
|
* * improved product performance:Gravatar Gael Guennebaud2008-05-22
| | | | | | | - fallback to normal product for small dynamic matrices - overloaded "c += (a * b).lazy()" to avoid the expensive and useless temporary and setZero() in such very common cases. * fix a couple of issues with the flags
* 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.