568a7e8ebaimprove assertion checking in product
Gael Guennebaud
2008-10-25 11:52:13 +0000
72f2c7eed5bugfix in Quaternion found by Daniel Stonier
Gael Guennebaud
2008-10-25 09:25:29 +0000
0c5a09d93fsome cleaning and doc in ParametrizedLine and HyperPlane Just a thought: what about ParamLine instead of the verbose ParametrizedLine ?
Gael Guennebaud
2008-10-25 00:08:52 +0000
8ea8b481deAs discussed on ML: * 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 ;)
Gael Guennebaud
2008-10-24 21:42:03 +0000
65abb4c52ecompilation fix for ICC
Gael Guennebaud
2008-10-21 15:43:25 +0000
cf0f82ecbesparse module: - remove some useless stuff => let's focus on a single sparse matrix format - finalize the new RandomSetter
Gael Guennebaud
2008-10-21 13:35:04 +0000
9e02e42ff6add the bench file for the RandomSetter
Gael Guennebaud
2008-10-21 00:05:45 +0000
3645d6c138sparse module: add a RandomSetter based on a user defined map implementation as described on the wiki (one map per N column) Here's some bench results for the 4 currently supported map impl: std::map => 18.3385 (581 MB) gnu::hash_map => 6.52574 (555 MB) google::dense => 2.87982 (315 MB) google::sparse => 15.7441 (165 MB) This is the time is second (and memory consumption) to insert/lookup 10 million of coeffs with random coords inside a 10000^2 matrix, with one map per packet of 64 columns => google::dense really rocks ! Note I use for the key value the index of the column in the packet (between 0 and 63) times the number of rows and I used the default hash function.... so maybe there is room for improvement here....
Gael Guennebaud
2008-10-20 23:42:20 +0000
96538b976dremove debug message in FindCholmod.cmake
Gael Guennebaud
2008-10-20 20:58:43 +0000
5066fe8bbe* sparse LU: add extraction of L,U,P, and Q, as well as determinant for both backends. * extended a bit the sparse unit tests
Gael Guennebaud
2008-10-20 17:03:09 +0000
e1c50a3cb1add unit tests for sparse LU and fix a couple of warnings
Gael Guennebaud
2008-10-20 11:37:45 +0000
fa27cd1ed0* add cmake files to find (optional) supported libraries * add unit tests for sparse cholesky
Gael Guennebaud
2008-10-20 10:43:11 +0000
f44316e5f8UmfPack support: add support for complex<double>
Gael Guennebaud
2008-10-20 00:39:11 +0000
3a231c2349sparse module: add support for umfpack, the sparse direct LU solver from suitesparse (as cholmod). It seems to be even faster than SuperLU and it was much simpler to interface ! Well, the factorization is faster, but for the solve part, SuperLU is quite faster. On the other hand the solve part represents only a fraction of the whole procedure. Moreover, I bench random matrices that does not represents real cases, and I'm not sure at all I use both libraries with their best settings !
Gael Guennebaud
2008-10-19 22:44:21 +0000
64f7fbe3f2sparse module: some trivial bugfixes
Gael Guennebaud
2008-10-19 17:07:20 +0000
76fe2e1b34add/update some benchmark files used to test/compare sparse module features
Gael Guennebaud
2008-10-19 17:06:11 +0000
ecc6c43dbasparse module: add preliminary support for direct sparse LU solver using SuperLU. Calling SuperLU was very painful, but it was worth it, it seems to be damn fast !
Gael Guennebaud
2008-10-19 15:26:28 +0000
6be0131774sparse module: added some documentation for the LLT solver
Gael Guennebaud
2008-10-18 18:33:56 +0000
cfca7f71fesparse module: much much faster transposition code
Gael Guennebaud
2008-10-18 11:11:10 +0000
727dfa1c43fix some documentation issues
Gael Guennebaud
2008-10-17 11:20:46 +0000
e747b338eeStarted the third chapter of the tutorial on linear solvers. It is only a first draft and I think it should be reorganized a bit in 2 parts: 1 - a compact table summarizing the main API and its use (this is what would expect an "expert" user) 2 - a discussion about the various algorithm in Eigen to guide the newbies in linear algebra Currently I mixed the discussion with the API, but it is still better than nothing !
Gael Guennebaud
2008-10-16 22:28:23 +0000
28d32f9bd8add my copyright in MatrixBase.h
Gael Guennebaud
2008-10-13 16:09:16 +0000
765219aa51Big API change in Cholesky module: * 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
Gael Guennebaud
2008-10-13 15:53:27 +0000
e2bd8623f8Solve the issue found by Timothy in solveTriangular: => row-major rhs are now evaluated to a column-major temporary before the computations. Add solveInPlace in Cholesky*
Gael Guennebaud
2008-10-13 13:14:43 +0000
537a0e0a52fix typos
Scott Wheeler
2008-10-12 16:09:12 +0000
e80d6a95d9note that norm2() is *not* an l2 norm as it is in other APIs
Scott Wheeler
2008-10-11 21:01:59 +0000
b46c327133Clear up the docs some. I'd also suggest making Dynamic the default template parameter for matrices.
Scott Wheeler
2008-10-11 08:43:18 +0000
4e502dd6b0very little fixes: cast literals to Scalar, rephrase some doc, add some const (maybe completely useless but at least doesn't hurt)
Benoit Jacob
2008-10-06 22:10:36 +0000
22507fa645Sparse module: refactoring of the cholesky factorization, now the backends are well separated from the default impl, etc.
Gael Guennebaud
2008-10-05 20:19:47 +0000
b8fc1edb2cSparse module: enable support for incomplete cholesky factorization in CHOLMOD backend.
Gael Guennebaud
2008-10-05 13:45:43 +0000
3c155ab073Sparse module: removed some extra copies using markAsRValue()
Gael Guennebaud
2008-10-05 13:39:49 +0000
b730c6f57dSparse module: add experimental support for TAUCS and CHOLMOD with: * bidirectionnal mapping * full cholesky factorization
Gael Guennebaud
2008-10-05 13:38:38 +0000
a930dfb229extend sparse unit tests with transpose and matrix product
Gael Guennebaud
2008-10-04 14:25:00 +0000
98d3c0a413Cleaned a bit the sparse cholesky code
Gael Guennebaud
2008-10-04 14:24:15 +0000
068ff3370dSparse module: * several fixes (transpose, matrix product, etc...) * Added a basic cholesky factorization * Added a low level hybrid dense/sparse vector class to help writing code involving intensive read/write in a fixed vector. It is currently used to implement the matrix product itself as well as in the Cholesky factorization.
Gael Guennebaud
2008-10-04 14:23:00 +0000
1fc503e3ceadd EigenSolver::eigenvectors() method for non symmetric matrices. 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)
Gael Guennebaud
2008-10-03 13:22:54 +0000
d907cd4410Fixes in Eigensolver: * eigenvectors => pseudoEigenvectors * added pseudoEigenvalueMatrix * clear the documentation * added respective unit test Still missing: a proper eigenvectors() function.
Gael Guennebaud
2008-10-01 10:17:08 +0000
618de17bf7block(int,int)->segment
Benoit Jacob
2008-09-24 20:35:07 +0000
373331e3bfremove apidox_preprocessing script which is not used anymore
Gael Guennebaud
2008-09-16 13:26:46 +0000
42e88b1724resurrected root/Mainpage.dox, the directives are needed by kde's scripts
Gael Guennebaud
2008-09-16 12:53:03 +0000
fb5b62fbacblock => segment in the tutorial
Gael Guennebaud
2008-09-15 16:26:55 +0000
af991a6bdbsmall dox fixes
Benoit Jacob
2008-09-15 16:19:48 +0000
247f2b0ffa* block() for vectors ---> segment() * documentation improvements, especially in quickstart guide
Benoit Jacob
2008-09-15 15:45:41 +0000
0940ad7127add normalization functions to Quaternion and fix compilation issue with custom types
2.0-beta1
Gael Guennebaud
2008-09-14 12:21:22 +0000
db030d4e28* fix issues with "long double" type (useful to enforce the use of x87 registers) * extend the documentation on "extending Eigen"
Gael Guennebaud
2008-09-14 11:59:10 +0000
8473a77f2fmove CommaInitializer out of MatrixBase and documment it (because of .finished())
Gael Guennebaud
2008-09-13 18:51:51 +0000
a62bd110a2fix doc compilation
Gael Guennebaud
2008-09-13 10:44:23 +0000
e5c50afed6* Quaternion: added dot product and angularDistance functions. The latter is 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...
Gael Guennebaud
2008-09-11 11:19:34 +0000
5e9ee8863eopengl demo, now working: - quaternion vs euler angles interpolation (though the Euler angle version looks a bit too bad) - navigation using either a mapping from 2D screen coordinates to 3D points on a sphere or the standard approach mapping mouse displacements as rotations around camera's axes.
Gael Guennebaud
2008-09-09 23:17:14 +0000
146c9e4494various stuff in opengl demos such as a better model, stable trackball for the fly navigation mode, and started to put some GUI elements...
Gael Guennebaud
2008-09-09 18:50:45 +0000
d3a70b7facfix a numerical instability in Quaternion::slerp
Gael Guennebaud
2008-09-09 15:25:03 +0000
703539110badd the missing templated version of block for sub-vectors
Gael Guennebaud
2008-09-09 09:30:23 +0000
c41ceee7502 typos
Gael Guennebaud
2008-09-08 17:08:27 +0000
31c33b9ed4started a small OpenGL demo making use of Eigen's geometry features
Gael Guennebaud
2008-09-07 23:15:11 +0000
12e9de4abbfix stupid numerical stability issue in SVD::solve (though it is not yet as stable as LU with full pivoting)
Gael Guennebaud
2008-09-04 14:38:42 +0000
6add33e2c2fix warning
Benoit Jacob
2008-09-04 01:35:39 +0000
52406aecad* Extend a bit ParametrizedLine and move it to a separate file, 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.
Gael Guennebaud
2008-09-03 22:35:45 +0000
c29c7b0ea9Fix bugs reported by Timothy Hunter: * CholeskyWithoutSqrt with 1x1 matrices * .part<Diagonal>() Updated unit tests to handle these cases
Gael Guennebaud
2008-09-03 20:52:26 +0000
e14aa8c8aaAdd coeff-wise comparisons to scalar operators. You can now write: mat.cwise() < 2 instead of: mat.cwise() < MatrixType::Constant(mat.rows(), mat.cols(), 2)
Gael Guennebaud
2008-09-03 17:56:06 +0000
59dc1da5bfAdd a Select expression in the Array module which mimics a coeff-wise ?: 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")
Gael Guennebaud
2008-09-03 17:16:28 +0000
622f2d5eaetrivial compilation fix in SVD
Gael Guennebaud
2008-09-03 15:52:44 +0000
3bbd1b3114Bugfix regarding alignent in Assign.h (updated map unit test to detect this bug) Anyway: LinearVectorization+CompleteUnrolling actually uses the InnerVectorization unrollers, so these two cases could be merged to a single one...
Gael Guennebaud
2008-09-03 14:42:36 +0000
75649551c2compilation fixes with MSVC
Gael Guennebaud
2008-09-03 11:26:19 +0000
2a2c305c4dnot yet
Gael Guennebaud
2008-09-03 10:34:05 +0000
f52d119b9cSolve a big issue with data alignment and dynamic allocation: * 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"...
Gael Guennebaud
2008-09-03 00:32:56 +0000
d8df318d77resurrected sparse triangular solver
Gael Guennebaud
2008-09-02 19:55:26 +0000
8fb1678f0fExtended sparse unit-test: nested blocks and InnerIterators. Block specialization for sparse matrices. InnerIterators for Blocks and fixes in CoreIterators.
Daniel Gomez Ferro
2008-09-02 15:28:49 +0000
46fe7a3d9eif EIGEN_NICE_RANDOM is defined, the random functions will return numbers with 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.
Benoit Jacob
2008-09-01 17:31:21 +0000
49ff9b204cremove the conceptualy broken "NoShear" transformation traits, and rename NonAfine => Projective, GenericAffine => Affine, NoScaling => Isometry
Gael Guennebaud
2008-09-01 17:14:34 +0000
6825c8dd6bQTransform conversion and doc
Gael Guennebaud
2008-09-01 06:33:19 +0000
994629721aupdate of the geometry tutorial
Gael Guennebaud
2008-08-31 17:30:09 +0000
d74916e4fesame thing with EIGEN_BINARY_DIR. Now the doc generation works from kdesupport.
Benoit Jacob
2008-08-31 15:20:25 +0000
c931867909also use EIGEN_SOURCE_DIR here. according to grep this was the last place to change.
Benoit Jacob
2008-08-31 15:12:55 +0000
ff60c9ccb1fix cmakelists: wrong assumption on CMAKE_SOURCE_DIR. One can now use EIGEN_SOURCE_DIR for that use, guaranteed to point to eigen2/ directory.
Benoit Jacob
2008-08-31 15:08:41 +0000
7e8aa63bb7* Add Hyperplane::transform(Matrix/Transform) * Fix compilations with gcc 3.4, ICC and doxygen * Fix krazy directives (hopefully)
Gael Guennebaud
2008-08-31 13:32:29 +0000
5c34d8e20aThe discussed changes to Hyperplane, the ParametrizedLine class, and the API update in Regression...
Benoit Jacob
2008-08-31 04:25:30 +0000
5c8c09e021add uniform scale/prescale functions in Tranform
Gael Guennebaud
2008-08-30 23:10:46 +0000
9c450a52a2Split Rotation.h to Rotation2D.h and RotationBase.h, and more code factorization based on RotationBase. Added notes about the main aim of the Translation and Scaling classes.
Gael Guennebaud
2008-08-30 21:36:04 +0000
6ba991aa3a* added a RotationBase class following the CRT pattern 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.
Gael Guennebaud
2008-08-30 20:11:04 +0000
027ee14f31api.kde.org is still bugged, let's do another try...
Gael Guennebaud
2008-08-30 16:30:58 +0000
f1e6c56b77* rename TranformationKnowledge to TransformTraits * apply the same principle to extractRotation and fix it to extract a rotation corresponding to a positive scaling
Gael Guennebaud
2008-08-30 15:22:45 +0000
236b7a545dupdate Transform::inverse() to take an optional argument stating whether the 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)
Gael Guennebaud
2008-08-30 12:42:06 +0000
9e7a9cde14Add Scaling and Translation class as discussed on ML, still missing: * 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
Gael Guennebaud
2008-08-30 00:08:23 +0000
13a9d93bc0minor doc fixes
Gael Guennebaud
2008-08-29 17:45:11 +0000
582c1b6c3ain doc for kde: fix project name and number, add the amssymb latex package
Gael Guennebaud
2008-08-29 16:32:54 +0000
063d1bb811tweak root/Mainpage.dox to make it compatible with kde's doxygen.sh script plus some hacks to compile the examples from doxygen... Hopefully, api.kde.org/eigen2 will be beautiful by tomorrow....
Gael Guennebaud
2008-08-29 16:17:06 +0000
68fbd6f531typos in bench/
Gael Guennebaud
2008-08-29 16:10:08 +0000
6d841512c7some hyperplane changes: - 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
Gael Guennebaud
2008-08-29 13:30:37 +0000
409e82be06doc and use sed to clean the class hierarchy instead of preprocessor directives.
Gael Guennebaud
2008-08-28 23:25:27 +0000
7ea821d18espelling + some krazy directives
Gael Guennebaud
2008-08-28 21:44:56 +0000
80be1ea515remove CoreDeclaration from the documentation
Gael Guennebaud
2008-08-28 19:11:03 +0000
9b4d46c82e* Add an HyperPlane class in the Geometry module with its respective unit-test. Feel free to discuss the API on the ML. * Some bugfix in unitOrthogonal found by the hyperplane unit test.
Gael Guennebaud
2008-08-28 17:44:27 +0000
ee2df6026aCoreDeclarations was removed
Jure Repinc
2008-08-28 17:33:27 +0000
3ced3f91c2* temporarily remove doxygen customization, we'll see if that fix api.kde.org but I no hope, that would be too simple ! * added Rotation2D typedefs * remove CoreDeclarations header file
Gael Guennebaud
2008-08-28 15:28:23 +0000
70266b4d05doc + quick bug fix in Matrix ctor
Gael Guennebaud
2008-08-28 00:33:58 +0000
f7de12de69Missing inline keywords in AltiVec/PacketMath were making Avogadro fail to compile (duplicate symbols).
Benoit Jacob
2008-08-27 20:06:15 +0000
252e0c45b2* missing cmake make_directory command * show svn revision number if available * fix warnings about unused argc/argv
Benoit Jacob
2008-08-27 06:43:42 +0000
a0cfe6ebdcremove double ;
Benoit Jacob
2008-08-27 02:58:04 +0000
8e8019d289improvements in geometry tutorial
Gael Guennebaud
2008-08-27 00:46:24 +0000