aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Core/Sum.h
Commit message (Collapse)AuthorAge
* Fix bugs in Sum.h, add unit-testGravatar Benoit Jacob2008-08-20
|
* * 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
* * do the ActualPacketAccesBit change as discussed on listGravatar Benoit Jacob2008-07-04
| | | | | * add comment in Product.h about CanVectorizeInner * fix typo in test/product.cpp
* * 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.
* * vectorize dot product, copying code from sum.Gravatar Benoit Jacob2008-06-24
| | | | | | | | | | | | | | | * make the conj functor vectorizable: it is just identity in real case, and complex doesn't use the vectorized path anyway. * fix bug in Block: a 3x1 block in a 4x4 matrix (all fixed-size) should not be vectorizable, since in fixed-size we are assuming the size to be a multiple of packet size. (Or would you prefer Vector3d to be flagged "packetaccess" even though no packet access is possible on vectors of that type?) * rename: isOrtho for vectors ---> isOrthogonal isOrtho for matrices ---> isUnitary * add normalize() * reimplement normalized with quotient1 functor
* * add ei_pdiv intrinsic, make quotient functor vectorizableGravatar Benoit Jacob2008-06-23
| | | | * add vdw benchmark from Tim's real-world use case
* optimize linear vectorization both in Assign and Sum (optimal amortized perf)Gravatar Gael Guennebaud2008-06-23
|
* quick temporary fix for a perf issue we just identified withGravatar Benoit Jacob2008-06-23
| | | | | vectorization.... now the sum benchmark runs 3x faster with vectorization than without.
* split sum away from redux and vectorize it.Gravatar Benoit Jacob2008-06-23
| | | | | | (could come back to redux after it has been vectorized, and could serve as a starting point for that) also make the abs2 functor vectorizable (for real types).
* release alpha4, Gael editionGravatar Benoit Jacob2008-02-29
|
* Relicense --> dual-license LGPL3+/GPL2+Gravatar Benoit Jacob2008-02-28
|
* alpha 3.1. in this commit:Gravatar Benoit Jacob2008-01-15
| | | | | | | | | - finally get the Eval stuff right. get back to having Eval as a subclass of Matrix with limited functionality, and then, add a typedef MatrixType to get the actual matrix type. - add swap(), findBiggestCoeff() - bugfix by Ramon in Transpose - new demo: doc/echelon.cpp
* big architecture change dissociating "actual" dimensions from "maximum possible"Gravatar Benoit Jacob2008-01-13
| | | | | | | dimension. The advantage is that evaluating a dynamic-sized block in a fixed-size matrix no longer causes a dynamic memory allocation. Other new thing: IntAtRunTimeIfDynamic allows storing an integer at zero cost if it is known at compile time.
* switch to enums everywhereGravatar Benoit Jacob2008-01-10
|
* Ready for alpha2 release.Gravatar Benoit Jacob2008-01-07
| | | | | | - complete documentation - add TODO - update copyright years
* - move: DerivedTraits becomes MatrixBase::TraitsGravatar Benoit Jacob2008-01-06
| | | | | | - the static constants are private again in the Derived classes - more documentation and code snippets - new isDiagonal() method
* remove all the _Order mechanics, now we are always traversing matrices inGravatar Benoit Jacob2008-01-06
| | | | | | | column-major order, even if storage is row-major. Benchmark showed that adapting the traversal order to the storage order brought no benefit. Also do some cleanup after Gael's big patch.
* Patch by Gael Guennebaud, making Eigen compatible with the Intel compiler (icc).Gravatar Benoit Jacob2008-01-06
| | | | CCMAIL:eigen@lists.tuxfamily.org
* - make MatrixBase and all expressions aware of their preferred traversal order.Gravatar Benoit Jacob2008-01-05
| | | | | | | Honor this preference in operator=. - add several methods to the API - rework API for diagonal matrices - add benchmarking code
* cleanup: remove copy contructors when the compiler is able to generate a ↵Gravatar Benoit Jacob2007-12-31
| | | | | | satisfactory default copy constructor; remove useless static_cast's; some misc cleanup.
* move Core/ to a src/ subdir, in preparation for following changesGravatar Benoit Jacob2007-12-28