eigen/unsupported/test
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
..
mpreal Fix parenthesis min/max issue in mpreal 2013-10-29 17:43:21 +01:00
alignedvector3.cpp
autodiff_scalar.cpp Fixed bug #702 and added unit test. 2013-11-07 18:32:24 +01:00
autodiff.cpp
bdcsvd.cpp new unsupported and not finished SVD, using a divide and conquert algorithm, with tests and benchmark 2013-06-19 00:03:27 +02:00
BVH.cpp
CMakeLists.txt CXX11/TensorSymmetry: add symmetry support for Tensor class 2013-11-14 23:35:11 +01:00
cxx11_meta.cpp C++11: add template metaprogramming helpers 2013-11-14 22:27:06 +01:00
cxx11_tensor_simple.cpp CXX11/Tensor: add simple initial tensor implementation 2013-11-14 22:52:37 +01:00
cxx11_tensor_symmetry.cpp CXX11/TensorSymmetry: add symmetry support for Tensor class 2013-11-14 23:35:11 +01:00
dgmres.cpp Add complex support to dgmres and the unit test 2013-03-20 18:38:22 +01:00
FFT.cpp
FFTW.cpp
forward_adolc.cpp
gmres.cpp the repeated solves are already present in check_sparse_solving() 2012-10-09 13:30:48 +02:00
jacobisvd.cpp new unsupported and not finished SVD, using a divide and conquert algorithm, with tests and benchmark 2013-06-19 00:03:27 +02:00
kronecker_product.cpp Eliminate unnecessary copying for sparse Kronecker product. 2013-07-15 09:10:17 +08:00
levenberg_marquardt.cpp Set built-in sparse QR as the default sparse solver and add ComputationInfo for Levenberg Marquardt, 2013-02-20 14:10:14 +01:00
matrix_exponential.cpp Add test for matrix power. 2012-08-27 22:48:37 +01:00
matrix_function.cpp MatrixFunctions: Clean up StemFunction.h 2013-07-26 13:51:10 +01:00
matrix_functions.h generateTestMatrix can use processTriangularMatrix 2013-07-15 00:43:14 +08:00
matrix_power.cpp Fix compilation. 2013-08-02 22:40:36 +02:00
matrix_square_root.cpp Add test for matrix power. 2012-08-27 22:48:37 +01:00
minres.cpp Fix bug #314: 2012-11-06 15:25:50 +01:00
mpreal_support.cpp Relax a bit the precision in mpreal unit test. 2013-01-23 23:57:28 +01:00
NonLinearOptimization.cpp Backed out changeset 363e506776 2012-12-07 20:53:19 +01:00
NumericalDiff.cpp
openglsupport.cpp
polynomialsolver.cpp Fix warning typedef XXX locally defined but not used 2013-06-21 09:27:38 +02:00
polynomialutils.cpp
sparse_extra.cpp Fix warning typedef XXX locally defined but not used 2013-06-21 09:27:38 +02:00
splines.cpp Fix "explicit instantiation of 'Eigen::Spline' must occur in namespace 'Eigen'" warnings 2013-02-28 20:22:26 +01:00
svd_common.h new unsupported and not finished SVD, using a divide and conquert algorithm, with tests and benchmark 2013-06-19 00:03:27 +02:00