Commit Graph

2074 Commits

Author SHA1 Message Date
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
742bbdfa57 clang/llvm is now good enough. I can compile a project using those (one of
the binary segfaults though, and i think it's related..)
2010-05-21 02:03:43 +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
Cyrille Berger
8f076f6817 fix installation of global headers in case the src path contains 'src' 2010-05-08 17:55:55 -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
Carlos Becker
34b3cdb82c Added EIGEN_DONT_PARALLELIZE preprocessor directive 2010-04-26 17:08:54 +02: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
086d5f1ac6 Fixed indentation and removed debug code. 2010-04-18 20:16:39 +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
Jitse Niesen
cc57df9bea RealSchur: Rename l and n to il and iu. 2010-04-06 18:26:30 +01:00
Jitse Niesen
9fad1e392b RealSchur: split computation in smaller functions. 2010-04-06 17:45:46 +01:00
Jitse Niesen
7dc56b3dfb RealSchur: Use Householder module in Francis QR step. 2010-04-06 16:43:07 +01:00
Jitse Niesen
86df74c765 RealSchur: reduce scope of temporary variables in hqr2(). 2010-04-06 15:26:09 +01:00
Jitse Niesen
dad50338b8 RealSchur: Use PlanarRotation in "found two real eigenvalues" branch. 2010-04-06 15:12:21 +01:00
Jitse Niesen
d88d1cfa62 Merge. 2010-04-02 21:33:34 +01:00
Jitse Niesen
79e1ce6093 RealSchur and EigenSolver: some straightforward renames. 2010-04-02 21:05:32 +01:00
Jitse Niesen
a16a36ecf2 Add tests for real and complex Schur; extend test for Hessenberg.
Make a minor correction to the ComplexSchur class.
2010-04-02 14:32:20 +01:00
Hauke Heibel
9d6afdeb22 ei_psqrt fix for zero input 2010-04-01 15:10:52 +02:00
Jitse Niesen
3a14a13533 Split computation of real Schur form in EigenSolver to its own class.
This is done with the minimal amount of work, so the result is very rough.
2010-04-01 12:32:56 +01:00
Jitse Niesen
8cfa672fe0 Use HessenbergDecomposition in EigenSolver. 2010-03-31 21:50:18 +01:00
Jitse Niesen
1b3f7f2fee Extend documentation and add examples for EigenSolver class. 2010-03-31 11:59:11 +01:00
Benoit Jacob
338ec0390f let the cast functor use the new ei_cast() 2010-03-30 14:51:47 -04:00
Benoit Jacob
16e416b8d7 generalize the idea of the previous commit to all kinds of casts, see this forum thread:
http://forum.kde.org/viewtopic.php?f=74&t=86914
this  is important to allow users to support custom types that don't have the needed conversion operators.
2010-03-30 14:47:45 -04:00
Benoit Jacob
9e0d8697c7 add ei_cast_to_int, we are indeed somethings (e.g. in IO.h) casting scalars to int and the only way to allow users to extend that to their own scalar types that don't have int cast operators, was to allow them specialize ei_cast_to_int_impl. 2010-03-30 14:16:54 -04:00
Benoit Jacob
8f99ae5ea4 move the computation of the number of significant digits to a templated helper struct, that can be specialized to custom types if needed. Should address this request:
http://forum.kde.org/viewtopic.php?f=74&t=86914
2010-03-30 11:38:09 -04:00
Jitse Niesen
e6300efb5c Extend documentation for HessenbergDecomposition. 2010-03-28 17:33:56 +01:00
Thomas Capricelli
0a5c2d8a54 fix misc warnings, more importantly when NDEBUG is defined, assert() is a
nop.
2010-03-27 18:58:29 +01:00
Jitse Niesen
c68098b9be Clean up ComplexSchur::compute() . 2010-03-24 14:10:33 +00:00
Jitse Niesen
37e17938e9 Extend documentation of ComplexSchur and add examples. 2010-03-23 12:49:09 +00:00
Jitse Niesen
525d6b655f Merge. 2010-03-21 21:59:00 +00:00
Jitse Niesen
8e5d2b6fc4 Rename Complex in ComplexSchur and ComplexEigenSolver to ComplexScalar
for consistency with the RealScalar type; correct ComplexEigenSolver
docs to take non-diagonalizable matrices into account; refactor
ComplexEigenSolver::compute().
2010-03-21 21:57:34 +00:00
Benoit Jacob
1803db6e84 merge 2010-03-21 11:28:31 -04:00
Benoit Jacob
92da574ec2 * allow matrix dimensions to be 0 (also at compile time) and provide a specialization
of ei_matrix_array for size 0
* adapt many xprs to have the right storage order, now that it matters
* add static assert on expressions to check that vector xprs
  have the righ storage order
* adapt ei_plain_matrix_type_(column|row)_major
* implement assignment of selfadjointview to matrix
  (was before failing to compile) and add nestedExpression() methods
* expand product_symm test
* in ei_gemv_selector, use the PlainObject type instead of a custom Matrix<...> type
* fix VectorBlock and Block mistakes
2010-03-21 11:28:03 -04:00
Gael Guennebaud
8b093dd2df oops, fix symv (innerStride instead of outerStride) 2010-03-20 20:51:44 +01:00
Jitse Niesen
d91ffffc37 Allow ComplexEigenSolver and ComplexSchur to work with real matrices.
Add a test which covers this case.
2010-03-20 17:04:40 +00:00
Hauke Heibel
fbdf16d425 Added x()/y() and z() access functions to translations. 2010-03-19 20:11:40 +01:00
Jitse Niesen
d3e271c47e Extend documentation and add examples for ComplexEigenSolver. 2010-03-19 18:23:36 +00:00
Benoit Jacob
547269da35 fix the flags and matrix options, to always have the right RowMajor bit in the vector case 2010-03-19 02:12:23 -04:00
Benoit Jacob
9dba86df0b merge 2010-03-18 20:11:38 -04:00
Benoit Jacob
089bd89512 compile with gcc 4.5 2010-03-18 20:10:24 -04:00
Jitse Niesen
0ee10f7da4 Document member functions and types of ComplexEigenSolver. 2010-03-18 13:42:17 +00:00
Jitse Niesen
04a4e22c58 API change: ei_matrix_exponential(A) --> A.exp(), etc
As discussed on mailing list; see
http://listengine.tuxfamily.org/lists.tuxfamily.org/eigen/2010/02/msg00190.html
2010-03-16 17:26:55 +00:00
Gael Guennebaud
d536fef1bb fix and extend replicate optimization, and add the packet method though it is currently disabled 2010-03-15 10:39:00 +01:00
Hauke Heibel
d68b85744f Replaced strong with weak inlines in CwiseUnaryOp. 2010-03-14 13:01:10 +01:00
Hauke Heibel
6d08f71a2d Removed strong inlines which cannot always be inlined. 2010-03-14 12:09:29 +01:00
Hauke Heibel
0e5a232dae Ups - again a missing typename. 2010-03-14 11:58:44 +01:00
Hauke Heibel
fc20e6fd55 Try to avoid modulo operations in Replicate if possible. 2010-03-13 14:33:39 +01:00
Hauke Heibel
b9644f3323 Propagate fixed size dimensions if available (on MSVC it leads >2.5x speedup for some reductions). 2010-03-13 13:15:27 +01:00
Benoit Jacob
3e08c22028 attempt to fix #101 2010-03-11 12:41:46 -05:00
Hauke Heibel
2a82b162d7 Nest expression within MatrixWrapper by value. 2010-03-10 17:13:07 +01:00
Hauke Heibel
b20b393a4e Enable resizing of Arrays. 2010-03-10 17:12:45 +01:00
Hauke Heibel
dd9ff1b9a6 Fix MSVC warnings. 2010-03-09 09:04:21 +01:00
Benoit Jacob
74a7c5caee implement the idea that row-vectors have the RowMajorBit and col-vectors don't. 2010-03-09 00:16:07 -05:00
Adolfo Rodriguez Tsouroukdissian
5a36f4a8d1 Propagate all five matrix template parameters to members and temporaries of decomposition classes. One particular advantage of this is that decomposing matrices with max sizes known at compile time will not allocate.
NOTE: The ComplexEigenSolver class currently _does_ allocate (line 135 of Eigenvalues/ComplexEigenSolver.h), but the reason appears to be in the implementation of matrix-matrix products, and not in the decomposition itself.
The nomalloc unit test has been extended to verify that decompositions do not allocate when max sizes are specified. There are currently two workarounds to prevent the test from failing (see comments in test/nomalloc.cpp), both of which are related to matrix products that allocate on the stack.
2010-03-08 19:31:27 +01:00
Gael Guennebaud
898762529e update the product selection logic to use the Max* sizes 2010-03-08 22:55:58 +01:00
Gael Guennebaud
9a3b00c040 add missing cmake directives for arch/Default 2010-03-08 22:15:35 +01:00
Benoit Jacob
89343a38af * Fix #97 : Householder operations on 1x1 matrices
* Fix VectorBlock on 1x1 "vectors"
* remove useless makeTrivialHouseholder function
2010-03-08 12:37:04 -05:00
Benoit Jacob
4293a4d1af * let a = foo() work when a is a row-vector xpr and foo() returns a ReturnByValue col-vector
* remove a few useless resize() in evalTo() implementations
2010-03-08 10:34:59 -05:00
Hauke Heibel
9fe040ad29 Reintroduced the if-clause for MSVC ei_ploadu via _loadu_. 2010-03-07 14:05:26 +01:00
Gael Guennebaud
3130b7a722 bugcount--, this time trmm 2010-03-06 22:57:50 +01:00
Gael Guennebaud
1958b7eccc stride() => inner/outerStride() 2010-03-06 22:39:15 +01:00
Gael Guennebaud
4402034678 pff I introduced much too many bugs latey, count-- 2010-03-06 22:24:50 +01:00
Gael Guennebaud
61ce1de048 fix symm 2010-03-06 22:15:59 +01:00
Gael Guennebaud
a7d199bf9a fix trsolve 2010-03-06 21:37:14 +01:00
Gael Guennebaud
6f0b96dcf4 fix issue #100 (fix syrk) 2010-03-06 21:16:43 +01:00
Gael Guennebaud
271fc84e47 bugfix in gebp for 32bits x86 2010-03-06 20:52:20 +01:00
Benoit Jacob
c4f8afdf49 #undef minor at the right place 2010-03-06 14:44:57 -05:00
Benoit Jacob
7e2afe7e95 remove the __ARM_NEON__ check there since Konstantinos said he removed it but apparently didn't commit :) 2010-03-06 12:11:08 -05:00
Benoit Jacob
bf0a21a695 * disable static alignment on QCC
* remove obsolete #error
2010-03-06 09:28:58 -05:00
Benoit Jacob
2bd31d3fbc * include Macros.h much earlier: since it takes care of the alignment platform detection, it is needed before we do the vectorization stuff in Eigen/Core !!
* kill EIGEN_DONT_ALIGN_HEAP option (one should use EIGEN_DONT_ALIGN)
* rename EIGEN_DONT_ALIGN_STACK to EIGEN_DONT_ALIGN_STATICALLY. hope it's a better name.
2010-03-06 09:05:15 -05:00
Benoit Jacob
f03d95348d introduce EIGEN_DONT_ALIGN_STACK (disables alignment attributes) and EIGEN_DONT_ALIGN_HEAP (disables aligned malloc)...
you can still use EIGEN_DONT_ALIGN to do both at once.
2010-03-06 02:17:37 -05:00
Gael Guennebaud
afd7ee759b fix copy pasted comment 2010-03-05 21:35:11 +01:00
Konstantinos Margaritis
273b236f72 Altivec brought up to date. Most tests pass and performance is better than before too! 2010-03-05 22:28:49 +02:00
Gael Guennebaud
f2a246c225 add a small program to bench all combinations of small products 2010-03-05 17:16:19 +01:00
Gael Guennebaud
5f172cd01f add a FIXME 2010-03-05 10:45:29 +01:00
Gael Guennebaud
48d0595c29 * dynamically adjust the number of threads
* disbale parallelisation if we already are in a parallel session
2010-03-05 10:44:31 +01:00
Gael Guennebaud
62ac021606 fix openmp version for scalar types different than float 2010-03-05 10:16:25 +01:00
Gael Guennebaud
d13b877014 remove the 1D and 2D parallelizer, keep only the GEMM specialized one 2010-03-05 10:04:17 +01:00
Gael Guennebaud
24ef5fedcd minor cleaning 2010-03-05 09:57:04 +01:00
Gael Guennebaud
279ad44509 merge 2010-03-05 09:46:58 +01:00
Gael Guennebaud
620bd28480 enable posix_memalign for QNX 2010-03-05 09:44:21 +01:00
Gael Guennebaud
7e2683dc39 merge 2010-03-04 18:59:56 +01:00
Gael Guennebaud
0964810fba merge 2010-03-04 18:59:03 +01:00
Gael Guennebaud
ea8cad5151 make the number of registers easier to configure per architectures 2010-03-04 18:58:12 +01:00
Gael Guennebaud
cefd9b8888 merge with default branch 2010-03-04 18:47:52 +01:00
Hauke Heibel
1723068694 Moved x()/y()/z() and w() access functions to DenseBase; they are now available for Arrays as well. 2010-03-04 18:33:51 +01:00
Gael Guennebaud
8ed1ef4469 add a minor FIXME 2010-03-04 18:30:28 +01:00
Benoit Jacob
68d94d914e integer division is vectorizable on no SIMD platform, not just SSE. 2010-03-04 09:03:06 -05:00
Konstantinos Margaritis
710bc073a7 arm_neon.h is a standard header file, fixed 2010-03-03 12:15:34 -06:00
Benoit Jacob
6c89fd4df0 minor cleanup 2010-03-03 13:16:21 -05:00
Gael Guennebaud
7dd81aad74 factorize default performance related settings to a single file
included after the architecture specific files such that they
can be adapted by each platform.
2010-03-03 18:47:58 +01:00
Konstantinos Margaritis
112c550b4a Added initial NEON support, most tests pass however we had to use some hackish workarounds
as gcc on ARM (both CodeSourcery 4.4.1 used and experimental 4.5) fail to
ensure proper alignment with __attribute__((aligned(16))). This has to be
fixed upstream to remove the workarounds.
2010-03-03 11:25:41 -06:00
Benoit Jacob
45d19afb18 cleanup/simplification in computation of matrix flags 2010-03-03 09:58:43 -05:00
Benoit Jacob
7dbe806711 merge 2010-03-03 09:55:46 -05:00
Benoit Jacob
6a92168915 Backed out changeset 2f3d685e0c
This was implementing deep changes that after discussion on the mailing list seem to need further discussion/thinking.
2010-03-03 09:54:50 -05:00
Hauke Heibel
aa6570c3a3 Added a missing inline hints.
Removed a useless Nested temporary.
2010-03-03 15:24:58 +01:00
Gael Guennebaud
2f3d685e0c a matrix (or array) does not always have the LinearAccessBit!
=> fixes in outerStride and matrix flags
2010-03-02 15:31:39 +01:00
Gael Guennebaud
7fd6458fec selfadjoint: do not reference the imaginary part of the diagonal 2010-03-02 12:43:55 +01:00
Hauke Heibel
32823caa62 Adapted the comment and removed it from the public dox. 2010-03-03 07:52:19 +01:00
Gael Guennebaud
3295c1c3e6 product selector: the symmetric case 2010-03-02 23:18:13 +01:00
Hauke Heibel
afad108b5f Added a comment to prevent placing an EIGEN_STRONG_INLINE where it makes no sense. 2010-03-02 19:36:21 +01:00
Eamon Nerbonne
3efb3cc828 Changed product type selector to fix perf regression. 2010-03-02 12:08:49 +01:00
Gael Guennebaud
c7828ac45c add missing implementation of uniform scaling products 2010-03-02 17:38:40 +01:00
Hauke Heibel
3cc9e3f5bb Fixes a compilation issue for MSVC. 2010-03-01 19:56:24 +01:00
Gael Guennebaud
65eba35f98 rm useless omp shared directive 2010-03-01 13:34:44 +01:00
Gael Guennebaud
1710c07f63 remove Qt's atomic dependency, I don't know what I was doing wrong... 2010-03-01 13:09:47 +01:00
Gael Guennebaud
31aa17e4ef GEMM: move the first packing of A' before the packing of B' 2010-03-01 11:10:30 +01:00
Gael Guennebaud
aeff3ff391 make Aron's idea work using Qt's atomic implementation for the synchronisation 2010-03-01 10:57:32 +01:00
Benoit Jacob
f1f3c30ddc remove the hack to make the static assertion on types actually show up.
indeed, now that we use the meta selector for transposing as needed, the static asserts work very well.
2010-02-28 11:10:13 -05:00
Benoit Jacob
07023b94d8 forgot defined(...) 2010-02-28 10:11:28 -05:00
Benoit Jacob
9334ed4444 on 64-bit systems, glibc's malloc returns 16-byte aligned ptrs, and we now take advantage of that. 2010-02-28 10:10:53 -05:00
Benoit Jacob
a480e7e60f * fix ei_handmade_aligned_realloc (was calling realloc on wrong ptr)
* add missing std::  (at least for QNX compatibility)
* add big comments to "structure" the file
2010-02-28 09:10:41 -05:00
Hauke Heibel
ff8c2149c1 Added a generic reallocation implementation based on ei_aligned_malloc/_free.
Rewrote ei_handmade_aligned_realloc such that it is now using std::realloc.
Reorganized functions in Memory.h for better readability.
Add missing <cerrno> include to Core (it's now required in Memory.h).
2010-02-28 14:32:57 +01:00
Hauke Heibel
40bd69fbaa Hide some internal stuff from the docs. 2010-02-28 12:56:37 +01:00
Benoit Jacob
1d9c18a8f3 comment out cerr's 2010-02-28 00:53:06 -05:00
Benoit Jacob
27f5250258 Only include <iosfwd> unless either EIGEN_DEBUG_ASSIGN is defined or we're in eigen2 support mode 2010-02-27 19:04:22 -05:00
Benoit Jacob
e84f7e07e9 add ei_posix_memalign_realloc 2010-02-27 18:57:07 -05:00
Benoit Jacob
22fabb8940 add missing inline keyword, thanks to Eamon. 2010-02-27 17:51:48 -05:00
Hauke Heibel
6c9eb36222 Added support for realloc based conservative resizing. 2010-02-27 17:25:07 +01:00
Hauke Heibel
78b2c7e16e Fixed a typo. 2010-02-27 17:24:42 +01:00
Benoit Jacob
3f393490ad dot: handle the rowvector.dot(colvector) case where one needs to transpose. 2010-02-27 11:19:14 -05:00
Benoit Jacob
d9f6380499 Remove the dot product's separate implementation and use cwiseProduct.sum instead.
Also take special care to get nicely working static  assertions.
2010-02-27 10:03:27 -05:00
Benoit Jacob
2c9a91812e merge 2010-02-26 21:47:54 -05:00
Benoit Jacob
814e40c72a let redux use the new ByOuterInner accessors 2010-02-26 21:46:43 -05:00
Benoit Jacob
4927841cba Document Map and Stride, add examples. 2010-02-26 21:29:04 -05:00
Benoit Jacob
b1f666d007 Fix Map-with-Stride and cover it by new unit tests. 2010-02-26 20:12:51 -05:00
Gael Guennebaud
6924bf2e99 implement Aron's idea of interleaving the packing with the first computations 2010-02-26 15:58:22 +01:00
nerbonne
c72a5074e6 Fixed perf problems for vector subtraction: inlining wasn't always happening when necessary. 2010-02-26 15:46:43 +01:00
Benoit Jacob
32115bff1e * add VERIFY_IS_EQUAL, should compile faster and it's natural when no arithmetic is involved.
* rename 'submatrices' test to 'block'
* add block-inside-of-block tests
* remove old cruft
* split diagonal() tests into separate file
2010-02-26 09:03:13 -05:00
Gael Guennebaud
8d4a0e6753 fix compilation without openmp 2010-02-26 14:57:22 +01:00
Gael Guennebaud
3ac2b96a2f implement a smarter parallelization strategy for gemm avoiding multiple
paking of the same data
2010-02-26 12:32:00 +01:00
Jitse Niesen
d86f5339b2 ComplexSchur: fix bug introduced in my previous commit.
The value of c is actually used a few lines later.
2010-02-26 09:47:17 +00:00
Benoit Jacob
f56ac04c34 DenseBase::IsRowMajor now takes the special case of vectors into account. 2010-02-25 21:24:42 -05:00
Benoit Jacob
b1c6c215a4 merge 2010-02-25 21:07:30 -05:00
Benoit Jacob
769641bc58 * Implement the ByOuterInner accessors
* use them (big simplification in Assign.h)
* axe (Inner|Outer)StrideAtCompileTime that were just introduced
* ei_int_if_dynamic now asserts that the size is the expected one: adapt to that in Block.h
* add rowStride() / colStride() in DenseBase
* implement innerStride() / outerStride() everywhere needed
2010-02-25 21:01:52 -05:00
Jitse Niesen
90e4a605ef ComplexSchur: compute shift more stably, introduce exceptional shifts.
Both the new computation of  the eigenvalues of a 2x2 block and the
exceptional shifts are taken from EISPACK routine COMQR.
2010-02-25 22:33:38 +00:00
Gael Guennebaud
53bae6b3f8 update matrix product selection rules for 1xSmallxLarge and the transposed case 2010-02-25 21:59:25 +01:00
Gael Guennebaud
959a1b5d63 detect and implement inplace permutations 2010-02-25 16:30:58 +01:00
Gael Guennebaud
d9ca0c0d36 optimize inverse permutations 2010-02-25 15:31:15 +01:00
Benoit Jacob
77c922bf05 * move the 's': InstructionsSet ---> InstructionSets
* proper capitalization: SSE, AltiVec
2010-02-25 06:43:45 -05:00
Thomas Capricelli
50a5ac3c4b oops, fix typo 2010-02-25 05:31:22 +01:00
Thomas Capricelli
00bc535b66 provide a static method to describe which SIMD instructions are used 2010-02-24 21:52:08 +01:00
Thomas Capricelli
0f3d69b65e Provide "eigen" defines to decide which instruction set is used
(sse3, ssse3 and sse4), independantly from the compiler.
Only those defines should be used in other places, and the user can
rely on those to know which sets are used.
2010-02-24 21:43:30 +01:00
Gael Guennebaud
7c98c04412 add reconstructedMatrix() to LLT, and LUs
=> they show that some improvements have still to be done
   for permutations, tr*tr, trapezoidal matrices
2010-02-24 19:16:10 +01:00
Gael Guennebaud
f7aa9873ca * fix LDLT's default ctor use
* add a reconstructedMatrix() function to LDLT for debug purpose
2010-02-24 10:40:16 +01:00
Benoit Jacob
60325b8330 actually, this is not even meant to be a termination criterion. so the proper fix is this. 2010-02-23 16:10:26 -05:00
Benoit Jacob
3d066f4bc7 LDLT:
* fix bug thanks to Ben Goodrich: we were terminating at the wrong place, leaving some matrix coefficients with wrong values.
* don't use Higham's formula here: we're not trying to be rank-revealing.
2010-02-23 16:05:37 -05:00
Benoit Jacob
d92df336ad Further LU test improvements. I'm not aware of any test failures anymore, not even with huge numbers of repetitions.
Finally the createRandomMatrixOfRank() function is renamed to createRandomPIMatrixOfRank, where PI stands for 'partial isometry', that is, a matrix whose singular values are 0 or 1.
2010-02-23 15:40:24 -05:00
Gael Guennebaud
a1e1103328 add a 2D parallelizer 2010-02-23 21:40:15 +01:00
Gael Guennebaud
022e2f5ef4 fix typo 2010-02-23 18:24:15 +01:00
Benoit Jacob
7dc75380c1 * FullPivLU: replace "remaining==0" termination condition (from Golub) by a fuzzy compare
(fixes lu test failures when testing solve())
* LU test: set appropriate threshold and limit the number of times that a specially tricky test
  is run. (fixes lu test failures when testing rank()).
* Tests: rename createRandomMatrixOfRank to createRandomProjectionOfRank
2010-02-23 09:04:59 -05:00
Hauke Heibel
1fd8d7b96a Attempt to fix PGI compilation issue. 2010-02-23 11:35:51 +01:00
Gael Guennebaud
d2b0eadf52 fully adapt the gebp kernel and optimize it for CPU with only 8 registers
(transplanted from 2ed88ebbf1995be90b8d0c25ff10248c8f56d023)
2010-02-22 16:35:05 +01:00
Gael Guennebaud
51a4b929a1 implement an even lower level version of the gebp kernel for MSVC (it seems to be faster with gcc as well)
(transplanted from 9a5643551fe068497f84a81cd8986febf1918382)
2010-02-22 15:18:29 +01:00
Gael Guennebaud
eb905500b6 significant speedup in the matrix-matrix products 2010-02-23 13:06:49 +01:00
Gael Guennebaud
fc4a85ecd5 fully adapt the gebp kernel and optimize it for CPU with only 8 registers 2010-02-22 16:35:05 +01:00
Gael Guennebaud
e00f1fd125 implement an even lower level version of the gebp kernel for MSVC (it seems to be faster with gcc as well) 2010-02-22 15:18:29 +01:00
Gael Guennebaud
3e62fafce8 clean a bit the parallelizer 2010-02-22 11:08:37 +01:00
Gael Guennebaud
b20935be9b add initial openmp support for matrix-matrix products
=> x1.9 speedup on my core2 duo
2010-02-22 09:40:34 +01:00
Thomas Capricelli
1a70f3b48d fix compilation 2010-02-21 19:30:11 +01:00
Hauke Heibel
a901bed33a Added IsRowMajor enum to DenseBase. 2010-02-21 18:26:14 +01:00
Hauke Heibel
f079f52b58 merge 2010-02-21 15:25:28 +01:00
Hauke Heibel
f75e6773b0 Added ei_traits<Quaternion>::PlainObject. 2010-02-21 15:24:10 +01:00
Gael Guennebaud
608959aa6f compilation fix in ldlt() for non matrix types 2010-02-21 10:29:19 +01:00
Gael Guennebaud
71fecd2371 add missing return value 2010-02-20 18:19:34 +01:00
Hauke Heibel
abc8c01080 Renamed PlainMatrixType to PlainObject (Array != Matrix).
Renamed ReturnByValue::ReturnMatrixType ReturnByValue::ReturnType (again, Array != Matrix).
2010-02-20 15:53:57 +01:00
Hauke Heibel
f0c8dcf1e2 Renamed AnyMatrixBase to EigenBase. 2010-02-20 15:26:02 +01:00
Gael Guennebaud
4f8773c23a fix stupid enum values 2010-02-19 17:46:36 +01:00
Benoit Jacob
5491531a81 add Stride.h 2010-02-18 20:44:17 -05:00
Benoit Jacob
b73e22905d miserable half-working state, commiting to a fork just in case, just to perfect
my day, my hard disk would die.
Will write a more detailed commit message once it's working.
2010-02-18 20:42:38 -05:00
Gael Guennebaud
016943f870 avoid 2 redundant calls to resize 2010-02-15 11:31:36 +01:00
Gael Guennebaud
dcb395c6f5 explicitly disable the use of evalTo for dense object 2010-02-15 11:09:33 +01:00