| Commit message (Collapse) | Author | Age |
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
proposing a fix).
Kept ColMajor layout if possible in order to keep derivatives of the same order adjacent in memory.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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;
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
Thanks to Alexander Werner for the report.
|
| |
|
| |
|
|\
| |
| |
| | |
Fixes for SparseMatrix to support non-POD scalar types
|
| |
| |
| |
| | |
Algorithm is rather ad-hoc and falls back on bisection if required.
|
| | |
|
|/ |
|
| |
|
|
|
|
|
|
| |
First step at implementing final stage in BDCSVD algorithm.
Uses bisection method to solve nonlinear equation.
Still lots of room for optimization.
|
|
|
|
| |
(these changes were not intended to be commited)
|
|
|
|
| |
temporary object
|
| |
|
|
|
|
|
|
| |
The Matrix is required to be mutable but it also needs to be a reference and
temporaries do not bind to non-const references - thus we need a hack and
cast away the constness.
|
| |
|
|
|
|
| |
This eliminates an unnecessary copy in some situations, e.g. Map.
|
| |
|
|
|
|
|
|
| |
Store indices, not eigenvalues, in clusters.
Bug was introduced in changeset a3a55357db7394281c872e911f13d69aba510aec
.
|
|\ |
|
| |
| |
| |
| | |
Fixed evaluation of matrix_exp_computeUV.
|
|/ |
|
|
|
|
| |
The typedefs Lhs/Rhs in the base class are now accessible by derived classes.
|
| |
|
| |
|
|
|
|
|
| |
* put internal stuff in the internal namespace
* replace member functions by free functions
|
|\
| |
| |
| |
| | |
* Enable singular matrix power and complex exponents.
* Eliminate unnecessary copying for sparse Kronecker product.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|