| Commit message (Collapse) | Author | Age |
| |
|
|
|
|
|
|
|
|
|
|
|
| |
* add Homogeneous expression for vector and set of vectors (aka matrix)
=> the next step will be to overload operator*
* add homogeneous normalization (again for vector and set of vectors)
* add a Replicate expression (with uni-directional replication
facilities)
=> for all of them I'll add examples once we agree on the API
* fix gcc-4.4 warnings
* rename reverse.cpp array_reverse.cpp
|
|
|
|
| |
return-by-value API style (will soon use it for the transform products)
|
|
|
|
|
|
| |
* add an efficient selfadjoint * vector implementation (= blas symv)
perf are inbetween MKL and GOTO
=> the interface is still missing (have to be rethougth)
|
|
|
|
| |
* add vectorization for minCoeff and maxCoeff
|
|
|
|
| |
* apply Ricard Marxer's prod() patch with fixes for the vectorized path
|
| |
|
| |
|
| |
|
|
|
|
| |
containers. There is still a compile-time problem with STL containers that have a standard-conformant resize() method, but this should resolve the original user issue which was storing aligned objects in a std::map.
|
|
|
|
| |
of Eigen, and add a MSVC-friendly path in StaticAssert.
|
|
|
|
| |
* disable vectorization on MSVC 2005, as it doesn't have all the required intrinsics. require 2008.
|
|
|
|
| |
detects SSE2
|
| |
|
| |
|
|
|
|
| |
Berres.
|
| |
|
|
|
|
|
|
| |
but I no hope, that would be too simple !
* added Rotation2D typedefs
* remove CoreDeclarations header file
|
| |
|
|
|
|
| |
* keep going on the doc: added a short geometry tutorial
|
|
|
|
|
| |
* clean ugly doxygen inheritence of expressions
* keep improving the documentation... slowly !
|
|
|
|
|
|
|
|
| |
IoFormat OctaveFmt(4, AlignCols, ", ", ";\n", "", "", "[", "]");
cout << mat.format(OctaveFmt);
The first "4" is the precision.
Documentation missing.
* Some compilation fixes
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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
|
|
|
|
| |
ei_cache_friendly_product, and undeclared memcpy
|
|
|
|
|
|
|
|
|
|
|
| |
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...
|
|
|
|
|
|
| |
Renamed "MatrixBase::extract() const" to "MatrixBase::part() const"
* Renamed static functions identity, zero, ones, random with an upper case
first letter: Identity, Zero, Ones and Random.
|
|
|
|
|
|
| |
and vector * row-major products. Currently, it is enabled only is the matrix
has DirectAccessBit flag and the product is "large enough".
Added the respective unit tests in test/product/cpp.
|
|
|
|
|
|
| |
(using either a cache friendly strategy or re-using dot-product
vectorized implementation)
* add LinearAccessBit to Transpose
|
|
|
|
| |
can be seen in Eigen/src/Core/Cwise.h.
|
|
|
|
|
|
| |
(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).
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
To try it with the unit tests set the cmake variable TEST_LIB to ON.
|
|
|
|
|
|
| |
disappear
from the docs.
|
|
|
|
|
| |
it allows the possiblity to save some compilation time by linking to it
*and* defining the token EIGEN_EXTERN_INSTANCIATIONS
|
|
|
|
|
|
|
|
| |
This include:
- cwise Pow,Sin,Cos,Exp...
- cwise Greater and other comparison operators
- .any(), .all() and partial reduction
- random
|
|
|
|
| |
In particular this flag changes the behavior of operator* to a coeff wise product.
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
(svn required to commit that separately)
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
Rename DefaultLostFlagMask --> HerediraryBits
|
|
|
|
|
|
| |
* Fix a mistake in CwiseNullary.
* Added a CoreDeclarions header that declares only the forward declarations
and related basic stuffs.
|
|
|
|
| |
-finline-limit=1000 to gcc to get good performance. By the way some cleanup.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(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)
|
|
|
|
| |
rename the noarch PacketMath.h to DummyPacketMath.h
|
|
|
|
|
|
|
|
| |
* Fix compilation of Inverse.h with vectorisation
* Introduce EIGEN_GNUC_AT_LEAST(x,y) macro doing future-proof (e.g. gcc v5.0) check
* Only use ProductWIP if vectorisation is enabled
* rename EIGEN_ALWAYS_INLINE -> EIGEN_INLINE with fall-back to inline keyword
* some cleanup/indentation
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
(needed by the new product implementation)
* Make the packet* members template to support aligned and unaligned
access. This makes Block vectorizable. Combined with ReferencableBit,
we should be able to determine at runtime (in some specific cases) if
an aligned vectorization is possible or not.
* Improved the new product implementation to robustly handle all cases,
it now passes all the tests.
* Renamed the packet version ei_predux to ei_preduxp to avoid name collision.
|
|
|
|
|
| |
* improved the flexibility of the new product implementation,
now all sizes seems to be properly handled.
|