Commit Graph

323 Commits

Author SHA1 Message Date
Benoit Jacob
c768a44909 Add matrix transposition 2007-10-01 18:20:35 +00:00
Benoit Jacob
f5f45d751c Move the meta loop unrolling to a separate file, Loop.h 2007-10-01 17:07:38 +00:00
Benoit Jacob
96524fc573 Split Row and Column into separate files.
Introduce a notion of RowVector (typedef for Matriw with 1 row)
Make row() return a row vector instead of a "column vector"
Introduce operator[] to access elements of row/column vectors uniformly
Remove default arguments in operator(), these were for vectors, now use operator[] instead
2007-10-01 07:45:30 +00:00
Benoit Jacob
3cf6caba1a remove useless typedefs 2007-10-01 06:51:25 +00:00
Benoit Jacob
6015698047 Michael was right, it's best to base the unrolling limit on the product Rows*Cols. 2007-10-01 06:30:20 +00:00
Benoit Jacob
656919619f - add copyright line for Michael Olbrich
- some meta unrolling improvements
2007-10-01 06:23:05 +00:00
Benoit Jacob
e116aba444 adapt to coding style used elsewhere in eigen2 2007-10-01 04:57:51 +00:00
Michael Olbrich
2d823d8ef6 Generic loop unrolling with template metaprograms. It seems to be as fast as
manually unrolling.
TODO: decide when to stop unrolling (speed vs. code size).
      maybe only unroll one loop for larger matixes.
2007-09-30 20:38:09 +00:00
Michael Olbrich
1d3743d2c5 for dynamic size matrix (Rows|Cols)AtCompileTime is always EiDynamic and not
"(Rows|Cols)AtCompileTime - 1" which would be EiDynamic - 1 == -2
2007-09-30 20:23:24 +00:00
Benoit Jacob
4241dddee9 temporarily remove division unit-tests. they caused div-by-zero's , reported by Michael Olbrich.
The solution will consist in adding a real Traits system.
2007-09-30 16:45:40 +00:00
Benoit Jacob
023773beaa Fix super-nasty bug in the declaration of the storage array of fixed-size matrices.
Also some simplifications.
2007-09-30 14:56:11 +00:00
Benoit Jacob
7d41ad9d90 Get rid of a nasty const_cast by introducing a MatrixConstRef class.
Remove the __restrict__'s for now.
2007-09-29 17:27:20 +00:00
Benoit Jacob
ee63e15e2c make matrix multiplication do immediate evaluation; add lazyMul() for the old behaviour
some reorganization, especially in MatrixStorage
start playing with loop unrolling, always_inline, and __restrict__
2007-09-29 08:28:36 +00:00
Benoit Jacob
51e29ae4bd some reorganization leading to simpler expression trees 2007-09-28 11:20:29 +00:00
Benoit Jacob
aa3294f14e add example to the documentation 2007-09-28 06:17:36 +00:00
Benoit Jacob
835e0c9f67 Found a way to have eval() be a member function of class EiObject, instead of a global function.
CCMAIL:bensch128@yahoo.com
2007-09-28 06:10:34 +00:00
Benoit Jacob
28c44a95c2 Finish prefixing everything with "Ei" 2007-09-27 19:54:04 +00:00
Benoit Jacob
5160e9d029 Half-way commit prefixing object names. I am forced to commit now
because I renamed a file once with a wrong filename and svn refuses to
let me rename it again, tells me i should propagate first.
2007-09-27 19:38:40 +00:00
Benoit Jacob
4e299afb1f don't enclose eigen in a namespace. prefixing is the way to go.
For example Qt uses a prefix and no namespace (except for a few things)
2007-09-27 19:24:57 +00:00
Benoit Jacob
d99d9407df add operators *= and /= 2007-09-27 19:20:06 +00:00
Benoit Jacob
628b1a8f6d implement scalar operators separately for each type using a macro.
This is required e.g. to allow "2 * m" with m a matrix of doubles.
2007-09-27 07:42:12 +00:00
Benoit Jacob
8a024825d2 fix bugs caused by default copy constructors being called. valgrind,
you saved my life.
2007-09-26 14:06:32 +00:00
Benoit Jacob
a2dd9dd6f9 Give the axe to the aliasing system.
Improve the evaluation system instead.
2007-09-26 14:06:26 +00:00
Benoit Jacob
55227b1f63 Deep refactoring.
1) Kill MatrixXpr class, instead let all class inherit a common EigenBase class
2) Kill MatrixBase/Matrix/Vector classes, instead introduce a single Matrix class,
a MatrixStorage class, and typedefs to emulate vectors
3) Huge code cleanup, remove large preprocessor macros, sloccount drop to ~750
down from 1100.
4) Introduce compile-time-known sizes
2007-09-26 14:06:14 +00:00
Benoit Jacob
1af61c6ff0 reorganize header files, split MatrixBase into smaller files.
expose only a few meta-headers to the user, the rest moves to a internal/ subdirectory
2007-09-09 09:41:15 +00:00
Benoit Jacob
3b727ef939 some cleanup 2007-09-09 09:03:42 +00:00
Benoit Jacob
1dab53d300 update tutorial 2007-09-09 08:17:08 +00:00
Benoit Jacob
fe9b6b8f17 remove the MatrixConstXpr and MatrixConstRef classes.
Now the user doesn't need anymore to call .xpr() and can simply do:
matrix.row(i) += matrix.row(j)

