| Commit message (Collapse) | Author | Age |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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
|
|
|
|
|
| |
* add comment in Product.h about CanVectorizeInner
* fix typo in test/product.cpp
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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 vdw benchmark from Tim's real-world use case
|
| |
|
|
|
|
|
| |
vectorization....
now the sum benchmark runs 3x faster with vectorization than without.
|
|
|
|
|
|
| |
(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).
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
- 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
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
| |
- complete documentation
- add TODO
- update copyright years
|
|
|
|
|
|
| |
- the static constants are private again in the Derived classes
- more documentation and code snippets
- new isDiagonal() method
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
CCMAIL:eigen@lists.tuxfamily.org
|
|
|
|
|
|
|
| |
Honor this preference in operator=.
- add several methods to the API
- rework API for diagonal matrices
- add benchmarking code
|
|
|
|
|
|
| |
satisfactory
default copy constructor; remove useless static_cast's; some misc cleanup.
|
|
|