| Commit message (Collapse) | Author | Age |
|
|
|
|
|
|
|
| |
* use ProductReturnType<>::Type to get the correct Product xpr type
* Product is no longer instanciated for xpr types which are evaluated
* vectorization of "a.transpose() * b" for the normal product (small and fixed-size matrix)
* some cleanning
* removed ArrayBase
|
| |
|
|
|
|
|
|
|
|
|
| |
now have the Like1D flag.
* Big renaming:
packetCoeff ---> packet
VectorizableBit ---> PacketAccessBit
Like1DArrayBit ---> LinearAccessBit
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
** 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.
|
|
|
|
|
|
| |
representation in Transform via the template static class
ToRotationMatrix.
Added a lightweight AngleAxis class (similar to Rotation2D).
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
homography.
Fix indentation in Quaternion.h
|
|
|
|
|
|
| |
(as new members to SelfAdjointEigenSolver)
The QR module now depends on Cholesky.
* Fix Transpose to correctly preserve the *TriangularBit.
|
|
|
|
| |
To try it with the unit tests set the cmake variable TEST_LIB to ON.
|
|
|
|
|
|
|
| |
them in the ei_traits, so that they're guaranteed even if the user
specified his own non-default flags (like before).
Measured to not make compilation any slower.
|
|
|
|
|
|
|
|
|
| |
flags. This ensures that unless explicitly messed up otherwise,
a Matrix type is equal to its own Eval type. This seriously reduces
the number of types instantiated. Measured +13% compile speed, -7%
binary size.
* Improve doc of Matrix template parameters.
|
|
|
|
|
|
|
| |
This is the first step towards a non-selfadjoint eigen solver.
Notes:
- We might consider merging Tridiagonalization and Hessenberg toghether ?
- Or we could factorize some code into a Householder class (could also be shared with QR)
|
|
|
|
|
|
| |
- works for complex
- allows direct access to the matrix R
* removed the scale by the matrix dimensions in MatrixBase::isMuchSmallerThan(scalar)
|
|
|
|
|
|
| |
which is even better optimized by the compiler.
* Quaternion no longer inherits MatrixBase. Instead it stores the coefficients
using a Matrix<> and provides only relevant methods.
|
|
|
|
|
| |
* fix a couple of compilation issues when unrolling is disabled
* reduce default unrolling limit to a more reasonable value
|
|
|
|
|
|
| |
tends to show L2 norm works very well here.
(the legacy implementation is still available via a preprocessor token
to allow further experiments if needed...)
|
| |
|
| |
|
|
|
|
| |
(useful for plane fitting, and covariance analysis of 3D data)
|
|
|
|
| |
(see notes in Core/util/StaticAssert.h for details)
|
| |
|
|
|
|
|
|
|
|
| |
v2).finished()
as an argument of a function. Other possibilities for the name could be "end" or "matrix" ??
* various update in Quaternion, in particular I added a lot of FIXME about the API options,
these have to be discussed and fixed.
|
|
|
|
|
|
|
| |
- Euler angles and angle axis conversions,
- stable spherical interpolation
- documentation
- update the respective unit test
|
| |
|
|
|
|
|
|
|
|
|
| |
- get the doc of the flags in Constants right
- finally give up with SEPARATE_MEMBER_PAGES: it triggers too big
Doxygen bugs, and produces too many small pages. So we have one
huge page for MatrixBase at currently 300kb and going up, so the
solution especially for users with low bandwidth will be to provide
an archive of the html documentation.
|
|
|
|
|
| |
(haven't tried them yet)
* applied the meta selector rule to MatrixBase::swap()
|
|
|
|
|
| |
initialized enum values showing the last word the initializer instead of the actual
enum value's name; add some more docs.
|
|
|
|
|
| |
However the eigen vectors are not correct yet, but I really cannot find the
problem.
|
|
|
|
| |
cwiseAbs()
|
|
|
|
|
|
| |
- add MatrixBase::matrixNorm(); in the non-selfadjoint case, we reduce to the
selfadjoint case by using the "C*-identity" a.k.a.
norm of x = sqrt(norm of x * x.adjoint())
|
|
|
|
|
|
|
|
|
| |
aborting
on an assert. Had to fix a stupid bug in Block -- very strange we hadn't hit it
before.
However the test still fails.
|
|
|
|
|
| |
which now supports selfadjoint matrix. The implementation follows
Golub's famous book.
|
|
|
|
|
|
|
|
|
| |
* added MatrixBase::real()
* added the ability to extract a selfadjoint matrix from the
lower or upper part of a matrix, e.g.:
m.extract<Upper|SelfAdjoint>()
will ignore the strict lower part and return a selfadjoint.
This is compatible with ZeroDiag and UnitDiag.
|
|
|
|
|
|
| |
* fix inverse() bug discovered by Gael's test
* fix warnings introduced by the new Diagonal stuff
* update Doxyfile to v1.5.6
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
| |
to the corresponding special case of the unrollers.
the latter ones are therefore re-named *product_impl.
|
|
|
|
|
| |
as it speed up compilation.
* fix minor typo introduced in the previous commit
|
|
|
|
| |
In particular this flag changes the behavior of operator* to a coeff wise product.
|
|
|
|
| |
anymore.
|
|
|
|
| |
this should be alpha5.
|
|
|
|
|
|
| |
in MatrixBase work
* removed product_selector and cleaned Product.h a bit
* cleaned Assign.h a bit
|
|
|
|
|
| |
* bugfix in Assign and cache friendly product (weird that worked before)
* improved argument evaluation in Product
|
|
|
|
|
|
| |
* 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
|
|
|
|
|
|
|
|
|
|
|
| |
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
|