Also remove the obsolete MatrixXpr::hasDynamicSize() method (thanks to
Michael Olbrich for reporting this).

CCMAIL:<michael.olbrich@gmx.net>
2007-09-09 08:15:48 +00:00
Benoit Jacob
506cc5db12 remove operator *= between matrices: too much hassle. 2007-09-07 09:47:13 +00:00
Benoit Jacob
61158b1922 add operator *= between matrices, with automatic aliasing.
add tutorial in doc/ subdirectory.
2007-09-07 08:18:21 +00:00
Benoit Jacob
c030e570fd extend operators += and -= to aliases 2007-09-07 07:56:22 +00:00
Benoit Jacob
c3731b36d1 Add operator += and operator -= between matrices/vectors/expressions 2007-09-07 07:41:10 +00:00
Benoit Jacob
e7ef6dba9d - Introduce aliasing system
- Remove operator<<, use .alias() instead
- Introduce operator/ (scalar)
- Cleanup, unit-tests update.
2007-09-06 10:16:51 +00:00
Benoit Jacob
9477e62b68 add a missing operator= for copying a matrix into an expression. 2007-09-05 11:39:42 +00:00
Benoit Jacob
13a82795f7 forgot to svn add some CMakeLists 2007-09-05 10:42:54 +00:00
Benoit Jacob
1dabb45d94 Hello, World!
This is the initial commit for Eigen2, since I restarted it from scratch on Sunday.
2007-09-05 10:42:15 +00:00
Benoit Jacob
7eeb620880 restart Eigen2 development from scratch. 2007-09-01 10:47:07 +00:00
Benoit Jacob
bb114eb67f remove more stuff that I don't need 2007-08-29 08:11:55 +00:00
Benoit Jacob
c141f18b54 some cleanup 2007-08-17 14:38:38 +00:00
Benoit Jacob
c14ba38df3 some more cleanup in comma-initializer stuff 2007-08-17 08:06:19 +00:00
Benoit Jacob
dfd4d2c487 of course, i had forgotten to svn add one file 2007-08-17 07:11:50 +00:00
Benoit Jacob
ad89fc8295 -- switch Matrix class to column-major order like in Eigen
-- many more Eigenification changes, in preparation of the big merge
-- big changes in the Comma Initializer to allow for column-major order,
   leading to a simpler and cleaner solution. "commaWrite" hook added to
   the classes using the Comma Initializer.
-- lots of API improvements, cleanup, removal of dead/useless stuff
-- testsuite updated
2007-08-17 07:10:44 +00:00
Benoit Jacob
07f96b6047 remove 4 files from tvmet that are now replaced by testtraits.cpp 2007-08-12 11:30:24 +00:00
Benoit Jacob
011c7e9ebd forgot to add another file... 2007-08-12 11:05:44 +00:00
Benoit Jacob
9a519c30ac forgot to "svn add" a very important file!! 2007-08-12 11:00:27 +00:00
Benoit Jacob
c9a2c3738e lots of fixes for complex numbers. unittests now test complex numbers. 2007-08-12 10:59:07 +00:00
Benoit Jacob
71268227d4 Big rework of the Traits system, unittests updated. 2007-08-12 09:32:17 +00:00
Benoit Jacob
ca438b2c12 Unit-tests updated for the stuff in the previous commit. 2007-07-23 07:39:05 +00:00
Benoit Jacob
f1bd09024b Big overhaul and simplification of the NumericTraits system.
Add a utility header for random numbers (might be merged into NumericTraits)
2007-07-23 07:38:07 +00:00
Benoit Jacob
d62af65d7f port TestNumericTraits to QTestLib. This revealed some shortcomings in tvmet's infrastructure,
in particular it lacks adequate fuzzy compares. will port that from eigen1.
2007-07-21 10:36:47 +00:00