Commit Graph

5161 Commits

Author SHA1 Message Date
Gael Guennebaud
626821b0e3 Add evaluator/assignment to TriangularView expressions 2013-12-02 14:06:17 +01:00
Gael Guennebaud
27ca9437a1 Fix usage of Dense versus DenseShape 2013-12-02 14:05:34 +01:00
Gael Guennebaud
d0261bd26c Fix swap in DenseBase 2013-11-30 10:42:23 +01:00
Gael Guennebaud
c15c65990f First step toward the generalization of evaluators to triangular, sparse and other fancyness.
Remove product_tag template parameter to Product.
2013-11-29 17:50:59 +01:00
Gael Guennebaud
fb6e32a62f Get rid of evalautor_impl 2013-11-29 16:45:47 +01:00
Gael Guennebaud
d331def6cc add definition of product_tag 2013-11-29 16:18:22 +01:00
Gael Guennebaud
5584275325 Remove HasEvalTo and all at once eval mode 2013-11-29 13:38:59 +01:00
Gael Guennebaud
cc6dd878ee Refactor dense product evaluators 2013-11-27 17:32:57 +01:00
Gael Guennebaud
fc6ecebc69 Simplify evaluator of EvalToTemp 2013-11-27 11:32:07 +01:00
Gael Guennebaud
230f5c3aa9 Evaluator: introduce the main Assignment class, add call_assignment to bypass NoAlias and AssumeAliasing, and some bits of cleaning 2013-11-25 15:20:31 +01:00
Gael Guennebaud
c550a0e634 extend Map unit test to check buffers allocated on the stack 2013-11-21 10:39:47 +01:00
Gael Guennebaud
28b2abdbea Fix FullPivHouseholderQR ctors for non squared fixed size matrix types 2013-11-19 12:53:46 +01:00
Gael Guennebaud
654eab3bd6 Add scaling in JacobiSVD to avoid overflows 2013-11-19 11:53:48 +01:00
Gael Guennebaud
5d1291a4de Document how to reproduce matlab's rot90 2013-11-19 11:51:16 +01:00
Gael Guennebaud
8b4dd78d57 Merged in chris-se/eigen/tensor-for-merge (pull request PR-39)
Tensor support for Eigen
2013-11-16 11:12:05 +01:00
Christian Seiler
f6bac196d5 C++11/Tensor: Fix copyright headers 2013-11-16 00:03:23 +01:00
Gael Guennebaud
46dd1bb1be Workaround fixing aliasing issue in x = SparseLU::solve(x) 2013-11-15 11:19:19 +01:00
Gael Guennebaud
6b471f205e fix overflow and ambiguity in SparseLU memory allocation 2013-11-15 10:59:19 +01:00
Christian Seiler
03a956925a CXX11/TensorSymmetry: add symmetry support for Tensor class
Add a symCoeff() method to the Tensor class template that allows the
user of the class to set multiple elements of a tensor at once if they
are connected by a symmetry operation with respect to the tensor's
indices (symmetry/antisymmetry/hermiticity/antihermiticity under
echange of two indices and combination thereof for different pairs of
indices).

A compile-time resolution of the required symmetry groups via meta
templates is also implemented. For small enough groups this is used to
unroll the loop that goes through all the elements of the Tensor that
are connected by this group. For larger groups or groups where the
symmetries are defined at run time, a standard run-time implementation
of the same algorithm is provided.

