| Commit message (Collapse) | Author | Age |
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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
|
|
|
|
| |
all cmake files
|
| |
|
| |
|
|
|
|
|
|
| |
* fix a very old bug in EigenSolver that I had completely forgotten
(thanks to Timothy to refresh my mind)
* fix doc of Matrix::Map
|
|
|
|
|
|
|
|
|
| |
* add a LDL^T factorization with solver using code from T. Davis's LDL
library (LPGL2.1+)
* various bug fixes in trianfular solver, matrix product, etc.
* improve cmake files for the supported libraries
* split the sparse unit test
* etc.
|
|
|
|
| |
specializations for cases p=1,2,Eigen::Infinity.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
Some naming questions:
- for "extend" we could also think of: "expand", "union", "add"
- same for "clamp": "crop", "intersect"
- same for "contains": "isInside", "intersect"
=> ah "intersect" is conflicting, so that eliminates this one !
|
|
|
|
| |
Complete unit tests wrt previous commits.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
* remove the automatic resizing feature of operator =
* add function Matrix::set() to be used when the previous
behavior is wanted
* the default constructor of dynamic-size matrices now
creates a "null" matrix (data=0, rows = cols = 0)
instead of a 1x1 matrix
* fix UnixX typos ;)
|
|
|
|
|
| |
- remove some useless stuff => let's focus on a single sparse matrix format
- finalize the new RandomSetter
|
|
|
|
|
| |
for both backends.
* extended a bit the sparse unit tests
|
| |
|
|
|
|
| |
* add unit tests for sparse cholesky
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* rename Cholesky to LLT
* rename CholeskyWithoutSquareRoot to LDLT
* rename MatrixBase::cholesky() to llt()
* rename MatrixBase::choleskyNoSqrt() to ldlt()
* make {LLT,LDLT}::solve() API consistent with other modules
Note that we are going to keep a source compatibility untill the next beta release.
E.g., the "old" Cholesky* classes, etc are still available for some time.
To be clear, Eigen beta2 should be (hopefully) source compatible with beta1,
and so beta2 will contain all the deprecated API of beta1. Those features marked
as deprecated will be removed in beta3 (or in the final 2.0 if there is no beta 3 !).
Also includes various updated in sparse Cholesky.
|
|
|
|
|
|
| |
=> row-major rhs are now evaluated to a column-major
temporary before the computations.
Add solveInPlace in Cholesky*
|
| |
|
|
|
|
|
|
| |
However, for matrices larger than 5, it seems there is constantly a quite large error for a very
few coefficients. I don't what's going on, but that's certainely not due to numerical issues only.
(also note that the test with the pseudo eigenvectors fails the same way)
|
|
|
|
|
|
|
|
| |
* eigenvectors => pseudoEigenvectors
* added pseudoEigenvalueMatrix
* clear the documentation
* added respective unit test
Still missing: a proper eigenvectors() function.
|
|
|
|
| |
* documentation improvements, especially in quickstart guide
|
|
|
|
|
|
| |
registers)
* extend the documentation on "extending Eigen"
|
|
|
|
|
|
| |
based on the former.
* opengl_demo: makes IcoSphere better (vertices are instanciated only once) and
removed the generation of a big geometry for the fancy spheres...
|
| |
|
|
|
|
|
|
| |
add unit-tests for it.
* remove "using namespace std" in test/main.h such that the compilation
bug found today in SVD won't happen again.
|
|
|
|
|
|
| |
* CholeskyWithoutSqrt with 1x1 matrices
* .part<Diagonal>()
Updated unit tests to handle these cases
|
|
|
|
|
|
| |
mat.cwise() < 2
instead of:
mat.cwise() < MatrixType::Constant(mat.rows(), mat.cols(), 2)
|
|
|
|
|
|
|
|
| |
operator.
Example:
mat = (mat.cwise().abs().cwise() < Ones()).select(0,mat);
replaces all small values by 0. (the scalar version is "s = abs(s)<1 ? 0 : s")
|
|
|
|
|
| |
Anyway: LinearVectorization+CompleteUnrolling actually uses the InnerVectorization
unrollers, so these two cases could be merged to a single one...
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* add a WithAlignedOperatorNew class with overloaded operator new
* make Matrix (and Quaternion, Transform, Hyperplane, etc.) use it
if needed such that "*(new Vector4) = xpr" does not failed anymore.
* Please: make sure your classes having fixed size Eigen's vector
or matrice attributes inherit WithAlignedOperatorNew
* add a ei_new_allocator STL memory allocator to use with STL containers.
This allocator really calls operator new on your types (unlike GCC's
new_allocator). Example:
std::vector<Vector4f> data(10);
will segfault if the vectorization is enabled, instead use:
std::vector<Vector4f,ei_new_allocator<Vector4f> > data(10);
NOTE: you only have to worry if you deal with fixed-size matrix types
with "sizeof(matrix_type)%16==0"...
|
| |
|
|
|
|
|
| |
Block specialization for sparse matrices.
InnerIterators for Blocks and fixes in CoreIterators.
|
|
|
|
|
|
| |
few bits left of the comma and for floating-point types will never return zero.
This replaces the custom functions in test/main.h, so one does not anymore need
to think about that when writing tests.
|
|
|
|
| |
and rename NonAfine => Projective, GenericAffine => Affine, NoScaling => Isometry
|
|
|
|
|
| |
* Fix compilations with gcc 3.4, ICC and doxygen
* Fix krazy directives (hopefully)
|
|
|
|
| |
API update in Regression...
|
| |
|
|
|
|
|
|
|
|
| |
This allow code factorization and generic template specialization
of functions
* added any_rotation * {Translation,Scaling,Transform} products methods
* rewrite of the actually broken ToRoationMatrix helper class to
a global ei_toRotationMatrix function.
|
|
|
|
|
| |
* apply the same principle to extractRotation and fix it to
extract a rotation corresponding to a positive scaling
|
|
|
|
|
|
|
|
|
|
| |
transformation is:
NonAffine, Affine (default), contains NoShear, contains NoScaling
that allows significant speed improvements. If you like it, this concept could be applied to
Transform::extractRotation (or to a more advanced decomposition function) and to Hyperplane::transformed()
and maybe to some other places... e.g., I think a Transform::normalMatrix() function would not harm and
warn user that the transformation of normals is not that trivial (I saw this mistake much too often)
|
|
|
|
|
|
|
|
| |
* handling Quaternion, AngleAxis and Rotation2D, 2 options here:
1- make all of them inheriting a common base class Rotation such that we can
have a single version of operator* for all the rotation type (they all get converted to a matrix)
2- write a version for all type (so 3 rotations types * 3 for Transform,Translation and Scaling)
* real documentation
|
|
|
|
|
|
|
|
| |
- the coefficients are stored in a single vector
- added transformation methods
- removed Line* typedef since in 2D this is really an hyperplane
and not really a line...
- HyperPlane => Hyperplane
|
| |
|
|
|
|
|
|
| |
with its respective unit-test.
Feel free to discuss the API on the ML.
* Some bugfix in unitOrthogonal found by the hyperplane unit test.
|
| |
|