Commit Graph

1966 Commits

Author SHA1 Message Date
Carlos Becker
bdef7eb656 Added doxygen info for .matrix() and .array() 2010-06-28 18:38:28 +01:00
Gael Guennebaud
189d4b51c2 fix unused warning when EIGEN_HAS_FUSE_CJMADD 2010-06-27 17:42:03 +02:00
Benoit Jacob
25f44266a2 fix #146 2010-06-27 08:44:21 -04:00
Gael Guennebaud
f096452dfd Fix cache computation on old Intel CPUs which do not
support the cpuid function 0x4
2010-06-27 00:17:38 +02:00
Manoj Rajagopalan
464fc297cf Included definitions for rowRange() and colRange() member functions of DenseBase 2010-06-26 17:37:17 -04:00
Martin Senst
4b474fdb34 Relax assertion to allow for matrices with cols() == 0 and/or rows() == 0. 2010-07-20 21:25:43 +02:00
Gael Guennebaud
95f2e7f3f5 introduce a new LvalueBit flag and split DenseCoeffBase into three level of accessors 2010-07-21 10:57:01 +02:00
Gael Guennebaud
cac147ba10 add support for determinant on empty matrix 2010-07-19 10:45:06 +02:00
Gael Guennebaud
ea27678153 fix compilation of ei_tridiagonalization_inplace_selector for 1x1 matrix 2010-07-18 17:10:11 +02:00
Gael Guennebaud
2d78023815 fix hemm to not use the imaginary part of the diagonal entries 2010-07-17 11:57:54 +02:00
Gael Guennebaud
4c19024fbf re-enable writing to reversed objects 2010-07-16 22:26:07 +02:00
Gael Guennebaud
fb041c260c fix for empty matrices 2010-07-16 22:25:35 +02:00
Gael Guennebaud
883a8cbb2c disable the optimized 3x3 path for complexes which was not working at all 2010-07-16 18:22:00 +02:00
Gael Guennebaud
6ab9e8632f fix bad fuzzy comparison in 3x3 tridiagonalization 2010-07-16 16:38:58 +02:00
Gael Guennebaud
044424b0e2 fix sum()/prod() on empty matrix making sure this does not affect fixed sized object, extend related unit tests including partial reduction 2010-07-16 14:02:20 +02:00
Gael Guennebaud
b08c26aefa merge 2010-07-15 20:41:33 +02:00
Gael Guennebaud
84fdbded4d add support for strictly triangular matrix in trmm though it is not really useful 2010-07-15 20:39:20 +02:00
Gael Guennebaud
bfbe61454e merge 2010-07-15 09:54:31 +02:00
Gael Guennebaud
cf9edd9958 fix compilation for non trivial types 2010-07-14 23:31:38 +02:00
Gael Guennebaud
90d6fc0e28 fix ei_aligned_delete for null pointers and non trivial dtors 2010-07-14 22:49:34 +02:00
Christoph Hertzberg
6ba5d2c90c Implemented SSE optimized double-precision Quaternion multiplication 2010-07-12 23:30:47 +02:00
Gael Guennebaud
850c6d8a2b fix unused warning 2010-07-11 10:58:58 +02:00
Gael Guennebaud
931027f31b add a utilility to debug cpuid, and makes sure we get 0 if we query an unsupported cpuid function 2010-06-26 23:15:06 +02:00
Gael Guennebaud
ec07c4109d add default parameters for InnerStride/OuterStride to be
able to simply write OuterStride<> instead of OuterStride<Dynamic>
2010-06-25 14:48:16 +02:00
Gael Guennebaud
4056db01e7 use const Scalar& instead of Scalar for function arguments 2010-06-25 13:52:23 +02:00
Gael Guennebaud
686689e9cf comment all disabled MSVC warnings 2010-06-25 13:31:07 +02:00
Gael Guennebaud
75b6d2b2f8 fix very annoying warning (gcc 4.3): type qualifiers ignored on function return type 2010-06-25 13:20:34 +02:00
Gael Guennebaud
01553c419e fox blcok size computation for fixed size objects 2010-06-25 11:44:55 +02:00
Gael Guennebaud
e313826890 add mixed sparse-dense outer product 2010-06-25 11:36:38 +02:00
Gael Guennebaud
1927b4dff5 Fix use of nesting types in SparseTranspose and split the big SparseProduct.h file 2010-06-25 10:26:24 +02:00
Gael Guennebaud
28e64b0da3 email change 2010-06-24 23:21:58 +02:00
Gael Guennebaud
99e4afd43e makes SparseView a true sparse expression and fix use of nesting types 2010-06-24 22:48:48 +02:00
Gael Guennebaud
f3b875e434 fix infinite loop 2010-06-24 22:18:09 +02:00
Gael Guennebaud
566867428c - add a low level mechanism to provide preallocated memory to gemm
- ensure static allocation for the product of "large" fixed size matrix
2010-06-24 21:44:24 +02:00
Gael Guennebaud
e039edcb42 fix temporary creation rule 2010-06-24 19:21:25 +02:00
Gael Guennebaud
b22fc6cdc3 bug fix in gemv:
solution always use a temporary in dst.innerStride != 1
even though this is not needed when packet_size == 1....
2010-06-24 17:51:25 +02:00
Gael Guennebaud
6be06745df block householder : minor optimization 2010-06-24 17:48:38 +02:00
Gael Guennebaud
905beb0953 fix symm 2010-06-24 16:42:43 +02:00
Gael Guennebaud
af38bccd3d fix syrk 2010-06-24 16:26:27 +02:00
Gael Guennebaud
19f2f53e2c fix compilation when default to row major 2010-06-24 15:13:41 +02:00
Gael Guennebaud
d44fce501b fix computation of blocking sizes for small triangular matrices 2010-06-24 11:50:28 +02:00
Hauke Heibel
0068d3ccf6 Added version testing for MSVC. 2010-06-24 10:05:24 +02:00
Hauke Heibel
22a6cb2dc0 Fix compilation when the memory layout is RowMajor. 2010-06-24 09:56:59 +02:00
Hauke Heibel
83f1b747e7 Fixed MSVC cpuid. 2010-06-24 09:55:53 +02:00
Gael Guennebaud
0a42f8c876 fix compilation when EIGEN_CPUD is not defined 2010-06-24 09:45:17 +02:00
Gael Guennebaud
8beb60bf63 fix EIGEN_CPUID for i386 & PIC, still remains to fix the MSVC version 2010-06-24 09:29:43 +02:00
Gael Guennebaud
546587c7d3 default to Intel's API by default 2010-06-23 17:14:06 +02:00
Gael Guennebaud
e1a6bad087 fix cache queries for non core2 CPU ;) 2010-06-23 16:34:51 +02:00
Gael Guennebaud
b4fe53f561 * makes all product use the new API to set the blocking sizes
* fix an issue preventing multithreading (now Dynamic = -1 ...)
2010-06-22 16:08:35 +02:00
Gael Guennebaud
fd9a9fa0ae slightly optimize computeProductBlockingSizes by explicitely precomputing what is known at compile time 2010-06-22 11:10:38 +02:00
Hauke Heibel
d132b5b061 Correct the options computation for RowMajor matrices. 2010-06-22 09:30:08 +02:00
Gael Guennebaud
98686ab86c fix in case we don't know how to query the L1/L2 cache sizes 2010-06-21 23:44:20 +02:00
Gael Guennebaud
0212eec23f simplify and optimize block sizes computation for matrix products. They
are now automatically computed from the L1 and L2 cache sizes which are
themselves automatically determined at runtime.
2010-06-21 23:28:50 +02:00
Gael Guennebaud
4cd38b333c make bench_gemm print out the queried cache sizes 2010-06-21 12:07:05 +02:00
Gael Guennebaud
e54635da11 add functions to query the L1 and L2/L3 cache sizes 2010-06-21 11:59:37 +02:00
Hauke Heibel
dc6ad5e25b More Index related stuff. 2010-06-21 11:36:00 +02:00
Gael Guennebaud
52165ba55a compilation fix 2010-06-20 22:27:35 +02:00
Hauke Heibel
f34eaa2628 Next try - more Index fixes. 2010-06-20 21:44:25 +02:00
Hauke Heibel
e402d34407 More Index realted warnings. 2010-06-20 15:52:34 +02:00
Gael Guennebaud
e3853353fb fix array_comp *= array_real 2010-06-20 00:35:33 +02:00
Gael Guennebaud
7fd8418b19 finish to merge Array into Core:
- mv Array/* into Core/
- merge Functors.h files, and move Norms.h into Dot.h
2010-06-19 23:36:38 +02:00
Gael Guennebaud
575ac5409c add missing support for std::pow(array,scalar) 2010-06-19 23:17:07 +02:00
Gael Guennebaud
eba418a458 remove reference to the dead Array module 2010-06-19 23:00:22 +02:00
Gael Guennebaud
f85a1cf5df optimize SparseMatrix iterator 2010-06-18 16:47:41 +02:00
Benoit Jacob
f0a6d56f07 fix linking errors with multiply defined functions 2010-06-18 09:01:34 -04:00
Gael Guennebaud
ece48a6450 split the Sparse module into multiple ones, and move non stable parts to unsupported/
(see the ML for details)
2010-06-18 11:28:30 +02:00
Gael Guennebaud
22d07ec2e3 Add blocking inside HouseholderQR based on code from Vincent Lejeune.
This is all internal stuff for now.
2010-06-17 18:30:47 +02:00
Gael Guennebaud
bc99c82d17 add an inplace householder QR dec function in preparation for a block version 2010-06-17 17:27:52 +02:00
Gael Guennebaud
3acd007f9d more compilation fixes for ICC 2010-06-17 17:25:18 +02:00
Gael Guennebaud
9637574e2b compilation fix for ICC 2010-06-17 16:56:42 +02:00
Gael Guennebaud
ab6a044d0d eigenvalues: documentation fixes 2010-06-17 14:34:10 +02:00
Gael Guennebaud
7fdf218951 makes trmv works with the triangular matrix on the right 2010-06-17 10:17:22 +02:00
Gael Guennebaud
43086d12d2 implement other variants 2010-06-17 10:11:38 +02:00
Gael Guennebaud
db160f2e0b warn users other variants are not implemented yet... (will do it very soon) 2010-06-16 23:55:08 +02:00
Gael Guennebaud
74006a9fe9 * decouple the generalized selfadjoint eigenvalue problem to the standard one
* uses named values instead of bools
2010-06-16 23:48:16 +02:00
Gael Guennebaud
197ce96c00 typo 2010-06-16 17:23:39 +02:00
Benoit Jacob
42c62c8876 fix #126, part 2/2: the checkTransposeAliasing() assertion was always compiled, for all expressions,
even for expressions that are known at compile time to not need it because they don't involve any transposing.
This gave 'controlling condition is constant' warnings on ICC, and potentially worse, this could generate a lot
of useless code per-expression if the compiler failed to realize that the condition was constant.
2010-06-16 09:23:32 -04:00
Benoit Jacob
2d1ae6fa08 fix #126, part 1/2: fix the return type of coeff() on direcaccess xprs: was amounting to
const (const Scalar&)

which really doesn't make sense.
2010-06-16 09:21:14 -04:00
Benoit Jacob
d0d62e4437 fix #139, exactly the same issue as #138, this time in Assign.h: const Index is not a compile-time constant, must use enum. 2010-06-16 07:37:52 -04:00
Benoit Jacob
404aa963d9 fix #138: const bool is (rightly) not considered a compile-time constant by ICC, use enum. 2010-06-16 07:32:44 -04:00
Gael Guennebaud
9726824f7c improve trmm unit test and fix several bugs in trmm 2010-06-15 23:38:21 +02:00
Gael Guennebaud
2e792d1f42 * make the triangular matrix * matrix product works with trapezoidal matrices
* extend the trmm unit test for unit diagonal
2010-06-15 22:00:34 +02:00
Benoit Jacob
134ca4acb3 packet math functions:
- take const Packet& args like the other packet funcs
 - SSE specializations: make them be actual template specializations
2010-06-15 08:29:21 -04:00
Hauke Heibel
99d952466f This scalar needs to be passed by ref to preserve its alignment. 2010-06-15 10:26:12 +02:00
Hauke Heibel
0afb1e80c7 Really fix #123. 2010-06-14 23:02:49 +02:00
Gael Guennebaud
3cabd0c417 fix issue 135 (SparseBlock::operator= for SparseMatrix) 2010-06-14 16:26:33 +02:00
Benoit Jacob
2d65f5d3cd remove extra semicolon; 2010-06-14 09:06:27 -04:00
Benoit Jacob
d788627b54 rename:
EIGEN_SIZE_MIN    ---> EIGEN_SIZE_MIN_PREFER_DYNAMIC
  EIGEN_MAXSIZE_MIN ---> EIGEN_SIZE_MIN_PREFER_FIXED
and make sure to use the latter in products xprs to determine the inner size.
2010-06-14 09:05:08 -04:00
Hauke Heibel
a54772250f Fixes bug #123. 2010-06-14 14:33:10 +02:00
Daniel Lowengrub
8673f68fd8 merged 2010-06-14 14:17:19 +03:00
Jitse Niesen
c2f6cbab8d Fix compilation of docs after changes in Eigenvalues module.
Clean-up after revision 469382407c
.
2010-06-14 10:16:01 +01:00
Daniel Lowengrub
af5117dbd5 fixed a bug in the DenseBase InnerIterator ctor. 2010-06-14 02:18:36 +03:00
Daniel Lowengrub
dcd39a96e1 added the SparseView class. 2010-06-14 02:16:46 +03:00
Gael Guennebaud
f159613210 compilation fix 2010-06-13 22:53:53 +02:00
Hauke Heibel
058f7d3486 Fixed another enum related warning. 2010-06-12 15:21:11 +02:00
Hauke Heibel
340ac9ea9d Fixed warnings regarding enums. 2010-06-12 13:24:02 +02:00
Gael Guennebaud
03331552a9 add a info() function in LLT to report on succes/faillure 2010-06-12 10:12:22 +02:00
Gael Guennebaud
a25749ade9 add missing overload of operator= in SparseVector 2010-06-12 01:01:12 +02:00
Benoit Jacob
f5b1b6b351 undo 314bfa1375
, the right fix was made as part of the Dynamic -> -1 change, the bug was that in Map, the InnerStrideAtCompileTime could be 0, which doesn't make sense. The 0 value in Stride should not have been forwarded as-is.
2010-06-11 08:38:30 -04:00
Benoit Jacob
d72d538747 merge my Dynamic -> -1 change 2010-06-11 08:04:06 -04:00
Benoit Jacob
bdd7c6c88a change the value of Dynamic to -1, since the index type is now configurable.
remove EIGEN_ENUM_MIN/MAX, implement new macros instead
2010-06-11 07:56:50 -04:00
Gael Guennebaud
5b192930b6 add runtime API to control multithreading 2010-06-10 23:30:15 +02:00
Gael Guennebaud
842b54fe80 make the cache size mechanism future proof by adding level 2 parameters 2010-06-10 22:11:31 +02:00
Gael Guennebaud
986f65c402 merge 2010-06-10 16:44:24 +02:00
Gael Guennebaud
469382407c * Make HouseholderSequence::evalTo works in place
* Clean a bit the Triadiagonalization making sure it the inplace
  function really works inplace ;), and that only the lower
   triangular part of the matrix is referenced.
* Remove the Tridiagonalization member object of SelfAdjointEigenSolver
  exploiting the in place capability of HouseholdeSequence.
* Update unit test to check SelfAdjointEigenSolver only consider
  the lower triangular part.
2010-06-10 16:39:46 +02:00
Gael Guennebaud
dad19c4173 compilation fix for gcc 4.2 2010-06-10 10:55:49 +02:00
Gael Guennebaud
f8683c409f generalized eigendecomposition doc 2010-06-10 09:44:52 +02:00
Gael Guennebaud
41e5625f96 clean general symm eigensolver 2010-06-10 09:34:49 +02:00
Hauke Heibel
3f388282ae Fixes geo_transformations_3 unit test. 2010-06-10 00:23:11 +02:00
Gael Guennebaud
8692ccc5fb Fix generalized symm eigensolver (I don't know why the eigenvectors were normalized) 2010-06-10 00:04:33 +02:00
Hauke Heibel
bcf738811e Added missing return statement. 2010-06-10 00:02:10 +02:00
Hauke Heibel
56e585efcc Fixed language issue. 2010-06-09 17:20:31 +02:00
Hauke Heibel
2b7b549e9e Fix #131. 2010-06-09 17:16:05 +02:00
Gael Guennebaud
e242ac9345 fix LDLT, now it really only uses a given triangular part! 2010-06-09 14:01:06 +02:00
Gael Guennebaud
50e43bc75a * add Transpositions to PermutationMatrix conversion
* make PartialPivLu uses the  Transpositions class
2010-06-08 22:23:11 +02:00
Trevor Irons
684656d41c added inline to setL1Cache functions to avoid shared object compile error 2010-06-08 10:56:50 -06:00
Hauke Heibel
fb3fcd0919 Disabled warning caused by declspec(align()). 2010-06-08 20:21:55 +02:00
Hauke Heibel
4c5778d29d Made the supression of unused variables portable.
EIGEN_UNUSED is not supported on non GCC systems.
2010-06-08 15:52:00 +02:00
Gael Guennebaud
f3a568c81d remove ei_ prefix of public global functions, and s/cpu/l1 2010-06-07 19:05:30 +02:00
Gael Guennebaud
727376b5f4 compilation fix (std::sqrt(int) does not exist) 2010-06-07 18:55:39 +02:00
Gael Guennebaud
88cd6885be Add a proof concept API to configure the blocking parameters at runtime.
After validation of the final API I'll update the other products to use it.
2010-06-07 16:35:25 +02:00
Gael Guennebaud
7726cc8a29 clean old stuff used to support precompilation inside a binary lib 2010-06-07 14:47:20 +02:00
Gael Guennebaud
bfeba41174 Add a Transpositions class to ease the representation and
manipulation of permutations as a sequence of transpositions.
Make LDLT use it.
2010-06-04 23:17:57 +02:00
Jitse Niesen
9178e2bd54 Add info() method which can be queried to check whether iteration converged. 2010-06-03 22:59:57 +01:00
Jitse Niesen
ed73a195e0 Refactor compute() by splitting off two smaller private methods. 2010-06-03 22:29:11 +01:00
Gael Guennebaud
e64460d5d0 LDLT: make it honors the Lower/Upper directive and make it works inplace 2010-06-03 22:22:14 +02:00
Gael Guennebaud
4159db979d make LDLT uses only the lower triangular part 2010-06-03 21:33:47 +02:00
Gael Guennebaud
d92de9574a fix sparse LDLT with complexes 2010-06-03 11:56:08 +02:00
Gael Guennebaud
8350ab9fb8 * remove ei_index, and let ei_traits propagate the index types
* add an Index type template parapeter to sparse objects
2010-06-03 08:41:11 +02:00
Hauke Heibel
e40852d282 Fixes #104. 2010-06-02 19:17:41 +02:00
Jitse Niesen
38d8352b7b Add field m_maxIterations; break loop when this limit is exceeded. 2010-06-02 17:31:02 +01:00
Gael Guennebaud
9ff0d67156 fix typos (oops) 2010-06-02 17:56:35 +02:00
Gael Guennebaud
8710bd23e7 clean the ambiguity with insertBack and add a insertBackByOuterInner function 2010-06-02 13:32:13 +02:00
Gael Guennebaud
143e6ab9d0 improve aliasing detection for inverse and add unit test 2010-06-02 10:12:13 +02:00
Gael Guennebaud
4ebb80490a implicit conversion to scalar for inner product 2010-06-02 09:45:57 +02:00
Gael Guennebaud
314bfa1375 fix issue #128 : inner stride can also be 0 in which case it means 1... 2010-06-01 22:51:47 +02:00
Jitse Niesen
ab2b33e802 Add cast to aliasing check.
Otherwise, one of the geo tests fails to compile. Now there are some compiler
warnings about aliasing and type-punned pointers that I don't understand.
2010-06-01 17:45:58 +01:00
Jitse Niesen
e3e2380548 Make all compute() methods return a reference to *this. 2010-06-01 17:40:51 +01:00
Trevor Irons
4c6d182c42 Addressess small compile error with OpenMP 2010-06-01 07:09:40 -06:00
Benoit Jacob
e54faba198 merge the backing-out of the stupid RetByVal change, and implement a simple
aliasing check in inverse, that catches simple cases like x = x.inverse()
2010-06-01 09:17:50 -04:00
Benoit Jacob
3e95609cd4 Backed out changeset 641d968a9a 2010-06-01 09:01:39 -04:00
Benoit Jacob
6ce22a61b3 oops, remove extra 'typename' 2010-05-30 16:41:16 -04:00
Benoit Jacob
aaaade4b3d the Index types change.
As discussed on the list (too long to explain here).
2010-05-30 16:00:58 -04:00
Benoit Jacob
641d968a9a * Make ReturnByValue have the EvalBeforeAssigningBit and explicitly
enforce this mechanism (otherwise ReturnByValue bypasses it).
 (use .noalias() to get the old behavior.)
* Remove a hack in Inverse, futile optimization for 2x2 expressions.
2010-05-30 13:43:08 -04:00
Anton Gladky
09a1b7f7e1 Fixes the problem, described here:
http://listengine.tuxfamily.org/lists.tuxfamily.org/eigen/2010/05/msg00154.html
2010-05-28 10:18:37 +02:00
Gael Guennebaud
39c568445c simplify a using statement 2010-06-01 13:59:21 +02:00
Gael Guennebaud
e2097c55f8 fix issue #125 - *norm() return RealScalar and not Scalar 2010-05-31 22:46:18 +02:00
Jitse Niesen
8dc947821b Allow user to compute only the eigenvalues and not the eigenvectors. 2010-05-31 18:17:47 +01:00
Jitse Niesen
609941380a Change skipU argument to computeU - this reverses the meaning.
See "skipXxx / computeXxx parameters in Eigenvalues module" on mailing list.
2010-05-31 16:48:41 +01:00
Jitse Niesen
c21390a611 Define non-const operator() in Reverse; enable test for this.
Introduction of DenseCoeffBase (revision bfdc1c4973
) meant that non-const
operator() is only defined if DirectAccess is set. This caused the line
"m.reverse()(1,0) = 4;" in MatrixBase_reverse.cpp to fail at compile-time.
Not sure this is correct solution; perhaps we should disallow this? Or make
Reverse DirectAccess with a negative stride - would that break something?
2010-05-31 14:42:04 +01:00
Jitse Niesen
db8631b66a Guard with assert against using decomposition objects uninitialized. 2010-05-30 21:49:35 +01:00
Jens Mueller
48b8ace517 Fix SparseMatrix/SparseVector::sum()
SparseMatrix/SparseVector::sum() uses Map to compute the sum. But Map expects a
pointer.
2010-05-27 17:02:24 +02:00
Manoj Rajagopalan
a240f83216 Fix to ProductBase::evalTo() in order to get matrix multiplication working for numeric
types that don't have implicit conversion from int
2010-05-26 13:00:55 -04:00
Thomas Capricelli
4a2d6ece2e fix readcost for complex types 2010-05-26 02:33:28 +02:00
Jitse Niesen
e7dc772554 Respect MaxRowsAtCompileTime in HouseholderSequence::evalTo().
This fixes the failing test nomalloc_4.
Also remove a print inserted for debugging in schur_real test.
2010-05-25 12:40:42 +01:00
Jitse Niesen
e7d809d434 Update eigenvalues() and operatorNorm() methods in MatrixBase.
* use SelfAdjointView instead of Eigen2's SelfAdjoint flag.
* add tests and documentation.
* allow eigenvalues() for non-selfadjoint matrices.
* they no longer depend only on SelfAdjointEigenSolver, so move them to
  a separate file
2010-05-24 17:43:50 +01:00
Jitse Niesen
8a3f552e39 Return matrices by constant reference where possible.
This changes the return type of:
* eigenvectors() and eigenvalues() in ComplexEigenSolver
* eigenvalues() in EigenSolver
* eigenvectors() and eigenvalues() in SelfAdjointEigenSolver
2010-05-24 17:43:27 +01:00
Jitse Niesen
7a43a4408b Replace local variables by member variables in compute() methods.
This is to avoid dynamic memory allocations in the compute() methods of
ComplexEigenSolver, EigenSolver, and SelfAdjointEigenSolver where possible.
As a result, Tridiagonalization::decomposeInPlace() is no longer used.
Biggest remaining issue is the allocation in HouseholderSequence::evalTo().
2010-05-24 17:43:06 +01:00
Jitse Niesen
68820fd4e8 Use ReturnByValue mechanism for HessenbergDecomposition::matrixH(). 2010-05-24 17:36:13 +01:00
Jitse Niesen
eb3ca68684 Change return type of matrixH() method to HouseholderSequence.
This method is a member of Tridiagonalization and HessenbergDecomposition.
2010-05-24 17:35:54 +01:00
Thomas Capricelli
76dd0e5314 fix some warnings 2010-05-22 19:17:04 +02:00
Thomas Capricelli
79e9e3f24c erm.. use EIGEN_ONLY_USED_FOR_DEBUG() as it already exists. 2010-05-21 18:13:59 +02:00
Thomas Capricelli
aadea5ae56 fix a warning 2010-05-21 02:13:16 +02:00
Thomas Capricelli
c1d005e976 introduce a new macro EIGEN_ARG_UNUSED(arg) and use it in some places to
silent some warnings (from clang)
2010-05-21 02:05:25 +02:00
Thomas Capricelli
4daba0750e fix some warnings with clang 2010-05-21 01:46:17 +02:00
Thomas Capricelli
2ab446695b fix some compilation issues with clang (and hopefully bring eigen more
close to std ?)
2010-05-21 01:39:33 +02:00
Thomas Capricelli
17d080edf2 clang shocks on this.
According to people on #llvm, this is indeed not allowed by c++ standard:

[01:33] <coppro> what good would mutable do on a reference?
[01:33] <dgregor> orzel: gcc is wrong to allow "mutable" on references
[01:33] <coppro> just remove mutable; it won't damage the code at all
[01:34] <dgregor> "The mutable specifier can be applied only to names of
class data members (9.2) and cannot be applied to
[01:34] <dgregor> names declared const or static, and cannot be applied to
reference members."
[01:34] <coppro> constness is not passed from an object to the referents of
its members anyways
2010-05-21 01:37:48 +02:00
Thomas Capricelli
b9bcd93ddc fix a compilation pb with clang (it's actually surprising gcc did not complain) 2010-05-20 03:53:09 +02:00
Hauke Heibel
39edf8e2bf I was not really aware of the implications on fixed size types when the strong inlining is not present. We really need it on MSVC! 2010-05-19 18:57:38 +02:00
Gael Guennebaud
05910b7996 merge 2010-05-19 16:51:07 +02:00
Gael Guennebaud
188171b991 merge 2010-05-19 16:49:56 +02:00
Gael Guennebaud
64cbd45266 minor chnages in Taucs and Cholmod backends 2010-05-19 16:49:05 +02:00
Hauke Heibel
6c18246a80 DenseBase is implemented as a class, not a struct. 2010-05-19 16:44:28 +02:00
Gael Guennebaud
2b6153d3ed simplify inner product 2010-05-19 16:37:17 +02:00
Gael Guennebaud
bf09fe55ed fix selfadjoint to dense 2010-05-19 16:35:34 +02:00
Hauke Heibel
f0283c13e8 Applied tiny Qt related fixes. 2010-05-19 16:32:47 +02:00
Benoit Jacob
1c04484a01 bug fix, since the last storage order changes, this InnerSize calculation was wrong 2010-05-18 08:24:06 -04:00
Benoit Jacob
5250c4395c compilation fix: const T ---> typename ei_makeconst<T>::type
(error was appearing when building tests with alignmnet disabled)

What is this stuff still doing in MatrixBase.h? Shouldn't it move to DenseBase.h? How are Array blocks compiling?
2010-05-18 08:19:23 -04:00
Gael Guennebaud
cf6d3162cc cache outer size in Block => x1.5 speed up for a.block() = b.block() 2010-05-17 16:54:17 +02:00
Gael Guennebaud
0f3bcf853f fix mixing types in inner product 2010-05-14 08:55:56 +02:00
Gael Guennebaud
42a1c983c1 fix bug in sliced redux 2010-05-13 23:22:18 +02:00
Gael Guennebaud
c55761e015 make inner product return a 1x1 matrix 2010-05-12 18:11:05 +02:00
Benoit Jacob
82d898083f fix compilation error thanks to test case by Trevor Irons, and expand unit test 2010-05-09 13:20:46 -04:00
Benoit Jacob
6624b93d67 add important comment and move stride helpers to DenseCoeffsBase.h 2010-05-09 09:41:54 -04:00
Benoit Jacob
0928c40f68 rename Coeffs.h -> DenseCoeffsBase.h 2010-05-08 16:02:13 -04:00
Benoit Jacob
7cbb84b046 move the strides API to DenseCoeffsBase,
and various fixes to make stuff compile after my big changes
2010-05-08 16:00:05 -04:00
Benoit Jacob
0e2a480466 use CoeffReturnType 2010-05-08 15:58:27 -04:00
Benoit Jacob
eda2795f51 use modern ei_first_aligned function, dont try compiling coeffRef() on rvalue expressions. 2010-05-08 15:57:56 -04:00
Benoit Jacob
65bd1652b1 let Diagonal have the DirectAccessBit, using an inner stride 2010-05-08 14:19:04 -04:00
Benoit Jacob
bfdc1c4973 introduce DenseCoeffsBase: this is where the coeff / coeffRef / etc... methods go.
Rationale: coeffRef() methods should only exist when we have DirectAccess. So a natural thing to do would have been to use enable_if, but since there are many methods it made more sense to do the "enable_if" for the whole group by introducing a new class. And that also that the benefit of not changing method prototypes.
2010-05-08 13:45:31 -04:00
Benoit Jacob
d03779f75f fix CwiseUnaryView: it shouldn't have the AlignedBit, but it should have the DirectAccessBit and corresponding strides API. 2010-05-08 13:42:41 -04:00
Jitse Niesen
2d74f1ac92 Document SelfAdjointEigenSolver and add examples. 2010-05-04 17:11:32 +01:00
Hauke Heibel
6ea6276f20 Quiet MSVC. 2010-05-04 14:06:41 +02:00
Jitse Niesen
38021b08c1 Merge. 2010-05-02 21:51:27 +01:00
Jitse Niesen
afed0ef90d Document Tridiagonalization class, remove unused types. 2010-05-01 17:52:16 +01:00
Benoit Jacob
8f249e8b54 fix compilation: const (T&) != const T& , use ei_makeconst 2010-04-30 14:28:35 -04:00
Benoit Jacob
cf4f90ccea fix #116 and remove debug cout's 2010-04-30 11:58:17 -04:00
Benoit Jacob
38facbd55b kill the LeastSquares module.
I didn't even put it in Eigen2Support because it requires several other modules. But if you want we can always create a new module, Eigen2Support_LeastSquares...
2010-04-29 10:40:52 -04:00
Benoit Jacob
5d63d2cc4b * kill the retval typedefs, instead introduce ei_xxx_retval which does the job automatically in 99% cases and can be specialized
* add real/imag/abs2 global functions for Array
* document ei_global_math_functions_filtering_base
* improve unit tests
2010-04-28 22:42:34 -04:00
Benoit Jacob
e277586958 Complete rework of global math functions and NumTraits.
* Now completely generic so all standard integer types (like char...) are supported.
** add unit test for that (integer_types).
* NumTraits does no longer inherit numeric_limits
* All math functions are now templated
* Better guard (static asserts) against using certain math functions on integer types.
2010-04-28 18:51:38 -04:00
Jitse Niesen
d9c1224133 Simplify computation of eigenvectors in EigenSolver.
* reduce scope of declarations
* use that low = 0 and high = size-1
* rename some variables
* rename hqr2_step2() to computeEigenvectors()
* exploit that ei_isMuchSmallerThan takes absolute value of arguments
2010-04-26 17:43:16 +01:00
Jitse Niesen
024995dbca Use topRows() and rightCols() in ComplexSchur and RealSchur. 2010-04-26 16:59:18 +01:00
Hauke Heibel
bf71b466e9 Removed ambiguity between Map and Matrix Options template parameter. 2010-04-26 16:59:04 +02:00
Hauke Heibel
18c70b12d7 Fixed a warning. 2010-04-26 13:31:16 +02:00
Benoit Jacob
ce09b4ddfc compile 2010-04-25 17:10:28 -04:00
Konstantinos Margaritis
9337f371d2 (proper commit this time)
replaced _mm_prefetch in GeneralBlockPanelKernel.h, with ei_prefetch() inline function.
Implemented NEON and AltiVec versions, copied SSE version over from GeneralBlockPanelKernel.h.
Also in GCC case (or rather !_MSC_VER) it's implemented using __builtin_prefetch().
NEON managed to give a small but welcome boost, 0.88GFLOPS -> 0.91GFLOPS.
2010-04-24 00:58:44 +03:00
Konstantinos Margaritis
5acf46bd12 Backed out changeset 6972c140f7 2010-04-24 00:57:10 +03:00
oem
6972c140f7 replaced _mm_prefetch in GeneralBlockPanelKernel.h, with ei_prefetch() inline function.
Implemented NEON and AltiVec versions, copied SSE version over from GeneralBlockPanelKernel.h.
Also in GCC case (or rather !_MSC_VER) it's implemented using __builtin_prefetch().
NEON managed to give a small but welcome boost, 0.88GFLOPS -> 0.91GFLOPS.
2010-04-24 00:44:14 +03:00
Benoit Jacob
e3e34b5920 remove MakeBase, use ei_dense_xpr_base instead
(yes, it was only used in dense xprs anyway)
2010-04-23 12:16:30 -04:00
Benoit Jacob
a16ba80bfa * remove ei_block_direct_access_status
* remove HasDirectAccess / NoDirectAccess constants
2010-04-23 11:36:22 -04:00
Benoit Jacob
58e7297859 * remove class DenseDirectAccessBase
* remove member XprBase typedefs, use ei_dense_xpr_base
* remove member _HasDirectAccess typedefs, use ei_has_direct_access
2010-04-23 10:27:15 -04:00
Benoit Jacob
1dd27ce280 merge 2010-04-23 09:06:28 -04:00
Benoit Jacob
f22ade8ee4 restrict operator[] to vectors, not matrices. 2010-04-23 09:05:46 -04:00
Benoit Jacob
a4f9ca44ab add minor to Eigen2Support 2010-04-22 20:49:01 -04:00
Benoit Jacob
2362eadcdd remove Minor
adapt 3x3 and 4x4 (non-SSE) inverse paths
2010-04-22 20:40:31 -04:00
Benoit Jacob
abbe260905 remove USING_PART_OF_NAMESPACE_EIGEN, leaving it in Eigen2Support.
improve porting-Eigen2-to-3 docs
2010-04-22 18:27:13 -04:00
Benoit Jacob
ef789fe0d2 forgot to hg add... 2010-04-22 14:32:28 -04:00
Benoit Jacob
bc22f4da9d * fix Eigen2Support, was not including VectorBlock.h
* move the corners support stuff to a new Block.h there
* expand the unit test
2010-04-22 14:31:39 -04:00
Benoit Jacob
00c716d20e merge 2010-04-22 14:11:44 -04:00
Benoit Jacob
9962c59b56 * implement the corner() API change: new methods topLeftCorner() etc
* get rid of BlockReturnType: it was not needed, and code was not always using it consistently anyway
* add topRows(), leftCols(), bottomRows(), rightCols()
* add corners unit-test covering all of that
* adapt docs, expand "porting from eigen 2 to 3"
* adapt Eigen2Support
2010-04-22 14:11:18 -04:00
Hauke Heibel
27a4a748cb MSVC runs into problems when a forward declaration is using a different template type name than the actual declaration.
This fixes the recent issues we observed on MSVC systems.
2010-04-22 13:56:06 +02:00
Adolfo Rodriguez Tsouroukdissian
28dde19e40 - Added problem size constructor to decompositions that did not have one. It preallocates member data structures.
- Updated unit tests to check above constructor.
- In the compute() method of decompositions: Made temporary matrices/vectors class members to avoid heap allocations during compute() (when dynamic matrices are used, of course).

These  changes can speed up decomposition computation time when a solver instance is used to solve multiple same-sized problems. An added benefit is that the compute() method can now be invoked in contexts were heap allocations are forbidden, such as in real-time control loops.

CAVEAT: Not all of the decompositions in the Eigenvalues module have a heap-allocation-free compute() method. A future patch may address this issue, but some required API changes need to be incorporated first.
2010-04-21 17:15:57 +02:00
Benoit Jacob
faf8f7732d merge 2010-04-21 12:31:04 -04:00
Benoit Jacob
e33953b888 fix compilation in Sparse (error introduced yesterday) 2010-04-21 12:28:51 -04:00
Hauke Heibel
2db5387488 Fixed two bad errors on std::vector.
First, MSVC 2010 does not ship a 'fixed'/'adapted' STL.
Second, only under very rare cases we do not even need the aligned_allocator.
2010-04-21 18:21:46 +02:00
Benoit Jacob
4ba032c9ab fix grave bug introduced by me: the low-level matrix-vector product functions can't be fed strided vectors, only strided matrices. 2010-04-20 15:59:17 -04:00
Benoit Jacob
941a7e4ebd oos, remove eval() used for debugging 2010-04-19 13:31:29 -04:00
Benoit Jacob
40b2aaa8b1 merge 2010-04-18 22:15:20 -04:00
Benoit Jacob
504a31f643 renaming (MatrixType ---> whatever appropriate)
and documentation improvements
2010-04-18 22:14:55 -04:00
Thomas Capricelli
29a3aec483 erf() is really non standard, better dont pollute eigen with it. 2010-04-19 02:06:11 +02:00
Hauke Heibel
214d5a892d Added support for STL lists with aligned Eigen types. 2010-04-18 20:10:43 +02:00
Hauke Heibel
031932b4ec Disabled erf also for Cygwin where it is not supported and causes errors. 2010-04-18 20:08:56 +02:00
Hauke Heibel
7db0f242ef Disabled unsupported erf on MSVC machines. 2010-04-18 14:37:44 +02:00
Thomas Capricelli
f1deab0e5a introduce ei_erf() for various scalar type 2010-04-18 03:39:22 +02:00
Benoit Jacob
ba5b5f6a4b fix compilation 2010-04-17 11:29:25 -04:00
Hauke Heibel
cc33a56140 Added MSVC stack allocation support. 2010-04-17 16:08:17 +02:00
Benoit Jacob
797f63044a oops, forgot to add DenseDirectAccessBase 2010-04-16 14:46:55 -04:00
Benoit Jacob
d9ee28851e fix ei_blas_traits directaccess check: in the case of vectors, having a nontrivial inner stride is OK. 2010-04-16 14:12:53 -04:00
Benoit Jacob
0ab431d7b8 * merge with mainline
* adapt Eigenvalues module to the new rule that the RowMajorBit must have the proper value for vectors
* Fix RowMajorBit in ei_traits<ProductBase>
* Fix vectorizability logic in CoeffBasedProduct
2010-04-16 11:25:50 -04:00
Benoit Jacob
ff6a46105d * Refactoring of the class hierarchy: introduction of DenseDirectAccessBase, removal of extra _Base/_Options template parameters.
* Introduction of strides-at-compile-time so for example the optimized code really knows when it needs to evaluate to a temporary
* StorageKind / XprKind
* Quaternion::setFromTwoVectors: use JacobiSVD instead of SVD
* ComplexSchur: support the 1x1 case
2010-04-16 10:13:32 -04:00
Gael Guennebaud
ea1a2df370 taucs: make SupernodalMultifrontal the default mode 2010-04-15 12:42:17 +02:00
Gael Guennebaud
0b6b316f18 an attempt to fix compilation with MSVC 2010-04-15 12:36:28 +02:00
Gael Guennebaud
a2324d6265 fix sparse squared norm 2010-04-13 10:40:55 +02:00
Jitse Niesen
614fbe497d Merge. 2010-04-12 18:55:27 +01:00
Jitse Niesen
574ad9efbd Move computation of eigenvalues from RealSchur to EigenSolver. 2010-04-12 18:54:15 +01:00
Jitse Niesen
73d3a27667 RealSchur: Make sure zeros are really zero (cont'd); add default ctor, docs. 2010-04-12 18:14:32 +01:00
Gael Guennebaud
0b0366a53d cholmod: assume selfadjoint matrix by default since selfadjoint flag has been removed 2010-04-09 13:37:05 +02:00
Jitse Niesen
872df22ca4 RealSchur: Make sure zeros are really zero; simplify initFrancisQRStep(). 2010-04-09 11:23:17 +01:00
Jitse Niesen
7dea3a33a5 RealSchur: change parameter lists; minor rewrite of computeShift(). 2010-04-07 17:29:12 +01:00
Jitse Niesen
b6829e1d5b RealSchur: use makeHouseholder() to construct the transformation. 2010-04-07 10:27:27 +01:00