For example, the following code completely initializes all elements of
the totally antisymmetric tensor in three dimensions ('epsilon
tensor'):

SGroup<3, AntiSymmetry<0,1>, AntiSymmetry<1,2>> sym;
Eigen::Tensor<double, 3> epsilon(3,3,3);
epsilon.setZero();
epsilon.symCoeff(sym, 0, 1, 2) =  1;
2013-11-14 23:35:11 +01:00
Christian Seiler
f97b3cd024 CXX11/Tensor: add simple initial tensor implementation
This commit adds an initial implementation of a class template Tensor
that allows for the storage of objects with more than two indices.
Currently, only storing data and setting the object to zero for POD
data types are implemented.
2013-11-14 22:52:37 +01:00
Christian Seiler
5e28c41549 C++11: add template metaprogramming helpers
Create a new directory CXX11 under unsupported/Eigen that contains code
that requires C++11. In that directory, add a few generic templates
useful for any module relying on C++11. These templates may be included
with #include <[unsupported/]Eigen/CXX11/Core>. At the moment, this
will only provide templates in the Eigen::internal namespace.
2013-11-14 22:27:06 +01:00
Christoph Hertzberg
e59b38abef Implement boolean reductions for zero-sized objects 2013-11-13 16:47:02 +01:00
Gael Guennebaud
8f2d068e84 Use the specialization of Block<SparseMatrix> for const matrices too 2013-11-10 16:16:50 +01:00
Gael Guennebaud
5c2d1b4710 Add missing nonZeros() overload in Block<SparseMatrixBase<>> 2013-11-10 15:26:07 +01:00
Leszek Swirski
b93520b1a5 Install functor folder with cmake 2013-11-08 14:07:11 +00:00
Gael Guennebaud
cb8da751a0 fix broken commit 2013-11-07 22:44:37 +01:00
Gael Guennebaud
fe0b44e876 Fix stupid mistake in CMakeLists.txt 2013-11-07 18:48:17 +01:00
Christoph Hertzberg
ae83f5ede9 Fixed bug #702 and added unit test.
Thanks to Alexander Werner for the report.
2013-11-07 18:32:24 +01:00
Gael Guennebaud
76c230a84d Add an option to test evaluators globally 2013-11-07 16:38:14 +01:00
Gael Guennebaud
57327cc2d5 Drop evaluators for SwapWrapper and SelfCwiseBinaryOp 2013-11-07 14:07:27 +01:00
Gael Guennebaud
5887e82729 Clean evaluator_impl_base. It will probably be removed in the future 2013-11-07 14:02:47 +01:00
Gael Guennebaud
af9851d1d7 bug #99: move the creation of the evaluator to a central place, and make generic_dense_assignment_kernel hold the destination and source evaluators 2013-11-07 12:03:12 +01:00
Gael Guennebaud
8fe609311d Move internal::swap to numext to fix ambiguous call with std::swap 2013-11-07 09:01:26 +01:00
Gael Guennebaud
8edc964734 bug #99: refactor assignment and compound assignment mechanism through "assignment functors" and "assignement kernels".
The former is very low level and generic. The later abstarct the former for dense expressions. This refactoring permits
to get rid of the very ugly SwapWrapper and SelfCwiseBinaryOp classes.
In the future, this will also permit to simplify all these evaluation loops and perhaps to reuse them for reduxions.
That will also permit to specialize for operations like expr1 += expr2 outside Eigen, and so for any kind
of expressions (dense, sparse, tensor, etc.)
2013-11-06 18:17:59 +01:00
Gael Guennebaud
a37bdfc955 Fix static/inline order 2013-11-06 11:13:31 +01:00
Gael Guennebaud
03de5c2410 Split the huge Functors.h file 2013-11-06 10:36:10 +01:00
Gael Guennebaud
4f572e4c14 Add minimalistic unit tests for NVCC support 2013-11-05 15:41:45 +01:00
Gael Guennebaud
87aee5fda1 Allow calling attributes of dynamic size objects from device 2013-11-05 15:40:58 +01:00
Gael Guennebaud
1bb1a57ef7 merge with default branch 2013-11-05 10:31:59 +01:00
Gael Guennebaud
7c9cdd6030 SparseLU: fix estimated non-zeros in U 2013-11-05 00:12:14 +01:00
Gael Guennebaud
a236e15048 JacobiSVD: fix a 0/0 issue for complexes 2013-11-04 23:58:18 +01:00
Gael Guennebaud
ad1dc50b57 Check for minimal norm solutions 2013-11-03 13:19:55 +01:00
Gael Guennebaud
019dcfc21d JacobiSVD: move from Lapack to Matlab strategy for the default threshold 2013-11-03 13:18:56 +01:00
Gael Guennebaud
19521c83b8 bug #677: fix usage of pld instrinsics for ccomplexes 2013-11-02 12:10:48 +01:00
Gael Guennebaud
bbd49d194a Add a rank method with threshold control to JacobiSVD, and make solve uses it to return the minimal norm solution for rank-deficient problems 2013-11-01 18:21:46 +01:00
Gael Guennebaud
8f496cd3a3 Fix changeset 2702788da7
for fixed size matrices
2013-11-01 18:17:55 +01:00
Gael Guennebaud
6dc0e59b1e Fix bug #677: compilation issue on arm64 which does not have the PLD instruction 2013-10-31 13:52:43 +01:00
Gael Guennebaud
2702788da7 Fix bug #678: vectors of row and columns transpositions were not properly resized in FullPivQR 2013-10-29 18:02:18 +01:00
Gael Guennebaud
58c0a6f0fd Fix unused variable warnings 2013-10-29 17:51:19 +01:00
Gael Guennebaud
5974685866 Fix parenthesis min/max issue in mpreal 2013-10-29 17:43:21 +01:00