Squashed 'third_party/eigen/' changes from cf794d3b74..3147391d94

3147391d94 Change version to 3.4.0.
115591b9e3 Workaround VS 2017 arg bug.
fd100138dd Remove unaligned assert tests.
1ec173b54e Clearer doc for squaredNorm
aef926abf6 Renamed shift_left/shift_right to shiftLeft/shiftRight.
f1032255d3 Add missing PPC packet comparisons.
f57dec64ef Fix unaligned loads in ploadLhs & ploadRhs for P8.
926e1a8226 Update documentation for matrix decompositions and least squares solvers.
cd474d4cd0 minor doc fix in Map.h
0b56b62f30 Reverse compare logic ƒin F32ToBf16 since vec_cmpne is not available in Power8 - now compiles for clang10 default (P8).
44cc96e1a1 Get rid of used uninitialized warnings for EIGEN_UNUSED_VARIABLE in gcc11+
576e451b10 Add CompleteOrthogonalDecomposition to the table of linear algeba decompositions.
0d89012708 Update code snippet for tridiagonalize_inplace.
6d2506040c * revise the meta_least_common_multiple function template, add a bool variable to check whether the A is larger than B. * This can make less compile_time if A is smaller than B. and avoid failure in compile if we get a little A and a great B.
cb44a003de Do not set AnnoyingScalar::dont_throw if not defined EIGEN_TEST_ANNOYING_SCALAR_DONT_THROW.
13d7658c5d Fix errors on older compilers (gcc 7.5 - lack of vec_neg, clang10 - can not use const pointers with vec_xl).
338924602d added includes for unordered_map
93bff85a42 remove denormal flushing in fp32tobf16 for avx & avx512
4e0357c6dd Avoid memory allocation in tridiagonalization_inplace_selector::run.
1e9f623f3e Do not build shared libs if not supported
4240b480e0 updated documentation for middleCol and middleRow
5b83d3c4bc Make inverse 3x3 faster and avoid gcc bug.
46ecdcd745 Fix MPReal detection and support.
9a1691a14e Fix cmake warnings, FindPASTIX/FindPTSCOTCH.
bb33880e57 Fix TriSycl CMake files.
237c59a2aa Modify scalar pzero, ptrue, pselect, and p<binary> operations to avoid memset.
3dc42eeaec Enable equality comparisons on GPU.
7adc1545b4 fix:typo in dox (has->have)
c0c7b695cd Fix assignment operator issue for latest MSVC+NVCC.
c334eece44 _DerType -> DerivativeType as underscore-followed-by-caps is a reserved identifier
5ccb72b2e4 Fixed typo in TutorialSparse.dox
9c90d5d832 Fixes #1387 for compilation error in JacobiSVD with HouseholderQRPreconditioner that occurs when input is a compile-time row vector.
5d37114fc0 Fix explicit default cache size typo.
930696fc53 Enable extract et. al. for HIP GPU.
56966fd2e6 Defer to std::fill_n when filling a dense object with a constant value.
5a3c9eddb4 Removed superfluous boolean `degenerate` in TensorMorphing.h.
69ec4907da Make a copy of input matrix when try to do the inverse in place, this fixes #2285.
7571704a43 Fix CMake directory issues.
84955d109f Fix Tensor documentation page.
601814b575 Don't crash when attempting to shuffle an empty tensor.
05bab8139a Fix breakage of conj_helper in conjunction with custom types introduced in !537.
eebde572d9 Create the ability to disable the specialized gemm_pack_rhs in Eigen (only PPC) for TensorFlow
8190739f12 Fix compile issues for gcc 4.8.
b6db013435 Fix inverse nullptr/asan errors for LU.
1f6b1c1a1f Fix duplicate definitions on Mac
517294d6e1 Make DenseStorage<> trivially_copyable
94e2250b36 Correct declarations for aarch64-pc-windows-msvc
d82d915047 Modify tensor argmin/argmax to always return first occurence.
380d0e4916 Get rid of redundant `pabs` instruction in complex square root.
e83af2cc24 Commit 52a5f982 broke conjhelper functionality for HIP GPUs.
413ff2b531 Small cleanup: Get rid of the macros EIGEN_HAS_SINGLE_INSTRUCTION_CJMADD and CJMADD, which were effectively unused, apart from on x86, where the change results in identically performing code.
a235ddef39 Get rid of code duplication for conj_helper. For packets where LhsType=RhsType a single generic implementation suffices. For scalars, the generic implementation of pconj automatically forwards to numext::conj, so much of the existing specialization can be avoided. For mixed types we still need specializations.
4780d8dfb2 Fix typo in SelfAdjointEigenSolver_eigenvectors.cpp
fd5d23fdf3 Update ComplexEigenSolver_eigenvectors.cpp
a2040ef796 Rewrite balancer to avoid overflows.
c2c0f6f64b Fix fix<> for gcc-4.9.3.
ee4e099aa2 Remove pset, replace with ploadu.
9fc93ce31a EIGEN_STRONG_INLINE was NOT inlining in some critical needed areas (6.6X slowdown) when used with Tensorflow.  Changing to EIGEN_ALWAYS_INLINE where appropiate.
1374f49f28 Add missing ppc pcmp_lt_or_nan<Packet8bf>
2d6eaaf687 Fix placement of permanent GPU defines.
47722a66f2 Fix more enum arithmetic.
5e75331b9f Fix checking of version number for mingw.
b5fc69bdd8 Add ability to permanently enable HIP/CUDA gpu* defines.
4b683b65df Allow custom TENSOR_CONTRACTION_DISPATCH macro.
1cb1ffd5b2 Use bit_cast to create -0.0 for floating point types to avoid compiler optimization changing sign with --ffast-math enabled.
4b502a7215 Fix c++20 warnings about using enums in arithmetic expressions.
85868564df Fix parsing of version for nvhpc
cbb6ae6296 Removed dead code from GPU float16 unit test.
573570b6c9 Remove EIGEN_DEVICE_FUNC from CwiseBinaryOp's default copy constructor.
98cf1e076f Add missing NEON ptranspose implementations.
ee2a8f7139 Modify Unary/Binary/TernaryOp evaluators to work for non-class types.
3835046309 predux_half_dowto4 test extended to all applicable packets
4fbd01cd4b Adds macro for checking if C++14 variable templates are supported
a883a8797c Use derived object type in conservative_resize_like_impl
0bd9e9bc45 ptranpose test for non-square kernels added
77c66e368c Ensure all generated matrices for inverse_4x4 testes are invertible, this fix #2248 .
2f908f8255 Changing the storage of the SSE complex packets to that of the wrapper. This should fix #2242 .
82f13830e6 Fix calls to device functions from host code
d1825cbb68 Device implementation of log for std::complex types.
d9288f078d Fix ambiguity due to argument dependent lookup.
85ebd6aff8 Fix for issue where numext::imag and numext::real are used before they are defined.
2947c0cc84 Restore ABI compatibility for conj with 3.3, fix conflict with boost.
25424f4cf1 Clean up gpu device properties.
42acbd5700 Fix numext::arg return type.
9e0dc8f09b Revert addition of unused `paddsub<Packet2cf>`. This fixes #2242
da19f7a910 Simplify TensorRandom and remove time-dependence.
fc2cc10842 Better CUDA complex division.
a33855f6ee Add missing pcmp_lt_or_nan for NEON Packet4bf.
83df5df61b Added complex matrix unit tests for SelfAdjointEigenSolve
ac3c5aad31 Tests added and AVX512 bug fixed for pcmp_lt_or_nan
63abb10000 Tests for pcmp_lt and pcmp_le added
baf601a0e3 Fix for issue with static global variables in TensorDeviceGpu.h
587a691516 Check existence of BSD random before use.
8830d66c02 DenseStorage safely copy/swap.
54425a39b2 Make vectorized compute_inverse_size4 compile with AVX.
34d0be9ec1 Compilation of basicbenchmark fixed
42a8bdd4d7 HasExp added for AVX512 Packet8d
28564957ac Fix taking address of rvalue compiler issue with TensorFlow (plus other warnings).
ab7fe215f9 Fix ldexp for AVX512 (#2215)
1f4c0311cd Bump to 3.3.91 (3.4-rc1)
3e819d83bf Before 3.4 branch
69adf26aa3 Modify googlehash use to account for namespace issues.
9357feedc7 Avoid using uninitialized inputs and if available, use slightly more efficient `movsd` instruction for `pset1<Packet2cf>`.
a2c0542010 Fix typo in TensorDimensions.h
dfd6720d82 Fix for float16 GPU unit test.
1e1c8a735c Use EIGEN_HAS_CXX11 and EIGEN_COMP_CXXVER macros to detect C++ version for `std::result_of` and `std::invoke_result`. Fixes #2209
f6fc66aa75 fixed doxygen for unsupported iterative solver module
d58678069c Make iterators default constructible and assignable, by making...
2859db0220 This fixes an issue where the compiler was not choosing the GPU specific specialization of ScanLauncher.
fcb5106c6e Scaled epsilon the wrong way.
6197ce1a35 Replace `-2147483648` by `-0.0f` or `-0.0` constants (this should fix #2189). Also, remove unnecessary `pgather` operations.
22edb46823 Align local arrays to Packet boundary.
ace7f132ed Fix clang tidy warnings in AnnoyingScalar.
90187a33e1 Fix SelfAdjoingEigenSolver (#2191)
3ddc0974ce Fix two bugs in commit
c24bee6120 Fix address of temporary object errors in clang11.
e4233b6e3d Add CI infrastructure for pre-merge smoke tests.
ae95b74af9 Add CMake infrastructure for smoke testing
5bbc9cea93 Add an info() method to the SVDBase class to make it possible to tell the user that the computation failed, possibly due to invalid input. Make Jacobi and divide-and-conquer fail fast and return info() == InvalidInput if the matrix contains NaN or +/-Inf.
b5a926a0f6 Add GitLab templates for issues and merge requests
78ee3d6261 Fix CUDA constexpr issues for numeric_limits.
af1247fbc1 Use Index type in loop over coefficients.
87729ea39f Eliminate `round_impl` double-promotion warnings for c++03.
748489ef9c Un-defining EIGEN_HAS_CONSTEXPR on the HIP platform
d59ef212e1 Fixed performance issues for complex VSX and P10 MMA in gebp_kernel (level 3).
e7b8643d70 Revert "Revert "Adds EIGEN_CONSTEXPR and EIGEN_NOEXCEPT to rows(), cols(), innerStride(), outerStride(), and size()""
5521c65afb Eliminate mixingtypes_7 warning.
69a4f70956 Revert "Uses _mm512_abs_pd for Packet8d pabs"
824272cde8 Re-enable CI for Power
4811e81966 Remove yet another comma at end of enum
f019b97aca Uses _mm512_abs_pd for Packet8d pabs
0cc9b5eb40 Split test commainitializer into two substests
c3fbc6cec7 Use singleton pattern for static registered tests.
ed964ba3f1 Proposed fix for issue #2187
8dfe1029a5 Augment NumTraits with min/max_exponent() again.
eb71e5db98 Fix another warning on missing commas
df4bc2731c Revert "Augment NumTraits with min/max_exponent()."
75ce9cd2a7 Augment NumTraits with min/max_exponent().
9fb7062440 Silence warning on comma at end of enumerator list
b8502a9dd6 Updated SelfAdjointEigenSolver documentation to include that the eigenvectors matrix is unitary.
2e83cbbba9 Add NaN propagation options to minCoeff/maxCoeff visitors.
c0a889890f Fixed output of complex matrices
f612df2736 Add fmod(half, half).
14b7ebea11 Fix numext::round pre c++11 for large inputs.
c9d4367fa4 Fix pround and add print
d24f9f9b55 Fix NVCC+ICC issues.
14487ed14e Add increment/decrement operators to Eigen::half.
b271110788 Bump up rand histogram threshold.
d098c4d64c Disable EIGEN_OPTIMIZATION_BARRIER for PPC clang.
543e34ab9d Re-implement move assignments.
b8d1857f0d [MSVC-specific] Define EIGEN_ARCH_x86_64 for native x64 (_M_X64 is defined and _M_ARM64EC is not), and define EIGEN_ARCH_ARM64 for both the native ARM64 (_M_ARM64 is defined) or ARM64EC (_M_ARM64EC is defined). _M_ARM64EC is defined when the code is compiled by MSVC for ARM64EC, a new ARM64 ABI designed to be compatible with x64 application emulation on ARM64. If _M_ARM64EC is defined, _M_X64 and _M_AMD64 are also defined, so x64-specific code (especially intrinsics) is also compiled to ARM64 instructions (compliant with the ARM64EC ABI) for maximum x64 compatibility. Although a majority of x64-specific intrinsics can emulated by ARM64 instructions, it is still a good to simply recompile the native ARM64 code paths to ARM64EC for pure computation tasks, for performance reasons.
853a5c4b84 Fix ambiguous call to CUDA __half constructor.
94327dbfba Fix typo: DEVICE -> GPU
1296abdf82 Fix non-trivial Half constructor for CUDA.
6045243141 Revert stack allocation limit change that crept in.
1a96d49afe Changing the Eigen::half implementation for HIP
2468253c9a Define EIGEN_CPLUSPLUS and replace most __cplusplus checks.
82d61af3a4 Fix rint SSE/NEON again, using optimization barrier.
5f0b4a4010 Revert "Adds EIGEN_CONSTEXPR and EIGEN_NOEXCEPT to rows(), cols(), innerStride(), outerStride(), and size()"
6cbb3038ac Adds EIGEN_CONSTEXPR and EIGEN_NOEXCEPT to rows(), cols(), innerStride(), outerStride(), and size()
5bfc67f9e7 Deactive CI for Power due to problems with GitLab runner
a6601070f2 Add log2 operation to TensorBase
9a663973b4 Revert "Fix rint for SSE/NEON."
e72dfeb8b9 Fix rint for SSE/NEON.
199c5f2b47 geo_alignedbox_5 was failing with AVX enabled, due to storing `Vector4d` in a `std::vector` without using an aligned allocator. Got rid of using `std::vector` and simplified the code. Avoid leading `_`
1e0c7d4f49 Add print for SSE/NEON, use NEON rounding intrinsics if available.
976ae0ca6f Document that using raw function pointers doesn't work with unaryExpr.
c65c2b31d4 Make half/bfloat16 constructor take inputs by value, fix powerpc test.
39a590dfb6 Remove unused include
8f686ac4ec clang 10 aggressively warns about precision loss when converting int to float (or long to double)
2660d01fa7 Inherit from `no_assignment_operator` to avoid implicit copy constructor warnings
a3521d743c Fix some enum-enum conversion warnings
ca528593f4 Fixed/masked more implicit copy constructor warnings
81b5fe2f0a ReturnByValue is already non-copyable
4fb3459a23 Fix double-promotion warnings
4bfcee47b9 Idrs iterative linear solver
29ebd84cb7 Fix NEON sqrt for 32-bit, add prsqrt.
fe19714f80 Merge branch 'rmlarsen1/eigen-nan_prop'
e67672024d Merge branch 'nan_prop' of https://gitlab.com/rmlarsen1/eigen into nan_prop
5e7d4c33d6 Add TODO.
fb5b59641a Defer default for minCoeff/maxCoeff to templated variant.
e19829c3b0 Fix floor/ceil for NEON fp16.
5529db7524 Fix SSE/NEON pfloor/pceil for saturated values.
51eba8c3e2 Fix indentation.
5297b7162a Make it possible to specify NaN propagation strategy for maxCoeff/minCoeff reductions.
ecb7b19dfa Disable new/delete test for HIP
6eebe97bab Fix clang compile when no MMA flags are set. Simplify MMA compiler detection.
f284c8592b Don't crash when attempting to slice an empty tensor.
4cb0592af7 Fix indentation.
6b34568c74 Merge branch 'nan_prop' of https://gitlab.com/rmlarsen1/eigen into nan_prop
0065f9d322 Make it possible to specify NaN propagation strategy for maxCoeff/minCoeff reductions.
841c8986f8 Make it possible to specify NaN propagation strategy for maxCoeff/minCoeff reductions.
113e61f364 Remove unused function scalar_cmp_with_cast.
98ca58b02c Cast anonymous enums to int when used in expressions.
c31ead8a15 Having forward template function declarations in a P10 file causes bad code in certain situations.
f44197fabd Some improvements for kissfft from Martin Reinecke(pocketfft author): 1.Only computing about half of the factors and use complex conjugate symmetry for the rest instead of all to save time. 2.All twiddles are calculated in double because that gives the maximum achievable precision when doing float transforms. 3.Reducing all angles to the range 0<angle<pi/4 which gives even more precision.
a31effc3bc Add `invoke_result` and eliminate `result_of` warnings for C++17+.
8523d447a1 Fixes to support old and new versions of the compilers for built-ins.  Cast to non-const when using vector_pair with certain built-ins.
5908aeeaba Fix CUDA device new and delete, and add test.
119763cf38 Eliminate CMake FindPackageHandleStandardArgs warnings.
6cf0ab5e99 Disable fast psqrt for NEON.
aba3998278 Fix check if GPU compile phase for std::hash
db5691ff2b Fix some CUDA warnings.
88d4c6d4c8 Accurate pow, part 2. This change adds specializations of log2 and exp2 for double that make pow<double> accurate the 1 ULP. Speed for AVX-512 is within 0.5% of the currect implementation.
2ac0b78739 Fixed sparse conservativeResize() when both num cols and rows decreased.
10c77b0ff4 Fix compilation errors with later versions of GCC and use of MMA.
73922b0174 Fixes Bug #1925. Packets should be passed by const reference, even to inline functions.
5f9cfb2529 Add missing adolc isinf/isnan.
ce4af0b38f Missing change regarding #1910
a7749c09bc Bug #1910: Make SparseCholesky work for RowMajor matrices
128eebf05e Revert "add EIGEN_DEVICE_FUNC to EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF macros (only if not HIPCC)."
33e0af0130 Return nan at poles of polygamma, digamma, and zeta if limit is not defined
7f09d3487d Use the Cephes double subtraction trick in pexp<float> even when FMA is available. Otherwise the accuracy drops from 1 ulp to 3 ulp.
12fd3dd655 add EIGEN_DEVICE_FUNC to EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF macros (only if not HIPCC).
aa8b22e776 Bump to 3.4.99
5336ad8591 Define internal::make_unsigned for [unsigned]long long on macOS.
0845df7f77 Fix uninitialized warning on AVX.
9b51dc7972 Fixed performance issues for VSX and P10 MMA in general_matrix_matrix_product
be0574e215 New accurate algorithm for pow(x,y). This version is accurate to 1.4 ulps for float, while still being 10x faster than std::pow for AVX512. A future change will introduce a specialization for double.
7ff0b7a980 Updated pfrexp implementation.
9ad4096ccb Document possible inconsistencies when using `Matrix<bool, ...>`
f702792a7c missing method in packetmath.h void ptranspose(PacketBlock<Packet16uc, 4>& kernel)
db61b8d478 Avoid -Wunused warnings in NDEBUG builds.
622c598944  Don't allow all test jobs to fail but only the currently failing ones.
90ee821c56 Use vrsqrts for rsqrt Newton iterations.
9fde9cce5d Adjust bounds for pexp_float/double
4cb563a01e Fix ldexp implementations.
7eb07da538 loop less ptranspose
36200b7855 Remove vim specific comments to recognoize correct file-type.
54589635ad Replace nullptr by NULL in SparseLU.h to be C++03 compliant.
984d010b7b add specialization of check_sparse_solving() for SuperLU solver, in order to test adjoint and transpose solves
b578930657 Fix documentation typos in LDLT.h
66841ea070 Enable bdcsvd on host.
6e3b795f81 Add more tests for pow and fix a corner case for huge exponent where the result is always zero or infinite unless x is one.
abcde69a79 Disable vectorized pow for half/bfloat16.
f85038b7f3 Fix excessive GEBP register spilling for 32-bit NEON.
56c8b14d87 Eliminate implicit conversions from float to double.
fb4548e27b Implement bit_* for device.
1615a27993 Fix altivec packetmath.
1414e2212c Fix clang compilation for AltiVec from previous check-in
170a504c2f Add the following functions
598e1b6e54 Add the following functions:
0668c68b03 Allow for negative strides.
288d456c29 Replace language_support module with builtin CheckLanguage
3f4684f87d Include `<cstdint>` in one place, remove custom typedefs
0784d9f87b Fix sqrt, ldexp and frexp compilation errors.
a4edb1079c fix test of ExtractVolumePatchesOp
4c42d5ee41 Eliminate implicit conversion warning in test/array_cwise.cpp
e0d13ead90 Replace std::isnan with numext::isnan for c++03
c35965b381 Remove unused variable in SparseLU.h
f0e46ed5d4 Fix pow and other cwise ops for half/bfloat16.
f19bcffee6 Specialize std::complex operators for use on GPU device.
65e2169c45 Add support for Arm SVE
b2126fd6b5 Fix pfrexp/pldexp for half.
25d8498f8b Fix stable_norm_1 test.
660c6b857c Remove std::cerr in iterative solver since we don't have iostream.
d5b7981119 Fix signed-unsigned comparison.
e409795d6b Proper CPUID
cdd8fdc32e Vectorize `pow(x, y)`. This closes https://gitlab.com/libeigen/eigen/-/issues/2085, which also contains a description of the algorithm.
bde6741641 Improved std::complex sqrt and rsqrt.
21a8a2487c fix paddings of TensorVolumePatchOp
38ae5353ab 1)provide a better generic paddsub op implementation 2)make paddsub op support the Packet2cf/Packet4f/Packet2f in NEON 3)make paddsub op support the Packet2cf/Packet4f in SSE
352f1422d3 Remove `inf` local variable.
2044084979 Remove TODO from Transform::computeScaleRotation()
3daf92c7a5 Transform::computeScalingRotation flush determinant to +/- 1.
587fd6ab70 Only specialize complex `sqrt_impl` for CUDA if not MSVC.
2a6addb4f9 Fix for breakage in ROCm support - 210108
f149e0ebc3 Fix MSVC complex sqrt and packetmath test.
8d9cfba799 Fix rand test for MSVC.
e741b43668 Make Transform::computeRotationScaling(0,&S) continuous
0bdc0dba20 Add missing #endif directive in Macros.h
cb654b1c45 #define was defined incorrectly because the result_of function was deprecated in c++17 and removed in c++20. Also, EIGEN_COMP_MSVC (which is _MSC_VER) only affects result_of indirectly, which can cause errors.
52d1dd979a Fix Ref initialization.
166fcdecdb Allow CwiseUnaryView to be used on device.
bb1de9dbde Fix Ref Stride checks.
12dda34b15 Eliminate boolean product warnings by factoring out a `combine_scalar_factors` helper function.
070d303d56 Add CUDA complex sqrt.
fdf2ee62c5 Fix missing EIGEN_DEVICE_FUNC
05754100fe * Add iterative psqrt<double> for AVX and SSE when FMA is available. This provides a ~10% speedup. * Write iterative sqrt explicitly in terms of pmadd. This gives up to 7% speedup for psqrt<float> with AVX & SSE with FMA. * Remove iterative psqrt<double> for NEON, because the initial rsqrt apprimation is not accurate enough for convergence in 2 Newton-Raphson steps and with 3 steps, just calling the builtin sqrt insn is faster.
3bee9422d6 Merge branch 'lambdaknight/eigen-master'
19e6496ce0 Replace call to FixedDimensions() with a singleton instance of FixedDimensions.
6cee8d347e Add an additional step of Newton-Raphson for `psqrt<double>` on Arm, which otherwise has an error of ~1000 ulps.
bc7d1599fb TensorStorage with FixedDimensions now has zero instance memory overhead. Removed m_dimension as instance member of TensorStorage with FixedDimensions and instead use the template parameter. This means that the sizeof a pure fixed-size storage is exactly equal to the data it is storing.
cf0b5b0344 Remove code checking for CMake < 3.5
751f18f2c0 Remove comma at the end of enumeration list to silence C++03 warnings
5dc2fbabee Fix implicit cast to double.
55967f87d1 Fix NEON pmax<PropagateNumbers,Packet4bf>.
839aa505c3 Fix typo in AVX512 packet math.
536c8a79f2 Remove unused macro in Half.h
8c9976d7f0 Fix more SSE/AVX packet conversions for peven.
c6efc4e0ba Replace M_LOG2E and M_LN2 with custom macros.
e82722a4a7 Fix MSVC SSE casts.
f3d2ea48f5 Fix for broken ROCm/HIP Support
c7eb3a74cb Don't guard psqrt for std::complex<float> with EIGEN_ARCH_ARM64
bccf055a7c Add Armv8 guard on PropagateNumbers implementation.
82c0c18a83 Remove private access of std::deque::_M_impl.
00be0a7ff3 Fix vectorization of complex sqrt on NEON
8eb461a431 Remove comma at end of enumerator list in NEON PacketMath
2e8f850c78 Fix a typo in SparseMatrix documentation.
125cc9a5df Implement vectorized complex square root.
8cfe0db108 Fix host/device calls for __half.
baf9d762b7 - Enabling PropagateNaN and PropagateNumbers for NEON. - Adding propagate tests to bfloat16.
634bd79b0e Fix unused warning on new `dense_assignment_loop` impl.
655c3a4042 Add specialization for compile-time zero-sized dense assignment.
5ec4907434 Clean up `#if`s in GPU PacketPath.
f9fac1d5b0 Add log2() to Eigen.
2dbac2f99f Fix bad NEON fp16 check
e2f21465fe Special function implementations for half/bfloat16 packets.
305b8bd277 Remove duplicate #if clause
9ee9ac81de Fix shfl* macros for CUDA/HIP
a9a2f2bebf The function 'prefetch' did not work correctly on the win64 platform
f23dc5b971 Revert "Add log2() operator to Eigen"
4d91519a9b Add log2() operator to Eigen
25d8ae7465 Small cleanup of generic plog implementations: Adding the term e*ln(2) is split into two step for no obvious reason. This dates back to the original Cephes code from which the algorithm is adapted. It appears that this was done in Cephes to prevent the compiler from reordering the addition of the 3 terms in the approximation
eb4d4ae070 Include chrono in main for c++11.
71c85df4c1 Clean up the Tensor header and get rid of the EIGEN_SLEEP macro.
70fbcf82ed Fix typo in `F32MaskToBf16Mask`.
2627e2f2e6 Fix neon cmp* functions for bf16.
ddd48b242c Implement CUDA __shfl* for Eigen::half
e57281a741 Fix a few issues for AVX512. This change enables vectorized versions of log, exp, log1p, expm1 when AVX512DQ is not available.
1992af3de2 Fix #2077, `EIGEN_CONSTEXPR` in `Half`.
7b80609d49 add EIGEN_DEVICE_FUNC to methods
89f90b585d AVX512 missing ops.
c5985c46f5 Fix typo in doc
68f69414f7 Workaround for doxygen class template titles in which the template part of the class signature is lost due to a problem with forward declarations.  The problem is probably caused by doxygen bug #7689. It is confirmed to be fixed in doxygen >= 1.8.19.
a7170f2aca Fix doxygen class blocks that were not associated with the correct classes.
550e8f8f57 Include CMakeDependentOption to be able to use cmake_dependent_option
9842366bba Make inclusion of doc sub-directory optional by adjusting options.
aa56e1d980 check for include dirs set
1e74f93d55 Fix some packet-functions in the IBM ZVector packet-math.
79818216ed Revert "Fix Half NaN definition and test."
c770746d70 Fix Half NaN definition and test.
22f67b5958 Fix boolean float conversion and product warnings.
a3b300f1af Implement missing AVX half ops.
38abf2be42 Fix Half NaN definition and test.
4cf01d2cf5 Update AVX half packets, disable test.
fd1dcb6b45 Fixes duplicate symbol when building blas
6c9c3f9a1a Remove explicit casts from Eigen::half and Eigen::bfloat16 to bool
a8fdcae55d Fix sparse_extra_3, disable counting temporaries for testing DynamicSparseMatrix.
11e4056f6b Re-enable Arm Neon Eigen::half packets of size 8
17268b155d Add bit_cast for half/bfloat to/from uint16_t, fix TensorRandom
41d5d5334b Initialize primitives to fix -Wuninitialized-const-reference.
3669498f5a Fix rule-of-3 for the Tensor module.
60218829b7 EOF newline added to InverseSize4.
2d63706545 Add missing parens around macro argument.
6bba58f109 Replace SSE_SHUFFLE_MASK macro with shuffle_mask.
e9b55c4db8 Avoid promotion of Arm __fp16 to float in Neon PacketMath
117a4c0617 Fix missing `EIGEN_CONSTEXPR` pop_macro in `Half`.
394f564055 Unify Inverse_SSE.h and Inverse_NEON.h into a single generic implementation using PacketMath.
8e9cc5b10a Eliminate double-promotion warnings.
9175f50d6f Add EIGEN_DEVICE_FUNC to TranspositionsBase
280f4f2407 Enable MathJax in Doxygen.in
bb69a8db5d Explicit casts of S -> std::complex<T>
90f6d9d23e Suppress ignored-attributes warning (same as in vectorization_logic). Remove redundant include and using namespace.
8324e5e049 Fix typo in NEON/PacketMath.h
852513e7a6 Disable testing of OpenGL by default.
bec72345d6 Simplify expression for inner product fallback in Gemv product evaluator.
276db21f26 Remove redundant branch for handling dynamic vector*vector. This will be handled by the equivalent branch in the specialization for GemvProduct.
cf12474a8b Optimize matrix*matrix and matrix*vector products when they correspond to inner products at runtime.
c29935b323 Add support for dynamic dispatch of MMA instructions for POWER 10
b714dd9701 remove annotation for first declaration of default con/destruction
e24a1f57e3 [SYCL Function pointer Issue]: SYCL does not support function pointer inside the kernel, due to the portability issue of a function pointer and memory address space among host and accelerators. To fix the issue, function pointers have been replaced by function objects.
6961468915  Address issues with `openglsupport` test.
348a48682e Fix erroneous forward declaration of boost nvp.
82fe059f35 Fix issue2045 which get a error case _mm256_set_m128d op not supported by gcc 7.x
9d11e2c03e CMakefile update for ROCm 4.0
39a038f2e4 Fix for ROCm (and CUDA?) breakage - 201029
f895755c0e Remove unused functions in Half.h.
09f015852b Replace numext::as_uint with numext::bit_cast<numext::uint32_t>
e265f7ed8e Add support for Armv8.2-a __fp16
a725a3233c [SYCL clean up the code] : removing exrta #pragma unroll in SYCL which was causing issues in embeded systems
b9ff791fed [Missing SYCL math op]: Addin the missing LDEXP Function for SYCL.
61461d682a [Fixing expf issue]: Eigen uses the packet type operation for scaler type float on Sigmoid function(https://gitlab.com/libeigen/eigen/-/blob/master/Eigen/src/Core/functors/UnaryFunctors.h#L990). As a result SYCL backend breaks since SYCL backend only supports packet operation for vectorized type float4 and double2. The issue has been fixed by adding scalar type float to packet operation pexp for SYCL backend.
ecb7bc9514 Bug #2036 make sure find_standard_math_library_test_program actually compiles (and is guaranteed to call math functions)
09f595a269 Make sure compiler does not optimize away calls to math functions
28aef8e816 Improve polynomial evaluation with instruction-level parallelism for pexp_float and pexp<Packet16f>
4a77eda1fd remove unnecessary specialize template of pexp for scale float/double
d9f0d9eb76 Fix missing `pfirst<Packet16b>` for MSVC.
21edea5edd Fix the specialization of pfrexp for AVX to be faster when AVX2/AVX512DQ is not available, and avoid undefined behavior in C++. Also mask off the sign bit when extracting the exponent.
011e0db31d Fix for ROCm/HIP breakage - 201013
6ea8091705 Revert change from 4e4d3f32d168ed9ce09d950f099a60ddcd11240f that broke BFloat16.h build with older compilers.
4700713faf Add AVX plog<Packet4d> and AVX512 plog<Packet8d> ops,also unified AVX512 plog<Packet16f> op with generic api
af6f43d7ff Add specializations for pmin/pmax with prescribed NaN propagation semantics for SSE/AVX/AVX512.
274ef12b61 Remove leftover debug print statement in cxx11_tensor_expr.cpp
208b3626d1 Revert generic implementation of `predux`, since it break compilation of `predux_any` with MSVC.
e3e2cf9d24 Add MatrixBase::cwiseArg()
61fc78bbda Get rid of nested template specialization in TensorReductionGpu.h, which was broken by c6953f799b01d36f4236b64f351cc1446e0abe17.
c6953f799b Add packet generic ops `predux_fmin`, `predux_fmin_nan`, `predux_fmax`, and `predux_fmax_nan` that implement reductions with `PropagateNaN`, and `PropagateNumbers` semantics. Add (slow) generic implementations for most reductions.
807e51528d undefine EIGEN_CONSTEXPR before redefinition
9a4d04c05f Make bitwise_helper a device function to unbreak GPU builds.
4e4d3f32d1 Clean up packetmath tests and fix various bugs to make bfloat16 pass (almost) all packetmath tests with SSE, AVX, and AVX512.
7a8d3d5b81 Disable test exceptions when using OpenMP.
9022f5aa8a Mention problems when using potentially throwing scalars and OpenMP
d199c17b14 Fix typo in Tutorial_BlockOperations_block_assignment.cpp
4091f6b25c Drop EIGEN_USING_STD_MATH in favour of EIGEN_USING_STD
183a208212 Implement generic bitwise logical packet ops that work for all types.
8f8d77b516 Add EIGEN prefix for HAS_LGAMMA_R
2279f2c62f Use lgamma_r if it is available (update check for glibc 2.19+)
b431024404 Don't make assumptions about NaN-propagation for pmin/pmax - it various across platforms. Change test to only test for NaN-propagation for pfmin/pfmax.
f66f3393e3 Use reinterpret_cast instead of C-style cast in Inverse_NEON.h
22c971a225 Don't cast away const in Inverse_NEON.h.
f93841b53e Use EIGEN_USING_STD to fix CUDA compilation error on BFloat16.h.
ee714f79f7 Fix CUDA build breakage and incorrect result for absdiff on HIP with long double arguments.
f7b185a8b1 dont use =* might not return a Scalar
9078f47cd6 Fix build breakage with MSVC 2019, which does not support MMX intrinsics for 64 bit builds, see: https://stackoverflow.com/questions/60933486/mmx-intrinsics-like-mm-cvtpd-pi32-not-found-with-msvc-2019-for-64bit-targets-c
3b445d9bf2 Add a generic packet ops corresponding to {std}::fmin and {std}::fmax. The non-sensical NaN-propagation rules for std::min std::max implemented by pmin and pmax in Eigen is a longstanding source og confusion and bug report. This change is a first step towards addressing it, as discussing in issue #564.
44b9d4e412 Specialize pldexp_double and pfdexp_double and get rid of Packet2l definition for SSE. SSE does not support conversion between 64 bit integers and double and the existing implementation of casting between Packet2d and Packer2l results in undefined behavior when casting NaN to int. Since pldexp and pfdexp only manipulate exponent fields that fit in 32 bit, this change provides specializations that use existing instructions _mm_cvtpd_pi32 and _mm_cvtsi32_pd instead.
d5a0d89491 Fix alignedbox 32-bit precision test failure.
30960d485e Fix failure in GEBP kernel when compiling with OpenMP and FMA
f9d1500f74 Revert !182.
068121ec02 Add missing newline at the end of Inverse_NEON.h
74ff5719b3 Fix compilation of 64 bit constant arguments to pset1frombits in TypeCasting.h on platforms where uint64_t != unsigned long.
3a0b23e473 Fix compilation of pset1frombits calls on iOS.
6b0c0b587e Provide a more efficient Packet2l->Packet2d cast method
6425e875a1 Added AlignedBox::transform(AffineTransform).
a967fadb21 Make relative path variables of type STRING
e4b24e7fb2 Fix Eigen::ThreadPool::CurrentThreadId returning wrong thread id when EIGEN_AVOID_THREAD_LOCAL and NDEBUG are defined
ce5c59729d Fix for ROCm/HIP breakage - 200921
b8a13f13ca Add CI configuration for ppc64le
821702e771 Fix the #issue1997 and #issue1991 bug triggered by unsupport a[index](type a: __i28d) ops with MSVC compiler
493a7c773c Remove EIGEN_CONSTEXPR from NumTraits<boost::multiprecision::number<...>>
38e4a67394 Fix using FindStandardMathLibrary.cmake with -Wall (-Wunused-value) added to CMAKE_CXX_FLAG
c4b99f78c7 Fix breakage in pcast<Packet2l, Packet2d> due to _mm_cvtsi128_si64 not being available on 32 bit x86. If SSE 4.1 is available use the faster _mm_extract_epi64 intrinsic.
9aad16b443 Fix undefined reference to pset1frombits bug on different platforms
c4aa8e0db2 Rename variable to avoid shadowing of a previously declared one
e55182ac09 Get rid of initialization logic for blueNorm by making the computed constants static const or constexpr. Move macro definition EIGEN_CONSTEXPR to Core and make all methods in NumTraits constexpr when EIGEN_HASH_CONSTEXPR is 1.
14022f5eb5 Fix more mildly embarrassing typos in ARM intrinsics in  PacketMath.h. 'vmvnq_u64' does not exist for some reason.
a5b226920f Fix typo in PacketMath.h
3af744b023 Add missing packet op pcmp_lt_or_nan for Packet2d on ARM.
31a6b88ff3 Disable double version of compute_inverse_size4 on Inverse_NEON.h if Packet2d is not supported.
880fa43b2b Add support for CastXML on ARM aarch64
6f0f6f792e Fix compiler error due to c++20 operator== generation rules
cc0c38ace8 Remove old Clang compiler bug work-arounds. The two LLVM bugs referenced in the comments here have long been fixed. The workarounds were now detrimental because (1) they prevented using fused mul-add on Clang/ARM32 and (2) the unnecessary 'volatile' in 'asm volatile' prevented legitimate reordering by the compiler.
bb56a62582 Make bfloat16(float(-nan)) produce -nan, not nan.
3012e755e9 Add plog ops support packet2d for NEON
e4fb0ddf78 Add EIGEN_UNUSED_VARIABLE to unused variable in Memory.h
65e400896b Fix bfloat16 round on gcc 4.8
5636f80d11 Fix issue #1968. Don't discard return value from "new" in C++17.
7c5d48f313 Unified sse pldexp_double api
71e08c702b Make blueNorm threadsafe if C++11 atomics are available.
adc861cabd New CI infrastructure, including AArch64 runners
5328c9be43 Fix half_impl::float_to_half_rtne(float) warning: '<<' causes overflow
35d149e34c Add missing functions for Packet8bf in Altivec architecture. Including new tests for bfloat16 Packets. Fix prsqrt on GenericPacketMath.
85428a3440 Add Neon psqrt<Packet2d> and pexp<Packet2d>
5272106826 remove semi triggering -Wextra-semi-stmt
5f25bcf7d6 Add Inverse_NEON.h
6fe88a3c9d MatrixProuct enhancements:
6568856275 Changing u/int8_t to un/signed char because clang does not understand it.
27e6648074 fix #1901: warning in Mode==(Upper|Lower)
5b9bfc892a BUG: cmake_minimum_required must be the first command
e5886457c8 Change Packet8s and Packet8us to use vector commands on Power for pmadd, pmul and psub.
25424d91f6 Fix #1974: assertion when reserving an empty sparse matrix
8bb0febaf9 add psqrt ops support packet2f/packet4f for NEON
1b1082334b adding attributes to constructors to support hip-clang on ROCm 3.5
603e213d13 Fixing a CUDA / P100 regression introduced by PR 181
c060114a25 Fix nightly CI configuration
fe8c3ef3cb Add possibility to split test suit build targets and improved CI configuration
d10b27fe37 Add missing inline keyword in Quaternion.h.
d4a727d092 Disable min/max NaN propagation in test cxx11_tensor_expr
d2bb6cf396 Fix compilation error in blasutil test
c6820a6316 Replace the call to int64_t in the blasutil test by explicit types
8ba1b0f41a bfloat16 packetmath for Arm Neon backend
704798d1df Add support for Bfloat16 to use vector instructions on Altivec architecture
46f8a18567 Adding an explicit launch_bounds(1024) attribute for GPU kernels.
21122498ec Temporarily turn off the NEON implementation of pfloor as it does not work for large values.
23b7f0572b Disable CI buildstage again
d0f5d4bc50 add a banner to advertise the survey
5e484fa11d Fix StlDeque for GCC 10
3ec4f0b641 Fix undefine BF16 union behavior in AVX512.
b92206676c Inherit alignment trait from argument in TensorBroadcasting to avoid segfault when the argument is unaligned.
99da2e1a8d Fix clang-tidy warnings in generic bfloat16 implementation
649fd1c2ae Fix CMake install command
e48d8e4725 Don't allow failure for CI build stage anymore
b8ca93842c Improve CI configuration
fb0c6868ad Add missing footer declaration
c1ffe452fc Fix bfloat16 casts
2ce2f51989 remove piwik tracker
1b84f21e32 Revert change that made conversion from bfloat16 to {float, double} implicit. Add roundtrip tests for casting between bfloat16 and complex types.
38b91f256b Fix cast of blfoat16 to std::complex<T>
bed7fbe854 Make sure we take the little-endian path if __BYTE_ORDER__ is not defined.
0e1a33a461 Faster conversion from integer types to bfloat16
acab22c205 Avoid division by zero in nonZerosEstimate() for empty blocks.
ac2eca6b11 Update tensor reduction test to avoid undefined division of bfloat16 by int.
0aeaf5f451 Make numext::as_uint a device function.
60faa9f897 user-defined copy operations removed in favor of compiler-generated ones
b11f817bcf Avoid undefined behavior by union type punning in float_to_bfloat16_rtne
56b3e3f3f8 AVX path for BF16
4ab32e2de2 Allow implicit conversion from bfloat16 to float and double
dcf7655b3d Guard operator<< test by EIGEN_NO_IO.
ed00df445d Guard operator<< by EIGEN_NO_IO.
fb77b7288c Add operator<< to print a quaternion.
ee4715ff48 Fix test basic stuff
8889a2c1c6 Add operator==/operator!= to Quaternion. Fixes #1876.
6964ae8d52 Change the sign operator in Eigen to return NaN for NaN arguments, not zero.
cb63153183 Make test packetmath C++98 compliant
116c5235ac BF16 for scalar_cmp_with_cast_op
8731452b97 Delete duplicate test cases in vectorization_logic.cpp
9cb8771e9c Fix tensor casts for large packets and casts to/from std::complex
145e51516f Fix denormal check pre c++11.
689b57070d Report custom C++ flags in CMake testing summary
f3b8d441f6 Remote CI tags to enable shared runners
dc0b81fb1d Pass CMAKE_MAKE_PROGRAM to Fortran language support test
13d25f5ed8 Add initial CI configuration file.
7222f0b6b5 Fix packetmath_1 float tests for arm/aarch64.
14f84978e8 Replaced call to deprecated 'load' function with appropriate call to 'on'.
ff4e7a0820 Add missing Packet2l/Packet2ul ops for NEON.
03ebdf6acb Added missing NEON pcasts, update packetmath tests.
386d809bde Support BFloat16 in Eigen
6b9c92fe7e Add Apache 2.0 license text in COPYING.APACHE.
cf7adf3a5d Update `things you can do` message using cmake commands
231ce21535 Run two independent chains, when reducing tensors.
a475bf14d4 Fix pscatter and pgather for Altivec Complex double
c6c84ed961 Fix unused variable warning on Arm
6228f27234 Fix #1818: SparseLU: add methods nnzL() and nnzU()
39cbd6578f Fix #1911: add benchmark for move semantics with fixed-size matrix
a7d2552af8 Remove HasCast and fix packetmath cast tests.
463ec86648 Fix #1757: remove the word 'suicide'
b5d66b5e73 Implement scalar_cmp_with_cast_op
c4059ffcb6 Fix static analyzer warning in SelfadjointProduct.h. Fix compiler warnings in GeneralBlockPanelKernel.h.
1fcaaf460f Update FindComputeCpp.cmake to fix build problems on Windows
3ce18d3c8f Revert ".gitlab-ci.yml: initial commit"
c2ab36f47a Fix broken packetmath test for logistic on Arm.
537e2b322f Fix typo in previous update to generic predux_any.
fdc1cbdce3 Avoid implicit float equality comparison in generic predux_any, but use numext::not_equal_strict to avoid breaking builds that compile with -Werror=float-equal.
daf9bbeca2 Fix compilation error in logistic packet op.
6d2a9a524b Update run instructions for benchCholesky
029a76e115 Bug #1777: make the scalar and packet path consistent for the logistic function + respective unit test
99b7f7cb9c Fix #556: warnings with mingw
72782d13e0 Bug #1767: increase required cmake version to 3.5.0
867a756509 Fix #1833: compilation issue of "array!=scalar" with c++20
ab615e4114 Save one extra temporary when assigning a sparse product to a row-major sparse matrix
95177362ed .gitlab-ci.yml: initial commit
8d1302f566 Add support for PacketBlock<Packet8s,4> and PacketBlock<Packet16uc,4> ptranspose on NEON
8719b9c5bc Disable test for 32-bit systems (e.g. ARM, i386)
8e1df5b082 Fix incorrect usage of `if defined(EIGEN_ARCH_PPC)` => `if EIGEN_ARCH_PPC`
4e7046063b Fix #1874: it works on both MSVC 2017 and other platforms.
2d67af2d2b Add pscatter for Packet16{u}c (int8)
5328cd62b3 Guard usage of decltype since it's a C++11 feature
cc86a31e20 Add guard around specialization for bool, which is only currently implemented for SSE.
8a7f360ec3 - Vectorizing MMA packing. - Optimizing MMA kernel. - Adding PacketBlock store to blas_data_mapper.
a145e4adf5 Add newline at the end of StlIterators.h.
8ce9630ddb Fix #1874: workaround MSVC 2017 compilation issue.
9b411757ab Add missing packet ops for bool, and make it pass the same packet op unit tests as other arithmetic types.
d640276d31 Added support for reverse iterators for Vectorwise operations.
fa8fd4b4d5 Indexed view should have RowMajorBit when there is staticly a single row
a187ffea28 Resolve "IndexedView of a vector should allow linear access"
ba9d18b938 Add KLU support to spbenchsolver
5fdc179241 Altivec template functions to better code reusability
d3e81db6c5 Eigen moved the `scanLauncehr` function inside the internal namespace. This commit applies the following changes:     - Moving the `scamLauncher` specialization inside internal namespace to fix compiler crash on TensorScan for SYCL backend.     - Replacing  `SYCL/sycl.hpp` to `CL/sycl.hpp` in order to follow SYCL 1.2.1 standard.     - minor fixes: commenting out an unused variable to avoid compiler warnings.
c1d944dd91 Remove packet ops pinsertfirst and pinsertlast that are only used in a single place, and can be replaced by other ops when constructing the first/final packet in linspaced_op_impl::packetOp.
5c4e19fbe7 Possibility to specify user-defined default cache sizes for GEBP kernel
225ab040e0 Remove unused packet op "palign". Clean up a compiler warning in c++03 mode in AVX512/Complex.h.
74ec8e6618 Make size odd for transposeInPlace test to make sure we hit the scalar path.
49f1aeb60d Remove traits declaring NEON vectorized casts that do not actually have packet op implementations.
2fd8a5a08f Add parallelization of TensorScanOp for types without packet ops.
0e59f786e1 Fix accidental copy of loop variable.
7b76c85daf Vectorize and parallelize TensorScanOp.
a74a278abd Fix confusing template param name for Stride fwd decl.
923ee9aba3 Fix the embarrassingly incomplete fix to the embarrassing bug in blocked transpose.
a32923a439 Fix (embarrassing) bug in blocked transpose.
1e41406c36 Add missing transpose in cleanup loop. Without it, we trip an assertion in debug mode.
fbe7916c55 Fix compilation error with Clang on Android: _mm_extract_epi64 fails to compile.
82f54ad144 Fix perf monitoring merge function
ab773c7e91 Extend support for Packet16b:
b47c777993 Block transposeInPlace() when the matrix is real and square. This yields a large speedup because we transpose in registers (or L1 if we spill), instead of one packet at a time, which in the worst case makes the code write to the same cache line PacketSize times instead of once.
29f0917a43 Add support to vector instructions to Packet16uc and Packet16c
e80ec24357 Remove unused packet op "preduxp".
0aebe19aca BooleanRedux.h: Add more EIGEN_DEVICE_FUNC qualifiers.
3c02fefec5 Add async evaluation support to TensorSlicingOp.
0c67b855d2 Add Packet8s and Packet8us to support signed/unsigned int16/short Altivec vector operations
e8f40e4670 Fix bug in ptrue for Packet16b.
2f6ddaa25c Add partial vectorization for matrices and tensors of bool. This speeds up boolean operations on Tensors by up to 25x.
00f6340153 Update PreprocessorDirectives.dox - Added line for the new VectorwiseOp plugin directive (and re-alphabatized the plugin section)
5ab87d8aba Move eigen_packet_wrapper to GenericPacketMath.h and use it for SSE/AVX/AVX512 as it is already used for NEON. This will allow us to define multiple packet types backed by the same vector type, e.g., __m128i. Use this machanism to define packets for half and clean up the packet op implementations.
4aae8ac693 Fix typo in TypeCasting.h
1d674003b2 Fix big in vectorized casting of
b1aa07a8d3 Fix a bug in TensorIndexList.h
d46d726e9d CommaInitializer wrongfully asserted for 0-sized blocks commainitialier unit-test never actually called `test_block_recursion`, which also was not correctly implemented and would have caused too deep template recursion.
c854e189e6 Fixed commainitializer test.
39142904cc Resolve C4346 when building eigen on windows
f0577a2bfd Speed up matrix multiplication for small to medium size matrices by using half- or quarter-packet vectorized loads in gemm_pack_rhs if they have size 4, instead of dropping down the the scalar path.
8e875719b3 Replace norm() with squaredNorm() to address integer overflows
9dda5eb7d2 Missing struct definition in NumTraits
bcc0e9e15c Add numeric_limits min and max for bool
54a0a9c9dd Bugfix: conjugate_gradient did not compile with lazy-evaluated RealScalar
4fd5d1477b Fix packetmath test build for AVX.
393dbd8ee9 Fix bug in https://gitlab.com/libeigen/eigen/-/commit/52d54278beefee8b2f19dcca4fd900916154e174
55c8fe8d0f Fix bug in https://gitlab.com/libeigen/eigen/-/commit/52d54278beefee8b2f19dcca4fd900916154e174
6d2dbfc453 NEON: Fixed MSVC types definitions
52d54278be Additional NEON packet-math operations
deb93ed1bf Adhere to recommended load/store intrinsics for pp64le
5c22c7a7de Make file formatting comply with POSIX and Unix standards
5afdaa473a Fixing float32's pround halfway criteria to match STL's criteria.
96cd1ff718 Fixed: - access violation when initializing 0x0 matrices - exception can be thrown during stack unwind while comma-initializing a matrix if eigen_assert if configured to throw
cc954777f2 Update VectorwiseOp.h to allow Plugins similar to MatrixBase.h or ArrayBase.h
55ecd58a3c Bug https://gitlab.com/libeigen/eigen/-/issues/1415: add missing EIGEN_DEVICE_FUNC to diagonal_product_evaluator_base.
4da2c6b197 Remove reference to non-existent unary_op_base class.
eda90baf35 Add missing arguments to numext::absdiff().
d5c665742b Add absolute_difference coefficient-wise binary Array function
6ff5a14091 Reenabling packetmath unsigned tests, adding dummy pabs for relevant unsigned types.
232f904082 Add shift_left<N> and shift_right<N> coefficient-wise unary Array functions
54aa8fa186 Implement integer square-root for NEON
37ccb86916 Update NullaryFunctors.h
7158ed4e0e Fixing HIP breakage caused by the recent commit that introduces Packet4h2 as the Eigen::Half packet type
d53ae40f7b NEON: Added int64_t and uint64_t packet math
4b9ecf2924 NEON: Added int8_t and uint8_t packet math
ceaabd4e16 NEON: Added int16_t and uint16_t packet math
d5d3cf9339 NEON: Added uint32_t packet math
eacf97f727 NEON: Implemented half-size vectors
5f411b729e NEON: Set packet_traits<double> flags
88337acae2 test/packetmath: Add tests for all integer types
9e68977578 test/packetmath: Made negate non-mandatory
b733b8b680 remove duplicate pset1 for half and add some comments about why we need expose pmul/add/div/min/max on host
a45d28256d Don't restrict CMAKE_BUILD_TYPE
98bfc5aaa8 Update MarketIO.h
52a2fbbb00 Revert "avoid selecting half-packets when unnecessary"
235bcfe08d Revert "Pick full packet unconditionally when EIGEN_UNALIGNED_VECTORIZE"
d7a42eade6 Revert "do not pick full-packet if it'd result in more operations"
6ac37768a9 Revert "add some static checks for packet-picking logic"
87cfa4862f Revert "Disable test in test/vectorization_logic.cpp, which is currently failing with AVX."
b625adffd8 Disable test in test/vectorization_logic.cpp, which is currently failing with AVX.
f0ce88cff7 Include <sstream> explicitly, and don't rely on the implicit include via <complex>.
eb6cc29583 Avoid a division in NonBlockingThreadPool::Steal.
7769600245 add some static checks for packet-picking logic
e9cc0cd353 do not pick full-packet if it'd result in more operations
44df2109c8 Pick full packet unconditionally when EIGEN_UNALIGNED_VECTORIZE
5ca10480b0 avoid selecting half-packets when unnecessary
f584bd9b30 Fail at compile time if default executor tries to use non-default device
3fda850c46 Remove dead code from TensorReduction.h
b5df8cabd7 fix hip-clang compilation due to new HIP scalar accessor
6d284bb1b7 Fix for HIP breakage - 200115. Adding a missing EIGEN_DEVICE_FUNC attr
f6c6de5d63 Ensure Igamma does not NaN or Inf for large values.
6601abce86 Remove rogue include in TypeCasting.h. Meta.h is already included by the top-level header in Eigen/Core.
b9362fb8f7 Convert StridedLinearBufferCopy::Kind to enum class
5a8b97b401 Switching unpacket_traits<Packet4i> to vectorizable=true.
42838c28b8 Adding correct cache sizes for PPC architecture.
1d0c45122a Removing executable bit from file mode
35219cea68 Bug #1790: Make `areApprox` check `numext::isnan` instead of bitwise equality (NaNs don't have to be bitwise equal).
2e099e8d8f Added special_packetmath test and tweaked bounds on tests. Refactor shared packetmath code to header file. (Squashed from PR !38)
e1ecfc162d call Explicitly ::rint and ::rintf for targets without c++11. Without this, the Windows build breaks when trying to compile numext::rint<double>.
da5a7afed0 Improvements to the tidiness and completeness of the NEON implementation
452371cead Fix for gcc build error when using Eigen headers with AVX512
601f89dfd0 Adding RInt vector support for SYCL.
2ea5a715cf Properly initialize b vector in SplineFitting
9254974115 Don't add EIGEN_DEVICE_FUNC to random() since ::rand is not available in Cuda.
a3ec89b5bd Add missing EIGEN_DEVICE_FUNC annotations in MathFunctions.h.
8333e03590 Use data.data() instead of &data (since it is not obvious that Array is trivially copyable)
e6fcee995b Don't use the rational approximation to the logistic function on GPUs as it appears to be slightly slower.
4217a9f090 The upper limits for where to use the rational approximation to the logistic function were not set carefully enough in the original commit, and some arguments would cause the function to return values greater than 1. This change set the versions found by scanning all floating point numbers (using std::nextafterf()).
9623c0c4b9 Fix formatting
19876ced76 Bug #1785: Introduce numext::rint.
d0ae052da4 [SYCL Backend]  * Adding Missing operations for vector comparison in SYCL. This caused compiler error for vector comparison when compiling SYCL  * Fixing the compiler error for placement new in TensorForcedEval.h This caused compiler error when compiling SYCL backend  * Reducing the SYCL warning by  removing the abort function inside the kernel  * Adding Strong inline to functions inside SYCL interop.
eedb7eeacf Protecting integer_types's long long test with a check to see if we have CXX11 support.
bcbaad6d87 Bug #1800: Guard against misleading indentation
00de570793 Fix -Werror -Wfloat-conversion warning.
636e2bb3fa Fix for HIP breakage - 191220
1e9664b147 Bug #1796: Make matrix squareroot usable for Map and Ref types
d86544d654 Reduce code duplication and avoid confusing Doxygen
dde279f57d Hide recursive meta templates from Doxygen
c21771ac04 Use double-braces initialization (as everywhere else in the test-suite).
a3273aeff8 Fix trivial shadow warning
870e53c0f2 Bug #1788: Fix rule-of-three violations inside the stable modules. This fixes deprecated-copy warnings when compiling with GCC>=9 Also protect some additional Base-constructors from getting called by user code code (#1587)
6965f6de7f Fix unit-test which I broke in previous fix
7a65219a2e Fix TensorPadding bug in squeezed reads from inner dimension
73e55525e5 Return const data pointer from TensorRef evaluator.data()
ae07801dd8 Tensor block evaluation cost model
72166d0e6e Fix some maybe-unitialized warnings
5a3eaf88ac Workaround class-memaccess warnings on newer GCC versions
de07c4d1c2 fix compilation due to new HIP scalar accessor
788bef6ab5 Reduce block evaluation overhead for small tensor expressions
7252163335 Add default definition for EIGEN_PREDICT_*
a566074480 Improve accuracy of fast approximate tanh and the logistic functions in Eigen, such that they preserve relative accuracy to within a few ULPs where their function values tend to zero (around x=0 for tanh, and for large negative x for the logistic function).
8e5da71466 Resolve double-promotion warnings when compiling with clang. `sin` was calling `sin(double)` instead of `std::sin(float)`
9b7a2b43c2 Renamed .hgignore to .gitignore (removing hg-specific "syntax" line)
06e99aaf40 Bug 1785: fix pround on x86 to use the same rounding mode as std::round.
73a8d572f5 Clamp tanh approximation outside [-c, c] where c is the smallest value where the approximation is exactly +/-1. Without FMA, c = 7.90531110763549805, with FMA c = 7.99881172180175781.
88062b7fed Fix implementation of complex expm1. Add tests that fail with previous implementation, but pass with the current one.
381f8f3139 Initialize non-trivially constructible types when allocating a temp buffer.
64272c7f40 Squeeze reads from two inner dimensions in TensorPadding
963ba1015b Add back accidentally deleted default constructor to TensorExecutorTilingContext.
1b6e0395e6 Added io test
3c0ef9f394 IO: Fixed printing of char and unsigned char matrices
e87af0ed37 Added Eigen::numext typedefs for uint8_t, int8_t, uint16_t and int16_t
15b3bcfca0 Bug 1786: fix compilation with MSVC
c9220c035f Remove block memory allocation required by removed block evaluation API
1c879eb010 Remove V2 suffix from TensorBlock
dbca11e880 Remove TensorBlock.h and old TensorBlock/BlockMapper
c49f0d851a Fix for HIP breakage detected on 191210
2918f85ba9 Do not use std::vector in getResourceRequirements
8056a05b54 Undo the block size change.
dbb703d44e Add async evaluation support to TensorSelectOp
11d6465326 fix AlignedVector3 inconsisent interface with other Vector classes, default constructor and operator- were missing.
bb7ccac3af Add recursive work splitting to EvalShardedByInnerDimContext
25230d1862 Improve performance of contraction kernels
08eeb648ea update hg to git hashes
366cf005b0 Add missing initialization in cxx11_tensor_trace.cpp.
c488b8b32f Replace calls to "hg" by calls to "git"
8fbe0e4699 Update old links to bitbucket to point to gitlab.com
114a15c66a Added tag before-git-migration for changeset a7c7d329d89e8484be58df6078a586c44523db37
a7c7d329d8 Merged in ezhulenev/eigen-01 (pull request PR-769)
cacf433975 Merged in anshuljl/eigen-2/Anshul-Jaiswal/update-configurevectorizationh-to-not-op-1573079916090 (pull request PR-754)
8f4536e852 Capture TensorMap by value inside tensor expression AST
4e696901f8 Remove __host__ annotation for device-only function.
ead81559c8 Use EIGEN_DEVICE_FUNC macro instead of __device__.
6358599ecb Fix QuaternionBase::cast for quaternion map and wrapper.
7745f69013 bug #1776: fix vector-wise STL iterator's operator-> using a proxy as pointer type. This changeset fixes also the value_type definition.
66f07efeae Revert the specialization for scalar_logistic_op<float> introduced in:
3b15373bb3 Merged in ezhulenev/eigen-02 (pull request PR-767)
312c8e77ff Fix for the HIP build+test errors.
956131d0e6 Merged in codeplaysoftware/eigen/SYCL-Backend (pull request PR-691)
00f32752f7 [SYCL] Rebasing the SYCL support branch on top of the Einge upstream master branch. * Unifying all loadLocalTile from lhs and rhs to an extract_block function. * Adding get_tensor operation which was missing in TensorContractionMapper. * Adding the -D method missing from cmake for Disable_Skinny Contraction operation. * Wrapping all the indices in TensorScanSycl into Scan parameter struct. * Fixing typo in Device SYCL * Unifying load to private register for tall/skinny no shared * Unifying load to vector tile for tensor-vector/vector-tensor operation * Removing all the LHS/RHS class for extracting data from global * Removing Outputfunction from TensorContractionSkinnyNoshared. * Combining the local memory version of tall/skinny and normal tensor contraction into one kernel. * Combining the no-local memory version of tall/skinny and normal tensor contraction into one kernel. * Combining General Tensor-Vector and VectorTensor contraction into one kernel. * Making double buffering optional for Tensor contraction when local memory is version is used. * Modifying benchmark to accept custom Reduction Sizes * Disabling AVX optimization for SYCL backend on the host to allow SSE optimization to the host * Adding Test for SYCL * Modifying SYCL CMake
82a47338df Fix shadow warnings in AlignedBox and SparseBlock
ea51a9eace Add missing EIGEN_DEVICE_FUNC attribute to template specializations for pexp to fix GPU build.
5a3ebda36b Fix warning due to missing cast for exponent arguments for std::frexp and std::lexp.
2df57be856 Merged in realjhol/eigen/fix-warnings (pull request PR-760)
5496d0da0b Add async evaluation support to TensorReverse
bc66c88255 Add async evaluation support to TensorPadding/TensorImagePatch/TensorShuffling
c79b6ffe1f Add an explicit example for auto and re-evaluation
e78ed6e7f3 COMP: Simplify install commands for Eigen
9d5cdc98c3 COMP: target_compile_definitions requires cmake 2.8.11
e5778b87b9 Fix duplicate symbol linking error.
86eb41f1cb SparseRef: Fixed alignment warning on ARM GCC
c1a67cb5af Update ConfigureVectorization.h to not optimize fp16 routines when compiling with cuda.
cc3d0e6a40 Add EIGEN_HAS_INTRINSIC_INT128 macro
ee404667e2 Rollback or PR-746 and partial rollback of https://bitbucket.org/eigen/eigen/commits/668ab3fc474e54c7919eda4fbaf11f3a99246494 .
743c925286 test/packetmath: Silence alignment warnings
0c9745903a Merged in ezhulenev/eigen-01 (pull request PR-746)
8c8cab1afd STYLE: Convert CMake-language commands to lower case
6fb3e5f176 STYLE: Remove CMake-language block-end command arguments
f1e8307308 1. Fix a bug in psqrt and make it return 0 for +inf arguments. 2. Simplify handling of special cases by taking advantage of the fact that the    builtin vrsqrt approximation handles negative, zero and +inf arguments correctly.    This speeds up the SSE and AVX implementations by ~20%. 3. Make the Newton-Raphson formula used for rsqrt more numerically robust:
2cb2915f90 bug #1744: fix compilation with MSVC 2017 and AVX512, plog1p/pexpm1 require plog/pexp, but the later was disabled on some compilers
c3f6fcf2c0 bug #1747: one more fix for MSVC regarding the Bessel implementation.
b9837ca9ae bug #1281: fix AutoDiffScalar's make_coherent for nested expression of constant ADs.
0fb6e24408 Fix case issue with Lapack unit tests
8af045a287 bug #1774: fix VectorwiseOp::begin()/end() return types regarding constness.
75b4c0a3e0 PR 751: Fixed compilation issue when compiling using MSVC with /arch:AVX512 flag
8496f86f84 Enable CompleteOrthogonalDecomposition::pseudoInverse with non-square fixed-size matrices.
002e5b6db6 Move to my.cdash.org
13c3327f5c Remove legacy block evaluation support
71aa53dd6d Disable AVX on broken xcode versions. See PR 748. Patch adapted from Hans Johnson's PR 748.
0ed0338593 Fix a race in async tensor evaluation: Don't run on_done() until after device.deallocate() / evaluator.cleanup() complete, since the device might be destroyed after on_done() runs.
c952b8dfda Break loop dependence in TensorGenerator block access
ebf04fb3e8 Fix data race in css11_tensor_notification test.
73ecb2c57d Cleanup includes in Tensor module after switch to C++11 and above
e7ed4bd388 Remove internal::smart_copy and replace with std::copy
fbc0a9a3ec Fix CXX11Meta compilation with MSVC
bd864ab42b Prevent potential ODR in TensorExecutor
6332aff0b2 This PR fixes: * The specialization of array class in the different namespace for GCC<=6.4 * The implicit call to `std::array` constructor using the initializer list for GCC <=6.1
8e4e29ae99 Merged in deven-amd/eigen-hip-fix-191018 (pull request PR-738)
97c0c5d485 Add block evaluation V2 to TensorAsyncExecutor. Add async evaluation to a number of ops.
102cf2a72d Fix for the HIP build+test errors.
668ab3fc47 Drop support for c++03 in Eigen tensor. Get rid of some code used to emulate c++11 functionality with older compilers.
df0e8b8137 Propagate block evaluation preference through rvalue tensor expressions
0d2a14ce11 Cleanup Tensor block destination and materialized block storage allocation
02431cbe71 TensorBroadcasting support for random/uniform blocks
d380c23b2c Block evaluation for TensorGenerator/TensorReverse/TensorShuffling
39fb9eeccf bug #1747: fix compilation with MSVC
a411e9f344 Block evaluation for TensorGenerator + TensorReverse + fixed bug in tensor reverse op
b03eb63d7c Merged in ezhulenev/eigen-01 (pull request PR-726)
e7d8ba747c bug #1752: make is_convertible equivalent to the std c++11 equivalent and fallback to std::is_convertible when c++11 is enabled.
fb557aec5c bug #1752: disable some is_convertible tests for recent compilers.
33e1746139 Block evaluation for TensorChipping + fixed bugs in TensorPadding and TensorSlicing
f0a4642bab Implement c++03 compatible fix for changeset 7a43af1a335da2c0489b4119a33ee1cbff0c15d6
196de2efe3 Explicitly bypass resize and memmoves when there is already the exact right number of elements available.
36da231a41 Disable an expected warning in unit test
d1def335dc fix one more possible conflicts with real/imag
87427d2eaa PR 719: fix real/imag namespace conflict
7a43af1a33 Fix compilation of FFTW unit test
f74ab8cb8d Add block evaluation to TensorEvalTo and fix few small bugs
3afb640b56 Fixing incorrect size in Tensor documentation.
20c4a9118f Use "pdiv" rather than operator/ to support packet types.
d1dd51cb5f Merged in ezhulenev/eigen-01 (pull request PR-723)
98bdd7252e Fix compilation warnings and errors with clang in TensorBlockV2 code and tests
fab4e3a753 Address comments on Chebyshev evaluation code:
60ae24ee1a Add block evaluation to TensorReshaping/TensorCasting/TensorPadding/TensorSelect
6e40454a6e Add beta to TensorContractionKernel and make memset optional
bd0fac456f Prevent infinite loop in the nvcc compiler while unrolling the recurrent templates for Chebyshev polynomial evaluation.
9549ba8313 Fix perf issue in SimplicialLDLT::solve for complexes (again, m_diag is real)
c8b2c603b0 Fix speed issue with SimplicialLDLT for complexes: the diagonal is real!
13ef08e5ac Move implementation of vectorized error function erf() to SpecialFunctionsImpl.h.
7c8bc0d928 Fix cxx11_tensor_block_io test
0c845e28c9 Fix erf in c++03
71d5bedf72 Fix compilation warnings and errors with clang in TensorBlockV2
5e186b1987 Fix for the HIP build+test errors.
f35b9ab510 Fix a bug in a packed block type in TensorContractionThreadPool
d38e6fbc27 Merged in rmlarsen/eigen (pull request PR-704)
591a554c68 Add TODO to cleanup FMA cost modelling.
c64396b4c6 Choose TensorBlock StridedLinearCopy type statically
c97b208468 Add new TensorBlock api implementation + tests
ef9dfee7bd Tensor block evaluation V2 support for unary/binary/broadcsting
efd9867ff0 bug #1746: Removed implementation of standard copy-constructor and standard copy-assign-operator from PermutationMatrix and Transpositions to allow malloc-less std::move. Added unit-test to rvalue_types
e4c1b3c1d2 Fix implicit conversion warnings and use pnegate to negate packets
ba0736fa8e Fix (or mask away) conversion warnings introduced in 553caeb6a3bb545aef895f8fc9f219be44679017 .
1d5af0693c Add support for asynchronous evaluation of tensor casting expressions.
6de5ed08d8 Add generic PacketMath implementation of the Error Function (erf).
28b6786498 Fix build on setups without AVX512DQ.
e02d429637 Fix for the HIP build+test errors.
df0816b71f Merging eigen/eigen.
6e215cf109 Add Bessel functions to SpecialFunctions.
7c73296849 Revert accidental change to GCC diagnostics
bf8866b466 Fix maybe-unitialized warnings in TensorContractionThreadPool
553caeb6a3 Use ThreadLocal container in TensorContractionThreadPool
facdec5aa7 Add packetized versions of i0e and i1e special functions.   - In particular refactor the i0e and i1e code so scalar and vectorized path share code.   - Move chebevl to GenericPacketMathFunctions.
b052ec6992 Merged eigen/eigen into default
cdb377d0cb Fix for the HIP build+test errors introduced by the ndtri support.
747c6a51ca bug #1736: fix compilation issue with A(all,{1,2}).col(j) by implementing true compile-time "if" for block_evaluator<>::coeff(i)/coeffRef(i)
031f17117d bug #1741: fix self-adjoint*matrix, triangular*matrix, and triangular^1*matrix with a destination having a non-trivial inner-stride
459b2bcc08 Fix compilation of BLAS backend and frontend
97f1e1d89f Merged in ezhulenev/eigen-01 (pull request PR-698)
d918bd9a8b Update ThreadLocal to use separate Initialize/Release callables
afa8d13532 Fix some implicit literal to Scalar conversions in SparseCore
c06e6fd115 bug #1741: fix SelfAdjointView::rankUpdate and product to triangular part for destination with non-trivial inner stride
ea0d5dc956 bug #1741: fix C.noalias() = A*C; with C.innerStride()!=1
e3dec4dcc1 ThreadLocal container that does not rely on thread local storage
17226100c5 Fix a circular dependency regarding pshift* functions and GenericPacketMathFunctions. Another solution would have been to make pshift* fully generic template functions with partial specialization which is always a mess in c++03.
55b63d4ea3 Fix compilation without vector engine available (e.g., x86 with SSE disabled): -> ppolevl is required by ndtri even for the scalar path
a9cf823db7 Merged eigen/eigen
e6c183f8fd Fix doc issues regarding ndtri
5702a57926 Fix possible warning regarding strict equality comparisons
99036a3615 Merging from eigen/eigen.
a8d264fa9c Add test for const TensorMap underlying data mutation
f68f2bba09 TensorMap constness should not change underlying storage constness
8e7e3d9bc8 Makes Scalar/RealScalar typedefs public in Pardiso's wrappers (see PR 688)
e38dd48a27 PR 681: Add ndtri function, the inverse of the normal distribution function.
f59bed7a13 Change typedefs from private to protected to fix MSVC compilation
47fefa235f Allow move-only done callback in TensorAsyncDevice
18ceb3413d Add ndtri function, the inverse of the normal distribution function.
d55d392e7b Fix bugs in log1p and expm1 where repeated using statements would clobber each other. Add specializations for complex types since std::log1p and std::exp1m do not support complex.
85928e5f47 Guard against repeated definition of EIGEN_MPL2_ONLY
facc4e4536 Disable tests for contraction with output kernels when using libxsmm, which does not support this.
eab7e52db2 [Eigen] Vectorize evaluation of coefficient-wise functions over tensor blocks if the strides are known to be 1. Provides up to 20-25% speedup of the TF cross entropy op with AVX.
0987126165 Clean up unnecessary namespace specifiers in TensorBlock.h.
0050644b23 Fix doc regarding alignment and c++17
e2999d4c38 Fix performance regressions due to https://bitbucket.org/eigen/eigen/pull-requests/662.
c694be1214 Fixed Tensor documentation formatting.
15f3d9d272 More colamd cleanup: - Move colamd implementation in its own namespace to avoid polluting the internal namespace with Ok, Status, etc. - Fix signed/unsigned warning - move some ugly free functions as member functions
a4d1a6cd7d Eigen_Colamd.h updated to replace constexpr with consts and enums.
283558face Ordering.h edited to fix dependencies on Eigen_Colamd.h
39f30923c2 Eigen_Colamd.h edited replacing macros with constexprs and functions.
0a6b553ecf Eigen_Colamd.h edited online with Bitbucket replacing constant #defines with const definitions
f22b7283a3 Added leading asterisk for Doxygen to consume as it was removing asterisk intended to be part of the code.
6e17491f45 Fix typo in Umeyama method documentation
e0f5a2a456 Remove {} accidentally added in previous commit
ea6d7eb32f Move variadic constructors outside `#ifndef EIGEN_PARSED_BY_DOXYGEN` block, to make it actually appear in the generated documentation.
9237883ff1 Escape \# inside doxygen docu
c2671e5315 Build deprecated snippets with -DEIGEN_NO_DEPRECATED_WARNING Also, document LinSpaced only where it is implemented
3cd148f983 Fix expression evaluation heuristic for TensorSliceOp
23b958818e Fix compiler for unsigned integers.
6083014594 Add outer/inner chipping optimization for chipping dimension specified at runtime
7eb2e0a95b adding the EIGEN_DEVICE_FUNC attribute to the constCast routine.
ef8aca6a89 Merged in codeplaysoftware/eigen (pull request PR-667)
4ac93f8edc Allocate non-const scalar buffer for block evaluation with DefaultDevice
9ea490c82c [SYCL] :   * Modifying TensorDeviceSYCL to use `EIGEN_THROW_X`.   * Modifying TensorMacro to use `EIGEN_TRY/CATCH(X)` macro.   * Modifying TensorReverse.h to use `EIGEN_DEVICE_REF` instead of `&`.   * Fixing the SYCL device macro in SpecialFunctionsImpl.h.
81a03bec75 Fix TensorReverse on GPU with m_stride[i]==0
8053eeb51e Fix CUDA compilation error for pselect<half>.
74a9dd1102 Fix preprocessor condition to only generate a warning when calling eigen::GpuDevice::synchronize() from device code, but not when calling from a non-GPU compilation unit.
70d4020ad9 Remove comma causing warning in c++03 mode.
6e7c76481a Merge with Eigen head
878845cb25 Add block access to TensorReverseOp and make sure that TensorForcedEval uses block access when preferred
1f61aee5ca [SYCL] This PR adds the minimum modifications to the Eigen unsupported module required to run it on devices supporting SYCL. * Abstracting the pointer type so that both SYCL memory and pointer can be captured. * Converting SYCL virtual pointer to SYCL device memory in Eigen evaluator class. * Binding SYCL placeholder accessor to command group handler by using bind method in Eigen evaluator node. * Adding SYCL macro for controlling loop unrolling. * Modifying the TensorDeviceSycl.h and SYCL executor method to adopt the above changes.
7d08fa805a [SYCL] This PR adds the minimum modifications to the Eigen unsupported module required to run it on devices supporting SYCL. * Abstracting the pointer type so that both SYCL memory and pointer can be captured. * Converting SYCL virtual pointer to SYCL device memory in Eigen evaluator class. * Binding SYCL placeholder accessor to command group handler by using bind method in Eigen evaluator node. * Adding SYCL macro for controlling loop unrolling. * Modifying the TensorDeviceSycl.h and SYCL executor method to adopt the above changes.
16a56b2ddd [SYCL] This PR adds the minimum modifications to Eigen core required to run Eigen unsupported modules on devices supporting SYCL. * Adding SYCL memory model * Enabling/Disabling SYCL  backend in Core *  Supporting Vectorization
adec097c61 Remove extra comma (causes warnings in C++03)
229db81572 Optimize evaluation strategy for TensorSlicingOp and TensorChippingOp
ba506d5bd2 fix for a ROCm/HIP specificcompile errror introduced by a recent commit.
c9394d7a0e Remove extra "one" in comment.
b8f8dac4eb Update comment as suggested by tra@google.com.
e5e63c2cad Fix grammar.
302a404b7e Added comment explaining the surprising EIGEN_COMP_CLANG && !EIGEN_COMP_NVCC clause.
b5237f53b1 Fix CUDA build on Mac.
988f24b730 Various fixes for packet ops. 1. Fix buggy pcmp_eq and unit test for half types. 2. Add unit test for pselect and add specializations for SSE 4.1, AVX512, and half types. 3. Get rid of FIXME: Implement faster pnegate for half by XOR'ing with a sign bit mask.
e0be7f30e1 bug #1724: Mask buggy warnings with g++-7 (grafted from 427f2f66d69ae9b124c2f8bcd927fb6e19e07e91 )
fab51d133e Updated Eigen_Colamd.h, namespacing macros ALIVE & DEAD as COLAMD_ALIVE & COLAMD_DEAD to prevent conflicts with other libraries / code.
79c402e40e Fix shadow warnings in TensorContractionThreadPool
edf2ec28d8 Fix block mapper type name in TensorExecutor
f0b36fb9a4 evalSubExprsIfNeededAsync + async TensorContractionThreadPool
619cea9491 Revert accidentally removed <memory> header from ThreadPool
66665e7e76 Asynchronous expression evaluation with TensorAsyncDevice
f6c51d9209 Fix missing header inclusion and colliding definitions for half type casting, which broke build with -march=native on Haswell/Skylake.
bc40d4522c Const correctness in TensorMap<const Tensor<T, ...>> expressions
1187bb65ad Add more tests for corner cases of log1p and expm1. Add handling of infinite arguments to log1p such that log1p(inf) = inf.
6e77f9bef3 Remove shadow warnings in TensorDeviceThreadPool
9aba527405 Revert changes to std_falback::log1p that broke handling of arguments less than -1. Fix packet op accordingly.
b021cdea6d Clean up float16 a.k.a. Eigen::half support in Eigen. Move the definition of half to Core/arch/Default and move arch-specific packet ops to their respective sub-directories.
84fefdf321 Merged in ezhulenev/eigen-01 (pull request PR-683)
8b5ab0e4dd Fix get_random_seed on Native Client
6901788013 Asynchronous parallelFor in Eigen ThreadPoolDevice
2fb24384c9 Merged in jaopaulolc/eigen (pull request PR-679)
57f6b62597 Merged in rmlarsen/eigen (pull request PR-680)
071311821e Remove XSMM support from Tensor module
5ac7984ffa Fix debug macros in p{load,store}u
db9147ae40 Add missing pcmp_XX methods for double/Packet2d
a3298b22ec Implement vectorized versions of log1p and expm1 in Eigen using Kahan's formulas, and change the scalar implementations to properly handle infinite arguments.
787f6ef025 Fix packed load/store for PowerPC's VSX
4d29aa0294 Fix offset argument of ploadu/pstoreu for Altivec
66d073c38e bug #1718: Add cast to successfully compile with clang on PowerPC
6d432eae5d Make is_valid_index_type return false for float and double when EIGEN_HAS_TYPE_TRAITS is off.
f715f6e816 Add workaround for choosing the right include files with FP16C support with clang.
ffaf658ecd PR 655: Fix missing Eigen namespace in Macros
0b24e1cb5c [SYCL] Adding the SYCL memory model. The SYCL memory model provides :   * an interface for SYCL buffers to behave as a non-dereferenceable pointer   * an interface for placeholder accessor to behave like a pointer on both host and device
c1b0aea653 Merged in Artem-B/eigen (pull request PR-654)
b08527b0c1 Clean up CUDA/NVCC version macros and their use in Eigen, and a few other CUDA build failures.
b4c49bf00e Minor build improvements
5614400581 digits10() needs to return an integer Problem reported on https://stackoverflow.com/questions/56395899
36e0a2b93f Merged in deven-amd/eigen-hip-fix-190524 (pull request PR-649)
2c38930161 fix for HIP build errors that were introduced by a commit earlier this week
56bc4974fb GEMV: remove double declaration of constant.
ac21a08c13 Cast Index to RealScalar This fixes compilation issues with RealScalar types that are not implicitly castable from Index (e.g. ceres Jet types). Reported by Peter Anderson-Sprecher via eMail
3eb5ad0ed0 Enable support for F16C with Clang. The required intrinsics were added here: https://reviews.llvm.org/D16177 and are part of LLVM 3.8.0.
e92486b8c3 Merged in rmlarsen/eigen (pull request PR-643)
fd595d42a7 Merge
cc7ecbb124 Merged in scramsby/eigen (pull request PR-646)
01654d97fa Prevent potential division by zero in TensorExecutor
78d3015722 Merged in ezhulenev/eigen-01 (pull request PR-644)
bf9cbed8d0 Merged in glchaves/eigen (pull request PR-635)
96a276803c Always evaluate Tensor expressions with broadcasting via tiled evaluation code path
ab0a30e429 Make Eigen build with cuda 10 and clang.
734a50dc60 Make Eigen build with cuda 10 and clang.
c8d8d5c0fc Merged in rmlarsen/eigen_threadpool (pull request PR-640)
5f32b79edc Collapsed revision from PR-641 * SparseLU.h - corrected example, it didn't compile * Changed encoding back to UTF8
ad372084f5 Removing unused API to fix compile error in TensorFlow due to  AVX512VL, AVX512BW usage
4ccd1ece92 bug #1707: Fix deprecation warnings, or disable warnings when testing deprecated functions
d3ef7cf03e Fix build with clang on Windows.
e5ac8cbd7a A) fix deadlocks in thread pool caused by EventCount
c5019f722b Use pade for matrix exponential also for complex values.
45b40d91ca Fix AVX512 & GCC 6.3 compilation
e6667a7060 Fix stupid shadow-warnings (with old clang versions)
e54dc24d62 Restore C++03 compatibility
cca76c272c Restore C++03 compatibility
8e33844fc7 Fix traits for scalar_logistic_op.
ff06ef7584 Eigen: Fix MSVC C++17 language standard detection logic To detect C++17 support, use _MSVC_LANG macro instead of _MSC_VER. _MSC_VER can indicate whether the current compiler version could support the C++17 language standard, but not whether that standard is actually selected (i.e. via /std:c++17). See these web pages for more details: https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/ https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros
e9f0eb8a5e Add masked_store_available to unpacket_traits
96e30e936a Add masked pstoreu for Packet16h
b4010f02f9 Add masked pstoreu to AVX and AVX512 PacketMath
578407f42f Fix regression in changeset ae33e866c750c6c24ada5c6f7f3ec15815d0e683
ac50afaffa Merged in ezhulenev/eigen-01 (pull request PR-633)
d4dcb71bcb Speed up GEMV on AVX-512 builds, just as done for GEBP previously.
ae33e866c7 Fix compilation with PGI version 19
665ac22cc6 Merged in ezhulenev/eigen-01 (pull request PR-632)
01d7e6ee9b Check if gpu_assert was overridden in TensorGpuHipCudaDefines
8ead5bb3d8 Fix doxygen warnings to enable statis code analysis
07355d47c6 Get rid of SequentialLinSpacedReturnType deprecation warnings in DenseBase.h
144ca33321 Remove deprecation annotation from typedef Eigen::Index Index, as it would generate too many build warnings.
a7b7f3ca8a Add missing EIGEN_DEPRECATED annotations to deprecated functions and fix few other doxygen warnings
68a2a8c445 Use packet ops instead of AVX2 intrinsics
8c7a6feb8e Adding lowlevel APIs for optimized RHS packet load in TensorFlow  SpatialConvolution
4270c62812 Split the implementation of i?amax/min into two. Based on PR-627 by Sameer Agarwal. Like the Netlib reference implementation, I*AMAX now uses the L1-norm instead of the L2-norm for each element. Changed I*MIN accordingly.
039ee52125 Tweak cost model for tensor contraction when parallelizing over the inner dimension.
9a3f06d836 Update TheadPoolDevice example to include ThreadPool creation and passing pointer into constructor.
66a885b61e adding EIGEN_DEVICE_FUNC to the recently added TensorContractionKernel constructor. Not having the EIGEN_DEVICE_FUNC attribute on it was leading to compiler errors when compiling Eigen in the ROCm/HIP path
629ddebd15 Add missing semicolon
4e2f6de1a8 Add support for custom packed Lhs/Rhs blocks in tensor contractions
45e65fbb77 bug #1695: fix a numerical robustness issue. Computing the secular equation at the middle range without a shift might give a wrong sign.
8de66719f9 Collapsed revision from PR-619 * Add support for pcmp_eq in AltiVec/Complex.h * Fixed implementation of pcmp_eq for double
f11364290e ICC does not support -fno-unsafe-math-optimizations
3031d57200 PR 621: Fix documentation of EIGEN_COMP_EMSCRIPTEN
51e399fc15 updates requested in the PR feedback. Also droping coded within #ifdef EIGEN_HAS_OLD_HIP_FP16
2dbea5510f Merged eigen/eigen into default
5c93b38c5f Merged in rmlarsen/eigen (pull request PR-618)
48898a988a fix unit test in c++03: c++03 does not allow passing local or anonymous enum as template param
cf7e2e277f bug #1692: enable enum as sizes of Matrix and Array
e42f9aa68a Make clipping outside [-18:18] consistent for vectorized and non-vectorized paths of scalar_logistic_<float>.
1936aac43f Merged in tellenbach/eigen/sykline_consistent_include_guards (pull request PR-617)
bd9c2ae3fd Fix include guard comments
8450a6d519 Clean up half packet traits and add a few more missing packet ops.
b013176e52 Remove undefined std::complex<int>
97f9a46cb9 PR 593: Add variadtic ctor for DiagonalMatrix with unit tests
45ab514fe2 revert debug stuff
6a34003141 Remove EIGEN_MPL2_ONLY guard in IncompleteCholesky that is no longer needed after the AMD reordering code was relicensed to MPL2.
d7d2f0680e bug #1684: partially workaround clang's 6/7 bug #40815
690f0795d0 Merged in rmlarsen/eigen (pull request PR-615)
1901433674 erm.. use proper id
90302aa8c9 update tracking code
77f7d4a894 Clean up PacketMathHalf.h and add a few missing logical packet ops.
001f10e3c9 Fix segfaults with cuda compilation
899c16fa2c Fix a bug in TensorGenerator for 1d tensors
0f8bfff23d Fix a data race in NonBlockingThreadPool
656d9bc66b Apply SSE's pmin/pmax fix for GCC <= 5 to AVX's pmin/pmax
2df4f00246 Change license from LGPL to MPL2 with agreement from David Harmon.
3c3f639fe2 Merge.
f4ec8edea8 Add macro EIGEN_AVOID_THREAD_LOCAL to make it possible to manually disable the use of thread_local.
41cdc370d0 Fix placement of "#if defined(EIGEN_GPUCC)" guard region.
cc407c9d4d Fix placement of "#if defined(EIGEN_GPUCC)" guard region.
1bc2a0a57c Add missing return to NonBlockingThreadPool::LocalSteal
4e4dcd9026 Remove redundant steal loop
4d808e834a Merged in rmlarsen/eigen_threadpool (pull request PR-606)
2ea18e505f Merged in ezhulenev/eigen-01 (pull request PR-610)
25abaa2e41 Check that inner block dimension is continuous
5d9a6686ed Block evaluation for TensorGeneratorOp
b4861f4778 Merged in ezhulenev/eigen-01 (pull request PR-609)
bfbf7da047 bug #1689 fix used-but-marked-unused warning
a407e022e6 Tune tensor contraction threadpool heuristics
56c6373f82 Add an extra check for the RunQueue size estimate
b1a8627493 Do not create Tensor<const T> in cxx11_tensor_forced_eval test
0318fc7f44 Remove EIGEN_MPL2_ONLY guards around code re-licensed from LGPL to MPL2 in https://bitbucket.org/eigen/eigen/commits/2ca1e732398ea2c506427e9031212d63e9253b96
efb5080d31 Do not initialize invalid fast_strides in TensorGeneratorOp
b95941e5c2 Add tiled evaluation for TensorForcedEvalOp
694084ecbd Use fast divisors in TensorGeneratorOp
b0d406d91c Enable construction of Ref<VectorType> from a runtime vector.
9ba81cf0ff Fully qualify Eigen::internal::aligned_free
22144e949d bug #1629: fix compilation of PardisoSupport (regression introduced in changeset a7842daef2c82a9be200dff54d455f6d4a0b199c )
b071672e78 Do not keep latex logs
cf4a1c81fa Fix specialization for conjugate on non-complex types in TensorBase.h.
c181dfb8ab Consistently use EIGEN_BLAS_FUNC in BLAS.
9558f4c25f Merged in rmlarsen/eigen_threadpool (pull request PR-596)
2ca1e73239 Merged in rmlarsen/eigen (pull request PR-597)
e409dbba14 Enable SSE vectorization of Quaternion and cross3() with AVX
6560692c67 Improve EventCount used by the non-blocking threadpool.
0b25a5c431 fix alignment in ploadquad
1dc1677d52 Change licensing of OrderingMethods/Amd.h and SparseCholesky/SimplicialCholesky_impl.h from LGPL to MPL2. Google LLC executed a license agreement with the author of the code from which these files are derived to allow the Eigen project to distribute the code and derived works under MPL2.
0cb4ba98e7 update wrt recent changes
cca6c207f4 AVX512: implement faster ploadquad<Packet16f> thus speeding up GEMM
1c09ee8541 bug #1674: workaround clang fast-math aggressive optimizations
7e3084bb6f Fix compilation on ARM.
32502f3c45 bug #1684: add simplified regression test for respective clang's bug (this also reveal the same bug in Apples's clang)
42c23f14ac Speed up col/row-wise reverse for fixed size matrices by propagating compile-time sizes.
4d7f317102 Add a few missing packet ops: cmp_eq for NEON. pfloor for GPU.
2a39659d79 Add fully generic Vector<Type,Size> and RowVector<Type,Size> type aliases.
302377110a Update documentation of Matrix and Array type aliases.
475295b5ff Enable documentation of Array's typedefs
44b54fa4a3 Protect c++11 type alias with Eigen's macro, and add respective unit test.
7195f008ce Merged in ra_bauke/eigen (pull request PR-180)
4e8047cdcf Fix compilation with gcc and remove TR1 stuff.
844e5447f8 Update documentation regarding alignment issue.
edd413c184 bug #1409: make EIGEN_MAKE_ALIGNED_OPERATOR_NEW* macros empty in c++17 mode:  - this helps clang 5 and 6 to support alignas in STL's containers.  - this makes the public API of our (and users) classes cleaner
3b5deeb546 bug #899: make sparseqr unit test more stable by 1) trying with larger threshold and 2) relax rank computation for rank-deficient problems.
482c5fb321 bug #899: remove "rank-revealing" qualifier for SparseQR and warn that it is not always rank-revealing.
9ac1634fdf Fix conversion warnings
292d61970a Fix C++17 compilation
071629a440 Fix incorrect value of NumDimensions in TensorContraction traits. Reported here: #1671
a1646fc960 Commas at the end of enumerator lists are not allowed in C++03
2cfc025bda fix unit compilation in c++17: std::ptr_fun has been removed.
ab78cabd39 Add C++17 detection macro, and make sure throw(xpr) is not used if the compiler is in c++17 mode.
115da6a1ea Fix conversion warnings
7d10c78738 bug #1046: add unit tests for correct propagation of alignment through std::alignment_of
7580112c31 Fix harmless Scalar vs RealScalar cast.
e23bf40dc2 Add unit test for LinSpaced and complex numbers.
796db94e6e bug #1194: implement slightly faster and SIMD friendly 4x4 determinant.
31b6e080a9 Fix regression: .conjugate() was popped out but not re-introduced.
c69d0d08d0 Set cost of conjugate to 0 (in practice it boils down to a no-op). This is also important to make sure that A.conjugate() * B.conjugate() does not evaluate its arguments into temporaries (e.g., if A and B are fixed and small, or * fall back to lazyProduct)
512b74aaa1 GEMM: catch all scalar-multiple variants when falling-back to a coeff-based product. Before only s*A*B was caught which was both inconsistent with GEMM, sub-optimal, and could even lead to compilation-errors (https://stackoverflow.com/questions/54738495).
ec032ac03b Guard C++11-style default constructor. Also, this is only needed for MSVC
902a7793f7 Add possibility to bench row-major lhs and rhs
83309068b4 bug #1680: improve MSVC inlining by declaring many triavial constructors and accessors as STRONG_INLINE.
0505248f25 bug #1680: make all "block" methods strong-inline and device-functions (some were missing EIGEN_DEVICE_FUNC)
559320745e bug #1678: Fix lack of __FMA__ macro on MSVC with AVX512
d85ae650bf bug #1678: workaround MSVC compilation issues with AVX512
f2970819a2 bug #1679: avoid possible division by 0 in complex-schur
65e23ca7e9 Revert https://bitbucket.org/eigen/eigen/commits/b55b5c7280a0481f01fe5ec764d55c443a8b6496 .
efeabee445 Merged in ezhulenev/eigen-01 (pull request PR-590)
7b837559a7 Fix signed-unsigned return in RuqQueue
f0d42d2265 Fix signed-unsigned comparison warning in RunQueue
106ba7bb1a Do not generate no-op cast() and conjugate() expressions
8c2f30c790 Speedup Tensor ThreadPool RunQueu::Empty()
bdcb5f3304 Let's properly use Score instead of std::abs, and remove deprecated FIXME ( a /= b does a/b and not a * (1/b) as it was a long time ago...)
2edfc6807d Fix compilation of empty products of the form:  Mx0 * 0xN
eb46f34a8c Speed up 2x2 LU by a factor 2, and other small fixed sizes by about 10%. Not sure that's so critical, but this does not complexify the code base much.
dada863d23 Enable unit tests of PartialPivLU on fixed size matrices, and increase tested matrix size (blocking was not tested!)
ab6e6edc32 Speedup PartialPivLU for small matrices by passing compile-time sizes when available. This change set also makes a better use of Map<>+OuterStride and Ref<> yielding surprising speed up for small dynamic sizes as well. The table below reports times in micro seconds for 10 random matrices:            | ------ float --------- | ------- double ------- |      size  | before   after  ratio  |  before   after  ratio | fixed	  1	 | 0.34     0.11   2.93   |  0.35     0.11   3.06  | fixed	  2	 | 0.81     0.24   3.38   |  0.91     0.25   3.60  | fixed	  3	 | 1.49     0.49   3.04   |  1.68     0.55   3.01  | fixed	  4	 | 2.31     0.70   3.28   |  2.45     1.08   2.27  | fixed	  5	 | 3.49     1.11   3.13   |  3.84     2.24   1.71  | fixed	  6	 | 4.76     1.64   2.88   |  4.87     2.84   1.71  | dyn     1	 | 0.50     0.40   1.23   |  0.51     0.40   1.26  | dyn     2	 | 1.08     0.85   1.27   |  1.04     0.69   1.49  | dyn     3	 | 1.76     1.26   1.40   |  1.84     1.14   1.60  | dyn     4	 | 2.57     1.75   1.46   |  2.67     1.66   1.60  | dyn     5	 | 3.80     2.64   1.43   |  4.00     2.48   1.61  | dyn     6	 | 5.06     3.43   1.47   |  5.15     3.21   1.60  |
21eb97d3e0 Add PacketConv implementation for non-vectorizable src expressions
1e36166ed1 Optimize TensorConversion evaluator: do not convert same type
953ca5ba2f Spline.h: fix spelling "spang" -> "span"
59998117bb Don't do parallel_pack if we can use thread_local memory in tensor contractions
013cc3a6b3 Make GEMM fallback to GEMV for runtime vectors. This is a more general and simpler version of changeset 4c0fa6ce0f81ce67dd6723528ddf72f66ae92ba2
fa2fcb4895 Backed out changeset 4c0fa6ce0f81ce67dd6723528ddf72f66ae92ba2
b3c4344a68 bug #1676: workaround GCC's bug in c++17 mode.
3091c03898 Merged in ezhulenev/eigen-01 (pull request PR-581)
8491127082 Do not reduce parallelism too much in contractions with small number of threads
eb21bab769 Parallelize tensor contraction only by sharding dimension and use 'thread-local' memory for packing
6d0f6265a9 Remove duplicated comment line
690b2c45b1 Fix GeneralBlockPanelKernel Android compilation
871e2e5339 bug #1674: disable GCC's unsafe-math-optimizations in sin/cos vectorization (results are completely wrong otherwise)
e7b481ea74 Merged in rmlarsen/eigen (pull request PR-578)
b55b5c7280 Speed up row-major matrix-vector product on ARM
4c0fa6ce0f Speed up Eigen matrix*vector and vector*matrix multiplication.
7ef879f6bf GEBP: improves pipelining in the 1pX4 path with FMA. Prior to this change, a product with a LHS having 8 rows was faster with AVX-only than with AVX+FMA. With AVX+FMA I measured a speed up of about x1.25 in such cases.
de77bf5d6c Fix compilation with ARM64.
d586686924 Workaround lack of support for arbitrary packet-type in Tensor by manually loading half/quarter packets in tensor contraction mapper.
eb4c6bb22d Fix conflicts and merge
e3622a0396 Slightly extend discussions on auto and move the content of the Pit falls wiki page here. http://eigen.tuxfamily.org/index.php?title=Pit_Falls
df12fae8b8 According to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89101, the previous GCC issue is fixed in GCC trunk (will be gcc 9).
3775926bba ARM64 & GEBP: add specialization for double +30% speed up
be5b0f664a ARM64 & GEBP: Make use of vfmaq_laneq_f32 and workaround GCC's issue in generating good ASM
a7779a9b42 Hide some annoying unused variable warnings in g++8.1
efe02292a6 Add recent gemm related changesets and various cleanups in perf-monitoring
8a06c699d0 bug #1669: fix PartialPivLU/inverse with zero-sized matrices.
a2a07e62b9 Fix compilation with c++03 (local class cannot be template arguments), and make SparseMatrix::assignDiagonal truly protected.
f489f44519 bug #1574: implement "sparse_matrix =,+=,-= diagonal_matrix" with smart insertion strategies of missing diagonal coeffs.
803fa79767 Move evaluator<SparseCompressedBase>::find(i,j) to a more general and reusable SparseCompressedBase::lower_bound(i,j) functiion
53560f9186 bug #1672: fix unit test compilation with MSVC by adding overloads of test_is* for long long (and factorize copy/paste code through a macro)
c9825b967e Renaming even more `I` identifiers
5a52e35f9a Renaming some more `I` identifiers
71429883ee Fix compilation error in NEON GEBP specializaition of madd.
934b8a1304 Avoid `I` as an identifier, since it may clash with the C-header complex.h
ec8a387972 cleanup
6908ce2a15 More thoroughly check variadic template ctor of fixed-size vectors
237b03b372 PR 574: use variadic template instead of initializer_list to implement fixed-size vector ctor from coefficients.
bd6dadcda8 Tell doxygen that cxx11 math is available
c64d5d3827 Bypass inline asm for non compatible compilers.
e16913a45f Fix name of tutorial snippet.
80f81f9c4b Cleanup SFINAE in Array/Matrix(initializer_list) ctors and minor doc editing.
db152b9ee6 PR 572: Add initializer list constructors to Matrix and Array (include unit tests and doc) - {1,2,3,4,5,...} for fixed-size vectors only - {{1,2,3},{4,5,6}} for the general cases - {{1,2,3,4,5,....}} is allowed for both row and column-vector
543529da6a Add more extensive tests of Array ctors, including {} variants
92774f0275 Replace host_define.h with cuda_runtime_api.h
d18f49cbb3 Fix compilation of unit tests with gcc and c++17
da0a41b9ce Mask unused-parameter warnings, when building with NDEBUG
2eccbaf3f7 Add missing logical packet ops for GPU and NEON.
d575505d25 After fixing bug #1557, boostmultiprec_7 failed with NumericalIssue instead of NoConvergence (all that matters here is no Success)
ee3662abc5 Remove some useless const_cast
0fe6b7d687 Make nestByValue works again (broken since 3.3) and add unit tests.
4b7cf7ff82 Extend reshaped unit tests and remove useless const_cast
b57c9787b1 Cleanup useless const_cast and add missing broadcast assignment tests
be05d0030d Make FullPivLU use conjugateIf<>
bba2f05064 Boosttest only available for Boost version >= 1.53.0
15e53d5d93 PR 567: makes all dense solvers inherit SoverBase (LU,Cholesky,QR,SVD). This changeset also includes:  * add HouseholderSequence::conjugateIf  * define int as the StorageIndex type for all dense solvers  * dedicated unit tests, including assertion checking  * _check_solve_assertion(): this method can be implemented in derived solver classes to implement custom checks  * CompleteOrthogonalDecompositions: add applyZOnTheLeftInPlace, fix scalar type in applyZAdjointOnTheLeftInPlace(), add missing assertions  * Cholesky: add missing assertions  * FullPivHouseholderQR: Corrected Scalar type in _solve_impl()  * BDCSVD: Unambiguous return type for ternary operator  * SVDBase: Corrected Scalar type in _solve_impl()
7f32109c11 Add conjugateIf<bool> members to DesneBase, TriangularView, SelfadjointView, and make PartialPivLU use it.
7b35c26b1c Doc: remove link to porting guide
4759d9e86d Doc: add manual page on STL iterators
562985bac4 bug #1646: fix false aliasing detection for A.row(0) = A.col(0); This changeset completely disable the detection for vectors for which are current mechanism cannot detect any positive aliasing anyway.
7401e2541d Fix compilation error for logical packet ops with older compilers.
ee550a2ac3 Fix flaky test for tensor fft.
0f028f61cb GEBP: fix swapped kernel mode with AVX512 and complex scalars
e118ce86fd GEBP: cleanup logic to choose between a 4 packets of 1 packet
70e133333d bug #1661: fix regression in GEBP and AVX512
ce88e297dc Add a comment stating this doc page is partly obsolete.
729d1291c2 bug #1585: update doc on lazy-evaluation
c8e40edac9 Remove Eigen2ToEigen3 migration page (obsolete since 3.3)
aeffdf909e bug #1617: add unit tests for empty triangular solve.
502f717980 bug #1646: disable aliasing detection for empty and 1x1 expression
0b466b6933 bug #1633: use proper type for madd temporaries, factorize RhsPacketx4.
dbfcceabf5 Bug: 1633: refactor gebp kernel and optimize for neon
2b70b2f570 Make Transform::rotation() an alias to Transform::linear() in the case of an Isometry
2c2c114995 Silent maybe-uninitialized warnings by gcc
6ec6bf0b0d Enable visitor on empty matrices (the visitor is left unchanged), and protect min/maxCoeff(Index*,Index*) on empty matrices by an assertion (+ doc & unit tests)
027e44ed24 bug #1592: makes partial min/max reductions trigger an assertion on inputs with a zero reduction length (+doc and tests)
f8bc5cb39e Fix detection of vector-at-time: use Rows/Cols instead of MaxRow/MaxCols. This fix VectorXd(n).middleCol(0,0).outerSize() which was equal to 1.
32d7232aec fix always true warning with gcc 4.7
6cf7afa3d9 Typo
e7d4d4f192 cleanup
7b3aab0936 Merged in rmlarsen/eigen (pull request PR-570)
8bf00c2baf Remove extra <tr>.
ec7fe83554 Merge.
2ea4efc0c3 Merge.
2c5843dbbb Update documentation.
250dcd1fdb bug #1652: fix position of EIGEN_ALIGN16 attributes in Neon and Altivec
5a59452aae Merged eigen/eigen into default
3c9e6d206d AVX512: fix pgather/pscatter for Packet4cd and unaligned pointers
61b6eb05fe AVX512 (r)sqrt(double) was mistakenly disabled with clang and others
ccddeaad90 fix warning
d4881751d3 Doc: add Isometry in the list of supported Mode of Transform<>
9d988a1e1a Initialize isometric transforms like affine transforms.
4356a55a61 PR 571: Implements an accurate argument reduction algorithm for huge inputs of sin/cos and call it instead of falling back to std::sin/std::cos. This makes both the small and huge argument cases faster because: - for small inputs this removes the last pselect - for large inputs only the reduction part follows a scalar path, the rest use the same SIMD path as the small-argument case.
f566724023 Fix StorageIndex FIXME in dense LU solvers
1c6e6e2c3f Merge.
0ba3b45419 Merged eigen/eigen into default
28ba1b2c32 Add support for inverse hyperbolic functions. Fix cost of division.
89c4001d6f Fix warnings in ptrue for complex and half types.
a49d01edba Fix warnings in ptrue for complex and half types.
1e6d15b55b Fix shorten-64-to-32 warning in TensorContractionThreadPool
df29511ac0 Fix merge.
8e71ed4cc9 Merge.
fff5a5b579 Resolve.
9396ace46b Merge.
74882471d0 Merged eigen/eigen into default
e9936cf2b9 Merge.
9005f0111f Replace compiler's alignas/alignof extension by respective c++11 keywords when available. This also fix a compilation issue with gcc-4.7.
3c9add6598 Remove reinterpret_cast from AVX512 complex implementation
0522460a0d bug #1656: Enable failtests only if BUILD_TESTING is enabled
0abe03764c Fix shorten-64-to-32 warning in TensorContractionThreadPool
fcfced13ed Rename pones -> ptrue. Use _CMP_TRUE_UQ where appropriate.
ce38c342c3 merge.
a05ec7993e merge
e15bb785ad Collapsed revision * Add packet up "pones". Write pnot(a) as pxor(pones(a), a). * Collapsed revision * Simplify a bit. * Undo useless diffs. * Fix typo.
f6ba6071c5 Fix typo.
8f04442526 Collapsed revision * Collapsed revision * Add packet up "pones". Write pnot(a) as pxor(pones(a), a). * Collapsed revision * Simplify a bit. * Undo useless diffs. * Fix typo.
8f178429b9 Collapsed revision * Collapsed revision * Add packet up "pones". Write pnot(a) as pxor(pones(a), a). * Collapsed revision * Simplify a bit. * Undo useless diffs. * Fix typo.
1119c73d22 Collapsed revision * Add packet up "pones". Write pnot(a) as pxor(pones(a), a). * Collapsed revision * Simplify a bit. * Undo useless diffs. * Fix typo.
e00521b514 Undo useless diffs.
f2767112c8 Simplify a bit.
cb955df9a6 Add packet up "pones". Write pnot(a) as pxor(pones(a), a).
cb3c059fa4 Merged eigen/eigen into default
d812f411c3 bug #1654: fix compilation with cuda and no c++11
3492a1ca74 fix plog(+inf) with AVX512
47810cf5b7 Add dedicated implementations of predux_any for AVX512, NEON, and Altivec/VSE
3f14e0d19e fix warning
aeec68f77b Add missing pcmp_lt and others for AVX512
e6b217b8dd bug #1652: implements a much more accurate version of vectorized sin/cos. This new version achieve same speed for SSE/AVX, and is slightly faster with FMA. Guarantees are as follows:   - no FMA: 1ULP up to 3pi, 2ULP up to sin(25966) and cos(18838), fallback to std::sin/cos for larger inputs   - FMA: 1ULP up to sin(117435.992) and cos(71476.0625), fallback to std::sin/cos for larger inputs
e70ffef967 Optimize evalShardedByInnerDim
055f0b73db Add support for pcmp_eq and pnot, including for complex types.
190d053e41 Explicitly set fill character when printing aligned data to ostream
bc5dd4cafd PR560: Fix the AVX512f only builds
697fba3bb0 Fix unit test
60d3fe9a89 One more stupid AVX 512 fix (I don't have direct access to AVX512 machines)
4aa667b510 Add EIGEN_STRONG_INLINE where required
961ff567e8 Add missing pcmp_lt_or_nan for AVX512
0f6f75bd8a Implement a faster fix for sin/cos of large entries that also correctly handle INF input.
38d704def8 Make sure that psin/pcos return number in [-1,1] for large inputs (though sin/cos on large entries is quite useless because it's inaccurate)
5713fb7feb Fix plog(+INF): it returned ~87 instead of +INF
6dd93f7e3b Make code compile again for older compilers. See https://stackoverflow.com/questions/7411515/
1024a70e82 gebp: Add new ½ and ¼ packet rows per (peeling) round on the lhs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit
e763fcd09e Introducing "vectorized" byte on unpacket_traits structs
efa4c9c40f bug #1615: slightly increase the default unrolling limit to compensate for changeset 101ea26f5e18919972b321b5f7e3ef4e07be3fd6 . This solves a performance regression with clang and 3x3 matrix products.
f20c991679 add changesets related to matrix product perf.
dd6d65898a Fix shorten-64-to-32 warning. Use regular memcpy if num_threads==0.
f582ea3579 Fix compilation with expression template scalar type.
cfc70dc13f Add regression test for bug #1174
2de8da70fd bug #1557: fix RealSchur and EigenSolver for matrices with only zeros on the diagonal.
72c0bbe2bd Simplify handling of tests that must fail to compile. Each test is now a normal ctest target, and build properties (compiler+flags) are preserved (instead of starting a new build-dir from scratch).
37c91e1836 bug #1644: fix warning
f159cf3d75 Artificially increase l1-blocking size for AVX512. +10% speedup with current kernels. With a 6pX4 kernel (not committed yet), this provides a +20% speedup.
0a7e7af6fd Properly set the number of registers for AVX512
7166496f70 bug #1643: fix compilation issue with gcc and no optimizaion
0d90637838 enable spilling workaround on architectures with SSE/AVX
cf697272e1 Remove debug code.
450dc97c6b Various fixes in polynomial solver and its unit tests:  - cleanup noise in imaginary part of real roots  - take into account the magnitude of the derivative to check roots.  - use <= instead of < at appropriate places
348bb386d1 Enable "old" CMP0026 policy (not perfect, but better than dozens of warning)
bff90bf270 workaround "may be used uninitialized" warning
81c27325ae bug #1641: fix testing of pandnot and fix pandnot for complex on SSE/AVX/AVX512
426bce7529 fix EIGEN_GEBP_2PX4_SPILLING_WORKAROUND for non vectorized type, and non x86/64 target
cd25b538ab Fix noise in sparse_basic_3 (numerical cancellation)
efaf03bf96 Fix noise in lu unit test
956678a4ef bug #1515: disable gebp's 3pX4 micro kernel for MSVC<=19.14 because of register spilling.
7b6d0ff1f6 Enable FMA with MSVC (through /arch:AVX2). To make this possible, I also has to turn the #warning regarding AVX512-FMA to a #error.
f233c6194d bug #1637: workaround register spilling in gebp with clang>=6.0+AVX+FMA
ae59a7652b bug #1638: add a warning if avx512 is enabled without SSE/AVX FMA
4e7746fe22 bug #1636: fix gemm performance issue with gcc>=6 and no FMA
cbf2f4b7a0 AVX512f includes FMA but GCC does not define __FMA__ with -mavx512f only
1d683ae2f5 Fix compilation with avx512f only, i.e., no AVX512DQ
aab749b1c3 fix test regarding AVX512 vectorization of complexes.
c53eececb0 Implement AVX512 vectorization of std::complex<float/double>
3fba59ea59 temporarily re-disable SSE/AVX vectorization of complex<> on AVX512 -> this needs to be fixed though!
1ac2695ef7 bug #1636: fix compilation with some ABI versions.
47d8b741b2 #elif -> #else to fix GPU build.
8a02883d58 Merged in markdryan/eigen/avx512-contraction-2 (pull request PR-554)
acc3459a49 Add help messages in the quick ref/ascii docs regarding slicing, indexing, and reshaping.
e2e897298a Fix page nesting
c1d356e8b4 bug #1635: Use infinity from Numtraits instead of creating it manually.
36f8f6d0be Fix evalShardedByInnerDim for AVX512 builds
b57b31cce9 Merged in ezhulenev/eigen-01 (pull request PR-553)
0bb15bb6d6 Update checks in ConfigureVectorization.h
fd0fbfa9b5 Do not disable alignment with EIGEN_GPUCC
919414b9fe bug #785: Make Cholesky decomposition work for empty matrices
0ea7ae7213 Add missing padd for Packet8i (it was implicitly generated by clang and gcc)
ab4df3e6ff bug #1634: remove double copy in move-ctor of non movable Matrix/Array
c785464430 Add packet sin and cos to Altivec/VSX and NEON
69ace742be Several improvements regarding packet-bitwise operations: - add unit tests - optimize their AVX512f implementation - add missing implementations (half, Packet4f, ...)
fa87f9d876 Add psin/pcos on AVX512 -> almost for free, at last!
c68bd2fa7a Cleanup
f91500d303 Fix pandnot order in AVX512
b477d60bc6 Extend the generic psin_float code to handle cosine and make SSE and AVX use it (-> this adds pcos for AVX)
e19ece822d Disable fma gcc's workaround for gcc >= 8 (based on GEMM benchmarks)
41052f63b7 same for pmax
3e95e398b6 pmin/pmax o SSE: make sure to use AVX instruction with AVX enabled, and disable gcc workaround for fixed gcc versions
aa6097395b Add missing SSE/AVX type-casting in AVX512 mode
48fe78c375 bug #1630: fix linspaced when requesting smaller packet size than default one.
80f1651f35 Use explicit packet type in SSE/PacketMath pldexp
a4159dba08 do not read buffers out of bounds -- load only the 4 bytes we know exist here.  Could also have done a vld1_lane_f32 but doing so here, without the overhead of initializing the unused lane, would have triggered used-of-uninitialized-value errors in tools such as ASan.  Note that this code is sub-optimal before or after this change: we should be reading either 2 or 4 float32 values per load-instruction  (2 for ARM in-order cores with an affinity for 8-byte loads;  4 for ARM out-of-order cores able to dual-issue 16-byte load instructions with arithmetic instructions).  Before or after this patch, we are only loading 4 bytes of useful data here (even if before this patch, we were technically loading 8, only to use only the 4 first).
b131a4db24 bug #1631: fix compilation with ARM NEON and clang, and cleanup the weird pshiftright_and_cast and pcast_and_shiftleft functions.
a1a5fbbd21 Update pshiftleft to pass the shift as a true compile-time integer.
fa7fd61eda Unify SSE/AVX psin functions. It is based on the SSE version which is much more accurate, though very slightly slower. This changeset also includes the following required changes:  - add packet-float to packet-int type traits  - add packet float<->int reinterpret casts  - add faster pselect for AVX based on blendv
08edbc8cfe Merged in bjacob/eigen/fixbuild (pull request PR-549)
7b1cb8a440 fix the build on 64-bit ARM when NEON is disabled
b5695a6008 Unify Altivec/VSX pexp(double) with default implementation
7655a8af6e cleanup
502f92fa10 Unify SSE and AVX pexp for double.
4a347a0054 Unify NEON's pexp with generic implementation
5c8406babc Unify Altivec/VSX's pexp with generic implementation
cf8b85d5c5 Unify SSE and AVX implementation of pexp
c2f35b1b47 Unify Altivec/VSX's plog with generic implementation, and enable it!
c24e98e6a8 Unify NEON's plog with generic implementation
2c44c40114 First step toward a unification of packet log implementation, currently only SSE and AVX are unified. To this end, I added the following functions: pzero, pcmp_*, pfrexp, pset1frombits functions.
5f6045077c Make SSE/AVX pandnot(A,B) consistent with generic version, i.e., "A and not B"
382279eb7f Extend unit test to recursively check half-packet types and non packet types
0836a715d6 bug #1611: fix plog(0) on NEON
95566eeed4 Fix typos
e3b22a6bd0 merge
ccabdd88c9 Fix reserved usage of double __ in macro names
572d62697d check two ctors
354f14293b Fix double  = bool !
a7842daef2 Fix several uninitialized member from ctor
ea60a172cf Add default constructor to Bar to make test compile again with clang-3.8
806352d844 Small typo found be Patrick Huber (pull request PR-547)
a476054879 bug #1624: improve matrix-matrix product on ARM 64, 20% speedup
c685fe9838 Move regression test to right unit test file
4b2cebade8 Workaround weird MSVC bug
0ec8afde57 Fixed most conversion warnings in MatrixFunctions module
e7e6809e6b ROCm/HIP specfic fixes + updates
6a510fe69c Make MaxPacketSize a true upper bound, even for fixed-size inputs
43c987b1c1 Add explicit regression test for bug #1622
670d56441c PR 544: Set requestedAlignment correctly for SliceVectorizedTraversals
3dc0845046 Fix typo in comment on EIGEN_MAX_STATIC_ALIGN_BYTES
7fddc6a51f typo
449f948b2a help doxygen linking to DenseBase::NulllaryExpr
4263f23c28 Improve doc on multi-threading and warn about hyper-threading
db529ae4ec doxygen does not like \addtogroup and \ingroup in the same line
72928a2c8a Merged in rmlarsen/eigen2 (pull request PR-543)
cda479d626 Remove accidental changes.
719d9aee65 Add parallel memcpy to TensorThreadPoolDevice in Eigen, but limit the number of threads to 4, beyond which we just seem to be wasting CPU cycles as the threads contend for memory bandwidth.
77b447c24e Add optimized version of logistic function for float. As an example, this is about 50% faster than the existing version on Haswell using AVX.
c81bdbdadc Add manual doc on STL-compatible iterators
0105146915 Fix warning in c++03
93f9988a7e A few small fixes to a) prevent throwing in ctors and dtors of the threading code, and b) supporting matrix exponential on platforms with 113 bits of mantissa for long doubles.
784a3f13cf bug #1619: fix mixing of const and non-const generic iterators
db9a9a12ba bug #1619: make const and non-const iterators compatible
fbd6e7b025 add missing ref to a.zeta(b)
dffd1e11de Limit the size of the toc
a88e0a0e95 Update doxy hacks wrt doxygen 1.8.13/14
bd9a00718f Let doxygen sees lastN
d7c644213c Add and update manual pages for slicing, indexing, and reshaping.
a368848473 Recent xcode versions does support EIGEN_HAS_STATIC_ARRAY_TEMPLATE
f62a0f69c6 Fix max-size in indexed-view
bf495859ff Merged in glchaves/eigen (pull request PR-539)
995730fc6c Add option to disable plot generation
4ad359237a Vectorize row-by-row gebp loop iterations on 16 packets as well
9d318b92c6 add unit tests for bug #1619
8d7a73e48e bug #1617: Fix SolveTriangular.solveInPlace crashing for empty matrix. This made FullPivLU.kernel() crash when used on the zero matrix. Add unit test for FullPivLU.kernel() on the zero matrix.
66b28e290d bug #1618: Use different power-of-2 check to avoid MSVC warning
07fcdd1438 Merged in ezhulenev/eigen-02 (pull request PR-534)
8a977c1f46 Fix cxx11_tensor_{block_access, reduction} tests
fb62d6d96e Fix typo in tutorial documentation.
b5f077d22c Document EIGEN_NO_IO preprocessor directive
4a40b3785d Collapsed revision (based on pull request PR-325) * Support compiling without IO streams
14054e217f Do not rely on the compiler generating __device__ functions for constexpr in Cuda (via EIGEN_CONSTEXPR_ARE_DEVICE_FUNC. This breaks several target in the TensorFlow Cuda build, e.g.,
954b4ca9d0 Suppress compiler warning about unused global variable.
9caafca550 Merged in rmlarsen/eigen (pull request PR-532)
449ff74672 Fix most Doxygen warnings. Also add links to stable documentation from unsupported modules (by using the corresponding Doxytags file). Manually grafted from d107a371c61b764c73fd1570b1f3ed1c6400dd7e
39fec15d5c Merged eigen/eigen into default
40fa6f98bf bug #1606: Explicitly set the standard before find_package(StandardMathLibrary). Also replace EIGEN_COMPILER_SUPPORT_CXX11 in favor of EIGEN_COMPILER_SUPPORT_CPP11. Grafted manually from a4afa90d161faab385a77f0e2764fb13ff3b9484
d8f285852b Only set EIGEN_CONSTEXPR_ARE_DEVICE_FUNC for clang++ if cxx_relaxed_constexpr is available.
dda68f56ec Fix GPU build due to gpu_assert not always being defined.
1dcf5a6ed8 fix typo in doc
9e96e91936 Move from rvalue arguments in ThreadPool enqueue* methods
217d839816 Reduce thread scheduling overhead in parallelFor
d52763bb4f Merged in ezhulenev/eigen-02 (pull request PR-528)
0f780bb0b4 Fix float-to-double warning
900c7c61bb Check if it's allowed to squueze inner dimensions in TensorBlockIO
a39e0f7438 bug #1612: fix regression in "outer-vectorization" of partial reductions for PacketSize==1 (aka complex<double>)
e3b85771d7 Show call stack in case of failing sparse solving.
d2d570c116 Remove useless (and broken) resize
f0fb95135d Iterative solvers: unify and fix handling of multiple rhs. m_info was not properly computed and the logic was repeated in several places.
2747b98cfc DGMRES: fix null rhs, fix restart, fix m_isDeflInitialized for multiple solve
d835a0bf53 relax number of iterations checks to avoid false negatives
3a33db4de5 merge
0ed811a9c1 Suppress unused variable compiler warning in sparse subtest 3.
aa110e681b PR 526: Speed up multiplication of small, dynamically sized matrices
d9392f9e55 Fix code format
118520f04a Workaround nbcc+msvc compiler bug
24dc076519 Explicitly convert 0 to Scalar for custom types
8214cf1896 Make sparse_basic includable from sparse_extra, but disable it since sparse_basic(DynamicSparseMatrix) does not compile at all anyways
43633fbaba Fix warning with AVX512f
97e2c808e9 Fix avx512 plog(NaN) to return NaN instead of +inf
b3f66d29a5 Enable avx512 plog with clang
2ef1b39674 Relaxed fastmath unit test: if std::foo fails, then let's only trigger a warning is numext::foo fails too. A true error will triggered only if std::foo works but our numext::foo fails.
1d5a6363ea relax numerical tests from equal to approx (x87)
f0aa7e40fc Fix regression in changeset 5335659c47d69d3ee1b6f9792fea5998731f9a53
ce243ee45b bug #520: add diagmat +/- diagmat operators.
5335659c47 Merged in ezhulenev/eigen-02 (pull request PR-525)
eec0dfd688 bug #632: add specializations for res ?= dense +/- sparse and res ?= sparse +/- dense. They are rewritten as two compound assignment to by-pass hybrid dense-sparse iterator.
8e6dc2c81d Fix bug in partial reduction of expressions requiring evaluation
76ceae49c1 bug #1609: add inplace transposition unit test
2bf1a31d81 Use void type if stl-style iterators are not supported
f3130ee1ba Avoid empty macro arguments
e8918743c1 Merged in ezhulenev/eigen-01 (pull request PR-523)
befcac883d Hide stl-container detection test under #if
c0ca8a9fa3 Compile time detection for unimplemented stl-style iterators
1dd1f8e454 bug #65: add vectorization of partial reductions along the outer-dimension, for instance: colmajor_mat.rowwise().mean()
bfa2a81a50 Make redux_vec_unroller more flexible regarding packet-type
c0c3be26ed Extend unit tests for partial reductions
3f2c8b7ff0 Fix a lot of Doxygen warnings in Tensor module
f6359ad795 Small Doxygen fixes
7a882c05ab Fix compilation on CUDA
93a6192e98 fix mpreal for mpfr<4.0.0
d16634c4d4 Fix out-of bounds access in TensorArgMax.h.
1a737e1d6a Fix contraction test.
e00487f7d2 bug #1603: add parenthesis around ternary operator in function body as well as a harmless attempt to make MSVC happy.
2eda9783de typo
c6e2dde714 fix c++11 deprecated warning
6cc9b2c831 fix warning in mpreal.h
649d4758a6 merge
aa5820056e Unify c++11 usage in doc's examples and snippets
e29bfe8479 Update included mpreal header to 3.6.5 and fix deprecated warnings.
64b1a15318 Workaround stupid warning
c9643f4a6f Disable C++11 deprecated warning when limiting Eigen to C++98
774bb9d6f7 fix a doxygen issue
6c3f6cd52b Fix maybe-uninitialized warning
bcb7c66b53 Workaround gcc's alloc-size-larger-than= warning
16b2001ece Fix gcc 8.1 warning: "maybe use uninitialized"
6512c5e136 Implement a better workaround for GCC's bug #87544
409132bb81 Workaround gcc bug making it trigger an invalid warning
c6a1ab4036 Workaround MSVC compilation issue
e21766c6f5 Clarify doc of rowwise/colwise/vectorwise.
d92f004ab7 Simplify API by removing allCols/allRows and reusing rowwise/colwise to define iterators over rows/columns
91613bf2c2 Add support for c++11 snippets
3e64b1fc86 Move iterators to internal, improve doc, make unit test c++03 friendly
2b2b4d0580 fix unused warning
8a1e98240e add unit tests
5f26f57598 Change the logic of A.reshaped<Order>() to be a simple alias to A.reshaped<Order>(AutoSize,fix<1>). This means that now AutoOrder is allowed, and it always return a column-vector.
0481900e25 Add pointer-based iterator for direct-access expressions
c5f1d0a72a Fix shadow warning
b92c71235d Move struct outside of method for C++03 compatibility.
051f9c1aff Make code compile in C++03 mode again
b786ce8c72 Fix conversion warning ... again
8c38528168 Factorize RowsProxy/ColsProxy and related iterators using subVector<>(Index)
12487531ce Add templated subVector<Vertical/Horizonal>(Index) aliases to col/row(Index) methods (plus subVectors<>() to retrieve the number of rows/columns)
37e29fc893 Use Index instead of ptrdiff_t or int, fix random-accessors.
de2efbc43c bug #1605: workaround ABI issue with vector types (aka __m128) versus scalar types (aka float)
b0c66adfb1 bug #231: initial implementation of STL iterators for dense expressions
564ca71e39 Merged in deven-amd/eigen/HIP_fixes (pull request PR-518)
94898488a6 This commit contains the following (HIP specific) updates:
2088c0897f Merged eigen/eigen into default
31629bb964 Get rid of unused variable warning.
bb13d5d917 Fix bug in copy optimization in Tensor slicing.
104e8fa074 Fix a few warnings and rename a variable to not shadow "last".
7c1b47840a Merged in ezhulenev/eigen-01 (pull request PR-514)
524c81f3fa Add tests for evalShardedByInnerDim contraction + fix bugs
86ba50be39 Fix integer conversion warnings
e95696acb3 Optimize TensorBlockCopyOp
9f33e71e9d Revert code lost in merge
a7a3e9f2b6 Merge with eigen/eigen default
9f4988959f Remove explicit mkldnn support and redundant TensorContractionKernelBlocking
1e5750a5b8 Merged in rmlarsen/eigen4 (pull request PR-511)
af3ad4b513 oops, I've been too fast in previous copy/paste
24b163a877 #pragma GCC diagnostic push/pop is not supported prioro to gcc 4.6
b314376f9c Test mkldnn pack for doubles
22ed98a331 Conditionally add mkldnn test
d956204ab2 Remove "false &&" left over from test.
3815aeed7a Parallelize tensor contraction over the inner dimension in cases where where one or both of the outer dimensions (m and n) are small but k is large. This speeds up individual matmul microbenchmarks by up to 85%.
71cd3fbd6a Support multiple contraction kernel types in TensorContractionThreadPool
0a3356f4ec Don't deactivate BVH test for clang (probably, this was failing for very old versions of clang)
41c3a2ffc1 Fix documentation of reshape to vectors.
2c083ace3e Provide EIGEN_OVERRIDE and EIGEN_FINAL macros to mark virtual function overrides
626942d9dd fix alignment issue in ploaddup for AVX512
84a1101b36 Merge with default.
795e12393b Fix logic in diagonal*dense product in a corner case. The problem was for: diag(1x1) * mat(1,n)
bac36d0996 Demangle Travseral and Unrolling in Redux
c696dbcaa6 Fiw shadowing of last and all
e3c8289047 Replace unused PREDICATE by corresponding STATIC_ASSERT
1bf12880ae Add reshaped<>() shortcuts when returning vectors and remove the reshaping version of operator()(all)
4291f167ee Add missing plugins to DynamicSparseMatrix -- fix sparse_extra_3
03a0cb2b72 fix unalignedcount for avx512
371068992a Add more debug output
91716f03a7 Fix vectorization logic unit test for AVX512
b00e48a867 Improve slice-vectorization logic for redux (significant speed-up for reduxion of blocks)
a488d59787 merge with default Eigen
47720e7970 Doc fixes
3ec2985914 Merged indexing cleanup (pull request PR-506)
651e5d4866 Fix EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE_FIXED_SIZE for AVX512 or AVX with malloc aligned on 8 bytes only. This change also make it future proof for AVX1024
719e438a20 Collapsed revision * Split cxx11_tensor_executor test * Register test parts with EIGEN_SUFFIXES * Fix EIGEN_SUFFIXES in cxx11_tensor_executor test
f0ef3467de Fix doc
617f75f117 Add indexing namespace
0c56d22e2e Fix shadowing
8e2be7777e Merged eigen/eigen into default
5d2e759329 Initialize BlockIteratorState in a C++03 compatible way.
e04faca930 merge
d37188b9c1 Fix MPrealSupport
3c6dc93f99 Fix GPU support.
e0f6d352fb Rename test/array.cpp to test/array_cwise.cpp to avoid conflicts with the array header.
eeeb18814f Fix warning
9419f506d0 Fix regression introduced by the previous fix for AVX512. It brokes the complex-complex case on SSE.
a0166ab651 Workaround for spurious "array subscript is above array bounds" warnings with g++4.x
e38d1ab4d1 Workaround increases required alignment warning
c50250cb24 Avoid warning "suggest braces around initialization of subobject". This test is not run in C++03 mode, so no compatibility is lost.
71496b0e25 Fix gebp kernel for real+complex in case only reals are vectorized (e.g., AVX512). This commit also removes "half-packet" from data-mappers: it was not used and conceptually broken anyways.
5a30eed17e Fix warnings in AVX512
2cf6d3050c Disable ignoring attributes warning
44d8274383 Cast to longer type.
d638b62dda Silence compiler warning.
db9c9df59a Silence more compiler warnings.
febd09dcc0 Silence compiler warnings in ThreadPoolInterface.h.
c3a19527a2 Fix doc wrt previous change
dfa8439e4d Update reshaped API to use RowMajor/ColMajor directly as integral values instead of introducing RowOrder/ColOrder types. The API changed from A.respahed(rows,cols,RowOrder) to A.template reshaped<RowOrder>(rows,cols).
f67b19a884 [PATCH 1/2] Misc. typos From 68d431b4c14ad60a778ee93c1f59ecc4b931950e Mon Sep 17 00:00:00 2001 Found via `codespell -q 3 -I ../eigen-word-whitelist.txt` where the whitelists consists of: ``` als ans cas dum lastr lowd nd overfl pres preverse substraction te uint whch ``` ---  CMakeLists.txt                                | 26 +++++++++----------  Eigen/src/Core/GenericPacketMath.h            |  2 +-  Eigen/src/SparseLU/SparseLU.h                 |  2 +-  bench/bench_norm.cpp                          |  2 +-  doc/HiPerformance.dox                         |  2 +-  doc/QuickStartGuide.dox                       |  2 +-  .../Eigen/CXX11/src/Tensor/TensorChipping.h   |  6 ++---  .../Eigen/CXX11/src/Tensor/TensorDeviceGpu.h  |  2 +-  .../src/Tensor/TensorForwardDeclarations.h    |  4 +--  .../src/Tensor/TensorGpuHipCudaDefines.h      |  2 +-  .../Eigen/CXX11/src/Tensor/TensorReduction.h  |  2 +-  .../CXX11/src/Tensor/TensorReductionGpu.h     |  2 +-  .../test/cxx11_tensor_concatenation.cpp       |  2 +-  unsupported/test/cxx11_tensor_executor.cpp    |  2 +-  14 files changed, 29 insertions(+), 29 deletions(-)
297ca62319 ease transition by adding placeholders::all/last/and as deprecated
2014c7ae28 Move all, last, end from Eigen::placeholders namespace to Eigen::, and rename end to lastp1 to avoid conflicts with std::end.
82772e8d9d Rename Symbolic namespace to symbolic to be consistent with numext namespace
400512bfad Merged in ezhulenev/eigen-02 (pull request PR-501)
c4627039ac Support static dimensions (aka IndexList) in Tensor::resize(...)
3e8188fc77 bug #1600: initialize m_info to InvalidInput by default, even though m_info is not accessible until it has been initialized (assert)
218a7b9840 Enable DSizes type promotion with c++03 compilers
1f0c941c3d Collapsed revision * Merged eigen/eigen into default
03a88c57e1 Merged in ezhulenev/eigen-02 (pull request PR-498)
5ca0e4a245 Merged in ezhulenev/eigen-01 (pull request PR-497)
a5cd4e9ad1 Replace deprecated Eigen::DenseIndex with Eigen::Index in TensorIndexList
b311bfb752 bug #1596: fix inclusion of Eigen's header within unsupported modules.
72f19c827a typo
66f056776f Add DSizes index type promotion
f313126dab Fix warnings in IndexList array_prod
42705ba574 Fix weird error for building with g++-4.7 in C++03 mode.
c2383f95af Merged in ezhulenev/eigen/fix_dsizes (pull request PR-494)
30290cdd56 Merged in ezhulenev/eigen/moar_eigen_fixes_3 (pull request PR-493)
f7d0053cf0 Fix DSizes IndexList constructor
601e289d27 Merged in ezhulenev/eigen/moar_eigen_fixes_1 (pull request PR-492)
71070a1e84 Const cast scalar pointer in TensorSlicingOp evaluator
4863375723 Explicitly construct tensor block dimensions from evaluator dimensions
14e35855e1 Merged in chtz/eigen-maxsizevector (pull request PR-490)
281e631839 Merged in ezhulenev/eigen/indexlist_to_dsize (pull request PR-491)
1b8d70a22b Support reshaping with static shapes and dimensions conversion in tensor broadcasting
007f165c69 bug #1598: Let MaxSizeVector respect alignment of objects and add a unit test Also revert 8b3d9ed081fc5d4870290649853b19cb5179546e
d7378aae8e Provide EIGEN_ALIGNOF macro, and give handmade_aligned_malloc the possibility for alignments larger than the standard alignment.
9b864cdb37 Merged in rmlarsen/eigen3 (pull request PR-480)
d0eef5fe6c Don't use bracket syntax in ctor.
6313dde390 Fix merge error.
0db590d22d Backed out changeset 01197e44527941c95f9a63e4f60ab3a989f12cbe
b3f4c067d9 Merge
2b07018140 Enable vectorized version on GPUs. The underlying bug has been fixed.
53568e3549 Merged in ezhulenev/eigen/tiled_evalution_support (pull request PR-444)
01197e4452 Fix warnings
1141bcf794 Fix conjugate-gradient for very small rhs
7f3b17e403 MSVC 2015 supports c++11 thread-local-storage
d138fe341d Fis static_assert in test to conform c++11 standard
e289f44c56 Don't vectorize the MeanReducer unless pdiv is available.
55bb7e7935 Merge with upstream eigen/default
81b38a155a Fix compilation of tiled evaluation code with c++03
5da960702f Merged eigen/eigen into default
46f88fc454 Use numerically stable tree reduction in TensorReduction.
4827bec776 LLT: correct doc and add missing reference for the return type of rankUpdate ---  Eigen/src/Cholesky/LLT.h | 2 +-  1 file changed, 1 insertion(+), 1 deletion(-)
3d057e0453 Avoid compilation error in C++11 test when EIGEN_AVOID_STL_ARRAY is set.
c6066ac411 Make param name and docs constistent for JacobiRotation::makeGivens
edeee16a16 Fix build failures in matrix_power and matrix_exponential tests.
c64fe9ea1f Updates to fix HIP-clang specific compile errors.
8b3d9ed081 Use padding instead of alignment attribute, which MaxSizeVector does not respect. This leads to undefined behavior and hard-to-trace bugs.
5927eef612 Enable std::result_of for msvc 2015 and later
3adece4827 Fix misleading indentation of errorCode and make it loop-local
7e9c9fbb2d Disable type-limits warnings for g++ < 4.8
ba2c8efdcf EIGEN_UNUSED is not supported by g++4.7 (and not portable)
ff4e835d6b "sparse_product.cpp" must be included before "sparse_basic.cpp", otherwise EIGEN_SPARSE_CREATE_TEMPORARY_PLUGIN has no effect
023ed6b9a8 Product of empty array must be 1 and not 0.
c2f4e8c08e Fix integer conversion warning
ddbc564386 Fixed a few more shadowing warnings when compiling with g++ (and c++03)
946c3e2544 adding EIGEN_DEVICE_FUNC attribute to fix some GPU unit tests that are broken in HIP mode
7ec8b40ad9 Collapsed revision * Separating SYCL math function. * Converting function overload to function specialisation. * Applying the suggested design.
20ba2eee6d gcc thinks this may not be initialized
73ca600bca Fix numerous shadow-warnings for GCC<=4.8
ef4d79fed8 Disable/ReenableStupidWarnings did not work properly, when included recursively
befaf83f5f bug #1590: fix collision with some system headers defining the macro FP32
42f3ee4fb8 Old gcc versions have problems with recursive #pragma GCC diagnostic push/pop Workaround: Don't include "DisableStupidWarnings.h" before including other main-headers
c144bb355b Merge with upstream eigen/default
5747288676 Disable a bonus unit-test which is broken with gcc 4.7
d5ed64512f bug #1573: workaround gcc 4.7 and 4.8 bug
b1653d1599 Fix some trivial C++11 vs C++03 compatibility warnings
42123ff38b Make unit test C++03 compatible
4b1ad086b5 Fix shadow warnings in doc-snippets
117bc5d505 Fix some shadow warnings
f155e97adb Previous fix broke compilation for clang
209b4972ec Fix conversion warning
495f6c3c3a Fix missing-braces warnings
5aaedbeced Fixed more sign-compare and type-limits warnings
8295f02b36 Hide "maybe uninitialized" warning on gcc
f7675b826b Fix several integer conversion and sign-compare warnings
949b0ad9cb Merged in rmlarsen/eigen3 (pull request PR-468)
744e2fe0de Address comments about EIGEN_THREAD_LOCAL.
ad4a08fb68 Use Intel cast intrinsics, since MSVC does not allow direct casting. Reported by David Winkler.
8d9bc5cc02 Fix g++ compilation.
e9f9d70611 Don't rely on __had_feature for g++. Don't use __thread. Only use thread_local for gcc 4.8 or newer.
668690978f Pad PerThread when we emulate thread_local to prevent false sharing.
6cedc5a9b3 rename mu.
6e0464004a Store std::unique_ptr instead of raw pointers in per_thread_map_.
e51d9e473a Protect #undef max with #ifdef max.
d35880ed91 merge
a709c8efb4 Replace pointers by values or unique_ptr for better leak-safety
39335cf51e Make MaxSizeVector leak-safe
ff8e0ecc2f Updated one more line of code to avoid making the test dependent on cxx11 features.
43d9dd9b28 Removed more dependencies on cxx11.
f76c802973 Add missing empty line
41f1cc67b8 Assertion depended on a not yet initialized value
4713465eef Silence double-promotion warning
595cae9b09 Silence logical-op-parentheses warning
c9b25fbefa Silence unused parameter warning
dbdeceabdd Silence double-promotion warning (when converting double to complex<long double>)
19df4d5752 Merged in codeplaysoftware/eigen-upstream-pure/Pointer_type_creation (pull request PR-461)
f641cf1253 Adding missing at method in Eigen::array
ede580ccda Avoid using the auto keyword to make the tensor block access test more portable
e23c8c294e Use actual types instead of the auto keyword to make the code more portable
80f1a76dec removing the noises.
d0b01ebbf6 Reverting the unitended delete from the code.
161dcbae9b Using PointerType struct and specializing it per device for TensorCustomOp.h
f197c3f55b Removed an used variable (PacketSize) from TensorExecutor
4181556907 Fixed the tensor contraction code.
b6f96cf7dd Removed dependencies on cxx11 language features from the tensor_block_access test
fbb834144d Fixed more compilation errors
6bb3f1b43e Made the tensor_block_access test compile again
43ec0082a6 Made the kronecker_product test compile again
ab3f481141 Cleaned up the code and make it compile with more compilers
fa0bcbf230 merge
15d4f515e2 Use plain_assert in destructors to avoid throwing in CXX11 tests where main.h owerwrites eigen_assert with a throwing version.
aebdb06424 Fix a few compiler warnings in CXX11 tests.
2a98bd9c8e Merged eigen/eigen into default
59bba77ead Fixed compilation errors with gcc 4.7 and 4.8
a97aaa2bcf Merge with upstream.
8ba799805b Merge with upstream
6d6e7b7027 merge
9bb75d8d31 Add Barrier.h.
2e1adc0324 Merged eigen/eigen into default
8278ae6313 Add support for thread local support on platforms that do not support it through emulation using a hash map.
501be70b27 Code cleanup
3d3711f22f Fixed compilation errors.
3ec60215df Merged in rmlarsen/eigen2 (pull request PR-466)
0f1b2e08a5 Call logistic functor from Tensor::sigmoid.
d6e283ba96 sigmoid -> logistic
26239ee580 Use NULL instead of nullptr to avoid adding a cxx11 requirement.
3810ec228f Don't use the auto keyword since it's not always supported properly.
e6d5be811d Fixed syntax of nested templates chevrons to make it compatible with c++97 mode.
1aa86aad14 Merge with upstream.
35d90e8960 Fix BlockAccess enum in CwiseUnaryOp evaluator
855b68896b Merge with eigen/default
f2209d06e4 Add block evaluationto CwiseUnaryOp and add PreferBlockAccess enum to all evaluators
c8ea398675 Avoided language features that are only available in cxx11 mode.
4be4286224 Made the code compile with gcc 5.4.
eabc7a4031 PR 465: Fix issue in RowMajor assignment in plain_matrix_type_row_major::type
c49e93440f SuiteSparse defines the macro SuiteSparse_long to control what type is used for 64bit integers. The default value of this macro on non-MSVC platforms is long and __int64 on MSVC. CholmodSupport defaults to using long for the long variants of CHOLMOD functions. This creates problems when SuiteSparse_long is different than long. So the correct thing to do here is to use SuiteSparse_long as the type instead of long.
3a2e1b1fc6 Merge with upstream.
bfc5091dd5 Cast to diagonalSize to RealScalar instead Scalar.
8603d80029 Cast diagonalSize() to Scalar before multiplication. Without this, automatic differentiation in Ceres breaks because Scalar is a custom type that does not support multiplication by Index.
cfaedb38cd Fix bug in a test + compilation errors
ea8fa5e86f Merge with upstream
8c083bfd0e Properly fixing the PointerType for TensorCustomOp.h. As the output type here should be based on CoeffreturnType not the Scalar type.  Therefore, Similar to reduction and evalTo function, it should have its own MakePointer class. In this case, for other device the type is defaulted to CoeffReturnType and no changes is required on users' code. However, in SYCL, on the device, we can recunstruct the device Type.
050bcf6126 bug #1584: Improve random (avoid undefined behavior).
1c8b9e10a7 Merged with upstream eigen
131ed1191f Merged in codeplaysoftware/eigen-upstream-pure/Fixing_compiler_warning (pull request PR-462)
1285c080b3 Merged in codeplaysoftware/eigen-upstream-pure/disabling_assert_in_sycl (pull request PR-459)
c4b2845be9 Merged in rmlarsen/eigen3 (pull request PR-458)
7124172b83 Merged in codeplaysoftware/eigen-upstream-pure/EIGEN_UNROLL_LOOP (pull request PR-460)
532a0be05c Fixing compiler warning in TensorBlock.h as it was creating a lot of noise at compilation.
67711eaa31 Fixing typo.
3055e3a7c2 Creating a pointer type in TensorCustomOp.h
22031ab59a Adding EIGEN_UNROLL_LOOP macro.
908b906d79 Disabling assert inside SYCL kernel.
693fb1d41e Fix init order.
10d286f55b Silenced a couple of compilation warnings.
d011d05fd6 Fixed compilation errors.
36e7e7dd8f Forward declare NoOpOutputKernel as struct rather than class to be consistent with implementation.
fa68342ef8 Move sigmoid functor to core.
09c81ac033 bug #1451: fix numeric_limits<AutoDiffScalar<Der>> with a reference as derivative type
43fd42a33b Fix doxy and misc. typos Found via `codespell -q 3 -I ../eigen-word-whitelist.txt` ---  Eigen/src/Core/ProductEvaluators.h |  4 ++--  Eigen/src/Core/arch/GPU/Half.h     |  2 +-  Eigen/src/Core/util/Memory.h       |  2 +-  Eigen/src/Geometry/Hyperplane.h    |  2 +-  Eigen/src/Geometry/Transform.h     |  2 +-  Eigen/src/Geometry/Translation.h   | 12 ++++++------  doc/PreprocessorDirectives.dox     |  2 +-  doc/TutorialGeometry.dox           |  2 +-  test/boostmultiprec.cpp            |  2 +-  test/triangular.cpp                |  2 +-  10 files changed, 16 insertions(+), 16 deletions(-)
2cbd9dd498 [PATCH] cmake: Support source include with add_subdirectory and  find_package use This commit allows the sources of the project to be included in a parent project CMakeLists.txt and support use of "find_package(Eigen3 CONFIG REQUIRED)"
a80a290079 Fix 'template argument uses local type'-warnings (when compiled in C++03 mode)
6dcd2642aa bug #1526 - CUDA compilation fails on CUDA 9.x SDK when arch is set to compute_60 and/or above
edfb7962fd Use `static const int` instead of `enum` to avoid numerous `local-type-template-args` warnings in C++03 mode
ec38f07b79 bug #1595: Don't use C++11's std::isnan() in MIPS/MSA packet math.
1b0373ae10 Replace all using declarations with typedefs in Tensor ops
7f8b53fd0e bug #1580: Fix cuda clang build. STL is not supported, so std::equal_to and std::not_equal breaks compilation. Update the definition of EIGEN_CONSTEXPR_ARE_DEVICE_FUNC to exclude clang. See also PR 450.
bcb29f890c Fix initialization order.
cf17794ef4 Merged in codeplaysoftware/eigen-upstream-pure/SYCL-required-changes (pull request PR-454)
3074b1ff9e Fixing the compilation error.
225fa112aa Merge with upstream.
01358300d5 Creating separate SYCL required PR for uncontroversial files.
2bf1cc8cf7 Fix 256 bit packet size assumptions in unit tests.
dd5875e30d Merged in codeplaysoftware/eigen-upstream-pure/constructor_error_clang (pull request PR-451)
113d8343d6 Merged in codeplaysoftware/eigen-upstream-pure/Fixing_visual_studio_error_For_tensor_trace (pull request PR-452)
516d2621b9 fixing compilation error for cxx11_tensor_trace.cpp error on Microsoft Visual Studio.
40d6d020a0 Fixing ambigous constructor error for Clang compiler.
62169419ab Fix two regressions introduced in previous merges: bad usage of EIGEN_HAS_VARIADIC_TEMPLATES and linking issue.
64abdf1d7e Fix typo + get rid of redundant member variables for block sizes
93b9e36e10 Merged in paultucker/eigen (pull request PR-431)
385b3ff12f Merged latest changes from upstream/eigen
17221115c9 Merged in codeplaysoftware/eigen-upstream-pure/eigen_variadic_assert (pull request PR-447)
0360c36170 Merged in codeplaysoftware/eigen-upstream-pure/separating_internal_memory_allocation (pull request PR-446)
c6a5c70712 Correcting the position of allocate_temp/deallocate_temp in TensorDeviceGpu.h
9ca1c09131 Merged in codeplaysoftware/eigen-upstream-pure/new-arch-SYCL-headers (pull request PR-448)
45f75f1ace Merged in codeplaysoftware/eigen-upstream-pure/using_PacketType_class (pull request PR-449)
90e632fd66 Merged in codeplaysoftware/eigen-upstream-pure/EIGEN_STRONG_INLINE_MACRO (pull request PR-445)
af96018b49 Using the suggested modification.
b512a9536f Enabling per device specialisation of packetsize.
c84509d7cc Adding new arch/SYCL headers, used for SYCL vectorization.
3a197a60e6 variadic version of assert which can take a parameter pack as its input.
d7a8414848 Distinguishing between internal memory allocation/deallocation from explicit user memory allocation/deallocation.
9e219bb3d3 Converting ad-hoc inline keyword to EIGEN_STRONG_INLINE MACRO.
83c0a16baf Add block evaluation support to TensorOps
edf46bd7a2 Merged in yuefengz/eigen (pull request PR-370)
385f7b8d0c Change getAllocator() to allocator() in ThreadPoolDevice.
6f5b126e6d Fix tensor contraction for AVX512 machines
d6568425f8 Close branch tiling_3.
678a0dcb12 Merged in ezhulenev/eigen/tiling_3 (pull request PR-438)
679eece876 Speedup trivial tensor broadcasting on GPU by enforcing unaligned loads. See PR 437.
723856dec1 bug #1577: fix msvc compilation of unit test, msvc defines ptrdiff_t as long long
966c2a7bb6 Rename Index to StorageIndex + use Eigen::Array and Eigen::Map when possible
6913221c43 Add tiled evaluation support to TensorExecutor
7b91c11207 bug #1578: Improve prefetching in matrix multiplication on MIPS.
f5cace5e9f Fix two small typos in the documentation
34539c4af4 Merged in rmlarsen/eigen1 (pull request PR-441)
bc615e4585 Re-enable FMA for fast sqrt functions
96b030a8e4 Re-enable FMA for fast sqrt functions
e478532625 Reduce the number of template specializations of classes related to tensor contraction to reduce binary size.
2ebcb911b2 Add pcast packet op for NEON.
397b0547e1 DIsable static assertions only when necessary and disable double-promotion warnings in that case as well
5e79402b4a fix warnings for doc-eigen-prerequisites
5f79b7f9a9 Removed several shadowing types and use global Index typedef everywhere
44ee201337 Rename variable which shadows class name
705f66a9ca Account for missing change on commit "Remove SimpleThreadPool and..."
fd4fe7cbc5 Fixed issue which made documentation not getting built anymore
636126ef40 Allow to filter out build-error messages
d55efa6f0f TensorBlockIO
34a75c3c5c Initial support of TensorBlock
2c2de9da7d Merged in glchaves/eigen (pull request PR-433)
4ca3e48f42 fix typo
c747cde69a Add lastN shorcuts to seq/seqN.
02eaaacbc5 Move cxx11_tensor_uint128 test under an EIGEN_TEST_CXX11 guarded  block
2bf864f1eb Disable type traits for stdlibc++ <= 4.9.3
de70671937 Oopps, EIGEN_COMP_MSVC is not available before including Eigen.
56a750b6cc Disable optimization for sparse_product unit test with MSVC 2013, otherwise it takes several hours to build.
d4afccde5a Add test coverage for ThreadPoolDevice optional allocator.
c58b874727 PR430: Convert count to the reducer type in MeanReducer
2424e3b7ac Pass by const ref.
509a5fa77f Fix IsRelocatable without C++11
2ca2592009 Fix determination of EIGEN_HAS_TYPE_TRAITS
5e5987996f Fix stupid error in Quaternion move ctor
4e9848fa86 Actually add optional Allocator* arg to ThreadPoolDevice().
b3e7c9132d Add optional Allocator argument to ThreadPoolDevice constructor. When supplied, this allocator will be used in place of internal::aligned_malloc.  This permits e.g. use of a NUMA-node specific allocator where the thread-pool is also restricted a single NUMA-node.
40797dbea3 bug #1572: use c++11 atomic instead of volatile if c++11 is available, and disable multi-threaded GEMM on non-x86 without c++11.
add5757488 Simplify handling and non-splitted tests and include split_test_helper.h instead of re-generating it. This also allows us to modify it without breaking existing build folder.
901c7d31f0 Fix usage of EIGEN_SPLIT_LARGE_TESTS=ON: some unit tests, such as indexed_view have to be split unconditionally.
f2b52f9946 Add the cmake option "EIGEN_DASHBOARD_BUILD_TARGET" to control the build target in dashboard mode (e.g., ctest -D Experimental)
23d82c1ac5 Merged in rmlarsen/eigen2 (pull request PR-422)
a87cff20df Fix GeneralizedEigenSolver when requesting for eigenvalues only.
3a9cf4e290 Get rid of alias for m_broadcast.
4222550e17 Optimize the case where broadcasting is a no-op.
4a3952fd55 Relax the condition to not only work on Android.
02a9443db9 Clang produces incorrect Thumb2 assembler when using alloca. Don't define EIGEN_ALLOCA when generating Thumb with clang.
20991c3203 bug #1571: fix is_convertible<from,to> with "from" a reference.
1920129d71 Remove clang warning
195c9c054b Print more debug info in gpu_basic
06eb24cf4d Introduce gpu_assert for assertion in device-code, and disable them with clang-cuda.
5fd03ddbfb Make EIGEN_TEST_CUDA_CLANG more friendly with OSX
86d9c0255c Forward declaring std::array does not work with all std libs, so let's just include <array>
d908afe35f bug #1558: fix a corner case in MINRES when both v_new and w_new vanish.
6e654f3379 Reduce number of allocations in TensorContractionThreadPool.
7ccb623746 bug #1569: fix Tensor<half>::mean() on AVX with respective unit test.
1f523e7304 Add MIPS changes missing from previous merge.
e3c2d61739 Assert that no output kernel is defined for GPU contraction
086ded5c85 Disable type traits for GCC < 5.1.0
79d4129cce Specify default output kernel for TensorContractionOp
6e5a3b898f Add regression for bugs #1573 and #1575
863580fe88 bug #1432: fix conservativeResize for non-relocatable scalar types. For those we need to by-pass realloc routines and fall-back to allocate as new - copy - delete. The remaining problem is that we don't have any mechanism to accurately determine whether a type is relocatable or not, so currently let's be super conservative using either RequireInitialization or std::is_trivially_copyable
053ed97c72 Generalize ScalarWithExceptions to a full non-copyable and trowing scalar type to be used in other unit tests.
a503fc8725 bug #1575: fix regression introduced in bug #1573 patch. Move ctor/assignment should not be defaulted.
308725c3c9 More clearly disable the inclusion of src/Core/arch/CUDA/Complex.h without CUDA
3875fb05aa Add support for MIPS SIMD (MSA)
44ea5f7623 Add unit test for -Tensor<complex> on GPU
12e1ebb68b Remove local Index typedef from unit-tests
63185be8b2 Disable eigenvalues test for clang-cuda
bec013b2c9 fix unused warning
5c73c9223a Fix shadowing typedefs
98728312c8 Fix compilation regarding std::array
eb3d8f68bb fix unused warning
006e18e52b Cleanup the mess in Eigen/Core by moving CUDA/HIP stuff at more appropriate places (Macros.h), and alignment/vectorization logic is now in util/ConfigureVectorization.h
9a6a43319f Fix cxx11_tensor_fft not building on Windows.
b347eb0b1c Fix doc
e79c5149bf Fix AVX512 implementations of psqrt
1eff6cf8a7 Use device's allocate function instead of internal::aligned_malloc. This would make it easier to track memory usage in device instances.
adb134d47e Fix implicit conversion from 0.0 to scalar
937ad18221 add unit test for SimplicialCholesky and Boost multiprec.
6d451cf2b6 Add missing consts for rows and cols functions in SparseLU
a12b8a8c75 FindEigen3: Set Eigen3_FOUND variable
8bdb214fd0 remove double ;;
a9060378d3 bug #1570: fix warning
6cd6551b26 Add deprecated header files for TensorFlow
da0c604078 Merged in deven-amd/eigen (pull request PR-402)
a4ea611ca7 Remove useless specialization thanks to is_convertible being more robust.
8a40dda5a6 Add some basic unit-tests
8ef267ccbd spellcheck
21cf4a1a8b Make is_convertible more robust and conformant to std::is_convertible
8a5955a052 Optimize the product of a householder-sequence with the identity, and optimize the evaluation of a HouseholderSequence to a dense matrix using faster blocked product.
d193cc87f4 Fix regression in 9357838f94d2907996adadc7e5200376f3561ed4
fb33687736 Fix double ;;
876f392c39 Updates corresponding to the latest round of PR feedback
1fe0b74904 deleting hip specific files that are no longer required
dec47a6493 renaming CUDA* to GPU* for some header files
471cfe5ff7 renaming CUDA* to GPU* for some header files
38807a2575 merging updates from upstream
f00d08cc0a Optimize extraction of Q in SparseQR by exploiting the structure of the identity matrix.
1625476091 Add internall::is_identity compile-time helper
fe723d6129 Fix conversion warning
9357838f94 bug #1543: improve linear indexing for general block expressions
de9e31a06d Introduce the macro ei_declare_local_nested_eval to help allocating on the stack local temporaries via alloca, and let outer-products makes a good use of it. If successful, we should use it everywhere nested_eval is used to declare local dense temporaries.
6190aa5632 bug #1567: add optimized path for tensor broadcasting and 'Channel First' shape
ec323b7e66 Skip null numerators in triangular-vector-solve (as in BLAS TRSV).
359dd77ec3 Fix legitimate "declaration shadows a typedef" warning
e2b2c61533 merging from master
1bb6fa99a3 merging the CUDA and HIP implementation for the Tensor directory and the unit tests
cfdabbcc8f removing the *Hip files from the unsupported/Eigen/CXX11/src/Tensor and unsupported/test directories
7e41c8f1a9 renaming *Cuda files to *Gpu in the unsupported/Eigen/CXX11/src/Tensor and unsupported/test directories
ee73ae0a80 Merged eigen/eigen into default
90a53ca6fd Fix the Packet16h version of ptranspose
1f54164eca Fix a few issues with Packet16h
f2dc048df9 complete implementation of Packet16h (AVX512)
a937c50208 palign is not used anymore, so let's relax the unit test
56a33ae57d test product kernel with half-floats.
f4d623ffa7 Complete Packet8h implementation and test it in packetmath unit test
a8ab6060df Add unitests for inverse and selfadjoint-eigenvalues on CUDA
b8271bb368 fix md5sum of lapack_addons
b6cc0961b1 updates based on PR feedback
ba972fb6b4 moving Half headers from CUDA dir to GPU dir, removing the HIP versions
d1d22ef0f4 syncing this fork with upstream
d3a380af4d Merged in mfigurnov/eigen/gamma-der-a (pull request PR-403)
f7124b3e46 Extend CUDA support to matrix inversion and selfadjointeigensolver
0537123953 bug #1565: help MSVC to generatenot too bad ASM in reductions.
6a241bd8ee Implement custom inplace triangular product to avoid a temporary
3ae2083e23 Make is_same_dense compatible with different scalar types.
67ec37f7b0 Activate dgmres unit test
047677a08d Fix regression in changeset f05dea6b2326836e5e0243fbaffbece84b833d64 : computeFromHessenberg can take any expression for matrixQ, not only an HouseholderSequence.
d625564936 Simplify redux_evaluator using inheritance, and properly rename parameters in reducers.
d428a199ab bug #1562: optimize evaluation of small products of the form s*A*B by rewriting them as: s*(A.lazyProduct(B)) to save a costly temporary. Measured speedup from 2x to 5x...
a7b313a16c Fix unit test
0cdacf3fa4 update comment
54f6eeda90 Merged in net147/eigen (pull request PR-411)
9a81de1d35 Fix order of EIGEN_DEVICE_FUNC and returned type
b7689bded9 Use std::complex constructor instead of assignment from scalar
f9d337780d First step towards a generic vectorised quaternion product
ee5864f72e bug #1560 fix product with a 1x1 diagonal matrix
2f62cc68cd merge
bda71ad394 Fix typo in pbend for AltiVec.
b6ffcd22e3 Merged in rmlarsen/eigen2 (pull request PR-409)
4cc32d80fd bug #1555: compilation fix with XLC
5418154a45 Fix oversharding bug in parallelFor.
cb4c9a6a94 bug #1531: make dedicatd unit testing for NumDimensions
d6813fb1c5 bug #1531: expose NumDimensions for solve and sparse expressions.
89d65bb9d6 bug #1531: expose NumDimensions for compatibility with Tensor
f05dea6b23 bug #1550: prevent avoidable memory allocation in RealSchur
7933267c67 fix prototype
f4d1461874 Fix the way matrix folder is passed to the tests.
522d3ca54d Don't use std::equal_to inside cuda kernels since it's not supported.
7d7bb91537 Missing line during manual rebase of PR-374
30fa3d0454 Merge from eigen/eigen
d2b0a4a59b Merged in mfigurnov/eigen/fix-bessel (pull request PR-404)
6c71c7d360 Merge from eigen/eigen.
c25034710e Fiw some warnings in dox examples
37348d03ae Fix int versus Index
c723ffd763 Fix warning
af7c83b9a2 Fix warning
7fe29aceeb Fix MSVC warning C4290: C++ exception specification ignored except to indicate a function is not __declspec(nothrow)
aa813d417b Fix compilation of special functions without C99 math.
55774b48e4 Fix short vs long
e5f9f4768f Avoid unnecessary C++11 dependency
b3fd93207b Fix typos found using codespell
5172a32849 Updated the stopping criteria in igammac_cf_impl.
4bd158fa37 Derivative of the incomplete Gamma function and the sample of a Gamma random variable.
8fbd47052b Adding support for using Eigen in HIP kernels.
e206f8d4a4 Merged in mfigurnov/eigen (pull request PR-400)
e2ed0cf8ab Add a ThreadPoolInterface* getter for ThreadPoolDevice.
84868da904 Don't run hg on non mercurial clone
f216854453 Exponentially scaled modified Bessel functions of order zero and one.
6af1433cb5 Doc: add aliasing in common pitfaffs.
ea94543190 Hyperlink DOIs against preferred resolver
999b552c16 Search for sequential Pastix.
eef4b7bd87 Fix handling of path names containing spaces and the likes.
647b724a36 Define pcast<> for SSE types even when AVX is enabled. (otherwise float are silently reinterpreted as int instead of being converted)
49262dfee6 Fix compilation and SSE support with PGI compiler
750af06362 Add an option to test with external BLAS library
d06a753d10 Make qr_fullpivoting unit test run for fixed-sized matrices
f0862b062f Fix internal::is_integral<size_t/ptrdiff_t> with MSVC 2013 and older.
36e413a534 Workaround a MSVC 2013 compilation issue with MatrixBase(Index,int)
725bd92903 fix stupid typo
a382bc9364 is_convertible<T,Index> does not seems to work well with MSVC 2013, so let's rather use __is_enum(T) for old MSVC versions
4dd767f455 add some internal checks
345c0ab450 check that all integer types are properly handled by mat(i,j)
405859f18d Set EIGEN_IDEAL_MAX_ALIGN_BYTES correctly for AVX512 builds
6293ad3f39 Performance improvements to tensor broadcast operation   1. Added new packet functions using SIMD for NByOne, OneByN cases   2. Modified existing packet functions to reduce index calculations when input stride is non-SIMD   3. Added 4 test cases to cover the new packet functions
7134fa7a2e Fix compilation with MSVC by reverting to char* for _mm_prefetch except for PGI (the later being the one that has the wrong prototype).
e7147f69ae Add tests for sparseQR results (value and size) covering bugs #1522 and #1544
b2053990d0 Adding EIGEN_DEVICE_FUNC to Products, especially Dense2Dense Assignment specializations. Otherwise causes problems with small fixed size matrix multiplication (call to 0x00 in call_assignment_no_alias in debug mode or trap in release with CUDA 9.1).
9f0c5c3669 Make sparse QR result sizes consistent with dense QR, with the following rules:
d655900953 bug #1544: Generate correct Q matrix in complex case. Original patch was by Jeff Trull in PR-386.
0371380d5b Merged in rmlarsen/eigen2 (pull request PR-393)
b8d36774fa Rename clip2 to clamp.
812480baa3 Rename scalar_clip_op to scalar_clip2_op to prevent collision with existing functor in TensorFlow.
1403c2c15b Merged in didierjansen/eigen (pull request PR-360)
ad355b3f05 Merged in rmlarsen/eigen2 (pull request PR-392)
0272f2451a Fix "suggest parentheses around comparison" warning
afec3021f7 Use numext::maxi & numext::mini.
b8c8e5f436 Add vectorized clip functor for Eigen Tensors.
6118c6ff4f Enable RawAccess to tensor slices whenever possinle. Avoid 32-bit integer overflow in TensorSlicingOp
6e7118265d Fix compilation with NEON+MSVC
097dd4616d Fix unit test for SIMD engine not supporting sqrt
8810baaed4 Add multi-threading for sparse-row-major * dense-row-major
2f3287da7d Fix "used uninitialized" warnings
3ffd449ef5 Workaround warning
e8ca5166a9 bug #1428: atempt to make NEON vectorization compilable by MSVC. The workaround is to wrap NEON packet types to make them different c++ types.
6f5935421a fix AVX512 plog
e9da464e20 Add specializations of is_arithmetic for long long in c++11
a57e6e5f0f workaround MSVC 2013 compilation issue (ambiguous call)
11123175db typo in doc
5679e439e0 bug #1543: fix linear indexing in generic block evaluation (this completes the fix in commit 12efc7d41b80259b996be5781bf596c249c90d3f )
35b31353ab Fix unit test
34e499ad36 Disable -Wshadow when compiling with g++
b7b868d1c4 fix AVX512 plog
686fb57233 fix const cast in NEON
02d2f1cb4a Cast zeros to Scalar in RealSchur
50633d1a83 Renamed .trans() et al. to .reverseFlag() et at. Adapted documentation of .setReverseFlag()
39c2cba810 Add a specialization of Eigen::numext::conj for std::complex<T> to be used when compiling a cuda kernel. This fixes the compilation of TensorFlow 1.4 with clang 6.0 used as CUDA compiler with libc++.
775766d175 Add parenthesis to fix compiler warnings
42715533f1 bug #1493: Make representation of HouseholderSequence consistent and working for complex numbers. Made corresponding unit test actually test that. Also simplify implementation of QR decompositions
c9ecfff2e6 Add links where to make PRs and report bugs into README.md
c8b19702bc Limit test size for sparse Cholesky solvers to EIGEN_TEST_MAX_SIZE
2cbb00b18e No need to make noise, if KLU is found
84dcd998a9 Recent Adolc versions require C++11
4d392d93aa Make hypot_impl compile again for types with expression-templates (e.g., boost::multiprecision)
072e111ec0 SelfAdjointView<...,Mode> causes a static assert since commit d820ab9edc0b38af4cdb3d545714a0c9083e5a78
7a9089c33c fix linking issue
e43ca0320d bug #1520: workaround some -Wfloat-equal warnings by calling std::equal_to
b0eda3cb9f Avoid using memcpy for non-POD elements
79266fec75 extend doxygen splitter for huge screens
426052ef6e Update header/footer for doxygen 1.8.13
9c8decffbf Fix javascript hacks for oxygen 1.8.13
e798466871 bug #1538: update manual pages regarding BDCSVD.
c91906b065 Umfpack: UF_long has been removed in recent versions of suitesparse, and fix a few long-to-int conversions issues.
0050709ea7 Merged in v_huber/eigen (pull request PR-378)
8c1652055a Fix code sample output in block(int, int, int, int) doxygen
08008f67e1 Add unitTest
add15924ac Fix MKL backend for symmetric eigenvalues on row-major matrices.
04b1628e55 Add missing empty line.
c2624c0318 Fix cmake scripts with no fortran compiler
2f833b1c64 bug #1509: fix computeInverseWithCheck for complexes
b903fa74fd Extend list of MSVC versions
403f09ccef Make stableNorm and blueNorm compatible with 2D matrices.
4213b63f5c Factories code between numext::hypot and scalar_hyot_op functor.
368dd4cd9d Make innerVector() and innerVectors() methods available to all expressions supported by Block.
e116f6847e bug #1521: avoid signalling NaN in hypot and make it std::complex<> friendly.
73729025a4 bug #1521: add unit test dedicated to numbest::hypos
13f5df9f67 Add a note on vec_min vs asm
e91e314347 bug #1494: makes pmin/pmax behave on Altivec/VSX as on x86 regading NaNs
112c899304 comment unreachable code
a1292395d6 Fix compilation of product with inverse transpositions (e.g., mat * Transpositions().inverse())
8c7b5158a1 commit 45e9c9996da790b55ed9c4b0dfeae49492ac5c46 (HEAD -> memory_fix) Author: George Burgess IV <gbiv@google.com> Date:   Thu Mar 1 11:20:24 2018 -0800
dd4cc6bd9e bug #1527: fix support for MKL's VML (destination was not properly resized)
c5b56f1fb2 bug #1528: better use numeric_limits::min() instead of 1/highest() that with underflow.
8d0ffe3655 bug #1516: add assertion for out-of-range diagonal index in MatrixBase::diagonal(i)
407e3e2621 bug #1532: disable stl::*_negate in C++17 (they are deprecated)
40b4bf3d32 AVX512: _mm512_rsqrt28_ps is available for AVX512ER only
584951ca4d Rename predux_downto4 to be more accurate on its semantic.
67bac6368c protect calls to isnan
d43b2f01f4 Fix unit testing of predux_downto4 (bad name), and add unit testing of prsqrt
7b0630315f AVX512: fix psqrt and prsqrt
6719409cd9 AVX512: add missing pinsertfirst and pinsertlast, implement pblend for Packet8d, fix compilation without AVX512DQ
524119d32a Fix uninitialized output argument.
267a144da5 Remove unnecessary define
baf9a5a776 Add interface to umfpack_*l_* functions
e3912f5e63 MIsc. source and comment typos
5deeb19e7b bug #1517: fix triangular product with unit diagonal and nested scaling factor: (s*A).triangularView<UpperUnit>()*B
12efc7d41b Fix linear indexing in generic block evaluation.
f4a6863c75 Fix typo
000840cae0 Added a move constructor and move assignment operator to Tensor and wrote some tests.
3a2dc3869e Fix weird issue with MSVC 2013
c95aacab90 Fix TensorContractionOp evaluators for GPU and SYCL
038b55464b Merged in deven-amd/eigen (pull request PR-425)
f124f07965 applying EIGEN_DECLARE_TEST to *gpu* tests
dff3a92d52 Remove usage of #if EIGEN_TEST_PART_XX in unit tests that does not require them (splitting can thus be avoided for them)
82f0ce2726 Get rid of EIGEN_TEST_FUNC, unit tests must now be declared with EIGEN_DECLARE_TEST(mytest) { /* code */ }. This provide several advantages: - more flexibility in designing unit tests - unit tests can be glued to speed up compilation - unit tests are compiled with same predefined macros, which is a requirement for zapcc
37f4bdd97d Fix VERIFY_EVALUATION_COUNT(EXPR,N) with a complex expression as N
2b2cd85694 bug #1573: add noexcept move constructor and move assignment operator to Quaternion
43206ac4de Call OutputKernel in evalGemv
e204ecdaaf Remove SimpleThreadPool and always use {NonBlocking}ThreadPool
b324ed55d9 Call OutputKernel in evalGemv
01fd4096d3 Fuse computations into the Tensor contractions using output kernel
5539587b1f Some warning fixes
8f55956a57 Update the padding computation for PADDING_SAME to be consistent with TensorFlow.
09a16ba42f bug #1412: fix compilation with nvcc+MSVC
5b3c367926 Fix typos in the contraction example of tensor README
f558ad2955 Fix incorrect ldvt in LAPACKE call from JacobiSVD
22de74aa76 Disable use of recurrence for computing twiddle factors.
73629f8b68 Fix gcc7 warning
59985cfd26 Disable use of recurrence for computing twiddle factors. Fixes FFT precision issues for large FFTs. https://github.com/tensorflow/tensorflow/issues/10749#issuecomment-354557689
f9bdcea022 For cuda 9.1 replace math_functions.hpp with cuda_runtime.h
06bf1047f9 Fix compilation of stableNorm with some expressions as input
73214c4bd0 Workaround nvcc 9.0 issue. See PR 351. https://bitbucket.org/eigen/eigen/pull-requests/351
31e0bda2e3 Fix cmake warning
26a2c6fc16 fix unit test
546ab97d76 Add possibility to overwrite EIGEN_STRONG_INLINE.
9c3aed9d48 Fix packet and alignment propagation logic of Block<Xpr> expressions. In particular, (A+B).col(j) lost vectorisation.
76c7dae600 ignore all *build* sub directories
b2cacd189e fix header inclusion
3122477c86 Update the padding computation for PADDING_SAME to be consistent with TensorFlow.
393b7c4959 Merged in ncluehr/eigen/float2half-fix (pull request PR-349)
aefd5fd5c4 Replace __float2half_rn with __float2half
d0b028e173 clarify Pastix requirements
3587e481fb silent MSVC warning
3a327cd3c7 Merged in ncluehr/eigen/predux_fp16_fix (pull request PR-348)
dd6de618c3 Fix incorrect integer cast in predux<half2>().
3dc6ff73ca Handle PGI compiler
599a88da27 Disable gcc-specific workaround for Clang to allow build with AVX512
672bdc126b bug #1479: fix failure detection in LDLT
624df50945 Adds missing EIGEN_STRONG_INLINE to support MSVC properly inlining small vector calculations
746a6b7b81 Merged in zzp11/eigen/zzp11/a-small-mistake-quickreferencedox-edited-1510217281963 (pull request PR-346)
d2631ef61d Merged in facaiy/eigen/ENH/exp_support_complex_for_gpu (pull request PR-359)
8fcbd6d4c9 Merged in dtrebbien/eigen (pull request PR-369)
e900b010c8 Improve robustness of igamma and igammac to bad inputs.
f7d17689a5 Add static assertion for fixed sizes Ref<>
f6be7289d7 Implement better static assertion checking to make sure that the first assertion is a static one and not a runtime one.
d820ab9edc Add static assertion on selfadjoint-view's UpLo parameter.
0c57be407d Move up the specialization of std::numeric_limits
42a8334668 ENH: exp supports complex type for cuda
912e9965ef a small mistake QuickReference.dox edited online with Bitbucket
4c03b3511e Fix issue with boost::multiprec in previous commit
e9d2888e74 Improve debugging tests and output in BDCSVD
e8468ea91b Fix overflow issues in BDCSVD
3949615176 Merged in JonasMu/eigen (pull request PR-329)
11ddac57e5 Merged in guillaume_michel/eigen (pull request PR-334)
a6d875bac8 Removed unecesasry #include
f16ba2a630 Merged in LaFeuille/eigen-1/LaFeuille/typo-fix-alignmeent-alignment-1505889397887 (pull request PR-335)
ee6ad21b25 Merged in henryiii/eigen/henryiii/device (pull request PR-343)
9bb26eb8f1 Restore `__device__`
4245475d22 Fixing missing inlines on device functions for newer CUDA cards
8eb4b9d254 Merged in benoitsteiner/opencl (pull request PR-341)
2dd63ed395 Merge
f349507e02 Specialize ThreadPoolDevice::enqueueNotification for the case with no args. As an example this reduces binary size of an TensorFlow demo app for Android by about 2.5%.
688451409d Merged in mehdi_goli/upstr_benoit/ComputeCppNewReleaseFix (pull request PR-16)
0e6e027e91 check both z13 and z14 arches
6c3475f110 remove debugging
df7644aec3 Merged eigen/eigen into default
98e52cc770 rollback 374f750ad4708408a1255a98964719fd598b0659
c4ad358565 explicitly set conjugate mask
380d41fd76 added some extra debugging
d0b7b9d0d3 some Packet2cf pmul fixes
df173f5620 initial pexp() for 32-bit floats, commented out due to vec_cts()
3dcae2a27f initial pexp() for 32-bit floats, commented out due to vec_cts()
c2a2246489 fix predux_mul for z14/float
374f750ad4 eliminate 'enumeral and non-enumeral type in conditional expression' warning
bc30305d29 complete z14 port
0e85a677e3 bug #1472: fix warning
8579195169 bug #1468 (1/2) : add missing std:: to memcpy
f92567fecc Add link to a useful example.
7ad07fc6f2 Update documentation for aligned_allocator
7c9b07dc5c Typo fix alignmeent ->alignment
2062ac9958 Changes required for new ComputeCpp CE version.
23f8b00bc8 clang provides __has_feature(is_enum) (but not <type_traits>) in C++03 mode
0c9ad2f525 std::integral_constant is not C++03 compatible
1b7294f6fc Fix cut-and-paste error.
94e2213b38 Avoid undefined behavior in Eigen::TensorCostModel::numThreads.
6d42309f13 Fix compilation of Vector::operator()(enum) by treating enums as Index
ea4e65bf41 Fixed compilation with cuda_clang.
a91918a105 Merged in infinitei/eigen (pull request PR-328)
9c353dd145 Add C++11 max_digits10 for half.
b35d1ce4a5 Implement true compile-time "if" for apply_rotation_in_the_plane. This fixes a compilation issue for vectorized real type with missing vectorization for complexes, e.g. AVX512.
80142362ac Fix mixing types in sparse matrix products.
810b70ad09 Merged in JonasMu/added-an-example-for-a-contraction-to-a--1504265366851 (pull request PR-1)
a34fb212cd Close branch JonasMu/added-an-example-for-a-contraction-to-a--1504265366851
a991c80365 Added an example for a contraction to a scalar value, e.g. a double contraction of two second order tensors and how you can get the value of the result. I lost one day to get this doen so I think it will help some guys. I also added Eigen:: to the IndexPair and and array in the same example.
a4089991eb Added support for CUDA 9.0.
6d991a9595 bug #1464 : Fixes construction of EulerAngles from 3D vector expression.
304ef29571 Handle min/max/inf/etc issue in cuda_fp16.h directly in test/main.h
1affe3d8df Merged eigen/eigen into default
21633e585b bug #1462: remove all occurences of the deprecated __CUDACC_VER__ macro by introducing EIGEN_CUDACC_VER
12249849b5 Make the threshold from gemm to coeff-based-product configurable, and add some explanations.
39864ebe1e bug #336: improve doc for PlainObjectBase::Map
600e52fc7f Add missing scalar conversion
9deee79922 bug #1457: add setUnit() methods for consistency.
bc4dae9aeb bug #1449: fix redux_3 unit test
bc91a2df8b bug #1461: fix compilation of Map<const Quaternion>::x()
fc39d5954b Merged in dtrebbien/eigen/patch-1 (pull request PR-312)
b223918ea9 Doc: warn about constness in LLT::solveInPlace
4ce5ec5197 initial support for z14
e1e71ca4e4 initial support for z14
84d7be103a Fixing Argmax that was breaking upstream TensorFlow.
f0b154a4b0 Code cleanup
575cda76b3 Fixed syntax errors generated by xcode
5ac27d5b51 Avoid relying on cxx11 features when possible.
c5a241ab9b Merged in benoitsteiner/opencl (pull request PR-323)
b7ae4dd9ef Merged in hughperkins/eigen/add-endif-labels-TensorReductionCuda.h (pull request PR-315)
9daed67952 Merged in tntnatbry/eigen (pull request PR-319)
6795512e59 Improved the randomness of the tensor random generator
dc524ac716 Fixed compilation warning
62b4634ebe Merged in mehdi_goli/upstr_benoit/TensorSYCLImageVolumePatchFixed (pull request PR-14)
c92faf9d84 Merged in mehdi_goli/upstr_benoit/HiperbolicOP (pull request PR-13)
53725c10b8 Merged in mehdi_goli/opencl/DataDependancy (pull request PR-10)
c010b17360 Fix warning
561f777075 Fix a gcc7 warning about bool * bool in abs2 default implementation.
b651ce0ffa Fix a gcc7 warning: Wint-in-bool-context
157040d44f Make sure CMAKE_Fortran_COMPILER is set before checking for Fortran functions
24fe1de9b4 merge
b240080e64 bug #1436: fix compilation of Jacobi rotations with ARM NEON, some specializations of internal::conj_helper were missing.
3baef62b9a Added missing __device__ qualifier
449936828c Added missing __device__ qualifier
b8e805497e Merged in benoitsteiner/opencl (pull request PR-318)
9fbdf02059 Enable Array(EigenBase<>) ctor for compatible scalar types only. This prevents nested arrays to look as being convertible from/to simple arrays.
e43d8fe9d7 Fix compilation of streaming nested Array, i.e., cout << Array<Array<>>
d9d7bd6d62 Fix 1x1 case in Solve expression with EIGEN_DEFAULT_MATRIX_STORAGE_ORDER_OPTION==RowMajor
95ecb2b5d6 Make buildtests.in more robust
3f7fb5a6d6 Make eigen_monitor_perf.sh more robust
7f42a93349 Merged in alainvaucher/eigen/find-module-imported-target (pull request PR-324)
7cc503f9f5 bug #1485: fix linking issue of non template functions
103c0aa6ad Add KLU in the list of third-party sparse solvers
00bc67c374 Move KLU support to official
b82cd93c01 KLU: truely disable unimplemented code, add proper static assertions in solve
6365f937d6 KLU depends on BTF but not on libSuiteSparse nor Cholmod
8cf63ccb99 Merged in kylemacfarlan/eigen (pull request PR-337)
1495b98a8e Merged in spraetor/eigen (pull request PR-305)
fc45324380 Merged in jkflying/eigen-fix-scaling (pull request PR-302)
d306b96fb7 Merged in carpent/eigen (pull request PR-342)
1b2dcf9a47 Check that Schur decomposition succeed.
0a1cc73942 bug #1484: restore deleted line for 128 bits long doubles, and improve dispatching logic.
f86bb89d39 Add EIGEN_MKL_NO_DIRECT_CALL option
5fa79f96b8 Patch from Konstantin Arturov to enable MKL's direct call by default
a020d9b134 Use col method for column-major matrix
c0e1d510fd Add support for SuiteSparse's KLU routines
6dcf966558 Avoid implicit scalar conversion with accuracy loss in pow(scalar,array)
50e09cca0f fix tipo
a4fd4233ad Fix compilation with some compilers
c3e2afce0d Enable MSVC 2010 workaround from MSVC only
731c8c704d bug #1403: more scalar conversions fixes in BDCSVD
1bbcf19029 bug #1403: fix implicit scalar type conversion.
ba5cab576a bug #1405: enable StrictlyLower/StrictlyUpper triangularView as the destination of matrix*matrix products.
90168c003d bug #1414: doxygen, add EigenBase to CoreModule
26f552c18d fix compilation of Half in C++98 (issue introduced in previous commit)
1d59ca2458 Fix compilation with gcc 4.3 and ARM NEON
fb1ee04087 bug #1410: fix lvalue propagation of Array/Matrix-Wrapper with a const nested expression.
723a59ac26 add regression test for aliasing in product rewritting
8640093af1 fix compilation in C++98
a7be4cd1b1 Fix LeastSquareDiagonalPreconditioner for complexes (issue introduced in previous commit)
498aa95a8b bug #1424: add numext::abs specialization for unsigned integer types.
d588822779 Add missing std::numeric_limits specialization for half, and complete NumTraits<half>
682b2ef17e bug #1423: fix LSCG\'s Jacobi preconditioner for row-major matrices.
4bbc320468 bug #1435: fix aliasing issue in exressions like: A = C - B*A;
9341f258d4 Add labels to #ifdef, in TensorReductionCuda.h
1e736b9ead Merged in mehdi_goli/opencl/SYCLAlignAllocator (pull request PR-7)
9dee55ec33 Merged eigen/eigen into default
0370d3576e Applying Ronnan's comments.
615aff4d6e Merged in a-doumoulakis/opencl (pull request PR-12)
c3bd860de8 Modification upon request
e3f964ed55 Applying Benoit's comment;removing dead code.
df90010cdd Merged in mehdi_goli/opencl/CmakeFixForUbuntu16.04 (pull request PR-11)
fb853a857a Restore misplaced comment
7a8ba565f8 Merge changed from upstream
daf99daadd Merged in DuncanMcBain/opencl/default (pull request PR-2)
9ef5c948ba Fixing Cmake for gcc>=5.
0cb3c7c7dd Update FindComputeCpp.cmake with new changes from SDK
2971503fed Specializing numeric_limits For AutoDiffScalar
26e8f9171e Fix compilation of matrix log with Map as input
f2a553fb7b bug #1411: fix usage of alignment information in vectorization of quaternion product and conjugate.
e018142604 Make sure CholmodSupport works when included in multiple compilation units (issue was reported on stackoverflow.com)
8508db52ab bug #1417: make LinSpace compatible with std::complex
9aa7c30163 Merge with Benoit.
b42d775f13 Temporarry branch for synch with upstream
615733381e Merged in mehdi_goli/opencl/FixingCmakeDependency (pull request PR-2)
1500a67c41 Merged in mehdi_goli/opencl/TensorSupportedDevice (pull request PR-6)
76c0fc1f95 Fixing SYCL alignment issue required by TensorFlow.
2d17128d6f Fixing suported device list.
61d7f3664a Fixing Cmake Dependency for SYCL
a5226ce4f7 Add cmake file FindTriSYCL.cmake
052426b824 Add support for triSYCL
4343db84d8 updated warning number for nvcc relase 8 (V8.0.61) for the stupid warning message  'calling a __host__ function from a __host__ __device__ function is not allowed'.
9bc0a35731 Fixed nested angle barckets >> issue when compiling with cuda 8
891ac03483 Fix dense * sparse-selfadjoint-view product.
949a2da38c Use scalar_sum_op and scalar_quotient_op instead of operator+ and operator/ in MeanReducer.
d9084ac8e1 Improve mixing of complex and real in the vectorized path of apply_rotation_in_the_plane
f75dfdda7e Fix unwanted Real to Scalar to Real conversions in column-pivoting QR.
0f83aeb6b2 Improve cmake scripts for Pastix and BLAS detection.
0d08165a7f Merged in benoitsteiner/opencl (pull request PR-309)
068cc09708 Preserve file naming conventions
c302ea7bc4 Deleted empty line of code
a5a0c8fac1 Guard sycl specific code under a EIGEN_USE_SYCL ifdef
a1304b95b7 Code cleanup
66c63826bd Guard the sycl specific code with EIGEN_USE_SYCL
e3e343390a Guard the sycl specific code with a #ifdef EIGEN_USE_SYCL
63840d4666 iGate the sycl specific code under a EIGEN_USE_SYCL define
bc050ea9f0 Fixed compilation error when sycl is enabled.
4910630c96 fix typos in the Tensor readme
c1b3d5ecb6 Restored code compatibility with compilers that dont support c++11 Gated more sycl code under #ifdef sycl
e2d5d4e7b3 Restore the old constructors to retain compatibility with non c++11 compilers.
73fcaa319f Gate the sycl specific code under #ifdef sycl
bd64ee8555 Fixing TensorArgMaxSycl.h; Removing warning related to the hardcoded type of dims to be int in Argmax.
511810797e Issue with mpreal and std::numeric_limits, i.e. digits is not a constant. Added a digits() traits in NumTraits with fallback to static constant. Specialization for mpreal added in MPRealSupport.
a91417a7a5 Introduces align allocator for SYCL buffer
aae19c70ac update has_ReturnType to be more consistent with other has_ helpers
f8a622ef3c Merged eigen/eigen into default
fd7db52f9b Silenced compilation warning
9597d6f6ab Temporary: Disables cxx11_tensor_argmax_sycl test since it is causing zombie thread
c06861d15e Fixes bug in get_sycl_supported_devices() that was reporting unsupported Intel CPU on AMD platform - causing timeouts in that configuration
7f31bb6822 Merged in ilya-biryukov/eigen/fix_clang_cuda_compilation (pull request PR-304)
89fd0c3881 better check array index before using it
61160a21d2 ARM prefetch fixes: Implement prefetch on ARM64. Do not clobber cc on ARM32.
f0f3591118 Made the reduction code compile with cuda-clang
f499fe9496 Adding synchronisation to convolution kernel for sycl backend.
bfd7bf9c5b Get rid of Init().
d56ab01094 Use C++11 ctor forwarding to simplify code a bit.
344c2694a6 Make the non-blocking threadpool more flexible and less wasteful of CPU cycles for high-latency use-cases.
1b32a10053 Use name to distinguish name instead of the vendor
aadb7405a7 Fixing typo in sycl Benchmark.
970ff78294 bug #1401: fix compilation of "cond ? x : -x" with x an AutoDiffScalar
5e9a1e7a7a Adding sycl Benchmarks.
e2e3f78533  Fixing potential race condition on sycl device.
f84963ed95 Adding TensorIndexTuple and TensorTupleReduceOP backend (ArgMax/Min) for sycl; fixing the address space issue for const TensorMap; converting all discard_write to write due to data missmatch.
e5156e4d25 fix typo
5694315fbb remove UTF8 symbol
e958c2baac remove UTF8 symbols
d967718525 do not include std header within extern C
659087b622 bug #1400: fix stableNorm with EIGEN_DONT_ALIGN_STATICALLY
1c03d43a5c Fixed compilation with cuda-clang
bbe717fa2f Make scaling work with non-square matrices
a71943b9a4 Made the Tensor code compile with clang 3.9
09ae0e6586 Adjusted the EIGEN_DEVICE_FUNC qualifiers to make sure that:   * they're used consistently between the declaration and the definition of a function   * we avoid calling host only methods from host device methods.
1e2d046651 Silenced a couple of compilation warnings
c1d87ec110 Added missing EIGEN_DEVICE_FUNC qualifiers
3a3f040baa Added missing EIGEN_DEVICE_FUNC qualifiers
7b61944669 Made most of the packet math primitives usable within CUDA kernel when compiling with clang
c92406d613 Silenced clang compilation warning.
857adbbd52 Added missing EIGEN_DEVICE_FUNC qualifiers
c36bc2d445 Added missing EIGEN_DEVICE_FUNC qualifiers
4a7df114c8 Added missing EIGEN_DEVICE_FUNC
de7b0fdea9 Made the TensorStorage class compile with clang 3.9
765f4cc4b4 Deleted extra: EIGEN_DEVICE_FUNC: the QR and Cholesky code isn't ready to run on GPU yet.
e993c94f07 Added missing EIGEN_DEVICE_FUNC qualifiers
33443ec2b0 Added missing EIGEN_DEVICE_FUNC qualifiers
f3e9c42876 Added missing EIGEN_DEVICE_FUNC qualifiers
8296b87d7b Adding sycl backend for TensorCustomOp; fixing the partial lhs modification issue on sycl when the rhs is TensorContraction, reduction or convolution; Fixing the partial modification for memset when sycl backend is used.
4e98a7b2f0 bug #1396: add some missing EIGEN_DEVICE_FUNC
478a9f53be Fix typo.
889c606f8f Added missing EIGEN_DEVICE_FUNC to the SelfCwise binary ops
193939d6aa Added missing EIGEN_DEVICE_FUNC qualifiers to several nullary op methods.
ed4dc9d01a Declared the plset, ploadt_ro, and ploaddup packet primitives as usable within a gpu kernel
b1fc7c9a09 Added missing EIGEN_DEVICE_FUNC qualifiers.
554116bec1 Added EIGEN_DEVICE_FUNC to make the prototype of the EigenBase override match that of DenseBase
34d9fce93b Avoid unecessary float to double conversions.
e0bd6f5738 Merged eigen/eigen into default
2fa2b617a9 Adding TensorVolumePatchOP.h for sycl
0b7875f137 Converting fixed float type into template type for TensorContraction.
89dfd51fae Adding Sycl Backend for TensorGenerator.h.
5c68ba41a8 typos
b0f55ef85a merge
d29e9d7119 Improve documentation of reshaped
9b6e365018 Fix linking issue.
3d200257d7 Add support for automatic-size deduction in reshaped, e.g.:
f8179385bd Add missing const version of mat(all).
1e3aa470fa Fix long to int conversion
b3fc0007ae Add support for mat(all) as an alias to mat.reshaped(mat.size(),fix<1>);
4f07ac16b0 Reducing the number of warnings.
76687f385c bug #1394: fix compilation of SelfAdjointEigenSolver<Matrix>(sparse*sparse);
d8b1f6cebd bug #1380: for Map<> as input of matrix exponential
6572825703 bug #1395: fix the use of compile-time vectors as inputs of JacobiSVD.
79ebc8f761 Adding Sycl backend for TensorImagePatchOP.h; adding Sycl backend for TensorInflation.h.
9081c8f6ea Add support for RowOrder reshaped
a811a04696 Silent warning.
63798df038 Fix usage of CUDACC_VER
deefa54a54 Fix tracking of temporaries in unit tests
f8a55cc062 Fix compilation.
cbbf88c4d7 Use int32_t instead of int in NEON code. Some platforms with 16 bytes int supports ARM NEON.
582b5e39bf bug #1393: enable Matrix/Array explicit ctor from types with conversion operators (was ok with 3.2)
cfa0568ef7 Size indices are signed.
91982b91c0 Adding TensorLayoutSwapOp for sycl.
b1e312edd6 Adding TensorPatch.h for sycl backend.
31a25ab226 Merged eigen/eigen into default
0d153ded29 Adding TensorChippingOP for sycl backend; fixing the index value in the verification operation for cxx11_tensorChipping.cpp test
5937c4ae32 Fall back is_integral to std::is_integral in c++11
7073430946 Fix overflow and make use of long long in c++11 only.
3453b00a1e Fix vector indexing with uint64_t
e7ebe52bfb bug #1391: include IO.h before DenseBase to enable its usage in DenseBase plugins.
b3750990d5 Workaround some gcc 4.7 warnings
4b22048cea Fallback Reshaped to MapBase when possible (same storage order and linear access to the nested expression)
83d6a529c3 Use Eigen::fix<N> to pass compile-time sizes.
c16ee72b20 bug #1392: fix #include <Eigen/Sparse> with mpl2-only
e43016367a Forgot to include a file in previous commit
6486d4fc95 Worakound gcc 4.7 issue in c++11.
4a4a72951f Fix previous commits: disbale only problematic indexed view methods for old compilers instead of disabling everything. Tested with gcc 4.7 (c++03) and gcc 4.8 (c++03 & c++11)
fad776492f Merged eigen/eigen into default
1ef30b8090 Fixed bug introduced in previous commit
769208a17f Pulled latest updates from upstream
8b3cc54c42 Added a new EIGEN_HAS_INDEXED_VIEW define that set to 0 for older compilers that are known to fail to compile the indexed views (I used the define from the indexed_views.cpp test). Only include the indexed view methods when the compiler supports the code. This makes it possible to use Eigen again in complex code bases such as TensorFlow and older compilers such as gcc 4.8
a1ff24f96a Fix prunning in (sparse*sparse).pruned() when the result is nearly dense.
0256c52359 Include clang in the list of non strict MSVC (just to be sure)
dd58462e63 fixed inlining issue with clang-cl on visual studio (grafted from 7962ac1a5855e8b7a60d5d90e61365b71f5501a5 )
fc8fd5fd24 Improve multi-threading heuristic for matrix products with a small number of columns.
0ee97b60c2 Adding mean to TensorReductionSycl.h
42bd5c4e7b Fixing TensorReductionSycl for min and max.
4254b3eda3 bug #1389: MSVC's std containers do not properly align in 64 bits mode if the requested alignment is larger than 16 bytes (e.g., with AVX)
bc128f9f3b Reducing the warnings in Sycl backend.
442e9cbb30 Silenced several compilation warnings
2db75c07a6 fixed the ordering of the template and EIGEN_DEVICE_FUNC keywords in a few more places to get more of the Eigen codebase to compile with nvcc again.
fcd257039b Replaced EIGEN_DEVICE_FUNC template<foo> with template<foo> EIGEN_DEVICE_FUNC to make the code compile with nvcc8.
84090027c4 Disable a part of the unit test for gcc 4.8
0eceea4efd Define EIGEN_COMP_GNUC to reflect version number: 47, 48, 49, 50, 60, ...
ff53050034 Converting ptrdiff_t type to int64_t type in cxx11_tensor_contract_sycl.cpp in order to be the same as other tests.
bab29936a1 Reducing warnings in Sycl backend.
645a8e32a5 Fix compilation of JacobiSVD for vectors type
48a20b7d95 Fixing compiler error on TensorContractionSycl.h; Silencing the compiler unused parameter warning for eval_op_indices in TensorContraction.h
53026d29d4 bug #478: fix regression in the eigen decomposition of zero matrices.
fbc39fd02c Merge latest changes from upstream
63de19c000 bug #1380: fix matrix exponential with Map<>
c86911ac73 bug #1384: fix evaluation of "sparse/scalar" that used the wrong evaluation path.
82ce92419e Fixing the buffer type in memcpy.
24409f3acd Use fix<> API to specify compile-time reshaped sizes.
9036cda364 Cleanup intitial reshape implementation:  - reshape -> reshaped  - make it compatible with evaluators.
0e89baa5d8 import yoco xiao's work on reshape
d024e9942d MSVC 1900 release is not c++14 compatible enough for us. The 1910 update seems to be fine though.
83592659ba merge
4a351be163 Fix warning
251ad3e04f Fix unamed type as template parametre issue.
edaa0fc5d1 Revert PR-292. After further investigation, the memcpy->memmove change was only good for Haswell on older versions of glibc. Adding a switch for small sizes is perhaps useful for string copies, but also has an overhead for larger sizes, making it a poor trade-off for general memcpy.
25a1703579 Merged in ggael/eigen-flexidexing (pull request PR-294)
98dfe0c13f Fix useless ';' warning
28351073d8 Fix unamed type as template argument (ok in c++11 only)
607be65a03 Fix duplicates of array_size bewteen unsupported and Core
7d39c6d50a Merged eigen/eigen into default
5c9ed4ba0d Reverse arguments for pmin in AVX.
850ca961d2 bug #1383: fix regression in LinSpaced for integers and high<low
296d24be4d bug #1381: fix sparse.diagonal() used as a rvalue. The problem was that is "sparse" is not const, then sparse.diagonal() must have the LValueBit flag meaning that sparse.diagonal().coeff(i) must returns a const reference, const Scalar&. However, sparse::coeff() cannot returns a reference for a non-existing zero coefficient. The trick is to return a reference to a local member of evaluator<SparseMatrix>.
d06a48959a bug #1383: Fix regression from 3.2 with LinSpaced(n,0,n-1) with n==0.
ae3e43a125 Remove extra space.
e96c77668d Merged in rmlarsen/eigen2 (pull request PR-292)
3be5ee2352 Update copy helper to use fast_memcpy.
e6b1020221 Adds a fast memcpy function to Eigen. This takes advantage of the following:
7b6aaa3440 Fix NaN propagation for AVX512.
5e144bbaa4 Make NaN propagatation consistent between the pmax/pmin and std::max/std::min. This makes the NaN propagation consistent between the scalar and vectorized code paths of Eigen's scalar_max_op and scalar_min_op.
d83db761a2 Add support for std::integral_constant
bc10201854 Add test for multiple symbols
c43d254d13 Fix seq().reverse() in c++98
5783158e8f Add unit test for FixedInt and Symbolic
ddd83f82d8 Add support for "SymbolicExpr op fix<N>" in C++98/11 mode.
228fef1b3a Extended the set of arithmetic operators supported by FixedInt (-,+,*,/,%,&,|)
bb52f74e62 Add internal doc
41c523a0ab Rename fix_t to FixedInt
156e6234f1 bug #1375: fix cmake installation with cmake 2.8
ba3f977946 bug #1376: add missing assertion on size mismatch with compound assignment operators (e.g., mat += mat.col(j))
b0db4eff36 bug #1382: move using std::size_t/ptrdiff_t to Eigen's namespace (still better than the global namespace!)
ca79c1545a Add std:: namespace prefix to all (hopefully) instances if size_t/ptrdfiff_t
4b607b5692 Use Index instead of size_t
bf44fed9b7 Allows AMD APU
0fe278f7be bug #1379: fix compilation in sparse*diagonal*dense with openmp
22a172751e bug #1378: fix doc (DiagonalIndex vs Diagonal)
602f8c27f5 Reverting back to the previous TensorDeviceSycl.h as the total number of buffer is not enough for tensorflow.
4d302a080c Recover compile-time size from seq(A,B) when A and B are fixed values. (c++11 only)
54f3fbee24 Exploit fixed values in seq and reverse with C++98 compatibility
7691723e34 Add support for fixed-value in symbolic expression, c++11 only for now.
924600a0e8 Made sure that enabling avx2 instructions enables avx and sse instructions as well.
77cc4d06c7 Removing unused variables
837fdbdcb2 Merging with Benoit's upstream.
6bdd15f572 Adding non-deferrenciable pointer track for ComputeCpp backend; Adding TensorConvolutionOp for ComputeCpp; fixing typos. modifying TensorDeviceSycl to use the LegacyPointer class.
aa7fb88dfa Merged in LaFeuille/eigen (pull request PR-289)
e84ed7b6ef Remove dead code
f3ccbe0419 Add a Symbolic::FixedExpr helper expression to make sure the compiler fully optimize the usage of last and end.
c6f7b33834 Applying Benoit's comment. Embedding synchronisation inside device memcpy so there is no need to externally call synchronise() for device memcopy.
15471432fe Add a .reverse() member to ArithmeticSequence.
e4f8dd860a Add missing operator*
198507141b Update all block expressions to accept compile-time sizes passed by fix<N> or fix<N>(n)
5484ddd353 Merge the generic and dynamic overloads of block()
655ba783f8 Defer set-to-zero in triangular = product so that no aliasing issue occur in the common:   A.triangularView() = B*A.sefladjointView()*B.adjoint() case that used to work in 3.2.
5e36ec3b6f Fix regression when passing enums to operator()
f7852c3d16 Fix -Wunnamed-type-template-args
4f36dcfda8 Add a generic block() method compatible with Eigen::fix
71e5b71356 Add a get_runtime_value helper to deal with pointer-to-function hack, plus some refactoring to make the internals more consistent.
59801a3250 Add \newin{3.x} doxygen command
23bfcfc15f Add missing overload of get_compile_time for c++98/11
edff32c2c2 Disambiguate the two versions of fix for doxygen
4989922be2 Add support for symbolic expressions as arguments of operator()
12e22a2844 typos in doc
e70c4c97fa Typo
a9232af845 Introduce a variable_or_fixed<N> proxy returned by fix<N>(val) to pass both a compile-time and runtime fallback value in case N means "runtime". This mechanism is used by the seq/seqN functions. The proxy object is immediately converted to pure compile-time (as fix<N>) or pure runtime (i.e., an Index) to avoid redundant template instantiations.
6e97698161 Introduce a EIGEN_HAS_CXX14 macro
e46e722381 Adding Tensor ReverseOp; TensorStriding; TensorConversionOp; Modifying Tensor Contractsycl to be located in any place in the expression tree.
23778a15d8 Reverting unintentional change to Eigen/Geometry
1b19b80c06 Fix a typo
8245d3c7ad Fix case-sensitivity of file include
752bd92ba5 Large code refactoring:  - generalize some utilities and move them to Meta (size(), array_size())  - move handling of all and single indices to IndexedViewHelper.h  - several cleanup changes
f93d1c58e0 Make get_compile_time compatible with variable_if_dynamic
c020d307a6 Make variable_if_dynamic<T> implicitely convertible to T
43c617e2ee merge
152cd57bb7 Enable generation of doc for static variables in Eigen's namespace.
b1dc0fa813 Move fix and symbolic to their own file, and improve doxygen compatibility
04397f17e2 Add 1D overloads of operator()
45199b9773 Fix typo
1b5570988b Add doc to seq, seqN, ArithmeticSequence, operator(), etc.
17eac60446 Factorize const and non-const version of the generic operator() method.
d072fc4b14 add writeable IndexedView
c9d5e5c6da Simplify Symbolic API: std::tuple is now used internally and automatically built.
407e7b7a93 Simplify symbolic API by using "symbol=value" to associate a runtime value to a symbol.
96e6cf9aa2 Fix linking issue.
e63678bc89 Fix ambiguous call
8e247744a4 Fix linking issue
b47a7e5c3a Add doc for IndexedView
87963f441c Fallback to Block<> when possible (Index, all, seq with > increment). This is important to take advantage of the optimized implementations (evaluator, products, etc.), and to support sparse matrices.
a98c7efb16 Add a more generic evaluation mechanism and minimalistic doc.
13d954f270 Cleanup Eigen's namespace
9eaab4f9e0 Refactoring: move all symbolic stuff into its own namespace
acd08900c9 Move 'last' and 'end' to their own namespace
1df2377d78 Implement c++98 version of seq()
ecd9cc5412 Isolate legacy code (we keep it for performance comparison purpose)
b50c3e967e Add a minimalistic symbolic scalar type with expression template and make use of it to define the last placeholder and to unify the return type of seq and seqN.
68064e14fa Rename span/range to seqN/seq
ad3eef7608 Add link to SO
75aef5b37f Fix extraction of compile-time size of std::array with gcc
233dff1b35 Add support for plain arrays for columns and both rows/columns
76e183bd52 Propagate compile-time size for plain arrays
3264d3c761 Add support for plain-array as indices, e.g., mat({1,2,3,4})
831fffe874 Add missing doc of SparseView
a875167d99 Propagate compile-time increment and strides. Had to introduce a UndefinedIncr constant for non structured list of indices.
e383d6159a MSVC 2015 has all we want about c++11 and MSVC 2017 fails on binder1st/binder2nd
fad1fa75b3 Propagate compile-time size with "all" and add c++11 array unit test
3730e3ca9e Use "fix" for compile-time values, propagate compile-time sizes for span, clean some cleanup.
60e99ad8d7 Add unit test for indexed views
ac7e4ac9c0 Initial commit to add a generic indexed-based view of matrices. This version already works as a read-only expression. Numerous refactoring, renaming, extension, tuning passes are expected...
f3f026c9aa Convert integers to real numbers when computing relative L2 error
0c226644d8 LLT: const the arg to solveInPlace() to allow passing .transpose(), .block(), etc.
be281e5289 LLT: avoid making a copy when decomposing in place
e27f17bf5c Gub 1453: fix Map with non-default inner-stride but no outer-stride.
21d0a0bcf5 bug #1456: add perf recommendation for LLT and storage format
2c3d70d915 Re-enable hidden doc in LLT
a6e7a41a55 bug #1455: Cholesky module depends on Jacobi for rank-updates.
e6021cc8cc bug #1458: fix documentation of LLT and LDLT info() method.
2810ba194b Clarify MKL_DIRECT_CALL doc.
f727844658 use MKL's lapacke.h header when using MKL
8c858bd891 Clarify doc regarding the usage of MKL_DIRECT_CALL
b95f92843c Fix support for MKL's BLAS when using MKL_DIRECT_CALL.
89c01a494a Add unit test for has_ReturnType
687bedfcad Make NoAlias and JacobiRotation compatible with CUDA.
1f4b24d2df Do not preallocate more space than the matrix size (when the sparse matrix boils down to a vector
d580a90c9a Disable BDCSVD preallocation check.
55d7181557 Fix lazyness of operator* with CUDA
cda47c42c2 Fix compilation in c++98 mode.
a74b9ba7cd Update documentation for CUDA
3182bdbae6 Disable vectorization when compiled by nvcc, even is EIGEN_NO_CUDA is defined
9f8136ff74 disable nvcc boolean-expr-is-constant warning
bbd97b4095 Add a EIGEN_NO_CUDA option, and introduce EIGEN_CUDACC and EIGEN_CUDA_ARCH aliases
2299717fd5 Fix and workaround several doxygen issues/warnings
90c5bc8d64 Fixes auto appearance in functor template argument for reduction.
ee6f7f6c0c Add doc for sparse triangular solve functions
5165de97a4 Add missing snippet files.
a0a36ad0ef bug #1336: workaround doxygen failing to include numerous members of MatriBase in Matrix
29a1a58113 Document selfadjointView
a5ebc92f8d bug #1336: fix doxygen issue regarding EIGEN_CWISE_BINARY_RETURN_TYPE
45b289505c Add debug output
5838f078a7 Fix inclusion
8702562177 bug #1370: add doc for StorageIndex
575c078759 bug #1370: rename _Index to _StorageIndex in SparseMatrix, and add a warning in the doc regarding the 3.2 to 3.3 change of SparseMatrix::Index
c4fc2611ba add cmake-option to enable/disable creation of tests * * * disable unsupportet/test when test are disabled * * * rename EIGEN_ENABLE_TESTS to BUILD_TESTING * * * consider BUILD_TESTING in blas
d3c5525c23 Added += and + operators to inner iterators
5c27962453 Move common cwise-unary method from MatrixBase/ArrayBase to the common DenseBase class.
4ebf69394d doc: Fix trivial typo in AsciiQuickReference.txt * * * fixup!
8d7810a476 bug #1365: fix another type mismatch warning
97812ff0d3 bug #1369: fix type mismatch warning.
7713e20fd2 Fix compilation
ab69a7f6d1 Cleanup because trait<CwiseBinaryOp>::Flags now expose the correct storage order
d32a43e33a Make sure that traits<CwiseBinaryOp>::Flags reports the correct storage order so that methods like .outerSize()/.innerSize() work properly.
7136267461 Add missing .outer() member to iterators of evaluators of cwise sparse binary expression
fe0ee72390 Fix check of storage order mismatch for "sparse cwiseop sparse".
6b8f637ab1 Harmless typo
3eda02d78d Fixed the sycl benchmarking code
8b1c2108ba Reverting asynchronous exec to Synchronous exec regarding random race condition.
354baa0fb1 Avoid using horizontal adds since they're not very efficient.
d7825b6707 Use native AVX512 types instead of Eigen Packets whenever possible.
660da83e18 Pulled latest update from trunk
4236aebe10 Simplified the contraction code`
3cfa16f41d Merged in benoitsteiner/opencl (pull request PR-279)
519d63d350 Added support for libxsmm kernel in multithreaded contractions
0657228569 Simplified the way we link libxsmm
bbca405f04 Pulled latest updates from trunk
b91be60220 Automatically include and link libxsmm when present.
c6882a72ed Merged in joaoruileal/eigen (pull request PR-276)
f9eff17e91 Leverage libxsmm kernels within signle threaded contractions
c19fe5e9ed Added support for libxsmm in the eigen makefiles
a34d4ebd74 Merged in benoitsteiner/opencl (pull request PR-278)
c55ecfd820 Fix for auto appearing in functor template argument.
c8c89b5e19 renamed methods umfpackReportControl(), umfpackReportInfo(), and umfpackReportStatus() from UmfPackLU to printUmfpackControl(), printUmfpackInfo(), and printUmfpackStatus()
0f577d4744 Merged eigen/eigen into default
f2f9df8aa5 Remove MSVC warning 4127 - conditional expression is constant from the disabled list as we now have a local workaround.
2b3fc981b8 bug #1362: workaround constant conditional warning produced by MSVC
29186f766f Fixed order of initialisation in ExecExprFunctorKernel functor.
94e8d8902f Fix bug #1367: compilation fix for gcc 4.1!
e8d6862f14 Properly adjust precision when saving to Market format.
e2f4ee1c2b Speed up parsing of sparse Market file.
8245851d1b Matching parameters order between lambda and the functor.
684cfc762d Add transpose, adjoint, conjugate methods to SelfAdjointView (useful to write generic code)
8bd0d3aa34 merge
11f55b2979 Optimize storage layout of Cwise* and PlainObjectBase evaluator to remove the functor or outer-stride if they are empty. For instance, sizeof("(A-B).cwiseAbs2()") with A,B Vector4f is now 16 bytes, instead of 48 before this optimization. In theory, evaluators should be completely optimized away by the compiler, but this might help in some cases.
5271474b15 Remove common "noncopyable" base class from evaluator_base to get a chance to get EBO (Empty Base Optimization) Note: we should probbaly get rid of this class and define a macro instead.
1c024e5585 Added some possible temporaries to .hgignore
316673bbde Clean-up usage of ExpressionTraits in all/any implementation.
548ed30a1c Added an OpenCL regression test
10c6bcdc2e Add support for long indexes and for (real-valued) row-major matrices to CholmodSupport module
f5d644b415 Make sure that HyperPlane::transform manitains a unit normal vector in the Affine case.
27ceb43bf6 Fixed race condition in the tensor_shuffling_sycl test
923acadfac Fixed compilation errors with gcc6 when compiling the AVX512 intrinsics
751e097c57 Use 32 registers on ARM64
fb1d0138ec Include SSE packet instructions when compiling with avx512 enabled.
95b804c0fe it is now possible to change Umfpack control settings before factorizations; added access to the report functions of Umfpack
8c0e701504 bug #1360: fix sign issue with  pmull on altivec
fc94258e77 Fix unused warning
0e0d92d34b Merged in benoitsteiner/opencl (pull request PR-275)
9e03dfb452 Made sure EIGEN_HAS_C99_MATH is defined when compiling OpenCL code
70d0172f0c Merged eigen/eigen into default
8910442e19 Fixed memcpy, memcpyHostToDevice and memcpyDeviceToHost for Sycl.
54db66c5df struct -> class in order to silence compilation warning.
35bae513a0 Converting all parallel for lambda to functor in order to prevent kernel duplication name error; adding tensorConcatinationOp backend for sycl.
d60cca32e5 Transformation methods added to ParametrizedLine class.
7949849ebc refactor common row/column iteration code into its own class
d7bc64328b add display of entries to gdb sparse matrix prettyprinter
ff424927bc Introduce a simple pretty printer for sparse matrices (no contents)
5ce5418631 Correct prettyprinter comment - Quaternions are in fact supported
8f11df2667 NumTraits.h: For the values 'ReadCost, AddCost and MulCost', information about value Eigen::HugeCost
7d5303a083 Partly revert changeset 642dddcce29269f266d35e34d34ee83d99a7c116 , just in case the x87 issue popup again
2f7c2459b7 Merged in benoitsteiner/opencl (pull request PR-272)
c5e8546306 Adding asynchandler to sycl queue as lack of it can cause undefined behaviour.
4247d35d4b Fixed bug which (extremely rarely) could end in an infinite loop
642dddcce2 Fix nonnull-compare warning
1324ffef2f Reenabled the use of constexpr on OpenCL devices
5d00fdf0e8 bug #1363: fix mingw's ABI issue
2c2e218471 Avoid using #define since they can conflict with user code
3beb180ee5 Don't call EnvThread::OnCancel by default since it doesn't do anything.
9ff5d0f821 Merged eigen/eigen into default
730eb9fe1c Adding asynchronous execution as it improves the performance.
11b492e993 bug #1358: fix compilation for sparse += sparse.selfadjointView();
e67397bfa7 bug #1359: fix compilation of col_major_sparse.row() *= scalar (used to work in 3.2.9 though the expression is not really writable)
98d7458275 bug #1359: fix sparse /=scalar and *=scalar implementation. InnerIterators must be obtained from an evaluator.
2d4a091beb Adding tensor contraction operation backend for Sycl; adding test for contractionOp sycl backend; adding temporary solution to prevent memory leak in buffer; cleaning up cxx11_tensor_buildins_sycl.h
c817ce3ba3 bug #1361: fix compilation issue in mat=perm.inverse()
a432fc102d Moved the choice of ThreadPool to unsupported/Eigen/CXX11/ThreadPool
8ae68924ed Made ThreadPoolInterface::Cancel() an optional functionality
57acb05eef Update and extend doc on alignment issues.
76fca22134 Use a more accurate timer to sleep on Linux systems.
4deafd35b7 Introduce a portable EIGEN_SLEEP macro.
aafa97f4d2 Fixed build error with MSVC
2f5b7a199b Reworked the threadpool cancellation mechanism to not depend on pthread_cancel since it turns out that pthread_cancel doesn't work properly on numerous platforms.
3d59a47720 Added a message to ease the detection of platforms on which thread cancellation isn't supported.
28ee8f42b2 Added a Flush method to the RunQueue
69ef267a77 Added the new threadpool cancel method to the threadpool interface based class.
7bfff85355 Added support for thread cancellation on Linux
6811e6cf49 Merged in srvasude/eigen/fix_cuda_exp (pull request PR-268)
747202d338 typo
bb297abb9e make sure we use the right eigen version
8b4b00d277 fix usage of custom compiler
7105596899 Add missing include and use -O3
780f3c1adf Fix call to convert on linux
3855ab472f Cleanup file structure
59a59fa8e7 Update perf monitoring scripts to generate html/svg outputs
7694684992 Remove superfluous const's (can cause warnings on some Intel compilers) (grafted from e236d3443c79f38aa721d95e64c275abbb5df10f )
f2c506b03d Add a script example to run and upload performance tests
1b4e085a7f generate png file for web upload
f725f1cebc Mention the CMAKE_PREFIX_PATH variable.
f90c4aebc5 Update monitored changeset lists
eb621413c1 Revert vec/y to vec*(1/y) in row-major TRSM: - div is extremely costly - this is consistent with the column-major case - this is consistent with all other BLAS implementations
8365c2c941 Fix BLAS backend for symmetric rank K updates.
0c4d05b009 Explain how to choose your favorite Eigen version
e049a2a72a Added relocatable cmake support also for CMake before 3.0 and after 2.8.8
e6c8b5500c Change comparisons to use Scalar instead of RealScalar.
f7d7c33a28 Fix expm1 CUDA implementation (do not shadow exp CUDA implementation).
18481b518f Make CMake config file relocatable
c68c8631e7 fix compilation of BTL's blaze interface
1ff1d4a124 Add performance monitoring for LLT
09ee7f0c80 Fix small nit where I changed name of plog1p to pexpm1.
a0d3ac760f Sync from Head.
218764ee1f Added support for expm1 in Eigen.
66f65ccc36 Ease compiler job to generate clean and efficient code in mat*vec.
fe696022ec Operators += and -= do not resize!
18de92329e use numext::abs (grafted from 0a08d4c60b652d1f24b2fa062c818c4b93890c59 )
e8a6aa518e 1. Add explicit template to abs2 (resolves deduction for some arithmetic types) 2. Avoid signed-unsigned conversion in comparison (warning in case Scalar is unsigned) (grafted from 4086187e49760d4bde72750dfa20ae9451263417 )
a6b971e291 Fix memory leak in Ref<Sparse>
8640ffac65 Optimize SparseLU::solve for rhs vectors
62acd67903 remove temporary in SparseLU::solve
0db6d5b3f4 bug #1356: fix calls to evaluator::coeffRef(0,0) to get the address of the destination by adding a dstDataPtr() member to the kernel. This fixes undefined behavior if dst is empty (nullptr).
91003f3b86 typo
445c015751 extend monitoring benchmarks with transpose matrix-vector and triangular matrix-vectors.
e3f613cbd4 Improve performance of row-major-dense-matrix * vector products for recent CPUs. This revised version does not bother about aligned loads/stores, and rather processes 8 rows at ones for better instruction pipelining.
3abc827354 Clean debugging code
462c28e77a Merged in srvasude/eigen (pull request PR-265)
4465d20403 Add missing generic load methods.
6a5fe86098 Complete rewrite of column-major-matrix * vector product to deliver higher performance of modern CPU. The previous code has been optimized for Intel core2 for which unaligned loads/stores were prohibitively expensive. This new version exhibits much higher instruction independence (better pipelining) and explicitly leverage FMA. According to my benchmark, on Haswell this new kernel is always faster than the previous one, and sometimes even twice as fast. Even higher performance could be achieved with a better blocking size heuristic and, perhaps, with explicit prefetching. We should also check triangular product/solve to optimally exploit this new kernel (working on vertical panel of 4 columns is probably not optimal anymore).
2bfece5cd1 Merged eigen/eigen into default
592acc5bfa Makingt default numeric_list works with sycl.
8dfb3e00b8 merge
4c0d5f3c01 Add perf monitoring for gemv
d2718d662c Re-enable A^T*A action in BTL
22f7d398e2 bug #1355: Fixed wrong line-endings on two files
27873008d4 Clean up SparseCore module regarding ReverseInnerIterator
8c24723a09 typo UIntPtr (grafted from b6f04a2dd4d68fe1858524709813a5df5b9a085b )
aeba0d8655 fix two warnings(unused typedef, unused variable) and a typo (grafted from a9aa3bcf50d55b63c8adb493a06c903ec34251c6 )
181138a1cb fix member order
9f297d57ae Merged in rmlarsen/eigen (pull request PR-256)
f95e3b84a5 merge
7ff26ddcbb Merged eigen/eigen into default
037b46762d Fix misleading-indentation warnings.
79aa2b784e Adding sycl backend for TensorPadding.h; disbaling __unit128 for sycl in TensorIntDiv.h; disabling cashsize for sycl in tensorDeviceDefault.h; adding sycl backend for StrideSliceOP ; removing sycl compiler warning for creating an array of size 0 in CXX11Meta.h; cleaning up the sycl backend code.
a70393fd02 Cleaned up forward declarations
e073de96dc Moved the MemCopyFunctor back to TensorSyclDevice since it's the only caller and it makes TensorFlow compile again
fca27350eb Added the deallocate_all() method back
e633a8371f Simplified includes
7cd33df4ce Improved formatting
fd1dc3363e Merged eigen/eigen into default
f5107010ee Udated the Sizes class to work on AMD gpus without requiring a separate implementation
e37c2c52d3 Added an implementation of numeric_list that works with sycl
8df272af88 Fix slection of product implementation for dynamic size matrices with fixed max size.
faa2ff99c6 Pulled latest update from trunk
df3da0780d Updated customIndices2Array to handle various index sizes.
c927af60ed Fix a performance regression in (mat*mat)*vec for which mat*mat was evaluated multiple times.
26fff1c5b1 Added EIGEN_STRONG_INLINE to get_sycl_supported_device().
ab4ef5e66e bug #1351: fix compilation of random with old compilers
5e3c5c42f6 cmake: remove architecture dependency from Eigen3ConfigVersion.cmake
3440b46e2f doc: mention the NO_MODULE option and target availability (grafted from 65f09be8d2aaeda054cce574ea14a74b00507011 )
a0329f64fb Add a default constructor for the "fake" __half class when not using the __half class provided by CUDA.
577ce78085 Adding TensorShuffling backend for sycl; adding TensorReshaping backend for sycl; cleaning up the sycl backend.
3011dc94ef Call internal::array_prod to compute the total size of the tensor.
02080e2b67 Merged eigen/eigen into default
9fd081cddc Fixed compilation warnings
9f8fbd9434 Merged eigen/eigen into default
67b2c41f30 Avoided unnecessary type conversion
7fe704596a Added missing array_get method for numeric_list
7318daf887 Fixing LLVM error on TensorMorphingSycl.h on GPU; fixing int64_t crash for tensor_broadcast_sycl on GPU; adding get_sycl_supported_devices() on syclDevice.h.
7ad37606dd Fixed the documentation of Scalar Tensors
3be1afca11 Disabled the "remove the call to 'std::abs' since unsigned values cannot be negative" warning introduced in clang 3.5
308961c05e Fix compilation.
21d0286d81 bug #1348: Document EIGEN_MAX_ALIGN_BYTES and EIGEN_MAX_STATIC_ALIGN_BYTES, and reflect in the doc that EIGEN_DONT_ALIGN* are deprecated.
b8cc5635d5 Removing unsupported device from test case; cleaning the tensor device sycl.
7f6333c32b Merged in tal500/eigen-eulerangles (pull request PR-237)
f12b368417 Extend polynomial solver unit tests to complexes
56e5ec07c6 Automatically switch between EigenSolver and ComplexEigenSolver, and fix a few Real versus Scalar issues.
9246587122 Patch from Oleg Shirokobrod to extend polynomial solver to complexes
e340866c81 Fix compilation with gcc and old ABI version
a91de27e98 Fix compilation issue with MSVC: MSVC always messes up with shadowed template arguments, for instance in:   struct B { typedef float T; }   template<typename T> struct A : B {     T g;   }; The type of A<double>::g will be float and not double.
74637fa4e3 Optimize predux<Packet8f> (AVX)
178c084856 Disable usage of SSE3 _mm_hadd_ps that is extremely slow.
7dd894e40e Optimize predux<Packet4d> (AVX)
f3fb0a1940 Disable usage of SSE3 haddpd that is extremely slow.
5c516e4e0a cmake: added Eigen3::Eigen imported target (grafted from a287140f7292b9c15719bc6a3a4494ac7874e3cd )
6a84246a6a Fix regression in assigment of sparse block to spasre block.
f11da1d83b Made the QueueInterface thread safe
ed839c5851 Enable the use of constant expressions with clang >= 3.6
6d781e3e52 Merged eigen/eigen into default
79a07b891b Fixed a typo
465ede0f20 Fix compilation issue in mat = permutation (regression introduced in 8193ffb3d38b56c9295f204dc57dc6bac74f58aa )
81151bd474 Fixed merge conflicts
9265ca707e Made it possible to check the state of a sycl device without synchronization
2d1aec15a7 Added missing include
af67335e0e Added test for cwiseMin, cwiseMax and operator%.
1bdf1b9ce0 Merged in benoitsteiner/opencl (pull request PR-253)
a357fe1fb9 Code cleanup
1c6eafb46b Updated cxx11_tensor_device_sycl to run only on the OpenCL devices available on the host
ca754caa23 Only runs the cxx11_tensor_reduction_sycl on devices that are available.
dc601d79d1 Added the ability to run test exclusively OpenCL devices that are listed by sycl::device::get_devices().
8649e16c2a Enable EIGEN_HAS_C99_MATH when building with the latest version of Visual Studio
110b7f8d9f Deleted unnecessary semicolons
b5e3285e16 Test broadcasting on OpenCL devices with 64 bit indexing
164414c563 Merged in ChunW/eigen (pull request PR-252)
37c2c516a6 Cleaned up the sycl device code
7335c49204 Fixed the cxx11_tensor_device_sycl test
15e226d7d3 adding Benoit changes on the TensorDeviceSycl.h
622805a0c5 Modifying TensorDeviceSycl.h to always create buffer of type uint8_t and convert them to the actual type at the execution on the device; adding the queue interface class to separate the lifespan of sycl queue and buffers,created for that queue, from Eigen::SyclDevice; modifying sycl tests to support the evaluation of the results for both row major and column major data layout on all different devices that are supported by Sycl{CPU; GPU; and Host}.
5159675c33 Added isnan, isfinite and isinf for SYCL device. Plus test for that.
76b2a3e6e7 Allow to construct EulerAngles from 3D vector directly. Using assignment template struct to distinguish between 3D vector and 3D rotation matrix.
927bd62d2a Now testing out (+=, =) in.FUNC() and out (+=, =) out.FUNC()
8193ffb3d3 bug #1343: fix compilation regression in mat+=selfadjoint_view. Generic EigenBase2EigenBase assignment was incomplete.
cebff7e3a2 bug #1343: fix compilation regression in array = matrix_product
7c30078b9f Merged eigen/eigen into default
553f50b246 Added a way to detect errors generated by the opencl device from the host
72a45d32e9 Cleanup
4349fc640e Created a test to check that the sycl runtime can successfully report errors (like ivision by 0). Small cleanup
a6a3fd0703 Made TensorDeviceCuda.h compile on windows
0d0948c3b9 Workaround for error in VS2012 with /clr
004344cf54 Avoid calling log(0) or 1/0
a1d5c503fa replace sizeof(Packet) with PacketSize else it breaks for ZVector.Packet4f
672aa97d4d implement float/std::complex<float> for ZVector as well, minor fixes to ZVector
8290e21fb5 replace sizeof(Packet) with PacketSize else it breaks for ZVector.Packet4f
7878756dea Fixed existing test.
c5130dedbe Specialised basic math functions for SYCL device.
f2e8b73256 Enable the use of AVX512 instruction by default
7b09e4dd8c bump default branch to 3.3.90
dff9a049c4 Optimized the computation of exp, sqrt, ceil anf floor for fp16 on Pascal GPUs
b5c75351e3 Merged eigen/eigen into default
32df1b1046 Reduce dispatch overhead in parallelFor by only calling thread_pool.Schedule() for one of the two recursive calls in handleRange. This avoids going through the scedule path to push both recursive calls onto another thread-queue in the binary tree, but instead executes one of them on the main thread. At the leaf level this will still activate a full complement of threads, but will save up to 50% of the overhead in Schedule (random number generation, insertion in queue which includes signaling via atomics).
05e8c2a1d9 Adding extra test for non-fixed size to broadcast; Replacing stcl with sycl.
f8ca893976 Adding TensorFixsize; adding sycl device memcpy; adding insial stage of slicing.
0ee92aa38e Optimize sparse<bool> && sparse<bool> to use the same path as for coeff-wise products.
2e334f5da0 bug #426: move operator && and || to MatrixBase and SparseMatrixBase.
a048aba14c Merged in olesalscheider/eigen (pull request PR-248)
eedb87f4ba Fix regression in SparseMatrix::ReverseInnerIterator
51fef87408 Make sure not to call numext::maxi on expression templates
a5c3f15682 Adding comment to TensorDeviceSycl.h and cleaning the code.
f4722aa479 Merged in benoitsteiner/opencl (pull request PR-247)
3be3963021 Adding EIGEN_STRONG_INLINE back; using size() instead of dimensions.TotalSize() on Tensor.
12387abad5 adding the missing in eigen_assert!
2e704d4257 Adding Memset; optimising MecopyDeviceToHost by removing double copying;
eeac81b8c0 bump to 3.3.0
e80bc2ddb0 Fix printing of sparse expressions
75c080b176 Added a test to validate memory transfers between host and sycl device
db3903498d Merged in benoitsteiner/opencl (pull request PR-246)
dcc14bee64 Fixed the formatting of the code
b88c1117d4 Fixed the indentation of the cmake file
912cb3d660 #if EIGEN_EXCEPTION -> #ifdef EIGEN_EXCEPTIONS.
1b345b0895 Fix for SYCL queue initialisation.
1b95717358 Use try/catch only when exceptions are enabled.
d57430dd73 Converting all sycl buffers to uninitialised device only buffers; adding memcpyHostToDevice and memcpyDeviceToHost on syclDevice; modifying all examples to obey the new rules; moving sycl queue creating to the device based on Benoit suggestion; removing the sycl specefic condition for returning m_result in TensorReduction.h according to Benoit suggestion.
73985ead27 Extend unit test to check sparse solvers with a SparseVector as the rhs and result.
436a111792 Generalize Cholmod support to hanlde any sparse type as the rhs and result of the solve method
afc55b1885 Generalize IterativeSolverBase::solve to hanlde any sparse type as the results (instead of SparseMatrix only)
a5c2d8a3cc Generalize solve_sparse_through_dense_panels to handle SparseVector.
f8bfe10613 Add missing friend declaration
fc7180cda8 Add a default ctor to evaluator<SparseVector>. Needed for evaluator<Solve>.
4d226ab5b5 Enable swapping between SparseMatrix and SparseVector
ad086b03e4 Removed unnecessary statement
dad177be01 Added missing includes
55b4fd1d40 Extend mpreal unit test to check LLT with complexes.
a354c3ca59 Fix compilation of LLT with complex<mpreal>.
d46a36cc84 Merged eigen/eigen into default
0ebe3808ca Removed the sycl include from Eigen/Core and moved it to Unsupported/Eigen/CXX11/Tensor; added TensorReduction for sycl (full reduction and partial reduction); added TensorReduction test case for sycl (full reduction and partial reduction); fixed the tile size on TensorSyclRun.h based on the device max work group size;
47d1b4a609 Added tag 3.3-rc2 for changeset ba05572dcb385c752fc2c0729f05ccb9ad04d7bd
ba05572dcb bump to 3.3-rc2
5c3995769c Improved AVX512 configuration
fbe672d599 Reenable the generation of dynamic blas libraries.
ca0ba0d9a4 Improved AVX512 support
c80587c92b Merged eigen/eigen into default
3f1d0cdc22 bug #1337: improve doc of homogeneous() and hnormalized()
78e93ac1ad bug #1330: Cholmod supports double precision only, so let's trigger a static assertion if the scalar type does not match this requirement.
3e37166d0b Merged in benoitsteiner/opencl (pull request PR-244)
0585b2965d Disable vectorization on device only when compiling for sycl
e6e77ed08b Don't call lgamma_r when compiling for an Apple device, since the function isn't available on MacOS
b238f387b4 Pulled latest updates from trunk
c8db17301e Special functions require math.h: make sure it is included.
a07bb428df bug #1004: improve accuracy of LinSpaced for abs(low) >> abs(high).
598de8b193 Add pinsertfirst function and implement pinsertlast for complex on SSE/AVX.
e44519744e Merged in benoitsteiner/opencl (pull request PR-243)
0a6ae41555 Merged eigen/eigen into default
b730952414 Don't attempts to use lgamma_r for CUDA devices. Fix type in lgamma_impl<double>.
7a0e96b80d Gate the code that refers to cuda fp16 primitives more thoroughly
51af6ae971 Fixed the ambiguity in callig make_tuple for sycl backend.
0a9ad6fc72 Worked around Visual Studio compilation errors
d5f88e2357 Sharded the tensor_image_patch test to help it run on low power devices
0b4b0f11e8 Fixed a few more compilation warnings
306daa24a3 Fixed a compilation warning
8471cf1996 Fixed compilation warning
b0c5bfdf78 Added missing template parameters
2ebb314fa7 Use threadsafe versions of lgamma and lgammaf if possible.
530f20c21a Workaround MSVC issue.
c3ce4f9ac0 Merged in enricodetoma/eigen (pull request PR-241)
7d64e6752c Pulled latest updates from trunk
0a4c4d40b4 Removed a template parameter for fixed sized tensors
3ecb343dc3 Fix regression in X = (X*X.transpose())/s with X rectangular by deferring resizing of the destination after the creation of the evaluator of the source expression.
6ed571744b Always enable /bigobj for tests to avoid a compile error in MSVC 2015
97feea9d39 add a generic EIGEN_HAS_CXX11
ca6a2a5248 Fix warning with ICC
5f2dd503ff Replaced tabs with spaces
1644bafe29 Code cleanup
b15a5dc3f4 Fix ICC warnings
aad72f3c6d Add missing inline keywords
3e194a6a73 Fixed a typo
58146be99b bug #1004: one more rewrite of LinSpaced for floating point numbers to guarantee both interpolation and monotonicity. This version simply does low+i*step plus a branch to return high if i==size-1. Vectorization is accomplished with a branch and the help of pinsertlast. Some quick benchmark revealed that the overhead is really marginal, even when filling small vectors.
13fc18d3a2 Add a pinsertlast function replacing the last entry of a packet by a scalar. (useful to vectorize LinSpaced)
2634f9386c bug #1333: fix bad usage of const_cast_derived. Better use .data() for that purpose.
9e8f07d7b5 Cleanup ArrayWrapper and MatrixWrapper by removing redundant accessors.
b027d7a8cf bug #1004: remove the inaccurate "sequential" path for LinSpaced, mark respective function as deprecated, and enforce strict interpolation of the higher range using a correction term. Now, even with floating point precision, both the 'low' and 'high' bounds are exactly reproduced at i=0 and i=size-1 respectively.
b11aab5fcc Merged in benoitsteiner/opencl (pull request PR-238)
53c77061f0 bug #698: rewrite LinSpaced for integer scalar types to avoid overflow and guarantee an even spacing when possible. Otherwise, the "high" bound is implicitly lowered to the largest value allowing for an even distribution. This changeset also disable vectorization for this integer path.
e8e56c7642 Add unit test for overflow in LinSpaced
40f62974b7 bug #1328: workaround a compilation issue with gcc 4.2
cf20b30d65 Merge latest updates from trunk
03b63e182c Added SYCL include in Tensor.
d3943cd50c Fixed a few typos in the ternary tensor expressions types
15eca2432a Euler tests: Tighter precision when no roll exists and clean code.
6f4f12d1ed Add isApprox() and cast() functions.
7402cfd4cc Add safty for near pole cases and test them better.
8fb162fc85 Fixing the typo regarding missing #if needed for proper handling of exceptions in Eigen/Core.
58f5d7d058 Fix calc bug, docs and better testing.
e36cb91c99 Fixing the code indentation in the TensorReduction.h file.
2e188dd4d4 Merged ComputeCpp to default.
15380f9a87 Applyiing Benoit's comment to return the missing line back in Eigen/Core
692b30ca95 Fix previous merge.
050c681bdd Merged in rmlarsen/eigen2 (pull request PR-232)
078a202621 Merge Hongkai Dai correct range calculation, and remove ranges from API. Docs updated.
e742da8b28 Merged ComputeCpp into default.
524fa4c46f Reducing the code by generalising sycl backend functions/structs.
014d9f1d9b implement euler angles with the right ranges
737e4152c3 Merged in lukier/eigen (pull request PR-234)
d0ee2267d6 Relaxed the resizing checks so that they don't fail with gcc >= 5.3
a94791b69a Fixes for min and abs after Benoit's comments, switched to numext.
ac63d6891c Patch to allow VS2015 & CUDA 8.0 to compile with Eigen included. I'm not sure whether to limit the check to this compiler combination (` || (EIGEN_COMP_MSVC == 1900 &&  __CUDACC_VER__) `) or to leave it as it is. I also don't know if this will have any affect on including Eigen in device code (I'm not in my current project).
7e4a6754b2 Merged eigen/eigen into default
38b6048e14 Deleted redundant implementation of predux
e74612b9a0 Remove double ;;
78d2926508 Merged eigen/eigen into default
2e2f48e30e Take advantage of AVX512 instructions whenever possible to speedup the processing of 16 bit floats.
f939c351cb Fix SPQR for rectangular matrices
091d373ee9 Fix outer-stride.
471075f7ad Fixes min() warnings.
5c366fe1d7 Merged in rmlarsen/eigen (pull request PR-230)
86711497c4 Adding EIGEN_DEVICE_FUNC in the Geometry module. Additional CUDA necessary fixes in the Core (mostly usage of EIGEN_USING_STD_MATH).
47150af1c8 Fix copy-paste error: Must use _mm256_cmp_ps for AVX.
89e315152c bug #1325: fix compilation on NEON with clang
7f0599b6eb Manually define int16_t and uint16_t when compiling with Visual Studio
5727e4d89c Reenabled the use of variadic templates on tegra x1 provides that the latest version (i.e. JetPack 2.3) is used.
5266ff8966 Cleaned up a regression test
5c68051cd7 Merge the content of the ComputeCpp branch into the default branch
4860727ac2 Remove static qualifier of free-functions (inline is enough and this helps ICC to find the right overload)
507b661106 Renamed predux_half into predux_downto4
a498ff7df6 Fixed incorrect comment
8ba3c41fcf Revergted unecessary change
a7473d6d5a Fixed compilation error with gcc >= 5.3
5e64cea896 Silenced a compilation warning
33fba3f08d Merged in rryan/eigen/tensorfunctors (pull request PR-233)
bfc264abe8 Add a test that GPU complex product reductions match CPU reductions.
e2e9cdd169 Fully support complex types in SumReducer and MeanReducer when building for CUDA by using scalar_sum_op and scalar_product_op instead of operator+ and operator*.
d485d12c51 Added missing AVX intrinsics for fp16: in particular, implemented predux which is required by the matrix-vector code.
48c635e223 Add a simple cost model to prevent Eigen's parallel GEMM from using too many threads when the inner dimension is small.
9f3276981c Enabling AVX512 should also enable AVX2.
80b5133789 Fix compilation of qr.inverse() for column and full pivoting variants.
4131074818 Deleted unecessary CMakeLists.txt file
cb5cd69872 Silenced a compilation warning.
78b569f685 Merged latest updates from trunk
9c2b6c049b Silenced a few compilation warnings
6f3cd529af Pulled latest updates from trunk
d7f9679a34 Fixed a couple of compilation warnings
ae1385c7e4 Pull the latest updates from trunk
73b0012945 Fixed compilation warnings
c84084c0c0 Fixed compilation warning
4387433acf Increased the robustness of the reduction tests on fp16
aad20d700d Increase the tolerance to numerical noise.
8b69d5d730 ::rand() returns a signed integer on win32
ed7a220b04 Fixed a typo that impacts windows builds
ceee1c008b Silenced compilation warning
698ff69450 Properly characterize the CUDA packet primitives for fp16 as device only
7f67e6dfdb Update comment for fast sqrt.
765615609d Update comment for fast sqrt.
3ed67cb0bb Fix a bug in the implementation of Carmack's fast sqrt algorithm in Eigen (enabled by EIGEN_FAST_MATH), which causes the vectorized parts of the computation to return -0.0 instead of NaN for negative arguments.
6af5ac7e27 Cleanup the cuda executor code.
2f6d1607c8 Cleaned up the random number generation code.
881b90e984 Use explicit type casting to generate packets of zeros.
616a7a1912 Improved support for compiling CUDA code with clang as the host compiler
409e887d78 Added support for constand std::complex numbers on GPU
9d6d0dff8f bug #1317: fix performance regression with some Block expressions and clang by helping it to remove dead code. The trick is to get rid of the nested expression in the evaluator by copying only the required information (here, the strides).
8b84801f7f bug #1310: workaround a compilation regression from 3.2 regarding triangular * homogeneous
422530946f Renamed the SYCL tests to follow the standard naming convention.
67b4f45836 Fix angle range
27f3970453 Remove std:: prefix
3860a0bc8f bug #1312: Quaternion to AxisAngle conversion now ensures the angle will be in the range [-pi,pi]. This also increases accuracy when q.w is negative.
33500050c3 bug #1308: fix compilation of some small products involving nullary-expressions.
27d7628f16 Updated the list of warnings to reflect the new message ids introduced in cuda 8.0
2bda1b0d93 Updated the tensor sum and mean reducer to enable them to process complex numbers on cuda gpus.
dd602e62c8 Converting alias template to nested struct in order to be compatible with CXX-03
f3a00dd2b5 Merged in sergiu/eigen (pull request PR-229)
892afb9416 Add debug info.
779774f98c bug #1311: fix alignment logic in some cases of (scalar*small).lazyProduct(small)
6565f8d60f Made the initialization of a CUDA device thread safe.
48dfe98abd bug #1308: fix compilation of vector * rowvector::nullary.
fe29157d02 disabled MSVC level 4 warning C4714
f6ac51a054 Made TensorEvalTo compatible with c++0x again.
00d4e65f00 Deleted unused TensorMap data member
86caba838d bug #1304: fix Projective * scaling and Projective *= scaling
b9f7a17e47 Add missing file.
1301d744f8 Made the gaussian generator usable on GPU
2a69290ddb Added a specialization of Eigen::numext::real and Eigen::numext::imag for std::complex<T> to be used when compiling a cuda kernel. This is unfortunately necessary to be able to process complex numbers from a CUDA kernel on MacOS.
3946768916 Added tag 3.3-rc1 for changeset 77e27fbeee7acb289d7df809fc09a8cc8ee94eb7
77e27fbeee bump to 3.3-rc1
2ada122bc6 merge
8f2bdde373 merge
ba0f844d6b Backout changeset ce3557ca69742af477546d031d644a6dab1ff614
9bcdc8b756 Add a nullary-functor example performing index-based sub-matrices.
50e3bbfc90 Calls x.imag() instead of imag(x) when x is a complex number since the former is a constexpr while the later isn't. This fixes compilation errors triggered by nvcc on Mac.
ca3746c6f8 Bypass identity reflectors.
8bde7da086 fix documentation of LinSpaced
66cbabafed Add a note regarding gcc bug #72867
4b377715d7 Do not manually add absolute path to boost-library. Also set C++ standard for blaze to C++14
aecc51a3e8 fix typo
1fc3a21ed0 Disable a failure test if extended double precision is in use (x87)
9fa2c8650e Fix alignement of statically allocated temporaries in symv, and trmv.
ac5377e161 Improve cost estimation of complex division
5269d11935 Fix compilation if ICC.
26f9907542 Added missing typedefs
608b1acd6d Don't use c++11 features and fix include.
b2c6dc48d9 Add CUDA-specific std::complex<T> specializations for scalar_sum_op, scalar_difference_op, scalar_product_op, and scalar_quotient_op.
8a66ca4b10 Pulled latest updates from trunk
59e9edfbf1 Removed EIGEN_DEVICE_FUNC qualifers for the lu(), fullPivLu(), partialPivLu(), and inverse() functions since they aren't ready to run on GPU
3ada6e4bed Merged hongkai-dai/eigen/tip into default (bug #1298)
c3ca9b1e76 Deleted some unecessary and confusing EIGEN_DEVICE_FUNC
5dcc6d301a remove ternary operator in euler angles
c771df6bc3 Updated the owners of the file.
b91e021172 Merged with default.
cb81975714 Partial OpenCL support via SYCL compatible with ComputeCpp CE.
bf03820339 Silent warning.
de05a18fe0 fix compilation with boost::multiprec
4cc2c73e6a Fix alignement of statically allocated temporaries in gemv.
ce3557ca69 Make makeHouseholder more stable for cases where real(c0) is not very small (but the rest is).
6edd2e2851 Made AutoDiffJacobian more intuitive to use and updated for C++11
4adeababf9 Fix undeflow
18f6e47815 Fix order of "static inline".
ee62f168e6 Doc: add link from block methods to respective tutorial section.
ca7f061a5f bug #828: clarify documentation of SparseMatrixBase's methods returning a sub-matrix.
50e203c717 bug #828: clarify documentation of SparseMatrixBase's unary methods.
fa9049a544 Let be consistent and consider any denormal number as zero.
b33144e4df merge
c0d56a543e Added several missing EIGEN_DEVICE_FUNC qualifiers
488ad7dd1b Added missing EIGEN_DEVICE_FUNC qualifiers
779faaaeba Fixed compilation warnings generated by nvcc 6.5 (and below) when compiling the EIGEN_THROW macro
1c8347e554 Fix product for custom complex type. (conjugation was ignored)
ff47717f25 Suppress warning 2527 and 2529, which correspond to the "calling a __host__ function from a __host__ __device__ function is not allowed" message in nvcc 6.5.
309190cf02 Suppress message 1222 when compiling with nvcc: this ensures that we don't warnings about unknown warning messages when compiling with older versions of nvcc
c10620b2b0 Fix typo in doc.
73c8f2f697 bug #1285: fix regression introduced in changeset 00c29c2caef8fb0c6b1d2ba5ecdf6780c0c766d4
e4d4d15588 Register the cxx11_tensor_device only for recent cuda architectures (i.e. >= 3.0) since the test instantiate contractions that require a modern gpu.
4dfd888c92 CUDA contractions require arch >= 3.0: don't compile the cuda contraction tests on older architectures.
028e299577 Fixed a bug impacting some outer reductions on GPU
5f50f12d2c Added the ability to compute the absolute value of a complex number on GPU, as well as a test to catch the problem.
8321dcce76 Merged latest updates from trunk
eb6ba00cc8 Properly size the list of waiters
a618094b62 Added a resize method to MaxSizeVector
228ae29591 Fix compilation on 32 bits systems.
471eac5399 bug #1195: move NumTraits::Div<>::Cost to internal::scalar_div_cost (with some specializations in arch/SSE and arch/AVX)
d780983f59 Doc: explain minimal requirements on nullary functors
85fb517eaf Generalize ScalarBinaryOpTraits to any complex-real combination as defined by NumTraits (instead of supporting std::complex only).
447f269561 Disable previous workaround.
b046a3f87d Workaround MSVC instantiation faillure of has_*ary_operator at the level of triats<Ref>::match so that the has_*ary_operator are really properly instantiated throughout the compilation unit.
3cb914f332 bug #1266: remove CUDA guards on MatrixBase::<decomposition> definitions. (those used to break old nvcc versions that we propably don't care anymore)
e1642f485c bug #1288: fix memory leak in arpack wrapper.
19a95b3309 Fix shadowing wrt Eigen::Index
dabc81751f Fix compilation when cuda_fp16.h does not exist.
e13071dd13 Workaround a weird msvc 2012 compilation error.
d123717e21 Fix for msvc 2012 and older
87a8a1975e Fixed a regression test
13df3441ae Use MaxSizeVector instead of std::vector: xcode sometimes assumes that std::vector allocates aligned memory and therefore issues aligned instruction to initialize it. This can result in random crashes when compiling with AVX instructions enabled.
373c340b71 Fixed a typo
cadd124d73 Pulled latest update from trunk
05b0518077 Made the index type an explicit template parameter to help some compilers compile the code.
adf864fec0 Merged in rmlarsen/eigen (pull request PR-222)
5a6be66cef Turned the Index type used by the nullary wrapper into a template parameter.
13e93ca8b7 Fix CUDA build broken by changes to min and max reduction.
6c05c3dd49 Fix the cxx11_tensor_cuda.cu test on 32bit platforms.
49c0390ce0 merge
d6c8366d84 Fix compilation with MSVC 2012
039e225f7f Added a test for nullary expressions on CUDA Also check that we can mix 64 and 32 bit indices in the same compilation unit
c53f783705 Updated the contraction code to support constant inputs.
ef54723dbe One more msvc fix iteration, the previous one was over-simplified for visual
46475eff9a Adjust Tensor module wrt recent change in nullary functor
72a4d49315 Fix compilation with CUDA 8
f9f32e9e2d Fix compilation with nvcc
3d946e42b3 Fix compilation with visual studio
221f619bea Merged in rmlarsen/eigen (pull request PR-221)
a1e092d1e8 Fix bugs to make min- and max reducers with correctly with IEEE infinities.
836fa25a82 Make sure sizeof is truelly needed, thus improving SFINAE portability.
84cf6e42ca minor tweaks in has_* helpers
7ae819123c Simplify CwiseNullaryOp example.
218c37beb4 bug #1286: automatically detect the available prototypes of functors passed to CwiseNullaryExpr such that functors have only to implement the operators that matters among:  operator()()  operator()(i)  operator()(i,j) Linear access is also automatically detected based on the availability of operator()(i,j).
efe2c225c9 bug #1283: add regression unit test
3456247437 bug #1283: quick fix for products involving uncommon general block access to vectors.
8c48d42530 Fix 4x4 inverse with non-linear destination
e7fbbc2748 Doc: add links and discourage user to write their own expression (better use CwiseNullaryOp)
1e2ab8b0b3 Doc: add an exemple showing how custom expression can be advantageously implemented via CwiseNullaryOp.
9c9e23858e Doc: split customizing-eigen page into sub-pages and re-structure a bit the different topics
cffe8bbff7 Doc: add link to example
c57317035a Fix unit test for 1x1 matrices
1f84f0d33a merge EulerAngles module
68e803a26e Fix warning
e074f720c7 Include missing forward declaration of SparseMatrix
2915e1fc5d Revert part of changeset 5b3a6f51d353bb3b35f6d15f2455774b73d088e0  to keep accuracy of smallest eigenvalues.
7e029d1d6e bug #1271: add SparseMatrix::coeffs() methods returning a 1D view of the non zero coefficients.
a93e354d92 Add some pre-allocation unit tests (not working yet)
6cd7b9ea6b Fix compilation with cuda 8
8f4b4ad5fb use ::hlog if available.
35a8e94577 bug #1167: simplify installation of header files using cmake's install(DIRECTORY ...) command.
0decc31aa8 Add generic implementation of conj_helper for custom complex types.
fd9caa1bc2 bug #1282: fix implicit double to float conversion warning
68d1897e8a Make sure that our log1p implementation is called as a last resort only.
fe60856fed Add overload of numext::log1p for float/double in CUDA
0f56b5a6de enable vectorization path when testing half on cuda, and add test for log1p
965e595f02 Add missing log1p method
1329c55875 Fix compilation with boost::multiprec.
441b7eaab2 Add support for non trivial scalar factor in sparse selfadjoint * dense products, and enable +=/-= assignement for such products. This changeset also improves the performance by working on column of the result at once.
8132a12625 bug #1268: detect faillure in LDLT and report them through info()
bde9b456dc Typo
326320ec7b Fix compilation in non C++11 mode.
ea2e968257 Address several implicit scalar conversions.
0a6a50d1b0 Cleanup eiegnvector extraction: leverage matrix products and compile-time sizes, remove numerous useless temporaries.
00b2666853 bug #645: patch from Tobias Wood implementing the extraction of eigenvectors in GeneralizedEigenSolver
504a4404f1 Optimize expression matching "d?=a-b*c" as "d?=a; d?=b*c;"
e47a8928ec Fix compilation in check_for_aliasing due to ambiguous specializations
6739f6bb1b Merged in traversaro/eigen-1/traversaro/modify-findeigen3cmake-to-find-eigen3con-1469782761059 (pull request PR-213)
ef3de20481 Cleanup cost of tanh
b3151bca40 Implement pmadd for float and double to make it consistent with the vectorized path when FMA is available.
a4c266f827 Factorize the 4 copies of tanh implementations, make numext::tanh consistent with array::tanh, enable fast tanh in fast-math mode only.
82147cefff Fix possible overflow and biais in integer random generator
068ccab9fe FindEigen3.cmake : search for package only if EIGEN3_INCLUDE_DIR is not already defined
581b6472d1 bug #1265: remove outdated notes
59bacfe520 Fix compilation on CUDA 8 by removing call to h2log1p
34ae80179a Use array_prod instead of calling TotalSize since TotalSize is only available on DSize.
2556565b4b Merged in ibab/eigen/extend-log1p (pull request PR-218)
30dd6f5e34 Close branch extend-log1p
fe73648c98 Fixed a bug in the documentation.
9636a8ed43 bug #1273: Add parentheses when redefining eigen_assert
c83b754ee0 bug #1272: Disable assertion when total number of columns is zero. Also moved assertion to finished() method and adapted unit-test
e3a8dfb02f std::erfcf doesn't exist: use numext::erfc instead
64e68cbe87 Don't attempt to optimize partial reductions when the optimized implementation doesn't buy anything.
5157ce8cbf Merged in ibab/eigen/extend-log1p (pull request PR-217)
aee693ac52 Add log1p support for CUDA and half floats
72096f3bd4 Merged in suiyuan2009/eigen/fix_tanh_inconsistent_for_tensorflow (pull request PR-215)
3e4a33d4ba bug #1272: Let CommaInitializer work for more border cases (enhances fix of bug #1242). The unit test tests all combinations of 2x2 block-sizes from 0 to 3.
1031223c09 fix tanh inconsistent
5cf1e4c79b create fix_tanh_inconsistent branch
fe4b927e9c Add aliases Eigen_*_DIR to Eigen3_*_DIR This is to make configuring work again after project was renamed from Eigen to Eigen3
fe778427f2 Fixed the constructors of the new half_base class.
5eea1c7f97 Fixed cut and paste bug in debud message
9506343349 Fixed the isnan, isfinite and isinf operations on GPU
b50d8f8c4a Extended a regression test to validate that we basic fp16 support works with cuda 7.0
fad9828769 Deleted redundant regression test.
373bb12dc6 Check that it's possible to forward declare the hlaf type.
17b9a55d98 Move Eigen::half_impl::half to Eigen::half while preserving the free functions to the Eigen::half_impl namespace together with ADL
ca2cee2739 Merged in ibab/eigen (pull request PR-206)
d92df04ce8 Cleaned up the new float16 test a bit
81099ef482 Added a test for fp16
a20b58845f CUDA_ARCH isn't always defined, so avoid relying on it too much when figuring out which implementation to use for reductions. Instead rely on the device to tell us on which hardware version we're running.
819d0cea1b List PARDISO solver.
f4404777ff Change project name to Eigen3, to be compatible with FindEigen3.cmake and Eigen3Config.cmake. This is related to pull-requests 214.
fd220dd8b0 Use numext::conj instead of std::conj
e256acec7c Avoid unecessary object copies
7995cec90c Fix vectorization logic for coeff-based product for some corner cases.
02fe89f5ef half implementation has been moved to half_impl namespace
2693fd54bf bug #1266: half implementation has been moved to half_impl namespace
c5b893f434 bug #1266: half implementation has been moved to half_impl namespace
5e51a361fe Modify FindEigen3.cmake to find Eigen3Config.cmake
ca5effa16c MSVC-2010 is making problems with SFINAE again. But restricting to the variant for very old compilers (enum, template<typename C> for both function definitions) fixes the problem.
4057f9b1fc Enable slice-vectorization+inner-unrolling when unaligned vectorization is allowed. For instance, this permits to vectorize 5x5 matrices (including product)
5fbe7aa604 Update and fix Cholesky mini benchmark
a72752caac Vectorize more small product expressions by letting the general assignement logic decides on the sizes that are OK for vectorization.
cc2f6d68b1 bug #1264: fix compilation
188590db82 Add instructions for LAPACKE+Accelerate
8972323c08 Big 1261: add missing max(ADS,ADS) overload (same for min)
5d94dc85e5 bug #1260: add regression test
0d7039319c bug #1260: remove doubtful specializations of ScalarBinaryOpTraits
d3d7c6245d Add brackets to block matrix and fixed some typos
0eece608b4 Added tag 3.3-beta2 for changeset f6b3cf8de98b0a66d206f28c087b402b0102af9a
f6b3cf8de9 Bump to 3.3-beta2
9d16b6e1cf Formatting
fd2f989b1d Fix testing of nearly zero input matrices.
c9e3e438eb Add more very small numbers in the list of nearly "zero" values when testing SVD and EVD algorithms
95113cb15c Improve robustness of 2x2 eigenvalue with shifting and scaling
7f7e84aa36 Fix compilation with MKL support
429028b652 Typo.
6b89fa802c Typos.
c581c8fa79 Fix with expession template scalar types.
8021aed89e Split BLAS/LAPACK versus MKL documentation
757971e7ea bug #1258: fix compilation of Map<SparseMatrix>::coeffRef
c9425492c8 Update doc.
0592b4cfbf merge
9c663e4ee8 Clean references to MKL in LAPACKe support.
0c06077efa Rename MKL files
4d54e3dd33 bug #173: remove dependency to MKL for LAPACKe backend.
3d3d34e442 Deleted dead code.
34b483e25d bug #1249: enable use of __builtin_prefetch for GCC, clang, and ICC only.
6d5daf32f5 bug #1255: comment out broken and unsused line.
f9598d73b5 bug #1250: fix pow() for AutoDiffScalar with custom nested scalar type.
fd1117f2be Implement digits10 for mpreal
9908020d36 Add minimal support for Array<string>, and fix Tensor<string>
4184a3e544 Extend boost.multiprec unit test with ET on, complexes, and general/generalized eigenvalue solvers.
1b2049fbda Enforce scalar types in calls to max/min (helps with expression template scalar types)
b118bc76eb Add digits10 overload for complex.
c96af5381f Remove custom complex division function cdiv.
e1c7c5968a Update doc.
8fffc81606 Add NumTraits::digits10() function based on numeric_limits::digits10 and make use of it for printing matrices.
5f03584752 merge
1b0353c659 Fix misuse of dummy_precesion in eigenvalues solvers
c6b0de2c21 Improved partial reductions in more cases
72744d93ef Allows the compiler to inline outer products (the change from default to dont-inline in changeset 737bed19c1fdb01568706bca19666531dda681a7  was not motivated)
32d95e86c9 merge
60d5980a41 add a note
d7a0e52478 Fix testing of log nearby 1
7acf23c14c Truely split unit test.
24af67a6cc Fix boostmultiprec for C++03
395c835f4b Fix CUDA compilation
d075d122ea Move half unit test from unsupported to main tests
47afc9a365 More cleaning in half:  - put its definition and functions in its own half_impl namespace such that the free function does not polute the Eigen namespace while still making them visible for half through ADL.  - expose Eigen::half throguh a using statement  - move operator<< from std to half_float namespace
0f350a8b7e Fix CUDA compilation
bf91a44f4a Use ADL and log10 for printing matrices.
82798162c0 Extend unit testing of half with ADL and arrays.
87fbda812f Add missing log10 and random generator for half.
01d12d3e82 Some cleanup in Halh: standard functions should be defined in the namespace of the class half to make ADL work, and thus the global is* functions can be removed.
007edee1ac Add a doc page summarizing the true speed of Eigen's decompositions.
9b76be9d21 Update benchmark for dense solver to stress least-squares pb, and to output a HTML table
72950effdf enable testing of Boost.Multiprecision with expression templates
7b4abc2b1d Fixed a code comment error
b64b9d0172 Add a unit test to stress our solvers with Boost.Multiprecision
5e4dda8a12 Enable custom scalar types in some unit tests.
87d480d785 Make use of EIGEN_TEST_MAX_SIZE
7722913475 Fix ambiguous specialization with custom scalar type
fd057f86b3 Complete the coeff-wise math function table.
9e8476ef22 Add missing Eigen::rsqrt global function
4b4c296d6e Simplify ScalarBinaryOpTraits by removing the Defined enum, and extend its documentation.
e3bf874c83 Workaround MSVC 2010 compilation issue.
0f89c6d6b5 Add a summary of possible values for EIGEN_COMP_MSVC
18884f17d7 Remove static constant declaration: this enforces compiler to generate costly code for thread safety.
79574e384e Make scalar_product_op the default (instead of void)
6a3c451c1c Permits call to explicit ctor.
0c3fe4aca5 merge
db9b154193 Add missing non-const reverse method in VectorwiseOp.
461cd819c2 Workaround VS2015 bug
5ea0864c81 Fix regression in a previous commit: some diagonal entry might not be treated by the 2x2 real preconditioner.
20f7ef2f89 An evalTo expression is only aligned iff both the lhs and the rhs are aligned.
b4343aa67e Avoid division by very small entries when extracting singularvalues, and explicitly handle the 1x1 complex case.
e2aa58b631 Consider denormals as zero in makeJacobi and 2x2 SVD. This also fix serious issues with x387 for which values can be much smaller than the smallest denormal!
263993a7b6 Fix test for nearly null input
9ab35d8ba4 Fix compilation of doc
19614497ae Add some doxygen's images to support both old and recent doxygen versions (with some vague definitions of old and recent ;) )
c98bac2966 Manually add -stdd=c++11 to nvcc for old cmake versions
013a904237 Pulled latest updates from trunk
40eb97516c reverted unintended change.
03b71c273e Made the packetmath test compile again. A better fix would be to move the special function tests to the unsupported directory where the code now resides.
3a2dd352ae Improved the contraction mapper to properly support tensor products
0bc020be9d Improved the detection of packet size in the tensor scan evaluator.
a96a7ce3f7 Move CUDA's special functions to SpecialFunctions module.
bec35f4c55 Clarify that SpecialFunctions is unsupported
fd60966310 merge
7d636349dc Fix configuration of CUDA:  - preserve user defined CUDA_NVCC_FLAGS  - remove the -ansi flag that conflicts with -std=c++11  - do not add -std=c++11 if already there
8b3fc31b55 compile fix (SFINAE variant apparently didn't work for all compilers) for the following compiler/platform: gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46) Copyright (C) 2006 Free Software Foundation, Inc.
3e348fdcf9 Workaround MSVC bug
131ee4bb8e Split test_slice_in_expr which seems to be huge for visual
194daa3048 Fix assertion (it did not make sense for static_val types)
18c35747ce Emulate _BitScanReverse64 for 32 bits builds
ef05463fcf Merged kmargar/eigen/tip into default, Altivec/VSX port should be working ok now.
9f7caa7e7d minor fixes for big endian altivec/vsx
3c795c6923 bug #1119: Adjust call to ?gssvx for SuperLU 5 Also improved corresponding cmake module to detect versions 5.x
57113e00f9 Relax strict equality
599f8ba617 Change runtime to compile-time conditional.
544935101a Fix warnings
59bf2774a3 Fix warnings
2f7e2614e7 bug #1232: refactor special functions as a new SpecialFunctions module, currently in unsupported/.
8b7431d8fd fix compilation with c++11
69378eed0b Split huge unit test
c684e37d32 Prevent division by zero.
179ebb88f9 Fix warning
5d2dada197 Fix warnings
f5e780fb05 split huge unit test
66917299a9 Add debug output
5ca2457fa5 Fix unit test.
9b68ed4537 Relax is_equal to is_approx because scaling might modify last bit.
c3b23d7dbf Fix support of Intel's VML
8ec4d6480d Fix compilation with recent updates of icc 2016
5b3a6f51d3 Improve numerical robustness of RealSchur: add scaling and compare sub-diag entries to largest diagonal entry instead of the 2 neighbors.
d2b5a19e0f Fix warning.
367ef66af3 Re-enable some specializations for Assignment<.,Product<>>
155d8d8603 Fix compilation with msvc
43696ede8f Revert unwanted changes.
b39fd8217f Fix nesting of SolveWithGuess, and add unit test.
ec02af1047 Fix template resolution.
fbcfc2f862 Add unit test for solveWithGuess, and fix template resolution.
7f7839c12f Add documentation and exemples for inplace decomposition.
32a41ee659 bug #707: add inplace decomposition through Ref<> for Cholesky, LU and QR decompositions.
75e80792cc Update relevent list of changesets.
dacc544b84 asm escape was not strong enough to prevent too aggressive compiler optimization let's fallback to no-inline.
b74e45906c Few fixes in perf-monitoring.
ce9fc0ce14 fix clang compilation
440020474c Workaround compilation issue with msvc
e61cee7a50 Fix compilation of some unit tests with msvc
91b3039013 Change the semantic of the last template parameter of Assignment from "Scalar" to "SFINAE" only. The previous "Scalar" semantic was obsolete since we allow for different scalar types in the source and destination expressions. On can still specialize on scalar types through SFINAE and/or assignment functor.
0fa9e4a15c Fix performance regression in dgemm introduced by changeset 5d51a7f12c69138ed2a43df240bdf27a5313f7ce
672076db5d Fix performance regression introduced in changeset e56aabf205a1e8f581dd8a46d7d46ce79c45e158 . Register blocking sizes are better handled by the cache size heuristics. The current code introduced very small blocks, for instance for 9x9 matrix, thus killing performance.
78f37ca03c Expose real and imag methods on Tensors
d161b8f03a Merged in carpent/eigen (pull request PR-204)
cb2d8b8fa6 Made it possible to compile reductions for an old cuda architecture and run them on a recent gpu.
b2a47641ce Made the code compile when using CUDA architecture < 300
b047ca765f Merged in ibab/eigen/fix-tensor-scan-gpu (pull request PR-205)
85699850d9 Add missing CUDA kernel to tensor scan op
6126886a67 Use complete nested namespace Eigen::internal
328c5d876a Undo changes in AltiVec --- I don't have any way to test there.
38fb606052 Avoid global variables with static constructors in NEON/Complex.h
1a9f92e781 Added a test to validate the tensor scan evaluation on GPU. The test is currently disabled since the code segfaults.
75c333f94c Don't store the scan axis in the evaluator of the tensor scan operation since it's only used in the constructor. Also avoid taking references to values that may becomes stale after a copy construction.
c52c8d76da Disable pkgconfig only for native windows builds
d937a420a2 Fix compilation with MSVC by using our portable numext::log1p implementation.
2d5731e40a bug #1270: bypass custom asm for pmadd and recent clang version
49b005181a Define EIGEN_COMP_CLANG to clang version as major*100+minor (e.g., 307 corresponds to clang 3.7)
130f891bb0 bug #1278: ease parsing
7944d4431f Made the cost model cwiseMax and cwiseMin methods consts to help the PowerPC cuda compiler compile this code.
647a51b426 Force the inlining of a simple accessor.
a452dedb4f Merged in ibab/eigen/double-tensor-reduction (pull request PR-216)
18c67df31c Fix remaining CUDA >= 300 checks
1569a7d7ab Add the necessary CUDA >= 300 checks back
2b17f34574 Properly detect the type of the result of a contraction.
841e075154 Remove CUDA >= 300 checks and enable outer reductin for doubles
0425118e2a Merge upstream changes
9537e8b118 Make use of atomicExch for atomicExchCustom
eeb0d880ee Enable efficient Tensor reduction for doubles
d476cadbb8 bug #1247: fix regression in compilation of pow(integer,integer), and add respective unit tests.
cfff370549 Fix hyperbolic functions for autodiff.
c50c73cae2 Fix missing specialization.
3852351793 merge pull request 198
6dd9077070 Fix some unused typedef warnings.
ce90647fa5 Fix NumTraits<AutoDiff>
fa39f81b48 Fix instantiation of ScalarBinaryOpTraits for AutoDiff.
cd577a275c Relax promote_scalar_arg logic to enable promotion to Expr::Scalar if conversion to Expr::Literal fails. This is useful to cancel expression template at the scalar level, e.g. with AutoDiff<AutoDiff<>>. This patch also defers calls to NumTraits in cases for which types are not directly compatible.
deb45ad4bc bug #1245: fix compilation with msvc
a9c1e4d7b7 Return -1 from CurrentThreadId when called by thread outside the pool.
d39df320d2 Resolve merge.
361dbd246d Add unit test for printing empty tensors
360a743a10 bug #1241: does not emmit anything for empty tensors
55fc04e8b5 Fix operator priority
bf2d5edecc Fix warning.
7c6561485a merge PR 194
be107e387b fix compilation with clang 3.9, fix performance with pset1, use vector operators instead of intrinsics in some cases
76faf4a965 Introduce a NumTraits<T>::Literal type to be used for literals, and improve mixing type support in operations between arrays and scalars:  - 2 * ArrayXcf is now optimized in the sense that the integer 2 is properly promoted to a float instead of a complex<float> (fix a regression)  - 2.1 * ArrayXi is now forbiden (previously, 2.1 was converted to 2)  - This mechanism should be applicable to any custom scalar type, assuming NumTraits<T>::Literal is properly defined (it defaults to T)
a3f7edf7e7 Biug 1242: fix comma init with empty matrices.
a29a2cb4ff Silenced a couple of compilation warnings generated by xcode
f8fcd6b32d Turned the constructor of the PerThread struct into what is effectively a constant expression to make the code compatible with a wider range of compilers
c58df31747 Handle empty tensors in the print functions
de32f8d656 Fixed the printing of rank-0 tensors
8c34b5a0e3 mostly cleanups and modernizing code
b410d46482 mostly cleanups and modernizing code
b80379bda0 fixed pexp<Packet2d>, was failing tests
8e198d6835 Complete docs and add ostream operator for EulerAngles.
b055590e91 Made log1p_impl usable inside a GPU kernel
72c95383e0 Add autodiff coverage for standard library hyperbolic functions, and tests. * * * Corrected tanh derivatived, moved test definitions. * * * Added more test cases, removed lingering lines
67c12531e5 Fix warnings with gcc
eb91345d64 Move scalar/expr to ArrayBase and fix documentation
4794834397 Propagate functor to ScalarBinaryOpTraits
c55035b9c0 Include the cost of stores in unrolling of triangular expressions.
7d495d890a Merged in ibab/eigen (pull request PR-197)
aedc5be1d6 Avoid generating pseudo random numbers that are multiple of 5: this helps spread the load over multiple cpus without havind to rely on work stealing.
4e7c3af874 Cleanup useless helper: internal::product_result_scalar
101ea26f5e Include the cost of stores in unrolling (also fix infinite unrolling with expression costing 0 like Constant)
c4d10e921f Implement exclusive scan option
76236cdea4 merge
1004c4df99 Cleanup unused functors.
70dad84b73 Generalize expr/expr and scalar/expr wrt scalar types.
62134082aa Update AutoDiffScalar wrt to scalar-multiple.
5d38203735 Update Tensor module to use bind1st_op and bind2nd_op
396d9cfb6e Generalize expr.pow(scalar), pow(expr,scalar) and pow(scalar,expr). Internal: scalar_pow_op (unary) is removed, and scalar_binary_pow_op is renamed scalar_pow_op.
a9bb653a68 Update doc (scalar_add_op is now deprecated)
a8c08e8b8e Implement expr+scalar, scalar+expr, expr-scalar, and scalar-expr as binary expressions, and generalize supported scalar types. The following functors are now deprecated: scalar_add_op, scalar_sub_op, and scalar_rsub_op.
756ac4a93d Fix doc.
f925dba3d9 Fix compilation of BVH example
12350d3ac7 Add unit test for AlignedBox::center
bcc0f38f98 Add unittesting plugins to scalar_product_op and scalar_quotient_op to help chaking that types are properly propagated.
f57fd78e30 Generalize coeff-wise sparse products to support different scalar types
f5b1c73945 Set cost of constant expression to 0 (the cost should be amortized through the expression)
deb8306e60 Move MatrixBase::operaotr*(UniformScaling) as a free function in Scaling.h, and fix return type.
64fcfd314f Implement scalar multiples and division by a scalar as a binary-expression with a constant expression. This slightly complexifies the type of the expressions and implies that we now have to distinguish between scalar*expr and expr*scalar to catch scalar-multiple expression (e.g., see BlasUtil.h), but this brings several advantages: - it makes it clear on each side the scalar is applied, - it clearly reflects that we are dealing with a binary-expression, - the complexity of the type is hidden through macros defined at the end of Macros.h, - distinguishing between "scalar op expr" and "expr op scalar" is important to support non commutative fields (like quaternions) - "scalar op expr" is now fully equivalent to "ConstantExpr(scalar) op expr" - scalar_multiple_op, scalar_quotient1_op and scalar_quotient2_op are not used anymore in officially supported modules (still used in Tensor)
39781dc1e2 Fix compilation of evaluator unit test
6edfe8771b Little bit docs
6e1c086593 Add static assertion
3c12e24164 Add bind1st_op and bind2nd_op helpers to turn binary functors into unary ones, and implement scalar_multiple2 and scalar_quotient2 on top of them.
7a9ef7bbb4 Add default template parameters for the second scalar type of binary functors. This enhences backward compatibility.
2ca2ffb65e check for mixing types in "array / scalar" expressions
4c61f00838 Add missing explicit scalar conversion
06206482d9 More docs, and minor code fixes
a3a4714aba Add debug output.
83904a21c1 Make sure T(i+1,i)==0 when diagonalizing T(i:i+1,i:i+1)
65d33e5898 Merged in ibab/eigen (pull request PR-195)
a05607875a Don't refer to the half2 type unless it's been defined
fabae6c9a1 Cleanup
5de8d7036b Add real.pow(complex), complex.pow(real) unit tests.
5fdd703629 Enable mixing types in numext::pow
2e238bafb6 Big 279: enable mixing types for comparisons, min, and max.
0028049380 bug #1240: Remove any assumption on NEON vector types.
86aedc9282 Add small fixes to TensorScanOp
db0118342c Fixed compilation of BVH_Example (required for make doc)
84b2060a9e Fixed compilation error with gcc 4.4
2c462f4201 Clean handling for void type in EIGEN_CHECK_BINARY_COMPATIBILIY
3d71d3918e Disable shortcuts for res ?= prod when the scalar types do not match exactly.
7ef9f47b58 Misc small improvements to the reduction code.
ea75dba201 Added missing EIGEN_DEVICE_FUNC qualifiers to the unary array ops
33f0340188 Implement result_of for the new ternary functors
e30133e439 Doc EulerAngles class, and minor fixes.
df24f4a01d bug #1201: improve code generation of affine*vec with MSVC
9137f560f0 Moved assertions to the constructor to make the code more portable
66e99ab6a1 Relax mixing-type constraints for binary coefficient-wise operators: - Replace internal::scalar_product_traits<A,B> by Eigen::ScalarBinaryOpTraits<A,B,OP> - Remove the "functor_is_product_like" helper (was pretty ugly) - Currently, OP is not used, but it is available to the user for fine grained tuning - Currently, only the following operators have been generalized: *,/,+,-,=,*=,/=,+=,-= - TODO: generalize all other binray operators (comparisons,pow,etc.) - TODO: handle "scalar op array" operators (currently only * is handled) - TODO: move the handling of the "void" scalar type to ScalarBinaryOpTraits
1f1e0b9e30 Silenced compilation warning
5b95b4daf9 Moved static assertions into the class constructor to make the code more portable
d7e3e4bb04 Removed executable bits from header files.
c53687dd14 Add randomized properties tests for betainc special function.
f1f2ff8208 size_t -> int
76308e7fd2 Add CurrentThreadId and NumThreads methods to Eigen threadpools and TensorDeviceThreadPool.
bd21243821 Fix compile errors initializing packets on ARM DS-5 5.20
1fc2746417 Make Arrays's ctor/assignment noexcept
37638dafd7 Simplified the code that dispatches vectorized reductions on GPU
66796e843d Fixed definition of some of the reducer_traits
4434b16694 Pulled latest updates from trunk
14a112ee15 Use signed integers more consistently to encode the number of threads to use to evaluate a tensor expression.
8f92c26319 Improved code formatting
aa33446dac Improved support for vectorization of 16-bit floats
e2b3836326 Include recent changesets that played with product's kernel
2bd59b0e0d Take advantage that T is already diagonal in the extraction of generalized complex eigenvalues.
c1f9ca9254 Update RealQZ to reduce 2x2 diagonal block of T corresponding to non reduced diagonal block of S to positive diagonal form. This step involve a real 2x2 SVD problem. The respective routine is thus in src/misc/ to be shared by both EVD and AVD modules.
15890c304e Add unit test for non symmetric generalized eigenvalues
a20d2ec1c0 Fix shadow variable, and indexing.
0beabb4776 Fixed type conversion from int
df095cab10 Fixes for PARDISO: warnings, and defaults to metis+ in-core mode.
9fc8379328 Fix extraction of complex eigenvalue pairs in real generalized eigenvalue problems.
9dd9d58273 Copied a regression test from 3.2 branch.
8fd57a97f2 Enable the vectorization of adds and mults of fp16
d6d39c7ddb Added missing EIGEN_DEVICE_FUNC
8d97ba6b22 bug #725: make move ctor/assignment noexcept.
e8b922ca63 Fix MatrixFunctions module.
82293f38d6 Fix unit test.
fe62c06d9b Fix compilation.
969b8959a0 Fix compilation: Matrix does not indirectly live in the internal namespace anymore!
f2c2465acc Fix function dependencies
c3c8ad8046 Align the first element of the Waiter struct instead of padding it. This reduces its memory footprint a bit while achieving the goal of preventing false sharing
39baff850c Add TernaryFunctors and the betainc SpecialFunction. TernaryFunctors and their executors allow operations on 3-tuples of inputs. API fully implemented for Arrays and Tensors based on binary functors.
02db4e1a82 Disable the tensor tests when using msvc since older versions of the compiler fail to handle this code
c21eaedce6 Use array_prod to compute the number of elements contained in the input tensor expression
36a4500822 Merged in ibab/eigen (pull request PR-192)
c2a102345f Improved the performance of full reductions.
dc03b8f3a1 Add generic scan method
5b77481d58 merge
53feb73b45 Remove dead code.
2c00ac0b53 Implement generic scalar*expr and expr*scalar operator based on scalar_product_traits. This is especially useful for custom scalar types, e.g., to enable float*expr<multi_prec> without conversion.
811aadbe00 Add syntactic sugar to Eigen tensors to allow more natural syntax. Specifically, this enables expressions involving:
52e4cbf539 Merged eigen/eigen into default
2aaaf22623 Fix Gael reports (except documention)
6021c90fdf Merged in ibab/eigen (pull request PR-189)
8b6f53222b bug #1193: fix lpNorm<Infinity> for empty input.
d616a81294 Disable MSVC's "decorated name length exceeded, name was truncated" warning in unit tests.
61a32f2a4c Fix pointer to long conversion warning.
fbd7ed6ff7 Add tensor scan op
0ed08fd281 Use a single PacketSize variable
8f6fedc55f Fixed compilation warning
c3cada38e2 Speedup a test
360e311b66 Doc: add some cross references (also fix empty macro argument warning)
873e6ac54b Silenced compilation warning generated by nvcc.
d27b0ad4c8 Added support for mean reductions on fp16
cd221a62ee Doc: start of a table summarizing coefficient-wise math functions.
3c69afca4c Add missing ArrayBase::log1p
89099b0cf7 Expose log1p to Array.
afd33539dd Doc: makes the global unary math functions visible to doxygen (and docuement them)
77e652d8ad Doc: improve documentation of Map<SparseMatrix>
da4970ead2 Doc: disable inlining of inherited members, workaround Doxygen's limited C++ parsing abilities, and improve doc of MapBase.
099b354ca7 Pulled latest updates from trunk
5aeb3687c4 Only enable optimized reductions of fp16 if the reduction functor supports them
b6e306f189 Improved support for CUDA 8.0
1d3b253329 bug #1181: help MSVC inlining.
d79eee05ef Fix compilation with old icc
2c1b56f4c1 bug #1238: fix SparseMatrix::sum() overload for un-compressed mode.
c4bd3b1f21 Silenced some compilation warnings triggered by nvcc 8.0
e2946d962d Reimplement clamp as a static function.
e96d36d4cd Use NULL instead of nullptr to preserve the compatibility with cxx03
abc815798b Added a new operation to enable more powerful tensorindexing.
5707537592 Fixed option '--relaxed-constexpr' has been deprecated and replaced by option '--expt-relaxed-constexpr' warning generated by nvcc 7.5
3a5d6a3c38 Disable the use of MMX instructions since the code is broken on many platforms
f2c86384f4 Cleaner implementation of dont_over_optimize.
22a035db95 Fix compilation when defaulting to row-major
e0cb73b46b Fix compilation with old ICC version (use C99 types instead of C++11 ones)
1ae2567861 Fixed some compilation warnings
094f4a56c8 Deleted extra namespace
1a47844529 Preserve the ability to vectorize the evaluation of an expression even when it involves a cast that isn't vectorized (e.g fp16 to float)
36369ab63c Resolved merge conflicts
28fcb5ca2a Merged latest reduction improvements
b24cf21235 Merged latest code improvements
c1c7f06c35 Improved the performance of inner reductions.
22d02c9855 Improved the coverage of the fp16 reduction tests
41dcd047d7 bug #1237: Redefine eigen_assert instead of disabling assertions for documentation snippets
8288b0aec2 Code cleanup.
7ff5fadcc0 Disable usage of MMX with msvc.
e8cef383b7 bug #1236: fix possible integer overflow in density estimation.
35df3a32eb Disabled GCC6's ignored-attributes warning in packetmath unit test.
db62719eda Fix some conversion warnings in unit tests.
fdcad686ee Fix numerous pointer-to-integer conversion warnings in unit tests.
30d97c03ce Defer the allocation of the working space: - it is not always needed, - and this fixes a long-to-float conversion warning
e08f54e9eb Fix copy ctor prototype.
c7f54b11ec linspaced's divisor for integer is better stored as the underlying scalar type.
bebc5a2147 Fix/handle some int-to-long conversions.
00c29c2cae Store permutation's determinant as char. This also fixes some long to float conversion warnings
2f56d91063 Fix a pointer to integer conversion warning
2a44a70142 Handle some Index to int conversions in BLAS/LAPACK support.
f253e19296 Disable some long to float conversion warnings
2ee306e44a Temporary workaround for bug #1237. The snippet (expectedly) failed with enabled assertions.
37197b602b Remove debuging code.
27f0434233 Introduce internal's UIntPtr and IntPtr types for pointer to integer conversions. This fixes "conversion from pointer to same-sized integral type" warnings by ICC. Ideally, we would use the std::[u]intptr_t types all the time, but since they are C99/C++11 only, let's be safe.
40e4637d79 Turn off ICC's conversion warning in is_convertible implementation
cc1ab64f29 Add missing inclusion of mmintrin.h
2d7ed54ba2 Made the static storage class qualifier come first.
e1fca8866e Deleted unnecessary explicit qualifiers.
9b0aaf5113 Don't mark inline functions as static since it confuses the ICC compiler
3585ff585e Silenced a compilation warning
037a463fd5 Marked unused variables as such
efeb89dcdb Specify the rounding mode in the correct location
457204cb83 Updated the README file for the tensor benchmarks
0322c66a3f Explicitly specify the rounding mode when converting floats to fp16
3ac4045272 Made the IndexPair code compile in non cxx11 mode
66556d0e05 Made the index pair list code more portable accross various compilers
034aa3b2c0 Improved the performance of tensor padding
58026905ae Added support for statically known lists of pairs of indices
ed783872ab Disable the use of MMX instructions on x86_64 since too many compilers only support them in 32bit mode
bcfff64f9e Use numext:: instead of std:: functions.
f57260a997 Fix typo in dont_over_optimize
2cd32be70b Fix warning.
bbf9109e25 Fix compilation with ICC.
2a1bff67fd Fix static/inline order.
0835667329 There is no need to make the fp16 full reduction kernel a static function.
b5d6b52a4d Fixed compilation warning
d041a528da Cleaned up the fp16 code a little more
cb26784d07 Pulled latest updates from trunk
ff4a289572 Cleaned up the fp16 code
3f715e1701 update doc wrt to unaligned vectorization
9216abe28d Document EIGEN_UNALIGNED_VECTORIZE.
0fd953c217 Workaround clang/llvm bug in code generation.
e68e165a23 bug #256: enable vectorization with unaligned loads/stores. This concerns all architectures and all sizes. This new behavior can be disabled by defining EIGEN_UNALIGNED_VECTORIZE=0
78390e4189 Block<> should not disable vectorization based on inner-size, this is the responsibilty of the assignment logic.
64bb7576eb Clean propagation of Dest/Src alignments.
40a16282c7 Remove now-unused protate PacketMath func
6136f4fdd4 Remove the rotating kernel. It was only useful on some ARM CPUs (Qualcomm Krait) that are not as ubiquitous today as they were when I introduced it.
e617711306 Don't attempt to use MMX instructions with visualstudio since they're only partially supported.
334e76537f Worked around missing clang intrinsic
b517ab349b Use the generic ploadquad intrinsics since it does the job
646872cb3b Worked around missing clang intrinsics
3dfc391a61 Added missing EIGEN_DEVICE_FUNC qualifier
3d0741f027 Include mmintrin.h to make it possible to use mmx instructions when needed. For example, this will enable the definition of a half packet for the Packet4f type.
33a94f5dc7 Use the Index type instead of integers to specify the strides in pgather/pscatter
6bc684ab6a Added missing alignment in the fp16 packet traits
283e33dea4 ptranspose is not a template.
a5a3ba2b80 Avoid unnecessary float to double conversions
5ba0ebe7c9 Avoid unnecessary float to double conversion.
7d980d74e5 Started to vectorize the processing of 16bit floats on CPU.
5d51a7f12c Don't optimize the processing of the last rows of a matrix matrix product in cases that violate the assumptions made by the optimized code path.
7aa5bc9558 Fixed a typo in the array.cpp test
a09cbf9905 Merged in rmlarsen/eigen (pull request PR-188)
88654762da Replace multiple constructors of half-type by a generic/templated constructor. This fixes an incompatibility with long double, exposed by the previous commit.
718521d5cf Silenced several double-promotion warnings
b5a7603822 fixed macro name
25a03c02d6 Fix some sign-compare warnings
0851d5d210 Identify clang++ even if it is not named llvm-clang++
6a15e14cda Document EIGEN_MAX_CPP_VER and user controllable compiler features.
ccaace03c9 Make EIGEN_HAS_CONSTEXPR user configurable
c3410804cd Make EIGEN_HAS_VARIADIC_TEMPLATES user configurable
abd1c1af7a Make EIGEN_HAS_STD_RESULT_OF user configurable
1395056fc0 Make EIGEN_HAS_C99_MATH user configurable
48bf5ec216 Make EIGEN_HAS_RVALUE_REFERENCES user configurable
f43ae88892 Rename EIGEN_HAVE_RVALUE_REFERENCES to EIGEN_HAS_RVALUE_REFERENCES
8d6bd5691b polygamma is C99/C++11 only
998f2efc58 Add a EIGEN_MAX_CPP_VER option to limit the C++ version to be used.
c028d96089 Improve doc of special math functions
0ba32f99bd Rename UniformRandom to UnitRandom.
7a9d9cde94 Fix coding practice in Quaternion::UniformRandom
eb0cc2573a bug #823: add static method to Quaternion for uniform random rotations.
2f656ce447 Remove std:: to enable custom scalar types.
b1e080c752 Merged eigen/eigen into default
5624219b6b Merge.
7df811cfe5 Minor cleanups: 1. Get rid of unused variables. 2. Get rid of last uses of EIGEN_USE_COST_MODEL.
bb3ff8e9d9 Advertize the packet api of the tensor reducers iff the corresponding packet primitives are available.
84df9142e7 bug #1231: fix compilation regression regarding complex_array/=real_array and add respective unit tests
21d692d054 Use coeff(i,j) instead of operator().
8456bbbadb bug #1224: fix regression in (dense*dense).sparseView() by specializing evaluator<SparseView<Product>> for sparse products only.
b507b82326 Use default sorting strategy for square products.
1fa15ceee6 Extend sparse*sparse product unit test to check that the expected implementation is used (conservative vs auto pruning).
548a487800 bug #1229: bypass usage of Derived::Options which is available for plain matrix types only. Better use column-major storage anyway.
43790e009b Pass argument by const ref instead of by value in pow(AutoDiffScalar...)
1fbfab27a9 bug #1223: fix compilation of AutoDiffScalar's min/max operators, and add regression unit test.
448d9d943c bug #1222: fix compilation in AutoDiffScalar and add respective unit test
5a71eb5985 Big 1213: add regression unit test.
747e3290c0 bug #1213: rename some enums type for consistency.
f519fca72b Reduce overhead for small tensors and cheap ops by short-circuiting the const computation and block size calculation in parallelFor.
86ae94462e #if defined(EIGEN_USE_NONBLOCKING_THREAD_POOL) is now #if !defined(EIGEN_USE_SIMPLE_THREAD_POOL): the non blocking thread pool is the default since it's more scalable, and one needs to request the old thread pool explicitly.
997c335970 Fixed compilation error
ebf6ada5ee Fixed compilation error in the tensor thread pool
0bb61b04ca Merge upstream.
0dbd68145f Roll back changes to core. Move include of TensorFunctors.h up to satisfy dependence in TensorCostModel.h.
00228f2506 Merged eigen/eigen into default
e7e64c3277 Enable the use of the packet api to evaluate tensor broadcasts. This speed things up quite a bit:
5fa27574dd Allow vectorized padding on GPU. This helps speed things up a little
a910bcee43 Merged latest updates from trunk
8d06c02ffd Allow vectorized padding on GPU. This helps speed things up a little.
86da77cb9b Pulled latest updates from trunk.
92fc6add43 Don't rely on c++11 extension when we don't have to.
2d74ef9682 Avoid float to double conversion
ccc7563ac5 made a fix to the GMRES solver so that it now correctly reports the error achieved in the solution process
575bc44c3f Fix unit test.
ccb408ee6a Improve unit tests of zeta, polygamma, and digamma
6761c64d60 zeta and polygamma are not unary functions, but binary ones.
7a54032408 zeta and digamma do not require C++11/C99
ce12562710 Add some c++11 flags in documentation
b6ed8244b4 bug #1201: optimize affine*vector products
73693b5de6 bug #1221: disable gcc 6 warning: ignoring attributes on template argument
df9a5e13c6 Fix SelfAdjointEigenSolver for some input expression types, and add new regression unit tests for sparse and selfadjointview inputs.
6a2916df80 DiagonalWrapper is a vector, so it must expose the LinearAccessBit flag.
a226f6af6b Add support for SelfAdjointView::diagonal()
ee7da3c7c5 Fix SelfAdjointView::triangularView for complexes.
b6b8578a67 bug #1230: add support for SelfadjointView::triangularView.
a80d875916 Added missing costPerCoeff method
83ef39e055 Turn on the cost model by default. This results in some significant speedups for smaller tensors. For example, below are the results for the various tensor reductions.
b789a26804 Fixed syntax error
83dfb40f66 Turnon the new thread pool by default since it scales much better over multiple cores. It is still possible to revert to the old thread pool by compiling with the EIGEN_USE_SIMPLE_THREAD_POOL define.
97605c7b27 New multithreaded contraction that doesn't rely on the thread pool to run the closure in the order in which they are enqueued. This is needed in order to switch to the new non blocking thread pool since this new thread pool can execute the closure in any order.
069a0b04d7 Added benchmarks for contraction on CPU.
c4fc8b70ec Removed unnecessary thread synchronization
7aa3557d31 Fixed compilation errors triggered by old versions of gcc
5005b27fc8 Diasbled cost model by accident. Revert.
989e419328 Address comments by bsteiner.
e55deb21c5 Improvements to parallelFor.
ae9688f313 Worked around a compilation error triggered by nvcc when compiling a tensor concatenation kernel.
2a54b70d45 Fixed potential race condition in the non blocking thread pool
a071629fec Replace implicit cast with an explicit one
2f9401b061 Worked around compilation errors with older versions of gcc
09653e1f82 Improved the portability of the tensor code
fae0493f98 Fixed a couple of bugs related to the Pascalfamily of GPUs
886445ce4d Avoid unnecessary conversions between floats and doubles
595e890391 Added more tests for half floats
b6a517c47d Added the ability to load fp16 using the texture path. Improved the performance of some reductions on fp16
518149e868 Misc fixes for fp16
56a1757d74 Made predux_min and predux_max on fp16 less noisy
9091351dbe __ldg is only available with cuda architectures >= 3.5
02f76dae2d Fixed a typo
131e5a1a4a Do not copy for trivial 1x1 case. This also avoids a "maybe-uninitialized" warning in some situations.
70195a5ff7 Added missing EIGEN_DEVICE_FUNC
09a19c33a8 Added missing EIGEN_DEVICE_FUNC qualifiers
1a1ce6ff61 Removed deprecated flag (which apparently was ignored anyway)
2150f13d65 fixed some double-promotion and sign-compare warnings
7268b10203 Split unit test
8d4ef391b0 Don't flood test output with successful VERIFY_IS_NOT_EQUAL tests.
bda21407dd Fix help output of buildtests and check scripts
33ca7e3c8d bug #1207: Add and fix logical-op warnings
217d984abc Fixed a typo in my previous commit
08348b4e48 Fix potential race condition in the CUDA reduction code.
cbb14ed47e Added a few tests to validate the generation of random tensors on GPU.
6a5717dc74 Explicitely initialize all the atomic variables.
0f61343893 Workaround maybe-uninitialized warning
3bfc9b47ca Workaround "misleading-indentation" warnings
4ede059de1 Properly gate the use of half2.
bf185c3c28 Extended the tests for ptanh
661e710092 Added support for fp16 to the sigmoid functor.
0eb69b7552 Small improvement to the full reduction of fp16
0b9e3dcd06 Added packet primitives to compute exp, log, sqrt and rsqrt on fp16. This improves the performance by 10 to 30%.
6bf8273bc0 Added a test to validate the new non blocking thread pool
4013b8feca Simplified the reduction code a little.
75bd2bd32d Fixed compilation warning
4670d7d5ce Improved the performance of full reductions on GPU:
c3859a2b58 Added the ability to use a scratch buffer in cuda kernels
ba95e43ea2 Added a new parallelFor api to the thread pool device.
dc7dbc2df7 Optimized the non blocking thread pool:  * Use a pseudo-random permutation of queue indices during random stealing. This ensures that all the queues are considered.  * Directly pop from a non-empty queue when we are waiting for work, instead of first noticing that there is a non-empty queue and then doing another round of random stealing to re-discover the non-empty queue.  * Steal only 1 task from a remote queue instead of half of tasks.
05c365fb16 Pulled latest updates from trunk
691614bd2c Worked around a bug in nvcc on tegra x1
a2d94fc216 Merged latest updates from trunk
8adf5cc70f Added support for packet processing of fp16 on kepler and maxwell gpus
1660e749b4 Avoid double promotion
a11bd82dc3 bug #1213: Give names to anonymous enums
c54ae65c83 Marked a few tensor operations as read only
69a8a4e1f3 Added a test to validate full reduction on tensor of half floats
678a17ba79 Made the testing of contractions on fp16 more robust
e3d053e14e Refined the testing of log and exp on fp16
9a48688d37 Further improved the testing of fp16
0451940fa4 Relaxed the dummy precision for fp16
910e013506 Relaxed an assertion that was tighter that necessary.
f81e413180 Added a benchmark to measure the performance of full reductions of 16 bit floats
28d5572658 Fixed some incorrect assertions
2aba40d208 Avoid unecessary type promotion
a4d6e8fef0 Strongly hint but don't force the compiler to unroll a some loops in the tensor executor. This results in up to 27% faster code.
7875437ca0 Avoided unecessary type promotion
f363e533aa Added tests for full contractions using thread pools and gpu devices. Fixed a couple of issues in the corresponding code.
06d774bf58 Updated the contraction code to ensure that full contraction return a tensor of rank 0
b300a84989 Fixed some singed/unsigned comparison warnings
dacb469bc9 Enable and fix -Wdouble-conversion warnings
62b710072e Reduced the memory footprint of the cxx11_tensor_image_patch test
dd2b45feed Removed extraneous 'explicit' keywords
be78aea6b3 fix double-promotion/float-conversion in Core/SpecialFunctions.h
75a94b9662 Improve documentation of BDCSVD
968ec1c2ae Use numext::isfinite instead of std::isfinite
e2ca478485 bug #1214: consider denormals as zero in D&C SVD. This also workaround infinite binary search when compiling with ICC's unsafe optimizations.
f899e08946 Enabled a number of tests previously disabled by mistake
4c05fb03a3 Merged eigen/eigen into default
577a07a86e Re-enabled the product_small test now that everything compiles correctly.
2c5568a757 Added a test to validate the computation of exp and log on 16bit floats
6c3e5b85bc Fixed compilation error with cuda >= 7.5
aad9a04da4 Deleted superfluous explicit keyword.
da50419df8 Made a cast explicit
73ef5371e4 Pulled latest updates from trunk
8a9228ed9b Fixed compilation error
b1bd53aa6b Fix performance regression: with AVX, unaligned stores were emitted instead of aligned ones for fixed size assignement.
d6c9596fd8 Added missing accessors to fixed sized tensors
17fe7f354e Deleted trailing commas
e5f71aa6b2 Deleted useless trailing commas
44f592dceb Deleted unnecessary trailing commas.
2b890ae618 Fixed compilation errors generated by clang
d217217842 Added a few tests to ensure that the dimensions of rank 0 tensors are correctly computed
f100d1494c Return the proper size (ie 1) for tensors of rank 0
d14105f158 Made several tensor tests compatible with cxx03
c0882ef4d9 Moved a number of tensor tests that don't require cxx11 to work properly outside the EIGEN_TEST_CXX11 test section
9d1dbd1ec0 Fixed teh cxx11_tensor_empty test to compile without requiring cxx11 support
a8c0405cf5 Deleted unused default values for template parameters
4f53178e62 Made a coupe of tensor tests compile without requiring c++11 support.
1131a984a6 Made the cxx11_tensor_forced_eval compile without c++11.
46bcb70969 Don't turn on const expressions when compiling with gcc >= 4.8 unless the -std=c++11 option has been used
c07404f6a1 Restore Tensor support for non c++11 compilers
ba32ded021 Fixed include path
3b8da4be5a Extended the packetmath test to cover all the alignments made possible by avx512 instructions.
2f28ccbea3 Update the makefile to make the tests compile with gcc 4.9
7a4bd337d9 Resolved merge conflict
07a247dcf4 Pulled latest updates from upstream
fa5a8f055a Implemented palign_impl for AVX512
ef3ac9d05a Fixed the AVX512 packet traits
d7b75e8d86 Added  pdiv packet primitives for avx512
5e89ded685 Implemented preduxp for AVX512
5f85662ad8 Implemented the pabs and preverse primitives for avx512.
d37ee89ca8 Disabled some of the AVX512 primitives on compilers that don't support them
0f3c4c8ff4 Fix compilation of sparse.cast<>().transpose().
a524a26fdc Fixed a few memory leaks
dacb23277e Fixed the igamma and igammac implementations to make them callable from a gpu kernel.
a5d4545083 Deleted unused variable
40d1e2f8c7 Eliminate mutual recursion in igamma{,c}_impl::Run.
87294c84a6 define Packet2d constants with VSX only
6ed7a7281c remove accidentally pasted code
62f9093b31 improve state of MathFunctions as well
8ed26120c8 bring Altivec/VSX to a better state, implement some of the missing functions
950158f6d1 add name to copyrights
ee0459300b minor fix, add to copyright
3ec81fc00f Fixed compilation error with clang.
2b917291d9 Merged in rmlarsen/eigen2 (pull request PR-183)
09b9e951e3 Depend on the more extensive support for constexpr in clang:
1a325ef71c Detect cxx_constexpr support when compiling with clang.
1a97fd8b4e Merged latest update from trunk
c61170e87d fpclassify isn't portable enough. In particular, the return values of the function are not available on all the platforms Eigen supportes: remove it from Eigen.
318e65e0ae Fix missing inclusion of Eigen/Core
f629fe95c8 Made the index type a template parameter to evaluateProductBlockingSizes Use numext::mini and numext::maxi instead of std::min/std::max to compute blocking sizes.
66b215b742 Merged latest updates from trunk
25141b69d4 Improved support for min and max on 16 bit floats when running on recent cuda gpus
ff33798acd Merged eigen/eigen into default
463738ccbe Use computeProductBlockingSizes to compute blocking for both ShardByCol and ShardByRow cases.
6744d776ba Added support for fpclassify in Eigen::Numext
1f48f47ab7 Implement stricter argument checking for SYRK and SY2K and real matrices. To implement the BLAS API they should return info=2 if op='C' is passed for a complex matrix. Without this change, the Eigen BLAS fails the strict zblat3 and cblat3 tests in LAPACK 3.5.
3dddd34133 Refactor the unsupported CXX11/Core module to internal headers only.
4a164d2c46 Fixed the partial evaluation of non vectorizable tensor subexpressions
fd9401f260 Refined the cost of the striding operation.
e19b58e672 alias template for matrix and array classes
3f80696ae1 Merged eigen/eigen into default
5c372d19e3 Merged in rmlarsen/eigen (pull request PR-179)
4bbc97be5e Provide access to the base threadpool classes
a3256d78d8 Prevent crash in CompleteOrthogonalDecomposition if object was default constructed.
33adce5c3a Added the ability to switch to the new thread pool with a #define
79b900375f Use index list for the striding benchmarks
f670613e4b Fixed several compilation warnings
6015422ee6 Added an option to enable the use of the F16C instruction set
32ffce04fc Use EIGEN_THREAD_YIELD instead of std::this_thread::yield to make the code more portable.
e5b2ef47d5 Merged eigen/eigen into default
2dde1b1028 Don't crash when attempting to reduce empty tensors.
a792cd357d Added more tests
80200a1828 Don't attempt to leverage the _cvtss_sh and _cvtsh_ss instructions when compiling with clang since it's unclear which versions of clang actually support these instruction.
c7c2054bb5 Started to implement a portable way to yield.
1d0238375d Made sure all the required header files are included when trying to use fp16
2b72163028 Implemented a more portable version of thread local variables
04f954956d Fixed a few typos
5b1106c56b Fixed a compilation error with nvcc 7.
7129d998db Simplified the code that launches cuda kernels.
b9ea40c30d Don't take the address of a kernel on CUDA devices that don't support this feature.
884c075058 Use numext::ceil instead of std::ceil
a278414d1b Avoid an unnecessary copy of the evaluator.
f953c60705 Fixed 2 recent regression tests
50968a0a3e Use DenseIndex in the MeanReducer to avoid overflows when processing very large tensors.
84543c8be2 Worked around the lack of a rand_r function on windows systems
5fbcfe5eb4 Worked around the lack of a rand_r function on windows systems
e4fe611e2c Enable lazy-coeff-based-product for vector*(1x1) products
c8e8f93d6c Move the evalGemm method into the TensorContractionEvaluatorBase class to make it accessible from both the single and multithreaded contraction evaluators.
1a16fb1532 Deleted extraneous comma.
7cff898e0a Deleted unnecessary variable
6c43c49e4a Fixed a few compilation warnings
eb669f989f Merged in rmlarsen/eigen (pull request PR-178)
2a7115daca bug #1203: by-pass large stack-allocation in stableNorm if EIGEN_STACK_ALLOCATION_LIMIT is too small
3718bf654b Get rid of void* casting when calling EvalRange::run.
40c9923a8a Fixed compilation errors with msvc
1d23430628 Improved the matrix multiplication blocking in the case where mr is not a power of 2 (e.g on Haswell CPUs).
1e80bddde3 Fix trmv for mixing types.
0e8fc31087 remove pgather/pscatter for std::complex<double> for s390x
a62e924656 Added ability to access the cache sizes from the tensor devices
18e6f67426 Added support for exclusive or
07ac4f7e02 Eigen Tensor cost model part 2: Thread scheduling for standard evaluators and reductions. The cost model is turned off by default.
9624a1ea3d Added missing definition of PacketSize in the gpu evaluator of convolution
6fbedf5a4e Merged in rmlarsen/eigen (pull request PR-177)
bebb89acfa Enabled the new threadpool tests
9c064b5a97 Cleanup
1372156c41 Prepared the migration to the new non blocking thread pool
aeb5494a0b Improvements to cost model.
00dfe18487 Merged latest updates from trunk
a8e8837ba7 Added tests for the non blocking thread pool
78a51abc12 Added a more scalable non blocking thread pool
d2e95492e7 Merge upstream updates.
235e83aba6 Eigen cost model part 1. This implements a basic recursive framework to estimate the cost of evaluating tensor expressions.
68897c52f3 Add extreme values to the imaginary part for SVD unit tests.
20f387fafa Improve numerical robustness of JacoviSVD:  - avoid noise amplification in complex to real conversion  - compare off-diagonal entries to the current biggest diagonal entry: no need to bother about a 2x2 block containing ridiculously small entries compared to the rest of the matrix.
7718749fee Force the inlining of the << operator on half floats
5379d2b594 Inline the << operator on half floats
5912ad877c Silenced a compilation warning
2b6e3de02f Added tests to validate flooring and ceiling of fp16
6f23e945f6 Added simple test for numext::sqrt and numext::pow on fp16
72510c80e1 Added basic test for trigonometric functions on fp16
7b3d7acebe Added support for fp16 to test_isApprox, test_isMuchSmallerThan, and test_isApproxOrLessThan
5c13765ee3 Added ability to printf fp16
c7167fee0e Added support for fp16 to the sigmoid function
f6003f0873 Made the test msvc friendly
3551dea887 Cleaning pass on rcond estimator.
d8a3bdaa24 remove useless include
d402adc3d7 Better use .data() than &coeffRef(0)
ea7087ef31 Merged in rmlarsen/eigen (pull request PR-174)
36f5a10198 Properly gate the definition of the error and gamma functions for fp16
10b69810d1 Improved support for trigonometric functions on GPU
d6105b53b8 Added basic implementation of the lgamma, digamma, igamma, igammac, polygamma, and zeta function for fp16
703251f10f merge
39211ba46b Fix JacobiSVD for complex when the complex-to-real update already gives a diagonal 2x2 block.
2986253259 Cleaned up the implementation of digamma
d5de1a8220 Pulled latest updates from trunk
87ca15c4e8 Added support for sin, cos, tan, and tanh on fp16
2c9e4fa417 Add debug output for random unit test
7d1391d049 Turn a converge check to a warning
feef39e2d1 Fix underflow in JacoviSVD's complex to real preconditioner
f4e12272f1 Fix corner case in unit test.
a95e1a273e Fix warning in unit tests
bf3f6688f0 Added support for computing cos, sin, tan, and tanh on GPU.
473c8380ea Added constructors to convert unsigned integers into fp16
42a3352a3b Workaround a division by zero when outerstride==0
6f960b83ff Make use of is_same_dense helper instead of extract_data to detect input/outputs are the same.
b7716c0328 Fix incomplete previous patch on matrix comparision.
2630d97c62 Fix detection of same matrices when both matrices are not handled by extract_data.
512ba0ac76 Add regression unit tests for half-packet vectorization
06447e0a39 Improve half-packet vectorization logic to distinguish linear versus inner traversal modes.
bbb8854bf7 Enable half-packet in reduxions.
e9b12cc1f7 Fixed compilation warnings generated by clang
eaeb6ca93a Enable the benchmarks for algebraic and transcendental fnctions on fp16.
aa1ba8bbd2 Don't put a command at the end of an enumerator list
e49945ced4 Pulled latest update from trunk
25d05c4b8f Fixed the vectorization logic test
53121c0119 Turned on the contraction benchmarks for fp16
b67c983291 Enable the use of half-packet in coeff-based product. For instance, Matrix4f*Vector4f is now vectorized again when using AVX.
e3a184785c Fixed the zeta test
3b76df64fc Defer the decision to vectorize tensor CUDA code to the meta kernel. This makes it possible to decide to vectorize or not depending on the capability of the target cuda architecture. In particular, this enables us to vectorize the processing of fp16 when running on device of capability >= 5.3
8bfe739cd2 Updated the AVX512 PacketMath to properly leverage the AVX512DQ instructions
6498dadc2f Merged eigen/eigen into default
d6e596174d Pull latest updates from upstream
748c4c4599 More accurate cost estimates for exp, log, tanh, and sqrt.
833efb39bf Added epsilon, dummy_precision, infinity and quiet_NaN NumTraits for fp16
e939b087fe Pulled latest update from trunk
1744b5b5d2 Update doc regarding the genericity of EIGEN_USE_BLAS
91bf925fc1 Improve constness of level2 blas API.
0483430283 Move LAPACK declarations from blas.h to lapack.h and fix compatibility with EIGEN_USE_MKL
097d1e8823 Cleanup obsolete assign_scalar_eig2mkl helper.
fec4c334ba Remove all references to MKL in BLAS wrappers.
ddabc992fa Fix long to int conversion in BLAS API.
8191f373be Silent unused warning.
6a9ca88e7e Relax dependency on MKL for EIGEN_USE_BLAS
4e8e5888d7 Improve constness of blas level-3 interface.
675e0a2224 Fix static/inline keywords order.
fc6a0ebb1c Typos in doc.
643b697649 Proper handling of domain errors.
1f70bd4134 Merge.
096e355f8e Add short-circuit to avoid calling matrix norm for empty matrix.
be80fb49fc Merged default (4a92b590a01f5e28486f428f2ba56d5aaddd6931 ) into default
7a8176587b Merged eigen/eigen into default
4a92b590a0 Merge.
ee6c69733a A few tiny adjustments to short-circuit logic.
7f4826890c Merge upstream
de057ebe54 Added nans to zeta function.
af2161cdb4 bug #1197: fix/relax some LM unit tests
a05a683d83 bug #1160: fix and relax some lm unit tests by turning faillures to warnings
5da90fc8dd Use numext::abs instead of std::abs in scalar_fuzzy_default_impl to make it usable inside GPU kernels.
01bd577288 Fixed the implementation of Eigen::numext::isfinite, Eigen::numext::isnan, andEigen::numext::isinf on CUDA devices
89a3dc35a3 Fixed isfinite_impl: NumTraits<T>::highest() and NumTraits<T>::lowest() are finite numbers.
995f202cea Disabled the use of half2 on cuda devices of compute capability < 5.3
8d22967bd9 Initial support for taking the power of fp16
3394379319 Fixed the packet_traits for half floats.
0d2a532fc3 Created the new EIGEN_TEST_CUDA_CLANG option to compile the CUDA tests using clang instead of nvcc
0b81a18d12 Merged eigen/eigen into default
2d072b38c1 Don't test the division by 0 on float16 when compiling with msvc since msvc detects and errors out on divisions by 0.
cd2b667ac8 Add references to filed LLVM bugs
3bd16457e1 Properly handle complex numbers.
63102ee43d Turn on the coeffWise benchmarks on fp16
7c47d3e663 Fixed the type casting benchmarks for fp16
166b56bc61 Fixed the type casting benchmark for float16
2f2801f096 Merged in parthaEth/eigen (pull request PR-175)
d962fe6a99 Renamed float16 into cxx11_float16 since the test relies on c++11 features
c34e55c62b Merged eigen/eigen into default
7d5b17087f Added missing EIGEN_DEVICE_FUNC to the tensor conversion code.
a6d08be9b2 Fixed the benchmarking of fp16 coefficient wise operations
283c51cd5e Widen short-circuiting ReciprocalConditionNumberEstimate so we don't call InverseMatrixL1NormEstimate for dec.rows() <= 1.
d51803a728 Use Index instead of int for indexing and sizes.
fd872aefb3 Remove transpose() method from LLT and LDLT classes as it would imply conjugation. Explicitly cast constants to RealScalar in ConditionEstimator.h.
0b5546d182 Use lpNorm<1>() to compute l1 norms in LLT and LDLT.
2d5bb375b7 Static casting scalar types so as to let chlesky module of eigen work with ceres
a02ec09511 Worked around numerical noise in the test for the zeta function.
c912b1d28c Fixed a typo in the polygamma test.
74f64838c5 Updated the unary functors to use the numext implementation of typicall functions instead of the one provided in the standard library. The standard library functions aren't supported officially by cuda, so we're better off using the numext implementations.
737644366f Move the functions operating on fp16 out of the std namespace and into the Eigen::numext namespace
dc45aaeb93 Added tests for float16
8db269e055 Fixed a typo in a test
b89d3f78b2 Updated the isnan, isinf and isfinite functions to make compatible with cuda devices.
48308ed801 Added support for isinf, isnan, and isfinite checks to the tensor api
cfb34d808b Fixed a possible integer overflow.
df838736e2 Fixed compilation warning triggered by msvc
14ea7c7ec7 Fixed packet_traits<half>
532fdf24cb Added support for hardware conversion between fp16 and full floats whenever possible.
165150e896 Fixed the tests for the zeta and polygamma functions
7be1eaad1e Fixed typos in the implementation of the zeta and polygamma ops.
58c1dbff19 Made the fp16 code more portable.
cf7e73addd Added some missing conversions to the Half class, and fixed the implementation of the < operator on cuda devices.
10bdd8e378 Merged in tillahoffmann/eigen (pull request PR-173)
7781f865cb Renamed the EIGEN_TEST_NVCC cmake option into EIGEN_TEST_CUDA per the discussion in bug #1173.
72abfa11dd Added support for isfinite on fp16
4d07064a3d Fix bug in alternate lower bound calculation due to missing parentheses. Make a few expressions more concise.
2bba4ee2cf Merged kmargar/eigen/tip into default
317384b397 complete the port, remove float support
726bd5f077 Merged eigen/eigen into default
a350c25a39 Added accuracy comments.
4d7e230d2f bug #1189: fix pow/atan2 compilation for AutoDiffScalar
bc0ad363c6 add remaining includes
2d41dc9622 complete int/double specialized traits for ZVector
644d0f91d2 enable all tests again
988344daf1 enable the other includes as well
d7eeee0c1d Merged eigen/eigen into default
513c372960 Fix docstrings to list all supported decompositions.
86e0ed81f8 Addresses comments on Eigen pull request PR-174.
158fea0f5e bug #1190 - Don't trust __ARM_FEATURE_FMA on Clang/ARM
03f2997a11 bug #1191 - Prevent Clang/ARM from rewriting VMLA into VMUL+VADD
b0143de177 Merge upstream.
b97911dd18 Refactored code into type-specific helper functions.
c4179dd470 Updated the scalar_abs_op struct to make it compatible with cuda devices.
1108b4f218 Fixed the signature of numext::abs to make it compatible with complex numbers
b8245cc325 Merged eigen/eigen into default
2b457f8e5e Fix cross-compiling windows version detection
30242b7565 Merged eigen/eigen into default
9d51f7c457 Add rcond method to LDLT.
f54137606e Add condition estimation to Cholesky (LLT) factorization.
fb8dccc23e Replace "inline static" with "static inline" for consistency.
91414e0042 Fix comments in ConditionEstimator and minor cleanup.
1aa89fb855 Add matrix condition estimator module that implements the Higham/Hager algorithm from http://www.maths.manchester.ac.uk/~higham/narep/narep135.pdf used in LPACK. Add rcond() methods to FullPivLU and PartialPivLU.
80eba21ad0 Merge upstream.
eb0ae602bd Added CUDA tests.
ffd770ce94 Fixed CUDA signature.
3cb0a237c1 Fixed suggestions by Eugene Brevdo.
49960adbdd Merged eigen/eigen into default
57239f4a81 Added polygamma function.
dd5d390daf Added zeta function.
3da495e6b9 Relaxed the condition used to gate the fft code.
0ea7ab4f62 Hashing was only officially introduced in c++11. Therefore only define an implementation of the hash function for float16 if c++11 is enabled.
92b7f7b650 Improved code formating
f197813f37 Added the ability to hash a fp16
0f5cc504fe Properly gate the fft code
4c859181da Made it possible to use the NumTraits for complex and Array in a cuda kernel.
c36ab19902 Added __ldg primitive for fp16.
b575fb1d02 Added NumTraits for half floats
8c8a79cec1 Fixed a typo
af4ef540bf Fixed a off-by-one bug in a debug assertion
791e5cfb69 Added NumTraits for type2index.
4f1a7e51c1 Pull math functions from the global namespace only when compiling cuda code with nvcc. When compiling with clang, we want to use the std namespace.
bc68fc2fe7 Enable constant expressions when compiling cuda code with clang.
483aaad10a Fixed compilation warning
1b40abbf99 Added missing assignment operator to the TensorUInt128 class, and made misc small improvements
01b5333e44 bug #1186 - vreinterpretq_u64_f64 fails to build on Android/Aarch64/Clang toolchain
aa45ad2aac Fixed the formatting of the README.
56df5ef1d7 Attempt to fix the formatting of the README
1bcd82e31b Pulled latest updates from trunk
09ad31aa85 Add regression test for nesting type handling in blas_traits
1841d6d4c3 Added missing cuda template specializations for numext::ceil
7b7d2a9fa5 Use false instead of 0 as the expected value of a boolean
e02b784ec3 Added support for  standard mathematical functions and trancendentals(such as exp, log, abs, ...) on fp16
c38295f0a0 Added support for fmod
6772f653c3 Made it possible to customize the threadpool
1bc81f7889 Fixed compilation warnings on arm
78f83d6f6a Prevent potential overflow.
01e7298fe6 actually include ZVector files, passes most basic tests (float still fails)
f48011119e Merged eigen/eigen into default
ed6b9d08f1 some primitives ported, but missing intrinsics and crash with asm() are a problem
74f91ed06c Improved support for integer modulo
65716e99a5 Improved the cost estimate of the quotient op
d94f6ba965 Started to model the cost of divisions more accurately.
a86c9f037b Fixed compilation error on windows
0968e925a0 Updated the benchmarking code to use Eigen::half instead of half
044efea965 Made sure that the cxx11_tensor_cuda test can be compiled even without support for cxx11.
2e4e4cb74d Use numext::abs instead of abs to avoid incorrect conversion to integer of the argument
41434a8a85 Avoid unnecessary conversions
92693b50eb Fixed compilation warning
9bc9396e88 Use portable includes
393bc3b16b Added comment
81d340984a Removed executable bit from header files
bff8cbad06 Removed executable bit from header files
7a570e50ef Fixed contractions of fp16
7168afde5e Made the tensor benchmarks compile on MacOS
2062ee2d26 Added a test to verify that notifications are working properly
fc3660285f Made type conversion explicit
0e68882604 Added the ability to divide a half float by an index
6971146ca9 Added more conversion operators for half floats
9642fd7a93 Replace all M_PI by EIGEN_PI and add a check to the testsuite.
28e02996df Merged patch 672 from Justin Lebar: Don't use long doubles with cuda
3d1e857327 Fixed compilation error
de7d92c259 Pulled latest updates from trunk
002cf0d1c9 Use a single Barrier instead of a collection of Notifications to reduce the thread synchronization overhead
bc2b802751 Fixed a couple of typos
e7a468c5b7 Filter some compilation flags that nvcc warns about.
6a31b7be3e Avoid using std::vector whenever possible
65a7113a36 Use an enum instead of a static const int to prevent possible link error
f9ad25e4d8 Fixed contractions of 16 bit floats
8ef3181f15 Worked around a constness related issue
7a07d6aa2b Small cleanup
a9a6710e15 add initial s390x(zEC13) ZVECTOR support
e91f255301 Marked variables that's only used in debug mode as such
db5c14de42 Explicitly cast the default value into the proper scalar type.
b224771f40 bug #1178: Simplified modification of the SSE control register for better portability
8e03333f06 Renamed some class members to make the code more readable.
6c08943d9f Fixed a bug in the padding of extracted image patches.
134d750eab Completed the implementation of vectorized type casting of half floats.
7bd551b3a9 Make all the conversions explicit
bb0e73c191 Gate all the CUDA tests under the EIGEN_TEST_NVCC option
2db4a04827 Fixed a typo
dd514de8a9 Added a test to validate the fallback path for half floats
9a7ece9caf Worked around constness issue
edc679f6c6 Fixed compilation warning
53d498ef06 Fixed compilation warnings in the cuda tests
e10e126cd0 pulled latest updates from trunk
70eb70f5f8 Avoid mutable class members when possible
7b98de1f15 Implemented some of the missing type casting for half floats
afb81b7ded Made sure to use the hard abi when compiling with NEON instructions to avoid the "gnu/stubs-soft.h: No such file or directory" error
95b8961a9b Allocate the mersenne twister used by the random number generators on the heap instead of on the stack since they tend to keep a lot of state (i.e. about 5k) around.
f7329619da Fix bug in tensor contraction. The code assumes that contraction axis indices for the LHS (after possibly swapping to ColMajor!) is increasing. Explicitly sort the contraction axis pairs to make it so.
46aa9772fc Merged in ebrevdo/eigen (pull request PR-169)
f1f7181f53 Merge default branch.
1f69a1b65f Change the header guard around certain numext functions to be CUDA specific.
ab9b749b45 Improved a test
5a51366ea5 Fixed a typo.
fcf59e1c37 Properly gate the use of cuda intrinsics in the code
97a1f1c273 Make sure we only use the half float intrinsic when compiling with a version of CUDA that is recent enough to provide them
9550be925d Merge specfun branch.
b1a9afe9a9 Add tests in array.cpp that check igamma/igammac properties.
e29c9676b1 Don't mark the cast operator as explicit, since this is a c++11 feature that's not supported by older compilers.
eecd914864 Also replaced uint32_t with unsigned int to make the code more portable
1ca8c1ec97 Replaced a couple more uint16_t with unsigned short
0423b66187 Use unsigned short instead of uint16_t since they're more portable
048c4d6efd Made half floats usable on hardware that doesn't support them natively.
b72ffcb05e Made the comparison of Eigen::array GPU friendly
25f69cb932 Added a comparison operator for Eigen::array Alias Eigen::array to std::array when compiling with Visual Studio 2015
c5b98a58b8 Updated the cxx11_meta test to work on the Eigen::array class when std::array isn't available.
456e038a4e Fixed the +=, -=, *= and /= operators to return a reference
86d45a3c83 Worked around visual studio compilation warnings.
8fd4241377 Fixed a typo.
a685a6beed Made the list reductions less ambiguous.
3149b5b148 Avoid implicit cast
b2100b83ad Made sure to include the <random> header file when compiling with visual studio
f05fb449b8 Avoid unnecessary conversion from 32bit int to 64bit unsigned int
1d566417d2 Enable the random number generators when compiling with visual studio
836e92a051 Update MathFunctions/SpecialFunctions with intelligent header guards.
b084133dbf Fixed the integer division code on windows
6d30683113 Fixed static assertion
5e7de771e3 Properly fix merge issues.
73220d2bb0 Resolve bad merge.
5f17de3393 Merge changes.
14f0fde51f Add certain functions to numext (log, exp, tan) because CUDA doesn't support std::
46177c8d64 Replace std::vector with our own implementation, as using the stl when compiling with nvcc and avx enabled leads to many issues.
6d6413f768 Simplified the full reduction code
5a427a94a9 Fixed the tensor generator code
a81b88bef7 Fixed the tensor concatenation code
551ff11d0d Fixed the tensor layout swapping code
8768c063f5 Fixed the tensor chipping code.
e09eb835db Decoupled the packet type definition from the definition of the tensor ops. All the vectorization is now defined in the tensor evaluators. This will make it possible to relialably support devices with different packet types in the same compilation unit.
3b614a2358 Use NumTraits::highest() and NumTraits::lowest() instead of the std::numeric_limits to make the tensor min and max functors more CUDA friendly.
dd6dcad6c2 Merge branch specfun.
0bb5de05a1 Finishing touches on igamma/igammac for GPU.  Tests now pass.
769685e74e Added the ability to pad a tensor using a non-zero value
7f87cc3a3b Fix a couple of typos in the code.
5707004d6b Fix Eigen's building of sharded tests that use CUDA & more igamma/igammac bugfixes.
e5f25622e2 Added a test to validate the behavior of some of the tensor syntactic sugar.
9f5740cbc1 Added missing include
5238e03fe1 Don't try to compile the uint128 test with compilers that don't support uint127
9a54c3e32b Don't warn that msvc 2015 isn't c++11 compliant just because it doesn't claim to be.
05bbca079a Turn on some of the cxx11 features when compiling with visual studio 2015
6093eb9ff5 Don't test our 128bit emulation code when compiling with msvc
57b263c5b9 Avoid using initializer lists in test since not all version of msvc support them
23aed8f2e4 Use EIGEN_PI instead of redefining our own constant PI
0b9e0abc96 Make igamma and igammac work correctly.
c23e0be18f Use the CMAKE_CXX_STANDARD variable to turn on cxx11
ec35068edc Don't rely on the M_PI constant since not all compilers provide it.
60d9df11c1 Fixed the computation of leading zeros when compiling with msvc.
4e49fd5eb9 MSVC uses __uint128 while other compilers use __uint128_t to encode 128bit unsigned integers. Make the cxx11_tensor_uint128.cpp test work in both cases.
667fcc2b53 Fixed syntax error
4416a5dcff Added missing include
c561eeb7bf Don't use implicit type conversions in initializer lists since not all compilers support them.
174edf976b Made the contraction test more portable
2c50fc878e Fixed a typo
7ea35bfa1c Initial implementation of igamma and igammac.
deea866bbd Added tests to cover the new rounding, flooring and ceiling tensor operations.
5cf4558c0a Added support for rounding, flooring, and ceiling to the tensor api
dac58d7c35 Added a test to validate the conversion of half floats into floats on Kepler GPUs. Restricted the testing of the random number generation code to GPU architecture greater than or equal to 3.5.
1032441c6f Enable partial support for half floats on Kepler GPUs.
1da10a7358 Enable the conversion between floats and half floats on older GPUs that support it.
2de8cc9122 Merged in ebrevdo/eigen (pull request PR-167)
ab3dc0b0fe Small bugfix to numeric_limits for CUDA.
6afea46838 Add infinity() support to numext::numeric_limits, use it in lgamma.
3fccef6f50 bug #537: fix compilation with Apples's compiler
fedaf19262 Pulled latest updates from trunk
dfa80b2060 Compilation fix
bee9efc203 Compilation fix
68ac5c1738 Improved the performance of large outer reductions on cuda
56a3ada670 Added benchmarks for full reduction
b2075cb7a2 Made the signature of the inner and outer reducers consistent
3284842045 Optimized the performance of narrow reductions on CUDA devices
e9bea614ec Fix shortcoming in fixed-value deduction of startRow/startCol
609b3337a7 Print some information to stderr when a CUDA kernel fails
1031b31571 Improved the README
8e6faab51e bug #1172: make valuePtr and innderIndexPtr properly return null for empty matrices.
ac2e6e0d03 Properly vectorized the random number generators
caa54d888f Made the TensorIndexList usable on GPU without having to use the -relaxed-constexpr compilation flag
93485d86bc Added benchmarks for type casting of float16
002824e32d Added benchmarks for fp16
2cd32cad27 Reverted previous commit since it caused more problems than it solved
d9d05dd96e Fixed handling of long doubles on aarch64
af199b4658 Made the CUDA architecture level a build setting.
c36c09169e Fixed a typo in the reduction code that could prevent large full reductionsx from running properly on old cuda devices.
7a01cb8e4b Marked the And and Or reducers as stateless.
91e1375ba9 merge
055000a424 Fix startRow()/startCol() for dense Block with direct access: the initial implementation failed for empty rows/columns for which are ambiguous.
1d9256f7db Updated the padding code to work with half floats
8cb9bfab87 Extended the tensor benchmark suite to support types other than floats
f442a5a5b3 Updated the tensor benchmarking code to work with compilers that don't support cxx11.
72d2cf642e Deleted the coordinate based evaluation of tensor expressions, since it's hardly ever used and started to cause some issues with some versions of xcode.
6270d851e3 Declare the half float type as arithmetic.
5cd00068c0 include <iostream> in the tensor header since we now use it to better report cuda initialization errors
257b640463 Fixed compilation warning generated by clang
584832cb3c Implemented the ptranspose function on half floats
e644f60907 Pulled latest updates from trunk
95fceb6452 Added the ability to compute the absolute value of a half float
ed69cbeef0 Added some debugging information to the test to figure out why it fails sometimes
96a24b05cc Optimized casting of tensors in the case where the casting happens to be a no-op
203490017f Prevent unecessary Index to int conversions
9ff269a1d3 Moved some of the fp16 operators outside the Eigen namespace to workaround some nvcc limitations.
1e6fe6f046 Fixed the float16 tensor test.
8eb127022b Get rid of duplicate code.
d5e2ec7447 Speed up tensor FFT by up ~25-50%.
d90a2dac5e merge
485823b5f5 Add COD and BDCSVD in list of benched solvers.
2af04f1a57 Extend unit test to stress smart_copy with empty input/output.
6fa35bbd28 bug #1170: skip calls to memcpy/memmove for empty imput.
46fc23f91c Print an error message to stderr when the initialization of the CUDA runtime fails. This helps debugging setup issues.
6f0992c05b Fix nesting type and complete reflection methods of Block expressions.
f3643eec57 Add typedefs for the return type of all block methods.
670db7988d Updated the contraction code to make it compatible with half floats.
180156ba1a Added support for tensor reductions on half floats
5c4901b83a Implemented the scalar division of 2 half floats
f268db1c4b Added the ability to query the minor version of a cuda device
a08d2ff0c9 Started to work on contractions and reductions using half floats
f3352e0fb0 Don't make the array constructors explicit
f7cb755299 Added support for operators +=, -=, *= and /= on CUDA half floats
dc26459b99 Implemented protate() for CUDA
cd042dbbfd Fixed a bug in the tensor type converter
ac5d706a94 Added support for simple coefficient wise tensor expression using half floats on CUDA devices
0606a0a39b FP16 on CUDA are only available starting with cuda 7.5. Disable them when using an older version of CUDA
f36c0c2c65 Added regression test for float16
7151bd8768 Reverted unintended changes introduced by a bad merge
1304e1fb5e Pulled latest updates from trunk
17b9fbed34 Added preliminary support for half floats on CUDA GPU. For now we can simply convert floats into half floats and vice versa
8ce46f9d89 Improved implementation of ptanh for SSE and AVX
832380c455 Merged eigen/eigen into default
06a2bc7c9c Tiny bugfix in SpecialFunctions: some compilers don't like doubles implicitly downcast to floats in an array constructor.
f6f057bb7d bug #1166: fix shortcomming in gemv when the destination is not a vector at compile-time.
8e1f1ba6a6 Import wiki's paragraph: "I disabled vectorization, but I'm still getting annoyed about alignment issues"
c8b4c4b48a bug #795: mention allocate_shared as a condidate for aligned_allocator.
6eff3e5185 Fix triangularView versus triangularPart.
4252af6897 Remove dead code.
2f5f56a820 Fix usage of evaluator in sparse * permutation products.
0a537cb2d8 bug #901: fix triangular-view with unit diagonal of sparse rectangular matrices.
b35d1a122e Fix unit test: accessing elements in a deque by offsetting a pointer to another element causes undefined behavior.
9e3f3a2d27 Deleted outdated comment
de345eff2e Added a method to conjugate the content of a tensor or the result of a tensor expression.
17e93ba148 Pulled latest updates from trunk
3628f7655d Made it possible to run the scalar_binary_pow_op functor on GPU
eeac46f980 bug #774: re-added comment referencing equations in the original paper
c569cfe12a Inline the +=, -=, *= and /= operators consistently between DenseBase.h and SelfCwiseBinaryOp.h
8cc9232b9a bug #774: fix a numerical issue producing unwanted reflections.
2d35c0cb5f Merged in rmlarsen/eigen (pull request PR-163)
33e2373f01 Merged in nnyby/eigen/nnyby/doc-grammar-fix-linearly-space-linearly-1443742971203 (pull request PR-138)
6d8b1dce06 Avoid implicit cast from double to float.
1dfaafe28a Added a regression test for tanh
b6fdf7468c Rename inverse -> pseudoInverse.
9d6f1ad398 I'm told to use __EMSCRIPTEN__ by an Emscripten dev.
bfb3fcd94f Optimized implementation of the tanh function for SSE
2d523332b3 Optimized implementation of the hyperbolic tangent function for AVX
e6ee18d6b4 Make the GCC workaround for sqrt GCC-only; detect Emscripten as non-GCC
2ac59e5d36 Pulled latest updates from trunk
9a21b38ccc Worked around a few clang compilation warnings
964a95bf5e Work around Emscripten bug - https://github.com/kripken/emscripten/issues/4088
72ab7879f7 Fixed clang comilation warnings
e88535634d Fixed some clang compilation warnings
970751ece3 Disabling the nvcc warnings in addition to the clang warnings when clang is used as a frontend for nvcc
6323851ea9 Fixed compilation warning
bb8811c655 Enable inverse() method for computing pseudo-inverse.
5cc0dd5f44 Fixed the code that disables the use of variadic templates when compiling with nvcc on ARM devices.
a9cc6a06b9 Fixed compilation warning in the splines test
d69946183d Updated the TensorIntDivisor code to work properly on LLP64 systems
24d291cf16 Worked around nvcc crash when compiling Eigen on Tegra X1
53f60e0afc Make applyZAdjointOnTheLeftInPlace protected.
414efa47d3 Add missing calls to tests of COD. Fix a few mistakes in 3.2 -> 3.3 port.
c2bf2f56ef Remove custom unaligned loads for SSE. They were only useful for core2 CPU.
a4c76f8d34 Improve inlining
16ec450ca1 Nevermind.
019fff9a00 Add my name to copyright notice in ColPivHouseholder.h, mostly for previous work on stable norm downdate formula.
86d6201d7b Merge.
d904c8ac8f Implement complete orthogonal decomposition in Eigen.
010afe1619 Add exemples for reshaping/slicing with Map.
8e599bc098 Fix warning in unit test
c6a12d1dc6 Fix warning with gcc < 4.8
4d4211c04e Avoid unecessary type conversions
d2cba52015 Only enable the cxx11_tensor_uint128 test on 64 bit machines since 32 bit systems don't support the __uin128_t type
fb00a4af2b Made the tensor fft test compile on tegra x1
5b2d287878 bug #779: allow non aligned buffers for buffers smaller than the requested alignment.
e8e1d504d6 Add an explicit assersion on the alignment of the pointer returned by std::malloc
62a1c911cd Remove posix_memalign, _mm_malloc, and _aligned_malloc special paths.
093f2b3c01 Merge.
3ca1ae2bb7 Commented out the version of pexp<Packet8d> since it fails to compile with gcc 5.3
2e39cc40a4 Fix condition that made the unit test spam stdout with bogus error messages.
23f69ab936 Added implementations of pexp, plog, psqrt, and prsqrt optimized for AVX512
6c9cf117c1 Fixed indentation
bcdcdace48 Pulled latest updates from trunk
659fc9c159 Remove dead code
d5d7798b9d Improve heuritics for switching between coeff-based and general matrix product implementation.
f535378995 Added support for vectorized type casting of int to char.
4ab63a3f6f Fixed the initialization of the dummy member of the array class to make it compatible with pairs of element.
727ff26960 Disable 2 more nvcc warning messages
1cbb79cdfd Made sure the dummy element of size 0 array is always intialized to silence some compiler warnings
bcbde37a11 Made sure the code compiles when EIGEN_HAS_C99_MATH isn't defined
f933f69021 Added a few comments
5d82e47ef6 Properly disable nvcc warning messages in user code.
af8436b196 Silenced the "calling a __host__ function from a __host__ __device__ function is not allowed" messages
d7742d22e4 Revert the nvcc messages to their default severity instead of the forcing them to be warnings
ac26e1aaf3 Pulled latest updates from trunk
492fe7ce02 Silenced some unhelpful warnings generated by nvcc.
b70db60e4d Merged in rmlarsen/eigen (pull request PR-161)
5fb04ab2da Fix bad line break. Don't repeat Kahan matrix test since it is deterministic.
d9a6f86cc0 Make the array of directly compute column norms a member to avoid allocation in computeInPlace.
70dc14e4e1 bug #1161: fix division by zero for huge scalar types
c301f99208 bug #1164: fix list and deque specializations such that our aligned allocator is automatically activatived only when the user did not specified an allocator (or specified the default std::allocator).
eb6d9aea0e Clarify error message when writing to a read-only sparse-sub-matrix.
040cf33e8f merge
c85fbfd0b7 Clarify documentation on the restrictions of writable sparse block expressions.
dc413dbe8a Merged in ville-k/eigen/explicit_long_constructors (pull request PR-158)
783018d8f6 Use EIGEN_STATIC_ASSERT for backward compatibility.
99cde88341 Don't try to use direct offsets when computing a tensor product, since the required stride isn't available.
ff0a83aaf8 Use single template constructor to avoid overload resolution issues.
aedea349aa Replace separate low word constructors with a single templated constructor.
f0fdefa96f Rebase to latest.
d93b71a301 Updated the packetmath test to call predux_half instead of predux4
ef66f2887b Updated the matrix multiplication code to make it compile with AVX512 enabled.
85b6d82b49 Generalized predux4 to support AVX512 packets, and renamed it predux_half. Disabled the implementation of pabs for avx512 since the corresponding intrinsics are not shipped with gcc
64ce78c2ec Cleaned up a tensor contraction test
0ce5d32be5 Sharded the cxx11_tensor_contract_cuda test
922b5f527b Silenced a few compilation warnings
6b5dff875e Made it possible to limit the number of blocks that will be used to evaluate a tensor expression on a CUDA device. This makesit possible to set aside streaming multiprocessors for other computations.
00f9ef6c76 merging.
264f8141f8 Shared the tensor reduction test
11bb71c8fc Sharded the tensor device test
ff1157bcbf bug #694: document that SparseQR::matrixR is not sorted.
ec469700dc bug #557: make InnerIterator of sparse storage types more versatile by adding default-ctor, copy-ctor/assignment
6e0a86194c Fix integer path for num_steps==1
e1d219e5c9 bug #698: fix linspaced for integer types.
2c3224924b Fix warning and replace min/max macros by calls to mini/maxi
e80ed948e1 Fixed a number of compilation warnings generated by the cuda tests
6720b38fbf Fixed a few compilation warnings
3f1ee45833 Fixed compilation errors triggered by duplicate inline declaration
70be6f6531 Pulled latest changes from trunk
4a2ddfb81d Sharded the CUDA argmax tensor test
d142165942 bug #667: declare several critical functions as FORECE_INLINE to make ICC happier.
a4e4542b89 Avoid overflow in unit test.
3ba8a3ab1a Disable underflow unit test on the i387 FPU.
483082ef6e Fixed a few memory leaks in the cuda tests
bd21aba181 Sharded the cxx11_tensor_cuda test and fixed a memory leak
9de155d153 Added a test to cover threaded tensor shuffling
32088c06a1 Made the comparison between single and multithreaded contraction results more resistant to numerical noise to prevent spurious test failures.
2053478c56 Made sure to use a tensor of rank 0 to store the result of a full reduction in the tensor thread pool test
d0db95f730 Sharded the tensor thread pool test
ba27c8a7de Made the CUDA contract test more robust to numerical noise.
4281eb1e2c Added 2 benchmarks to the suite of tensor benchmarks running on GPU
102fa96a96 Extend doc on dense+sparse
1bc207c528 backout changeset d4a9e615699bd7f26864d57d2b28021b9f64b6ff : the extended SparseView is not needed anymore
8ed1553d20 bug #632: implement general coefficient-wise "dense op sparse" operations through specialized evaluators instead of using SparseView. This permits to deal with arbitrary storage order, and to by-pass the more complex iterator of the sparse-sparse case.
699634890a bug #946: generalize Cholmod::solve to handle any rhs expression
15084cf1ac bug #632: add support for "dense +/- sparse" operations. The current implementation is based on SparseView to make the dense subexpression compatible with the sparse one.
d4a9e61569 Extend SparseView to allow keeping explicit zeros. This is equivalent to sparseView(1,-1) but faster because the test is removed at compile-time.
d8d37349c3 bug #696: enable zero-sized block at compile-time by relaxing the respective assertion
e8ccc06fe5 merge
963f2d2a8f Marked several methods EIGEN_DEVICE_FUNC
c5d25bf1d0 Fixed a couple of compilation warnings.
e4f83bae5d Fixed the tensor benchmarks on apple devices
10bea90c4a Fixed clang related compilation error
d3f533b395 Fixed compilation warning
3fde202215 Making ceil() functor generic w.r.t packet type
211d350fc3 Fixed a typo
bd2e5a788a Made sure the number of floating point operations done by a benchmark is computed using 64 bit integers to avoid overflows.
120e13b1b6 Added a readme to explain how to compile the tensor benchmarks.
a68864b6bc Updated the benchmarking code to print the number of flops processed instead of the number of bytes.
8217281ae4 Merge latest updates from trunk
c8d5f21941 Added extra tensor benchmarks
7b3044d086 Made sure to call nvcc with the relaxed-constexpr flag.
acce4dd050 Change Eigen's ColPivHouseholderQR to use the numerically stable norm downdate formula from http://www.netlib.org/lapack/lawnspdf/lawn176.pdf, which has been used in LAPACK's xGEQPF and xGEQP3 since 2006. With the old formula, the code chooses the wrong pivots and fails to correctly determine rank on graded matrices.
b908e071a8 bug #178: get rid of  some const_cast in SparseCore
c1d900af61 bug #178: remove additional const on nested expression, and remove several const_cast.
12f8bd12a2 Merged in jiayq/eigen (pull request PR-159)
270c4e1ecd bugfix
c4e47630b1 benchmark modifications to make it compilable in a standalone fashion.
f50bb1e6f3 Fix compilation with gcc
ddf64babde merge
df15fbc452 bug #1158: PartialReduxExpr is a vector expression, and it thus must expose the LinearAccessBit flag
9bcadb7fd1 Disable stupid MSVC warning
b4d87fff4a Fix MSVC warning.
2bad3e78d9 bug #96, bug #1006: fix by value argument in result_of.
7802a6bb1c Fix unit test filename.
4bf9eaf77a Deleted an invalid assertion that prevented the assignment of empty tensors.
291069e885 Fixed some compilation problems with nvcc + clang
47ca9dc809 Fixed the tensor_cuda test
55a5204319 Fixed the flags passed to nvcc to compile the tensor code.
4865e1e732 Update link to suitesparse.
9dfbd4fe8d Made the cuda tests compile using make check
5973bcf939 Properly specify the namespace when calling cout/endl
c8d94ae944 digamma special function: merge shared code.
9c8f7dfe94 bug #1156: fix several function declarations whose arguments were passed by value instead of being passed by reference
9aa6fae123 bug #1154: move to dynamic scheduling for spmv products.
9ac8e8c6a1 Extend mixing type unit test with trmv, and the following not yet supported products: trmm, symv, symm
6da5d87f92 add nomalloc unit test for rank2 updates
9801c959e6 Fix tri = complex * real product, and add respective unit test.
21b5345782 Add meta_least_common_multiple helper.
fecea26d93 Extend doc on shifting strategy
02db1228ed Add constructor for long types.
412bb5a631 Remove redundant test.
0f8d26c6a9 Doc: add flip* and arrayfun MatLab equivalent.
cfa21f8123 Remove dead code.
6850eab33b Re-enable blocking on rows in non-l3 blocking mode.
aa8c6a251e Make sure that micro-panel-size is smaller than blocking sizes (otherwise we might get a buffer overflow)
5b0a9ee003 Make sure that block sizes are smaller than input matrix sizes.
639b1d864a bug #1152: Fix data race in static initialization of blas
44d4674955 bug #1153: Don't rely on __GXX_EXPERIMENTAL_CXX0X__ to detect C++11 support
5eb2790be0 Fixed minor typo in SplineFitting.
8328caa618 bug #51: add block preallocation mechanism to selfadjoit*matrix product.
2f9e6314b1 update BLAS interface to general_matrix_matrix_triangular_product
e58827d2ed bug #51: make general_matrix_matrix_triangular_product use L3-blocking helper so that general symmetric rank-updates and general-matrix-to-triangular products do not trigger dynamic memory allocation for fixed size matrices.
c10021c00a bug #1144: clarify the doc about aliasing in case of resizing and matrix product.
b114e6fd3b Improve documentation.
869b4443ac Add SparseVector::conservativeResize() method.
e3a15a03a4 Don't explicitely evaluate the subexpression from TensorForcedEval::evalSubExprIfNeeded, as it will be done when executing the EvalTo subexpression
bd207ce11e Added missing EIGEN_DEVICE_FUNC qualifier
acf6f7af6b Merged in larsmans/eigen (pull request PR-156)
cc482e32f1 Method is called visit, not visitor
19e437daf0 Copyedit documentation: typos, spelling
1cf85bd875 bug #977: add stableNormalize[d] methods: they are analogues to normalize[d] but with carefull handling of under/over-flow
369d6d1ae3 Add link to reference paper.
0caa4b1531 bug #1150: make IncompleteCholesky more robust by iteratively increase the shift until the factorization succeed (with at most 10 attempts).
cb4e53ff7f Merged in ville-k/eigen/tensorflow_fix (pull request PR-153)
9f94e030c1 Re-add executable flags to minimize changeset.
3aeeca32af Leverage the new blocking code in the tensor contraction code.
4beb447e27 Created a mechanism to enable contraction mappers to determine the best blocking strategy.
5358c38589 bug #1095: add Cholmod*::logDeterminant/determinant (from patch of Joshua Pritikin)
6a44ccb58b Backout changeset 690bc950f70c61075d396671e63480bbd64bb297
06971223ef Unify std::numeric_limits and device::numeric_limits within numext namespace
9b6c72958a Update to latest default branch
73aec9219b Make use of 32 bit ints explicit and remove executable bit from headers.
7b68cf2e0f Pulled latest updates from trunk
c33479324c Fixed a constness bug
ee37eb4eed bug #977: avoid division by 0 in normalize() and normalized().
7cae8918c0 Fix compilation on old gcc+AVX
8dca9f97e3 Add numext::sqrt function to enable custom optimized implementation.
34340458cb bug #1151: remove useless critical section
690bc950f7 fix clang warnings
f2a842294f Pulled latest updates from the trunk
7ce932edd3 Small cleanup and small fix to the contraction of row major tensors
62f7e77711 add upper|lower case in incomplete_cholesky unit test
47076bf00e Reduce the register pressure exerted by the tensor mappers whenever possible. This improves the performance of the contraction of a matrix with a vector by about 35%.
ebd3388ee6 Pulled latest updates from trunk
ed8ade9c65 bug #1149: fix Pastix*::*parm()
4c5e96aab6 bug #1148: silent Pastix by default
db237d0c75 bug #1145: fix PastixSupport LLT/LDLT wrappers (missing resize prior to calls to selfAdjointView)
0b7169d1f7 bug #1147: fix compilation of PastixSupport
234a1094b7 Add static assertion to y(), z(), w() accessors
915e7667cd Remove executable bit from header files
2832175a68 Use explicitly 32 bit integer types in constructors.
df79c00901 Improved the formatting of the code
6d472d8375 Moved the contraction mapping code to its own file to make the code more manageable.
b3b722905f Improved code indentation
5b7713dd33 Record whether the underlying tensor storage can be accessed directly during the evaluation of an expression.
63fb66f53a Add ctor for long
6a75e7e0d5 Digamma cleanup
34057cff23 Fixed a race condition that could affect some reductions on CUDA devices.
0461f0153e Made it possible to compare tensor dimensions inside a CUDA kernel.
aed4cb1269 Use warp shuffles instead of shared memory access to speedup the inner reduction kernel.
c1a42c2d0d Don't disable the AVX implementations of plset when compiling with AVX512 enabled
0366478df8 Added alignment requirement to the AVX512 packet traits.
3cfd16f3af Fixed the signature of the plset primitives for AVX512
67f44365ea Fixed the AVX512 signature of the ptranspose primitives
a282eb1363 pscatter/pgather use Index instead of int to specify the stride
7832485575 Deleted unnecessary commas and semicolons
8fe2532e70 Fixed a boundary condition bug in the outer reduction kernel
9f013a9d86 Properly record the rank of reduced tensors in the tensor traits.
79b69b7444 Trigger the optimized matrix vector path more conservatively.
d920d57f38 Improved the performance of the contraction of a 2d tensor with a 1d tensor by a factor of 3 or more. This helps speedup LSTM neural networks.
bd7d901da9 Reverted a previous change that tripped nvcc when compiling in debug mode.
bbdabbb379 Made the blas utils usable from within a cuda kernel
c5e6900400 Silenced a few compilation warnings.
f894736d61 Updated the tensor traits: the alignment is not part of the Flags enum anymore
4f7714d72c Enabled the use of fixed dimensions from within a cuda kernel.
01c55d37e6 Deleted unused variable.
0504c56ea7 Silenced a nvcc compilation warning
b523771a24 Silenced several compilation warnings triggered by nvcc.
2c3b13eded Merged in jeremy_barnes/eigen/shader-model-3.0 (pull request PR-152)
2ccb1c8634 Fixed a bug in the dispatch of optimized reduction kernels.
780623261e Re-enabled the optimized reduction CUDA code.
91678f489a Cleaned up double-defined macro from last commit
403a7cb6c3 Alternative way of forcing instantiation of device kernels without causing warnings or requiring device to device kernel invocations.
b557662e58 merge
8b9dc9f0df bug #1144: fix regression in x=y+A*x (aliasing), and move evaluator_traits::AssumeAliasing to evaluator_assume_aliasing.
e76904af1b Simplified the dispatch code.
d726e864ac Made it possible to use array of size 0 on CUDA devices
3358dfd5dd Reworked the dispatch of optimized cuda reduction kernels to workaround a nvcc bug that prevented the code from compiling in optimized mode in some cases
53749ff415 Prevent nvcc from miscompiling the cuda metakernel. Unfortunately this reintroduces some compulation warnings but it's much better than having to deal with random assertion failures.
f9d71a1729 extend matlab conversion table
6639b7d6e8 Removed a couple of partial specialization that confuse nvcc and result in errors such as this: error: more than one partial specialization matches the template argument list of class "Eigen::internal::get<3, Eigen::internal::numeric_list<std::size_t, 1UL, 1UL, 1UL, 1UL>>"             "Eigen::internal::get<n, Eigen::internal::numeric_list<T, a, as...>>"             "Eigen::internal::get<n, Eigen::internal::numeric_list<T, as...>>"
0cb2ca5de2 Fixed a typo.
213459d818 Optimized the performance of broadcasting of scalars.
ee738321aa rm remaining debug code
54bf582303 bug #1143: Work-around gcc bug
99093c0fe0 Added support for AVX512 to the build files
cfff40b1d4 Improved the performance of reductions on CUDA devices
515dee0baf Added a 'divup' util to compute the floor of the quotient of two integers
715f6f049f Improve inline documentation of SparseCompressedBase and its derived classes
8b0d1eb0f7 Fix numerous doxygen shortcomings, and workaround some clang -Wdocumentation warnings
9900782e88 Mark AlignedBit and EvalBeforeNestingBit with deprecated attribute, and remove the remaining usages of EvalBeforeNestingBit.
70404e07c2 Workaround clang -Wdocumentation warning about "/*<"
addb7066e8 Workaround "empty paragraph" warning with clang -Wdocumentation
eadc377b3f Add missing doc of Derived template parameter
29bb599e03 Fix numerous doxygen issues in auto-link generation
162ccb2938 Fix links to Eigen2-to-Eigen3 porting helpers
5fae3750b5 Recent versions of doxygen miss-parsed Eigen/* headers
b84cefe61d Add missing snippets for erf/erfc/lgamma functions.
16dd82ed51 Add missing snippet for sign/cwiseSign functions.
978c379ed7 Add missing ctor from uint
25f2b8d824 bug #1141: add missing initialization of CholmodBase::m_*IsOk
f2471f31e0 Modify constants in SpecialFunctions to lowercase (avoid name conflicts).
afb35385bf Change PI* to M_PI* in SpecialFunctions to avoid possible breakage with external DEFINEs.
14897600b7 Protect digamma tests behind a EIGEN_HAS_C99_MATH check.
cef81c9084 Merged eigen/eigen into default
f7362772e3 Add digamma for CPU + CUDA.  Includes tests.
d2e288ae50 Workaround compilers that do not even define _mm256_set_m128.
bdcbc66a5c Don't attempt to vectorize mean reductions of integers since we can't use SSE or AVX instructions to divide 2 integers.
a1e08fb2a5 Optimized the configuration of the outer reduction cuda kernel
9c7d96697b Added missing define
e7e6d01810 Made sure the optimized gpu reduction code is actually compiled.
b5d2078c4a Optimized outer reduction on GPUs.
3504ae47ca Made it possible to run the lgamma, erf, and erfc functors on a CUDA gpu.
1c3e78319d Added missing const
9f9d8d2f62 Disabled part of the matrix matrix peeling code that's incompatible with 512 bit registers
b74887d5f2 Implemented most of the packet primitives for AVX512
6ffb208c77 Make sure EIGEN_HAS_MM_MALLOC is set to 1 when using the avx512 instruction set.
994d1c60b9 Free memory allocated using posix_memalign() with free() instead of std::free()
b407948a77 Merged in connor-k/eigen (pull request PR-149)
a6c243617b Fixed a typo in previous change.
51be91f15e Added support for CUDA architectures that don's support for 3.5 capabilities
95dd423cca [doc] Remove extra ';' in Tutorial_AdvancedInitialization_Join.cpp
c006ecace1 Fix comments
bfed274df3 Use RotationBase, test quaternions and support ranges.
b091b7e6ea Remove unneccesary comment.
fabd8474ff Merged eigen/eigen into default
6752a69aa5 Much better tests, and a little bit more functionality.
6d777e1bc7 Fixed a typo.
1b82969559 Add alignment requirement for local buffer used by the slicing op.
75a7fa1919 Doubled the speed of full reductions on GPUs.
3abd8470ca bug #1140: remove custom definition and use of _mm256_setr_m128
8dd17cbe80 Fixed a clang compilation warning triggered by the use of arrays of size 0.
4aac55f684 Silenced some compilation warnings triggered by nvcc
40e6250fc3 Made it possible to run tensor chipping operations on CUDA devices
2ca55a3ae4 Fixed some compilation error triggered by the tensor code with msvc 2008
55aef139ff Added tag 3.3-beta1 for changeset 9f9de1aaa9a508fc6c94ddacd12b9107462f688f
9f9de1aaa9 bump to 3.3-beta1
49d96aee64 bug #1120: Make sure that SuperLU version is checked
ae8b217a01 Update doc to make it clear that only SuperLU 4.x is supported
35d8725c73 Disable AutoDiffScalar generic copy ctor for non compatible scalar types (fix ambiguous template instantiation)
92655e7215 bug #1136: Protect isinf for Intel compilers. Also don't distinguish GCC from ICC and don't rely on EIGEN_NOT_A_MACRO, which might not be defined when including this.
17352e2792 Made the entire TensorFixedSize api callable from a CUDA kernel.
75e19fc7ca Marked the tensor constructors as EIGEN_DEVICE_FUNC: This makes it possible to call them from a CUDA kernel.
140f3a02a8 Fix MKL wrapper for ComplexSchur
4483c0fdf6 Fix unused variable warning.
774dba87c8 merge
c884a8e7f4 merge
4d708457d0 Increase axpy vector size
b8861b0c25 Make sure the data is aligned on a 64 byte boundary when using avx512 instructions.
b60a8967f5 bug #1134: fix JacobiSVD pre-allocation (grafted from f22036f5f8bbaa349e090327d246c817bac94ee4 )
ca39b1546e Merged in ebrevdo/eigen (pull request PR-148)
82152f2ae6 bug #1132: add EIGEN_MAPBASE_PLUGIN
4519fd5d40 Fix MKL compilation issue
7385e6e2ef Remove useless explicit
bcb4f126a7 Fix compilation of PardisoSupport
30b5c4cd14 Remove useless "explicit", and fix inline/static order.
79c1e6d0a6 Fix compilation of MKL support.
c684a07eba merge
836da91b3f Fix unit tests wrt EIGEN_DEFAULT_TO_ROW_MAJOR
6af52a1227 Fixed a typo in the constructor of tensors of rank 5.
2d8f2e4042 Made 2 tests compile without cxx11.
8d28a161b2 Use the proper accessor to refer to the value of a scalar tensor
8e00ea9a92 Fixed the coefficient accessors use for the 2d and 3d case when compiling without cxx11 support.
9db8316c93 Updated the cxx11_tensor_custom_op to not require cxx11.
4e324ca6ae Updated the cxx11_tensor_assign test to make it compile without support for cxx11
6acf2bd472 Fixed compilation error triggered by MSVC 2008
9a415fb1e2 Preliminary support for AVX512
b820b097b8 Created EIGEN_HAS_C99_MATH define as Gael suggested.
df6f54ff63 Fix storage order of PartialRedux
d1862967a8 Make sure ADOLC is recent enough by searching for adtl.h
22dd368ea0 sign(complex) compiles for GPU
8314962ce2 Only test the lgamma, erf and erfc function when using a C99 compliant compiler
58e06447de Silence a compilation warning
48877a6933 Only implement the lgamma, erf, and erfc functions when using a compiler compliant with the C99 specification.
46d2f6cd78 Workaround gcc issue with -O3 and the i387 FPU.
7ad1aaec1d bug #1103: fix neon vectorization of pmul(Packet1cd,Packet1cd)
b0a1d6f2e5 Improve handling of deprecated EIGEN_INCLUDE_INSTALL_DIR variable
53b196aa5f Simplified the implementation of lgamma, erf, and erfc
e535450573 Cleanup
b630d10b62 Only disable the erf, erfc, and lgamma tests for older versions of c++.
b1ae39794c Simplified the code a bit
73b68d4370 Fixed a couple of typos Cleaned up the code a bit.
fa4f933c0f Add special functions to Eigen: lgamma, erf, erfc.
7dfe75f445 Fixed compilation warnings
ad3d68400e Add matrix-free solver example
b37036afce Implement wrapper for matrix-free iterative solvers
f4ca8ad917 Use signed integers instead of unsigned ones more consistently in the codebase.
490d26e4c1 Use integers instead of std::size_t to encode the number of dimensions in the Tensor class since most of the code currently already use integers.
d20efc974d Made it possible to use the sigmoid functor within a CUDA kernel.
e25e3a041b Added rsqrt() method to the Array class: this method computes the coefficient-wise inverse square root much more efficiently than calling sqrt().inverse().
029052d276 Deleted redundant code
c41e9e4bd0 Merged in Unril/eigen-1/Unril/fixes-internal-compiler-error-while-comp-1449156092576 (pull request PR-147)
1562e13aba Add missing Rotation2D::operator=(Matrix2x2)
944647c0aa Fixes internal compiler error while compiling with VC2015 Update1 x64.
d2d4c45d55 Made it possible to leverage several binary functor in a CUDA kernel Explicitely specified the return type of the various scalar_cmp_op functors.
c5b86893e7 bug #1123: add missing documentation of angle() and axis()
0bb12fa614 Add LU::transpose().solve() and LU::adjoint().solve() API.
1663d15da7 Add internal method _solve_impl_transposed() to LU decomposition classes that solves A^T x = b or A^* x = b.
274b2272b7 Make bench_gemm compatible with 3.2
6c02cbbb0f Fix matrix to quaternion (and angleaxis) conversion for matrix expression.
844561939f Do not check NeedsToAlign if no static alignment
1d906d883d Fix degenerate cases in syrk and trsm
e7a1c48185 Update BLAS API unit tests
034ca5a22d Clean hardcoded compilation options
fd727249ad Update ADOL-C support.
6fcd316f23 Extend superlu cmake script to check version
afa11d646d Fix UmfPackLU ctor for exppressions
6bdeb8cfbe bug #918, umfpack: add access to umfpack return code and parameters
3f32f5ec22 ArrayBase::sign: add unit test and fix doc
da46b1ed54 bug #1112: fix compilation on exotic architectures
1261d020c3 bug #1120, superlu: mem_usage_t is now uniquely defined, so let's use it.
0ff127e896 Preserve CMAKE_CXX_FLAGS in BTL
ca001d7c2a Big 1009, part 2/2: add static assertion on LinearAccessBit in coeff(index)-like methods.
91a7059459 bug #1009, part 1/2: make sure vector expressions expose LinearAccessBit flag.
7ddcf97da7 added scalar_sign_op (both real,complex)
44848ac39b Fixed a bug in TensorArgMax.h
547a8608e5 Fixed the implementation of Eigen::internal::count_leading_zeros for MSVC. Also updated the code to silence bogux warnings generated by nvcc when compilining this function.
562078780a Don't create more cuda blocks than necessary
df31ca3b9e Made it possible to refer t oa GPUDevice from code compile with a regular C++ compiler
1e04059012 Deleted unused variable.
4286b2d494 Pulled latest updates from trunk
f9fff67a56 Disable "decorated name length exceeded, name was truncated" MSVC warning.
f3dca16a1d bug #1117: workaround unused-local-typedefs warning when EIGEN_NO_STATIC_ASSERT and NDEBUG are both defined.
31b661e4ca Add a note on initParallel being optional in C++11.
8a2659f0cb Improve numerical robustness of some unit tests
82bd4e546a Merged in dr15jones/eigen (pull request PR-146)
35c17a3fc8 Use overload instead of template full specialization to please old MSVC
b265979a70 Make FullPivLU::solve use rank() instead of nonzeroPivots().
9fa65d3838 Split TensorDeviceType.h in 3 files to make it more manageable
a367804856 Added option to force the usage of the Eigen array class instead of the std::array class.
86486eee2d Pulled latest updates from trunk
383d1cc2ed Added proper support for fast 64bit integer division on CUDA
4946d758c9 Use a class constructor to initialize CPU cache sizes
027a846b34 Use .data() instead of &coeffRef(0).
4522ffd17c Add regression using test for array<complex>/real
4fc36079e7 Fix overload instantiation for clang
4a985e793c Workaround msvc broken complex/complex division in unit test
5c9c0dca4d Add missing using statement to enable fast Array<complex> / real operations. (was ok for Matrix only)
e1b27bcb0b Workaround MSVC missing overloads of std::fpclassify for integral types
e52d4f8d8d Add is_integral<> type traits
0ad7c7b1ad Fixed another clang compilation warning
66ff9b2c6c Fixed compilation warning generated by clang
f37a5f1c53 Fixed compilation error triggered by nvcc
04f1284f9a Shard the uint128 test
e2859c6b71 Cleanup the integer division test
f8df393165 Added support for 128bit integers on CUDA devices.
7d1cedd0fe Added numeric limits for unsigned integers
1994999105 Add regression unit test for prod.maxCoeff(i)
1dd444ea71 Avoid using the version of TensorIntDiv optimized for 32-bit integers when the divisor can be equal to one since it isn't supported.
4926251f13 bug #1115: enable static alignment on ARM outside of old-GCC
a64156cae5 Workaround i387 issue in unit test
bf792f59e3 Only enable the use of constexpr with nvcc if we're using version 7.5 or above
f1fbd74db9 Added sanity check
1e1755352d Made it possible to compute atan, tanh, sinh and cosh on GPU
7815b84be4 Fixed a compilation warning
10a91930cc Fixed a compilation warning triggered by nvcc
ed4b37de02 Fixed a few compilation warnings
b69248fa2a Added a couple of missing EIGEN_DEVICE_FUNC
0aaa5941df Silenced some compilation warnings triggered by nvcc
2c73633b28 Fixed a few more typos
be08e82953 Fixed typos
e4d45f3440 Only enable the use of const expression when nvcc is called with the -std=c++11 option
150c12e138 Completed the IndexList rewrite
8037826367 Simplified more of the IndexList code.
e9ecfad796 Started to make the IndexList code compile by more compilers
7a1316fcc5 Fixed compilation error with xcode.
737d237722 Made it possible to run some of the CXXMeta functions on a CUDA device.
1e072424e8 Moved the array code into it's own file.
aa5f1ca714 gen_numeric_list takes a size_t, not a int
dfbb889fe9 Fix missing Dynamic versus HugeCost changes
e701cb2c7c Update EIGEN_FAST_MATH doc
9fa10fe52d Don't use std::array when compiling with nvcc since nvidia doesn't support the use of STL containers on GPU.
c587293e48 Fixed a compilation warning
7f1c29fb0c Make it possible for a vectorized tensor expression to be executed in a CUDA kernel.
4f471146fb Allow the vectorized version of the Binary and the Nullary functors to run on GPU
99f4778506 Disable SFINAE when compiling with nvcc
5cb18e5b5e Fixed CUDA compilation errors
228edfe616 Use Eigen::NumTraits instead of std::numeric_limits
b836acb799 Further fixes for CMAKE_INSTALL_PREFIX correctness
e73ef4f25e bug #1109: use noexcept instead of throw for C++11 compilers
145ad5d800 Use more explicit names.
75f0fe3795 Fix usage of "Index" as a compile time integral.
f248249c1f bug #1113: fix name conflict with C99's "I".
21ed29e2c9 Disable complex scalar types because the compiler might aggressively vectorize the initialization of complex coeffs to 0 before we can check for alignedness
fbe18d5507 Forbid the creation of SparseCompressedBase object
dc73430d4b bug #1074: forbid the creation of PlainObjectBase object by making its ctor protected
1257fbd2f9 Fix sign-unsigned issue in enum
4549549992 Fix and clarify documentation of Transform wrt operator*(MatrixBase)
543bd28a24 Fix Alignment in coeff-based product, and enable unaligned vectorization
03ad4fc504 Extend unit test of coeff-based product to check many more combinations
20e2ab1121 Fixed another compilation warning
d573efe303 Code cleanup
9fa283339f Silenced a compilation warning
53432a17b2 Added static assertions to avoid misuses of padding, broadcasting and concatenation ops.
6857a35a11 Fixed typos
33cbdc2d15 Added more missing EIGEN_DEVICE_FUNC
d27e4f1cba Added missing EIGEN_DEVICE_FUNC statements
ed1962b464 Reimplement the tensor comparison operators by using the scalar_cmp_op functors. This makes them more cuda friendly.
bfd6ee64f3 bug #1105: fix default preallocation when moving from compressed to uncompressed mode
29038b982d Added support for modulo operation
fbcf8cc8c1 Pulled latest updates from trunk
0d15ad8019 Updated the regressions tests that cover full reductions
c75a19f815 Misc fixes to full reductions
ec5a81b45a Fixed a bug in the extraction of sizes of fixed sized tensors of rank 0
589b839ad0 Add unit test for Hessian via AutoDiffScalar
9ceaa8e445 bug #1063: nest AutoDiffScalar by value to avoid dead references
ae87f094eb Fix "," in non SSE4 mode
2844e7ae43 SPQR and UmfPack need to link to cholmod. (grafted from 47592d31eabfb09b811005a725ea5ca2eb5a6fcf )
780eeb3be7 prevent stack overflow in unit test
beedd9630d Updated the reduction code so that full reductions now return a tensor of rank 0.
90323f1751 Fix AVX round/ceil/floor, and fix respective unit test
3dd24bdf99 Merged in aavenel/eigen (pull request PR-142)
902750826b Add support for dense.cwiseProduct(sparse) This also fixes a regression regarding (dense*sparse).diagonal()
f6b1deebab Fix compilation of sparse-triangular to dense assignment
36cd6daaae Made the CUDA implementation of ploadt_ro compatible with cuda implementations older than 3.5
29a94c8055 compilation issue
38832e0791 Merge
d46e2c10a6 Add round, ceil and floor for SSE4.1/AVX (Bug #70)
c0352197a1 bug #1099: add missing incude for CUDA
b32948c642 bug #1102: fix multiple definition linking issue
5a2007f7e4 typo
8a3151de2e Limit matrix size for other eigen and schur decompositions
fdf3030ff8 Limit matrix sizes for trmm unit test and complexes.
9285647dfe Limit matrix size when testing for NaN: they can become prohibitively expensive when running on x87 fp unit
ddaaa2d381 bug #1101: typo
c8c8821038 Biug 1100: remove explicit CMAKE_INSTALL_PREFIX prefix to please cmake install's DESTINATION argument
0e6cb08f92 Fix shadow warning
27c56bf60f Workaround compilation issue with MSVC<=2013
213bd0253a Fix gcc 4.4 compilation issue
6a02c2a85d Fixed a compilation warning
ca12d4c3b3 Pulled latest updates from trunk
31bdafac67 Added a few tests to cover rank-0 tensors
ce19e38c1f Added support for tensor maps of rank 0.
3785c69294 Added support for fixed sized tensors of rank 0
0d7a23d34e Extended the reduction code so that reducing an empty set returns the neural element for the operation
1b0685d09a Added support for rank-0 tensors
c444a0a8c3 Consistently use the same index type in the fft codebase.
09ea3a7acd Silenced a few more compilation warnings
0974a57910 Silenced compiler warning
ac142773a7 Don't call internal::check_rows_cols_for_overflow twice in PlainObjectBase::resize since this is extremely expensive for small arrays
05a0ee25df Fix warning.
7cfbe35e49 Fix duplicated declaration
568d488a27 Fusion the two similar specialization of Sparse2Dense Assignment. This change also fixes a compilation issue with MSVC<=2013.
7a5f83ca60 Add overloads for real times sparse<complex> operations. This avoids real to complex conversions, and also fixes a compilation issue with MSVC.
c688cc28d6 fix copy/paste typo
5b6cff5b0e fix typo
6759a21e49 CUDA support: define more accurate min/max values for device::numeric_limits of float and double using values from cfloat header
28ddb5158d Enable std::isfinite/nan/inf on MSVC 2013 and newer and clang. Fix isinf for gcc4.4 and older msvc with fast-math.
1a842c0dc4 Fix typo in TutorialSparse: laplace equation contains gradient symbol (\nabla) instead of laplacian (\Delta).
8531304858 Simplify cost computations based on HugeCost being smaller that unrolling limit
1f11dd6ced Add a unit test for large chains of products
902c2db5a5 Extend vectorwiseop unit test with column/row vectors as input.
77ff3386b7 Refactoring of the cost model:  - Dynamic is now an invalid value  - introduce a HugeCost constant to be used for runtime-cost values or arbitrarily huge cost  - add sanity checks for cost values: must be >=0 and not too large This change provides several benefits:  - it fixes shortcoming is some cost computation where the Dynamic case was not properly handled.  - it simplifies cost computation logic, and should avoid future similar shortcomings.  - it allows to distinguish between different level of dynamic/huge/infinite cost  - it should enable further simplifications in the computation of costs (save compilation time)
827d8a9bad Fix false negative in redux test
d4cf436cb1 Enable mpreal unit test for C++11 compiler only
946f8850e8 bug #1008: add a unit test for fast-math mode and isinf/isnan/isfinite/etc. functions.
e3031d7bfa bug #1008: improve handling of fast-math mode for older gcc versions.
2475a1de48 bug #1008: stabilize isfinite/isinf/isnan/hasNaN/allFinite functions for fast-math mode.
699c33e76a merge
8c66b6bc61 Simplify evaluator::Flags for Map<>
12f50a4697 Fix assign vectorization logic with respect to fixed outer-stride
c1e0b6dde3 merge
73f692d16b Fix ambiguous instantiation
0fc8954282 Improve readibility of EIGEN_DEBUG_ASSIGN mode.
1c8312c811 Started to add support for tensors of rank 0
1f4c98abb1 Fixed compilation warning
9dc236bc83 Fixed compilation warning
9f721384e0 Added support for empty dimensions
ded4336988 Pulled latest updates from trunk
a3e144727c Fixed compilation warning
f8e7b9590d Fixed compilation error triggered by gcc 4.7
e6f8c5c325 Add support to directly evaluate the product of two sparse matrices within a dense matrix.
a5324a131f bug #1092: fix iterative solver ctors for expressions as input
f93654ae16 bug #1098: fix regression introduced when generalizing some compute() methods in changeset 7031a851d45a8526474ac1ac972ad12a48e99f1a .
af2e25d482 Merged in infinitei/eigen (pull request PR-140)
4704bdc9c0 Make the IterativeLinearSolvers module compatible with MPL2-only mode by defaulting to COLAMDOrdering and NaturalOrdering for ILUT and ILLT respectively.
47d44c2f37 Add missing licence header to some top header files
8a211bb1a9 bug #1088: fix setIdenity for non-compressed sparse-matrix
ac6b2266b9 Fix SparseMatrix::insert/coeffRef for non-empty compressed matrix
0ed41bdefa ArpackSupport was missing here also.
1127ca8586 Added ArpackSupport to cmake install target
e99279f444 merge
de1e9f29f4 Updated the custom indexing code: we can now use any container that provides the [] operator to index a tensor. Added unit tests to validate the use of std::map and a few more types as valid custom index containers
6585efc553 Tightened the definition of isOfNormalIndex to take into account integer types in addition to arrays of indices Only compile the custom index code  when EIGEN_HAS_SFINAE is defined. For the time beeing, EIGEN_HAS_SFINAE is a synonym for EIGEN_HAS_VARIADIC_TEMPLATES, but this might evolve in the future. Moved some code around.
c0adf6e38d Fix perm*sparse return type and nesting, and add several sanity checks for perm*sparse
527fc4bc86 Fix ambiguous instantiation issues of product_evaluator.
2598f3987e Add a plain_object_eval<> helper returning a plain object type based on evaluator's Flags, and base nested_eval on it.
b4c79ee1d3 Update custom setFromTripplets API to allow passing a functor object, and add a collapseDuplicates method to cleanup the API. Also add respective unit test
fc7478c04d name changes 2 user: Gabriel Nützi <gnuetzi@gmx.ch> branch 'default' changed unsupported/Eigen/CXX11/src/Tensor/Tensor.h changed unsupported/Eigen/CXX11/src/Tensor/TensorMeta.h
7b34834f64 name changes
6edae2d30d added CustomIndex capability only to Tensor and not yet to TensorBase.  using Sfinae and is_base_of to select correct template which converts to array<Index,NumIndices>
b9d81c9150 Add a functor to setFromTriplets to handle duplicated entries
9acfc7c4f3 remove reference to internal method
a44d91a0b2 extend unit test for SparseMatrix::prune
ac22b66f1c Fix macro issues
3e32f6b554 update mpreal.h
ea9749fd6c Fix packetmath unit test for pdiv not being always defined
252e89b11b bug #1086: replace deprecated UF_long by SuiteSparse_long
6407e367ee Add missing epxlicit keyword, and fix regression in DynamicSparseMatrix
63e29e7765 Workaround ICC issue with first_aligned
6163db814c bug #1085: workaround gcc default ABI issue
6536b4bad7 Implement temporary-free path for "D.nolias() ?= C + A*B". (I thought it was already implemented)
a4cc4c1e5e Clarify note in nested_eval for evaluator creating temporaries.
ae38910693 The evalautor of Solve was missing the EvalBeforeNestingBit flag.
515ecddb97 Add unit test for nested_eval
78b8c344b5 Add unit test for CoeffReadCost
321cb56bf6 Add unit test to check nesting of complex expressions in redux()
2632b3446c Improve documentation of TriangularView.
1429daf850 Add lvalue check for TriangularView::swap, and fix deprecated TriangularView::lazyAssign
72bd05b6d8 Cleaning in Redux.h
2c516ba38f Remove auto references and referenced-by relation in doc.
041e038fef Remove dead code in selfadjoint_matrix_vector_product
c2d68b984f Optimize a bit complex selfadjoint * vector product.
1932a24760 Simplify EIGEN_DENSE_PUBLIC_INTERFACE
186ec1437c Cleanup EIGEN_SPARSE_PUBLIC_INTERFACE, it is now a simple alias to EIGEN_GENERIC_PUBLIC_INTERFACE
c9718514f5 Fix nesting sub-expression in outer-products
4140ee039d Fix propagation of AssumeAliasing for expression as: "scalar * (A*B)"
d866279364 Clean a bit the implementation of inverse permutations
8d00a953af Fix a nesting issue in some matrix-vector cases.
dd934ad057 Re-enable vectorization of LinSpaced, plus some cleaning
f6f6f50272 Clean evaluator<EvalToTemp>
67bfba07fd Fix some CUDA issues
412c049ba4 Fix a warning
aa6b1aebf3 Properly implement PartialReduxExpr on top of evaluators, and fix multiple evaluation of nested expression
5cc7251188 Some cleaning in evaluators
e30bc89190 Add missing include of std vector
5d7ebfb275 Update sparse solver list to make it more complete
1b148d9e2e Move IncompleteCholesky to official modules
632e7705b1 Improve doc of IncompleteCholesky
64242b8bf3 Doc: add link to doc of sparse solver concept
131db3c552 Fix return by value versus ref typo in IncompleteCholesky
13294b5152 Unify gemm and lazy_gemm benchmarks
247259f805 Add a perfromance regression benchmark for lazyProduct
c6eb17cbe9 Add helper routines to help bypassing some compiler otpimization when benchmarking
f047ecc36a _mm_hadd_epi32 is for SSSE3 only (and not SSE3)
aba1eda71e Help clang to inline some functions, thus fixing some regressions
41cc1f9033 Remove debuging prod() and lazyprod() function, plus some cleaning in noalias assignment
ca0dd7ae26 Fix implicit cast in unit test
8bb51a87f7 Re-enable some invalid scalar type conversion checks by disabling explicit vectorization
27a94299aa Add sparse vector to Ref<SparseMatrix> conversion unit tests, and improve output of sparse_ref unit test in case of failure.
2e0ece7b66 Fix wrong casting syntax
69a7897e72 Fix storage index type in empty permutations
26cde4db3c Define Permutation*<>::Scalar to 'void', re-enable scalar type compatibility check in assignment while relaxing this test for void types.
fb51bab272 Some cleaning
2c676ddb40 Handle various TODOs in SSE vectorization (remove splitted storeu, enable SSE3 integer vectorization, plus minor tweaks)
2d287a4898 Fix Ref<SparseMatrix> for Transpose<SparseVector>
752a0e5339 bug #1076: fix scaling in IncompleteCholesky, improve doc, add read-only access to the different factors, remove debugging code.
f25bdc707f Optimise assignment into a Block<SparseMatrix> by using Ref and avoiding useless updates in non-compressed mode. This make row-by-row filling of a row-major sparse matrix very efficient.
945b80c83e Optimize Ref<SparseMatrix> by removing useless default initialisation of SparseMapBase and SparseMatrix
9a070638de Enable to view a SparseVector as a Ref<SparseMatrix>
1b43860bc1 Make SparseVector derive from SparseCompressedBase, thus improving compatibility between sparse vectors and matrices
6100d1ae64 Improve counting of sparse temporaries
1879917d35 Propagate cmake generator
deb261f64b Make abs2 compatible with custom complex types
ccc7b0ffea [doc] grammar fix: "linearly space" -> "linearly spaced"
75a60d3ac0 bug #1075: fix AlignedBox::sample for runtime dimension
9136b95219 Merged in doug_kwan/eigen (pull request PR-137)
781e8c38bd merge
b2b8c1d41e Fix performance regression in sparse * dense product where "sparse" is an expression
239c9946cd Specified signedness of char type in test so that test passes consistently on different targets.
d46bacb6bb Call numext::mini instead of std::min in several places.
ceafed519f Add support for permutation * homogenous
ddb5650530 bug #1070: propagate last three Matrix template arguments for NumTraits<AutoDiffScalar<>>::Real
02e940fc9f bug #1071: improve doc on lpNorm and add example for some operator norms
8c1ee3629f Add support for row/col-wise lpNorm()
75861f6650 bug #1069: fix AVX support on MSVC (use of non portable C-style cast)
5e0a178df2 Initial fork of unsupported module EulerAngles.
d16797cfc0 Fix bug #1067: naming conflict
13aee4463e Cleaned up a test
58a6453d48 Fixed compilation warning
31afdcb4c2 Fix return type for TensorEvaluator<TensorSlicingOp>::data
9d993c709b Fix typo in Vectowise::any()
43ba07d4d7 Merged in daalpa/eigen/daalpa/removed-documentation-that-did-not-match-1442148941751 (pull request PR-136)
fab96f2ff3 Removed documentation that did not match the member function DenseBase::outerSize()
d6f762d955 Fixed cuda code: EIGEN_DEVICE_FUNC must come after template<...>
680d318352 Add unit tests for bug #981: valid and invalid usage of ternary operator
84e0c27b61 Fixed a compilation warning
05f2f94f2b Fixed a compilation warning
98f8f0db9a Added support for predux_mul for CUDA devices
e3f69eb60d Fixed minor regression caused by 7031a851d45a8526474ac1ac972ad12a48e99f1a
5bf971e5b8 MKL is now free of charge for opensource
73a86cfcd3 Add EIGEN_QUATERNION_PLUGIN
7fad309631 Fix link and code formating
7031a851d4 Generalize matrix ctor and compute() method of dense decomposition to 1) limit temporaries, 2) forward expressions to nested decompositions, 3) fix ambiguous ctor instanciation for square decomposition
1702fcb72e Added tag 3.3-alpha1 for changeset f9303cc7c54bf9355bc0e1f490ed18be975b2109
f9303cc7c5 bump to 3.3-alpha1
b20a55a608 Workaround wrong instanciation made by VS2010
ed265258e4 Fix returned index type of inner iterators of sparse blocks.
a835dfca73 InnerIterator::index() should really return a StorageIndex
941a99ac1a Add a few missing EIGEN_DEVICE_FUNC declarations
d91db41a31 Fix documentation example
3942db9d7c Use inline versus static free functions.
85afb61417 use explicit Scalar types for AngleAxis initialization (grafted from 89a222ce502483f8f0b02db9261445b7dff69760 )
56983f6d43 Fixed compilation warning
57857775b4 Added support for arrays of size 0
c40c2ceb27 Reordered the code of fft constructor to prevent compilation warnings
a586fdaa91 Reworked the tensor contraction mapper code to make it compile on Android
29c3b7513e Pulled latest updates from trunk
9ea39ce13c Refined the #ifdef __CUDACC__ guard to ensure that when trying to compile gpu code with a non cuda compiler results in a linking error instead of bogus code.
c244081490 disable usage of INTMAX_T
0905ed5390 remove useless cstdint header
54b23cce16 Switch to MPL2
ac99b49249 Added missing glue logic
2dd9446613 Added mapping between a specific device and the corresponding packet type
2495e2479f Added tests for the fft code
a147c62998 Added support for fourier transforms (code courtesy of thucjw@gmail.com)
71b473aab1 Remove invalid typename keyword
ebc1af1683 merge
825146c8fd Fixed incorrect expected value
4cf7da63de Added a constructor to simplify the construction of tensormap from tensor
0eb46508e2 Avoid any openmp calls if multi-threading is explicitely disabled at runtime.
6df8e99470 bug #1089: add a warning when using a MatrixBase method which is implemented within another module by declaring them inline.
e78bc111f1 bug #1090: fix a shortcoming in redux logic for which slice-vectorization plus unrolling might happen.
b178cc3479 Added some syntactic sugar to make it simpler to compare a tensor to a scalar.
5ca2e25967 merge
8afd0ce955 add FIXME
8961265889 bug #1064: add support for Ref<SparseVector>
0af63493fd Disable SFINAE for versions of gcc older than 4.8
73b8e719ae Removed bogus assertion
eaf4b98180 Added support for boolean reductions (ie 'and' & 'or' reductions)
f5c1587e4e Fixed a bug in the tensor conversion op
fe630c9873 Improve numerical accuracy in LLT and triangular solve by using true scalar divisions (instead of x * (1/y))
5c9ee73eb9 Implement plog and pexp for AltiVec.
5a1cc5d24c bug #1053: fix SuplerLU::solve with EIGEN_DEFAULT_TO_ROW_MAJOR
2795ffd6a0 Fix Index vs StorageIndex naming convention
ef2b54f422 Fix AMD ordering when a column has only one off-diagonal non-zero (also fix bug #1045)
5ad7981f73 Use full packet size for Dynamic-sized objects (otherwise, the unalignedcount unit test fails with AVX enabled)
aa768add0b Since there is no reason for evaluators to be nested by reference, let's remove the evaluator<>::nestedType indirection.
51455824ea Fix AlignedVector3 wrt previous change
f8976fdbe0 Make evaluators non-copyable. This guarantee that evaluators storing temporaries do not introduce unwanted copy overhead.
92b9f0e102 Cleaning pass on evaluators: remove the useless and error prone evaluator<>::type indirection.
cda55ab245 Fix compilation of cuda unit test
14458ec0a0 Fix packetmath unit test for exp and log
6b99afa5ae Fix LSCG::solve with a sparse destination.
b5ad3d2cf7 Remove deprecated Flagged expression.
6522c3a6f0 Add regression test for bug #817
be5e2ecc21 bug #505: add more examples of bad and correct usages of auto and eval().
aba8c9ee17 Add a documentation page for common pitfalls
a75616887e bug #1057: fix a declaration missmatch with MSVC
280f93ff65 Fix FullPivLU::image documentation
6059188f9d Simplify implementation of the evaluation's iterator of Sparse*Diagonal products to help the compiler to generate better code.
0b2412df50 Remove duplicated temporary in Sparse to Sparse assignment
9001f4a46b Add missing specialization of evaluator of sub-sparse-matrices that can be seen as a SparseCompressedBase. This changeset enable faster iterator for such expressions.
f41831e445 Added support for argmax/argmin
2ab603316a Use numext::mini/numext::maxi instead of std::min/std::max in the tensor code
2ed1495eec nvcc doesn't support std::min or std::max on GPU. Use our own custom implementation instead
d4c24eb016 fixed Quaternion identity initialization for non-implicitly convertible types
78358a7241 Fixed broken commit a09cfe650fe56b181747af04d61548800da1f72b . Missing } and unprotected min/max calls and definitions.
a09cfe650f std::numeric_limits doesn't work reliably on CUDA devices. Use our own definition of numeric_limit<T>::max() and numeric_limit<T>::min() instead of the stl ones.
e5c78d85c8 bug #1043: Avoid integer conversion sign warning
1bdd06a199 Fix some trivial warnings
0721690dbb Use standard include syntax in Tensor module (<> for include-path and "" for relative path)
8097d8d028 surpress some warnings
d2e0927127 Define EIGEN_MAX_STATIC_ALIGN_BYTES to 0 for architectures that don't require stack alignment
dc2c103b3b merge
d6a4805fdf Protect further isnan/isfinite/isinf calls
a40f6ab276 Merged in ITimer/eigen (pull request PR-133)
61e0977e10 Protect all calls to isnan, isinf and isfinite with parentheses.
712e2fed17 bug #829: Introduce macro EIGEN_HAS_CXX11_CONTAINERS and do not specialize std-containers if it is enabled.
a5d1bb2be8 bug #1054: Use set(EIGEN_CXX_FLAG_VERSION "/version") only for Intel compilers on Windows. Also removed code calling `head -n1` and always use integrated REGEX functionality.
93635cafee Fixed a spelling error
23aab82c0c merge
0d5e673baa Fix Tensor module wrt nullary functor recent change
cac6b23033 bug #1053: SparseLU failed with EIGEN_DEFAULT_TO_ROW_MAJOR
febcce34f1 Enable vectorization with half-packets
6245591349 Fix prototype of plset and generalize linspace functor.
60e4260d0d Some functors were not generic wrt packet-type.
e68c7b8368 Include SSE packetmath when AVX is enabled, and enable AVX's sine function only in fast-math mode (as SSE)
65bfa5fce7 Allow to use arbitrary packet-types during evaluation. This is implemented by adding a PacketType template parameter to packet and writePacket members of evaluator<>.
3602926ed5 Mark ALignedBit as deprecated.
ce57dbd937 Let unpacket_traits<> exposes the required alignment and make use of it everywhere
2afdef6a54 Generalize first_aligned to take the requested alignment as a template parameter, and add a first_default_aligned variante calling first_aligned with the requirement of the largest packet for the given scalar type.
1f5024332e First part of a big refactoring of alignment control to enable the handling of arbitrarily aligned buffers. It includes:  - AlignedBit flag is deprecated. Alignment is now specified by the evaluator through the 'Alignment' enum, e.g., evaluator<Xpr>::Alignment. Its value is in Bytes.  - Add several enums to specify alignment: Aligned8, Aligned16, Aligned32, Aligned64, Aligned128. AlignedMax corresponds to EIGEN_MAX_ALIGN_BYTES. Such enums are used to define the above Alignment value, and as the 'Options' template parameter of Map<> and Ref<>.  - The Aligned enum is now deprecated. It is now an alias for Aligned16.  - Currently, traits<Matrix<>>, traits<Array<>>, traits<Ref<>>, traits<Map<>>, and traits<Block<>> also expose the Alignment enum.
65186ef18d Fix logic in compute_default_alignment, extend it to Dynamic size, and move it to XprHelper.h file.
becd89df29 Enable runtime stack alignment in gemm_blocking_space.
d4f5efc51a Add a EIGEN_DEFAULT_ALIGN_BYTES macro defining default alignment for alloca and aligned_malloc. It is defined as the max of EIGEN_IDEAL_MAX_ALIGN_BYTES and EIGEN_MAX_ALIGN_BYTES
7e0d7a76b8 Remove dense nested loops in IncompleteCholesky
e31fc50280 Numerous fixes for IncompleteCholesky. Still have to make it fully exploit the sparse structure of the L factor, and improve robustness to illconditionned problems.
9a4713e505 Add a unit test for IncompleteCholesky
506964fc29 Propagate precondition info to the iterative solver.
db0f5c9d90 Fix conversion warning
b986c147cd Fix ForceNonZeroDiag for complexes
cbce0e3b12 Fixed compilation warning
a5dc49e7e8 Fixed 2 compilation warnings generated by llvm
e1d28b7ea7 Added a test for shuffling
0570594f2c Fixed a few compilation warnings triggered by clang
099597406f Simplified and generalized the DividerTraits code
6db3a557f4 Add missing specialization of struct DividerTraits<long>
aec4814370 Many files were missing in previous changeset.
f7d5b9323d typo
175ed636ea bug #973: update macro-level control of alignement by introducing user-controllable EIGEN_MAX_ALIGN_BYTES and EIGEN_MAX_STATIC_ALIGN_BYTES macros. This changeset also removes EIGEN_ALIGN (replaced by EIGEN_MAX_ALIGN_BYTES>0), EIGEN_ALIGN_STATICALLY (replaced by EIGEN_MAX_STATIC_ALIGN_BYTES>0), EIGEN_USER_ALIGN*, EIGEN_ALIGN_DEFAULT (replaced by EIGEN_ALIGN_MAX).
76874b128e bug #1047: document the structure layout of class Matrix
41e1f3498c bug #1048: fix unused variable warning
b9db19aec4 Pulled latest updates from trunk.
f84417d97b Removed an incorrect assertion.
1a30a8e7a2 Merged in godeffroy/eigen_tensor_generalized_contraction (pull request PR-130)
a44d022caf bug #792: SparseLU::factorize failed for structurally rank deficient matrices
2195822df6 Allowed tensor contraction operation with an empty array of dimension pairs, which performs a tensor product.
f6282e451a Fixed a typo in an assertion.
4b3052c54d Pulled latest update from trunk
a446020b78 Reenable 2 tests previously disabled by mistake
3d951df223 Re-enabled unit tests which were disabled in commit 4200bdec2478d07b77f25ccc87094e2fba63cec6 .
6d6e6d0b88 Define EIGEN_VECTORIZE_AVX2 and EIGEN_VECTORIZE_FMA when the corresponding instructions can be used by the compiler
ce65c2922a Pulled latest updates from trunk
4200bdec24 Extended the range of value inputs for TensorIntDiv to support tensors with more than 4 billion elements.
3b0ad02c10 Remove wrongly pushed debugging statements
815fa0dbf6 Fixed some compiler bugs in NVCC, now compiles with CUDA. (chtz: Manually joined sevaral commits to keep the history clean)
d259b719d1 Made sure that the use const expressions are not enabled when compiling with nvcc even when gcc 4.9 is used as the host compiler.
0dda72316f The eigen_check macro doesn't exist anymore: use assert instead
586d10f7e0 Fix compilation of tri(sparse) * dense with OpenMP
d3e5db9a80 add regression unit test for previous changeset
5e635f9ca1 AlignedVector3 accepts implicit conversions from more operators.
45ee14a13a Fix output of relative error, and add more support for long double
87f3e533f5 bug #1036: implement verify_is_approx_upto_permutation through a combinatorial search. The previous implementation was subject to numerical cancellation issues.
ab8b497a7e Add pow(scalar,array) in quick ref
6544b49e59 Generalize pow(x,e) such that x and e can be a different expression type or a scalar for either x or e. Add x.pow(e) with e an array expression.
2d93060291 Fix trivial warnings.
c11971de37 Fix compilation of isnan(complex)
88e352adac Add support for replicate in CUDA
6799c26cd6 Fixed a typo in a test and a compilation warning
7a39439904 Rewrote Eigen::dimensions_match to prevent a static assertion when the rank of the tensors is different.
e94f9eb637 Fixed a const correctness issue in TensorLayoutSwap
513e357b48 Added support for prefetching on cuda devices
943035e5bd Pulled latest updates from trunk
06a22ca5bd Added support for sigmoid function to the tensor module
3275eddc24 Add const getters for LM parameters
979b73cebf Fixed a typo in Macro.h
a5ec25f11c Use the new EIGEN_HAS_INDEX_LIST define to enable the cxx11_tensor_index_list tests
7a243959b4 Define EIGEN_HAS_INDEX_LIST whenever the class is defined. This makes it easier to support compilers that are cxx11 compliant and compilers that aren't.
b756f6af5e Added missing APIs to the Eigen::Sizes class
05787f8367 Added support for tensor inflation.
b900fe47d5 Avoid relying on a default value for the Vectorizable template parameter of the EvalRange functor
4b3d697e12 Fixed compilation error in a cuda test
8315e025e1 Updated the cuda tests to use the new GpuDevice constructor
e892524efe Added support for multi gpu configuration to the GpuDevice class
f5aa640862 Clean some previous changes and more cuda fixes
7cecd39a84 Merged eigen/eigen into default
592ee2a4b4 Add missing EIGEN_DEVICE_FUNC
6527dbb9f8 Merged in emartin/eigen (pull request PR-123)
b80036abec Enabled the construction of a fixed sized tensor directly from an expression.
3912ca0d53 Fixed a bug in the integer division code that caused some large numerators to be incorrectly handled
ea87561564 bug #1039: Redefining EIGEN_DEFAULT_DENSE_INDEX_TYPE may lead to errors
b8df8815f4 Fix operator<<(ostream,AlignedVector3)
002c2923c2 Modify GEMM to handle m=0, n=0, and k=0 cases.
dbb3e2cf8a Cleaning
0d09845562 Revert files to remove EIGEN_USING_NUMEXT_MATH
20b96025fd Replace double constants by Scalar constants
1dd6a329e8 Cuda compatibility: remove explicit call to std math functions
bc40eb745d Merged eigen/eigen into default
e6297741c9 Added support for generation of random complex numbers on CUDA devices
6de6fa9483 Use NumTraits<T>::RequireInitialization instead of internal::is_arithmetic<T>::value to check whether it's possible to bypass the type constructor in the tensor code.
7b7df7b6b8 Updated internal::is_arithmetic::value to be true for complex numbers
6e55284e51 Pulled latest changes from trunk
a93af65938 Improved and cleaned up the 2d patch extraction code
7fa6fe8d8c typo
fa17358c4b Rotation2D: fix slerp to take the shortest path, and add convenient method to get the angle in [-pi,pi] or [0,pi]
3f2101b03b Use numext::swap instead of std::swap
0485a2468d use Eigen smart_copy instead of std::copy
ebdacfc5ea Fixed a compilation warning generated by clang
81f9e968fd Only attempt to use the texture path on GPUs when it's supported by CUDA
66b30728f8 Merged eigen/eigen into default
5359e5cdb2 Protect against compilation errors with nvcc and numext/complex. Disable functions explicitely involving std::complex when compiling with nvcc. Improve code compatilibity using the new macro EIGEN_USING_NUMEXT_MATH (same spirit than EIGEN_USING_STD_MATH but for numext functions)
864318e508 Misc small fixes to the tensor slicing code.
c2019dfeb3 Merged in Emie/eigen (pull request PR-121)
ea7113dd0c  typo correction in mathFunction
9115896590 Merged eigen/eigen into default
95ef94f1ee Fixed a typo in the patch
8f1d547c92 Added a default value for the cuda stream in the GpuDevice constructor
1e911b276c Misc improvements and optimizations
4ed213f97b Improved a previous fix
56e155dd60 Fixed a couple of mistakes in the previous commit.
925d0d375a Enabled the vectorized evaluation of several tensor expressions that was previously disabled by mistake
44eedd8915 Marked the cast functions as EIGEN_DEVICE_FUNC to ensure that we can run casting on GPUs
6021b68d8b Silenced a compilation warning
f1f480b116 Added support for user defined custom tensor op.
dc31fcb9ba Added support for 3D patch extraction
f587075987 Made ThreadPoolDevice inherit from a new pure abstract ThreadPoolInterface class: this enables users to leverage their existing threadpool when using eigen tensors.
28b36632ec Turned Eigen::array::size into a function to make the code compatible with std::array
109005c6c9 Added a test for multithreaded full reductions
a4aa7c6217 Fixed a few compilation warnings
7d41e97fa9 Silenced a number of compilation warnings
fffe63045c Added a test for full reductions on GPU
db9dbbda32 Improved performance of full reduction by 2 order of magnitude on CPU and 3 orders of magnitude on GPU
f0ce85b757 Improved support for fixed size tensors
670c71d906 Express the full reduction operations (such as sum, max, min) using TensorDimensionList
d8098ee7d5 Added support for tanh function to the tensor code
3625734bc8 Moved some utilities to TensorMeta.h to make it easier to reuse them accross several tensor operations. Created the TensorDimensionList class to encode the list of all the dimensions of a tensor of rank n. This could be done using TensorIndexList, however TensorIndexList require cxx11 which isn't yet supported as widely as we'd like.
392a30db82 Use VERIFY_IS_EQUAL instead of VERIFY(a==b) to get more feedback in case of failure
c911fc8dee split compiler intensive bdcsvd_1 unit test
98ff17eb9e Add special path for matrix<complex>/real. This also fixes underflow issues when scaling complex matrices through complex/complex operator.
e102ddbf1f bug #1026: fix infinite loop for an empty input
555b9c6843 Doc: explain perf and multithreading issues in sparse iterative solvers
53b930887d Enable OpenMP parallelization of row-major-sparse * dense products. I observed significant speed-up of the CG solver.
3f49cf4c90 More msvc 2013/2015 workarounds
7f824dd613 Optimize CG to enable faster spare row-major * dense vector products when the input matrix is complete (Upper|Lower) but column major.
c5f9eafcbc Fix assignement to selfadjoint-view when testing real-world problems
33e699c9fe Remove redundant accessors in Reverse
6b4d255cab Avoid division by a zero complex
973b0a90db Clarify documentation of the tolerance and error returned in iterative solvers
84264ceebc workaround msvc 2013/2015 wrong instanciation of isnan, isfinite, isinf
b4ab72678c bug #1000: MSVC 2013 does need the operator= workaround
788941d3b1 Workaround MSVC ambiguous instanciation
4c8cd13b35 Add explicit ctor for diagonal to sparse conversion
c38c195321 Document how cross behaves on complex numbers
23535ed31c Add unit test for dense = SparseQR::matrixQ
62f21e2d11 Add support for sparse = diagonal
763c833637 Make SparseSelfAdjointView, twists, and SparseQR more evaluator friendly
36643eec0c Add a call_assignment_no_alias_no_transpose shortcut
02db7c9bc6 Inherit operator+= and -= with 'using' kkeyword
53a61a067b Fallback to CMAKE_CXX_COMPILER_VERSION if VS version unknown
95e19be381 Fix compilation of MKL Pardiso support
2a33075aeb std::isnan is c++11 only
23da99492f Add unit-test for Visual2013 ambiguous call to operator=
6441befbb3 Added more checks to test the correctness of the pexp implementation
c3e398d138 Fix overflow when checking SVD accuracy
b0d08869a9 Fix underflow in 3x3 tridiagonalization
18c9d155f3 Fix the fact that float(int) != float(int(float(int)))
71523a2e25 Fix a warning with icc
d9778f3391 Enable VML's pow wrapper on windows (the previous wrapper used the Fortran interface)
5f9630d7f9 bug #923: update support for Intel's VML wrt new evaluation mechanisms
793e4c6d77 bug #923: fix EIGEN_USE_BLAS mode
307c4fc292 Workaround missalignment produced by first_aligned for PacketSize==1 and size==1
bb3a9b4941 Use Ref<> to bypass forceAlignmentIf
476beed7f8 bug #1017: apply Christoph's patch preventing underflows in makeHouseholder
9fc1c92137 Fix isinf unit tests
9c7cfa7dab Update list of main modules
3ccd23efc0 Update coeff-wise quick-reference doc.
0848ba0a6e Fix return nullary return types: it must be based on the PlainObject type instead of the expression type.
b3b3dcad05 Reduce compiler memory consumption for SVD unit tests
ad5fdc7ddd Fix double to Scalar unwanted promotions
40821876ea Fix regression on CompressedStorage::operator=
7043083be4 Use GCC flags in mingw
84aaef93ba Merged in vanhoucke/eigen_vanhoucke (pull request PR-118)
6b33b29f00 Get rid of must_nest_by_value
846b227bb7 Get rid of class internal::nested<> (still have to updated Tensor module)
368ea23406 Fix undefined behavior. When resizing a default-constructed SparseArray, we end up calling memcpy(ptr, 0, 0), which is technically UB and gets caught by static analysis.
4cc0c961f3 Fix undefined behavior.
386d9e5ebd Fix usage of nested versus nested_eval
a5a7b68b76 Fix ambiguous instanciation using clean class-level SFINAE in product_evaluator
6fc5438205 Remove a few deprecated internal expressions
e9edb085c0 Check number of temporaries when applying permutations
6318d53b41 Factorize VERIFY_EVALUATION_COUNT in unit tests
5c84dd5665 Fix permutation/transposiitons products wrt nested_eval
0c8b0e007b Introduce a AliasFreeProduct option for Permutations and Transpositions
3f6aa4cd5d Remove useless specializations of evaluator_traits
4a8888dfbc Improbe compatibility of Transpositions and evaluators
3af4c6c1c9 Make Transpositions use evaluators
82b6ac0864 Enforce eigenvectors to be column-major (for performance reasons)
fad36cc814 Clean implementation of permutation * matrix products.
06036d8bb1 Fix compilation of BDCSVD with DEFAULT_TO_ROWMAJOR
d2db15016b Fix storage order computation in traits<Product>
6a9a29e96f Fixed a compilation warning
bb6acc561e Workaround broken complex*real product on old clang versions
40f326ef2e workaround clang's broken complex division
ab5db86fe9 Fixed merge conflict
ea160a898c Pulled latest updates from trunk
367794e668 Fixed compilation warnings triggered by clang
736a805883 Add unit test for bug #879
9ab8ac5c8b Fix compilation in TensorImagePatch
38874b1651 Fix shadow warnings in Tensor module
e2e66930c6 Fix compilation of alignedvector3 unit test
7baa1ba03e Remove the usage of result_of for DenseBase::redux as discussed in bug #1006
97cbe28829 Remove support of std::binder* in C++11
972a535288 Remove aligned-on-scalar assert and fallback to non vectorized path at runtime (first_aligned already had this runtime guard)
e5b490b654 Fix isfinite/isinf/isnan code snippets
a546be56e0 typo
3946c981b1 Relax tolerance when testing LDLT on singular problems
2212e40e95 Extend VERIFY_IS_APPROX to report the magnitude of the relative difference in case of failure. This will ease identifying strongest failing tests
321a2cbe3d Add missing forward declaration of AlignedBox
2f2a441a4d Fix use of unitialized buffers.
91b64a9c65 Relax aligned-on-scalar assert as in the 3.2 branch
84d103bee8 Enable C++11 math function in a more conservative manner.
916ef52fff merge
d93ba137f2 Introduce EIGEN_PI, get rid of M_PI and acos(-1.0)
9756c7fb4d Make more use of EIGEN_HAS_C99_MATH
93a62265dc fix isinf(complex(inf,NaN)) to return false.
b0d5aaafcc Rename free functions isFinite, isInf, isNaN to be compatible with c++11
25a98be948 bug #80: merge with d_hood branch on adding more coefficient-wise unary array functors
192bce2795 bug #890, add a more general routine to check that two dense object reference to the same data
e6832ce93d Add regression test for bug #890
0b2cbb2bdc bug #897: make umfpack support use Ref<>
feaf76c001 bug #910: add a StandardCompressedFormat option to Ref<SparseMatrix> to enforce standard compressed storage format. If the input is not compressed, then this trigger a copy for a const Ref, and a runtime assert for non-const Ref.
f899aeb301 bug #650: fix sparse * dense wrt noalias and compound assignment
785b9c0127 bug #1003: assert in MapBase if the provided pointer is not aligned on scalar while it is expected to be. Also add a EIGEN_ALIGN8 macro.
0eb06f1391 Enable -Wshadow with clang
64753af3b7 code simplification
cacbc5679d formatting
04665ef9e1 remove redundant dynamic allocations in GMRES
d4c574707e fix some legitimate shadow warnings
f9350e70eb fix unused variable warning
4aba24a1b2 Clean argument names of some functions
302cf8ffe2 Add missing documentation for TriangularViewImpl<MatrixType,Mode,Sparse>
3a4299b245 bug #872: remove usage of deprecated bind1st.
9aef0db992 Skip too large real-world problems for solvers that do not scale (e.g., SimplicialLLT without reordering)
9a2447b0c9 Fix shadow warnings triggered by clang
cd8b996f99 Extend unit test and documentation of SelfAdjointEigenSolver::computeDirect
913a61870d Update utility for experimenting with 3x3 eigenvalues
8f031a3cee bug #997: add missing evaluators for m.lazyProduct(v.homogeneous())
e6c5723dcd Add unit test for m.replicate(...)(index).
274b1f5d7e Fix homogeneous() for 1x1 matrix: in this case, homogeneous follows the storage order guaranteeing that v.transpose().homogeneous() == v.homogeneous().transpose()
cbe3a1a83e Add missing accessors for 1D index based access to Replicate<> expressions.
a7ae628c9f bug #1005: fix regression regarding sparse coeff-wise binary operator that did not trigger a static assertion for mismatched storage
0a9b5d1396 bug #705: fix handling of Lapack potrf return code
d0b7b5cb55 minor documentation fixes
56d4ef7ad6 BiCGSTAB: set default guess to 0, and improve restart mechanism by recomputing the accurate residual.
98a8d43457 Improve unit testing of real-word sparse problem (fix some shortcommings, use VERIFY, etc.)
b685660b22 Do go to full accuracy when testing BiCGSTAB.
8bc26562f4 Do not abort if the folder cannot be openned!
3e7bc8d686 Improve loading of symmetric sparse matrices in MatrixMarketIterator
acc761cf0c Merged in FlorianGeorge/eigen_blaze_fork_2 (pull request PR-60)
ea1190486f Fixed a compilation error triggered by nvcc 7
0e5fed74e7 Worked around some constexpr related bugs in nvcc 7
f13b3d4433 Added missing include files
abec18bae0 Fixed potential compilation error
9df186c140 Added a few more missing EIGEN_DEVICE_FUNC statements
466bcc589e Added a few missing EIGEN_DEVICE_FUNC statements
d457734a19 Avoid calling smart_copy with null pointers.
6b800744ce Moved away from std::async and std::future as the underlying mechnism for the thread pool device. On several platforms, the functions passed to std::async are not scheduled in the order in which they are given to std::async, which leads to massive performance issues in the contraction code. Instead we now have a custom thread pool that ensures that the functions are picked up by the threads in the pool in the order in which they are enqueued in the pool.
48f6b274e2 Fixed compilation error triggered by gcc 4.7
2451679951 Avoid using the cuda memcpy for small tensor slices since the memcpy kernel is very expensive to launch
a81d17b73a Added new version of the TensorIntDiv class optimized for 32 bit signed integers. It saves 1 register on CPU and 2 on GPU.
051d5325cc Abandon blocking size lookup table approach. Not performing as well in real world as in microbenchmark.
ebea530782 bug #1014: More stable direct computation of eigenvalues and -vectors for 3x3 matrices
c88e1abaf3 also uninitialized here, see previous cset
807793ec3b Fix uninitialized var warning. The compiler was clearing the register anyway, so this does not change resulting code
140f85bb99 Check for the macro __ARM_NEON__ (with two underscores at the end) as well as __ARM_NEON. The second macro is correct according to the ARM language extensions specification, but historically the first one has been more common. Some older compilers (e.g. gcc v4.6 on a Beaglebone Black) only define the first, so without this patch NEON isn't enabled.
a852001196 Add regression test for bugs #854 and #1014, and check that the eigenvector matrix is unitary.
e66caf48e8 Make test matrices for eigensolver/selfadjoint even more tricky
ef81730625 Ignore denormal numbers in selfadjoint eigensolver.
a605a1d7df Merged in MattPD/eigen/MattPD/doc-fix-wording-typos-in-templatekeywor-1431363009359 (pull request PR-116)
447e060b81 [Doc] Fix wording / typos in TemplateKeyword.dox
494fa991c3 bug #872: Avoid deprecated binder1st/binder2nd usage by providing custom functors for comparison operators
4a936974a5 bug #1013: fix 2x2 direct eigensolver for identical eiegnvalues
c2107d30ce Extend unit tests of sefladjoint-eigensolver
ebf8ca4fa8 Fix bug #1010: m_isInitialized was improperly updated
dd698e6680 Merged in doug_kwan/eigen (pull request PR-103)
1dded10cb7 Added a double-precision implementation of the exp() function for AVX.
6273aca9b1 small typo
4dd7d0b5dc Merged in mvdyck/eigen-3/mvdyck/doc-multithreading-fix-old-n-eigennbthr-1430750928880 (pull request PR-114)
4b9eddaef8 [Doc] Multi-threading fix OLD: n = Eigen::nbThreads( n ); NEW: n = Eigen::nbThreads( );
28a4c92cbf bug #998: Started fixing doxygen warnings
173b34e9ab bug #999: clarify that behavior of empty AlignedBoxes is undefined, and further improvements in documentation
da2baf685d Regression test for bug #302 (transplanted from 80fd8fab87d7d65cfeb9b1e64d8b42ee4463ab64 ) Changed DenseIndex to Index
8c6a3b5ace Fix trivial warnings in LevenbergMarquardt module and test
de18cd413d Disable posix_memalign on Solaris and SunOS, and allows to by-pass built-in posix_memalign detection rules.
1681a665d9 Extend unit test of Map<,,Stride<>> with stack allocated buffers and less trivial operations.
834f66e9fc Extend unit test of Map<> with stack allocated buffers and less trivial operations.
40258078c6 bug #360: add value_type typedef to DenseBase/SparseMatrixBase
c460af414e Fix bug #1000: Manually inherit assignment operators for MSVC 2013 and later (as required by the standard).
fd1d4bd86c Silenced a few compilation warnings
91359e1d0a Added the ability to generate a tensor from a custom user defined 'generator'. This simplifies the creation of constant tensors initialized using specific regular patterns. Created a gaussian window generator as a first use case.
8838ed39f4 Added support for non-deterministic random number generation on GPU
e7457e419d Merge with dfa991cbae98cde7db5aef5ff1bb4b3d51cc362b
dfa991cbae Make sure that the copy constructor of the evaluator is always called before launching the evaluation of a tensor expression on a cuda device.
dbd12b4cda Make sure that BlockImpl<const SparseMatrix> ctor is called with the right type
d6a8b43b39 Fix typo in the definition of EIGEN_COMP_GNUC_STRICT
e709488361 Silenced a few compilation warnings
10a1f81822 Sped up the assignment of a tensor to a tensor slice, as well as the assigment of a constant slice to a tensor
e5048b5501 Use std::isfinite when available
249c48ba00 Incorporate C++11 check into EIGEN_HAS_C99_MATH macro
0250f4a9f2 Merged default into unary-array-cwise-functors
0339502a4f Only use std::isnan and std::isinf if they are available
43eb2ca6e1 Improved the tensor random number generators:  * Use a mersenne twister whenebver possible instead of the default entropy source since the default one isn't very good at all.  * Added the ability to seed the generators with a time based seed to make them non-deterministic.
016c29f207 Merge with 70bc3b0668f8c2d04ab4347c6b58fca88f4a5b0e
70bc3b0668 Silenced a warning in the tensor code
3220eb2b93 Fixed some compilation warnings
fc2d5b86ce simplify previous changeset: sub-expressions are nested by value
5a3c48e3c6 bug #942: fix dangling references in evaluator of diagonal * sparse products.
3b429b71e6 Fixed compilation warning triggered by gcc 4.7
9c6b82bcd5 Use ptrdiff_t instead of size_t to encode fixed sizes. This silences several clang compilation warnings (transplanted from 4400e4436ac7c5bbd305a03c21aa4bce24ae199b)
4f126b862d Add internal assertions to purely fixed-size DenseStorage, mark optional variables always as unused
da5b98a94d Updated the cxx11_tensor_convolution test to avoid using cxx11 features. This should enable the test to compile with gcc 4.7 and older
d19d09ae6a Updated a regression test to avoid compilation errors when compiling with gcc 4.7
9d7843d0d0 Add internal assertions to DenseStorage constructor
3be9f5c4d7 Constructing a Matrix/Array with implicit transpose could lead to memory leaks. Also reduced code duplication for Matrix/Array constructors
e0cff9ae0d Fix bug #996: fix comparisons to 0 instead of Scalar(0)
5dbe758dc3 Backed out changeset 04c8c5d9efdf1f29901b6f1db266b1caf4853b12
04c8c5d9ef Fix bug #996: fix comparisons to 0 instead of Scalar(0)
0f82399fe9 Pulled latest changes from trunk
761691f18d Make conversion from 0 to Scalar explicit (issue reported by Brad Bell)
5401fbcc50 Improved the blocking strategy to speedup multithreaded tensor contractions.
085aa8e601 Don't use M_PI since it's only guaranteed to be defined in Eigen/Geometry
0eb220c00d add a note on bug #992
d7f51feb07 bug #992: don't select a 3p GEMM path with non-vectorizable scalar types, this hits unsupported paths in symm/triangular products code
0e9753c8df Fix compiler flags on Android/ARM:  - generate position-independent code (PIE), a requirement to run binaries on Android 5.0+ devices;  - correctly handle EIGEN_TEST_FMA + EIGEN_TEST_NEON to pass -mfpu=neon-vfpv4.
1de49ef4c2 Fixed a bug when chipping tensors laid out in row major order.
a1f1e1e51d Fixed the order of 2 #includes
7c18ab921c Pulled latest updates from trunk
15b5adb327 Fix regression in DynamicSparseMatrix and SuperLUSupport wrt recent change on nonZeros/nonZerosEstimate
74e558cfa8 Pulled latest updates from trunk
03a0df2010 Fixed some compilation warnings triggered by pre-cxx11 comoilers
b8b7807269 Fixed some compilation warning triggered by the cxx11 emulation code
383b6dfafe Fixed 2 typos
5861cfb55e Remove unused GenericSparseBlockInnerIteratorImpl code.
3105986e71 bug #875: remove broken SparseMatrixBase::nonZeros and introduce a nonZerosEstimate() method to sparse evaluators for internal uses. Factorize some code in SparseCompressedBase.
39dcd01b0a bug #973: enable alignment of multiples of half-packet size (e.g., Vector6d with AVX)
8481dc21ea bug #986: add support for coefficient-based product with 0 depth.
79b4e6acaf Fix bug #987: wrong alignement guess in diagonal product.
3c38589984 Remove most of the dynamic memory allocations that occured in D&C SVD. Still remains the calls to JacobiSVD and UpperBidiagonalization.
8313fb7df7 Add row/column-wise reverseInPlace feature.
dfb674a25e Make reverseInPlace really work in-place.
20d030f207 Fix vectorization of swap for non trivial expressions
678207e02a Added regression tests for tensor convolutions
68d4afe985 Added support for convolution of tensors laid out in RowMajor mode
f873686602 Added documentation for the convolution operation
73cdeae1d3 Only use blocking sizes LUTs for single-thread products for now
0cbd5ae3cb Correctly detect Android with ndk_build
ae01c05e18 Fix computeProductBlockingSizes with m==0, and add respective unit test.
bd76d837e6 Fix sign of SuperLU::determinant
35d3053d55 Fix regression introduced in 3b169d792df8bcdd9ddbc645ffcfdb0636e585af
731d7b84b4 Sharded a large test
7bd578d11d Change CMake warning to simple message for old Metis versions
3b169d792d Suppress unused variable warning
3238ca6abc Addendum to last patch: k is Index and not int
1efae98fee bug #985: RealQZ failed when either matrix had zero rows or columns (report and patch by Ben Goodrich) Also added a regression test
35722fa022 Made the index type a template parameter of the tensor class instead of encoding it in the options.
71950f02e5 Deleted unnecessary semicolons
58af8bf90c bug #982: Make sure numext::maxi and numext::mini are called correctly, in case Scalar expressions return expression templates.
2adbf6b8ca fix stupid warning with old GCC
41e20248f8 merge
09a5361d1b bug #983: Pass Vector3 by const reference and not by value
266a84558f Optionally build the documentation when building unit tests.
1b4bb20cf1 Merged in d_hood/eigen/sparse-tutorial-doc-fix (pull request PR-107)
eb7e4c2b9c Pass Vector3 type by reference
ad044008da Fix transpose versus adjoint.
79cb875249 merge
7e225b6fa4 Suppress some false negatives in SVD unit test
1b8cc9af43 Slight numerical stability improvement in 2x2 svd
3d59ae0203 Fix hypot(0,0).
4df8b5a75e Avoid making an unecessary copy of the tensor expression when evaluating it on a GPU device
b3343bfdae Fixed the vectorized implementation of the Tensor select() method
ccf290a65c Cleaned up the TensorDevice code a little bit.
d3f7915aeb Pulled latest update from the eigen main codebase
abdbe8562e Fixed the CUDA packet primitives
29eaa2b0f1 Make MatrixBase::is* methods aware of nested_eval.
f42b105f73 Add the possibility to make VERIFY* checks to output a warning instead of abording.
d27968eb7e D&C SVD: directly falls back to JacobiSVD for very small problems (by-pass upper-bidiagonalization)
4472f3e578 Avoid SVD: consider denormalized small numbers as zero when computing the rank of the matrix
83e5b7656b Use M_PI instead of acos(-1) for pi
4bab4790c0 Add \sa tags of isFinite/isInf for each other
4e2b18d909 Update approx. minimum ordering method to push and keep structural empty diagonal elements to the bottom-right part of the matrix
8d9bfb3a7b fix loadMarket wrt Index versus int
a6a628ca6b Added the -= operator to the device classes
e134226a03 Fixed a bug in the handling of packets by the MeanReducer
9ee62fdcd5 Fix random unit test for 32bits systems.
d6b2f300db Fix MSVC compilation: aligned type must be passed by reference
61c45d7cfd Fix comparison warning
d7698c18b7 Split sparse_basic unit test
f329d0908a Improve random number generation for integer and add unit test
2ab4922431 Make html directory before generating output image there
41b717de25 More extensive unit tests for recent array-wise functors
cc0f89eb3b Changed the way lvalue operations are declared in TensorBase: this fixes constness isses that prevented some expressions mixing lvalues and rvalues from compiling.
dc04f12967 use unsigned short instead of uint16_t which doesn't exist in c++98
8878e1c1de Remove ambiguity with recent numext methods isNaN and isInf
596be3cd86 Use std::arg for real numbers when c++11 is used, custom implementation otherwise
e26134ed62 Use std::round when c++11 is used, custom implementation otherwise
e21e29a088 Update cost of arg call to depend on if the scalar is complex or not
447a5a6b01 Fix VML declarations to only be for real/complex as appropriate
f52b78491c Remove packet isNaN, isInf, isFinite
1c78d6f2a6 Add boolean not operator (!) array support
85da0c2281 Remove test of now-missing floor, ceil, round complex implementations
364cfd529d Similar to cset 3589a9c115a892ea3ca5dac74d71a1526764cb38 , also in 2px4 kernel: actual_panel_rows computation should always be resilient to parameters not consistent with the known L1 cache size, see comment
25664afacd Pulled latest updates from trunk
e1d6e6c972 Make cube, inverse and abs2 free-functions
577056aa94 Include stdint.h. Not going for cstdint because it is a C++11 addition. Needed for uint16_t at least, in lookup-table code.
5144f66728 Fixed compilation warning
0fd6d52724 Fixed compilation error with clang
eb6929cb19 fix bug in maxsize calculation, which would cause products of size > 2048 to address the lookup table out of bounds
f218c0181d Fixes the Lvalue computation by actually setting the LvalueBit properly when instantiating tensors of const T. Added a test to check the fix.
fef4e071d7 Rename isinf to isInf
46cf9cda32 Add isfinite array support as isFinite
7b829940d1 Add code snippets for new methods
1d76ceab55 Remove floor, ceil, round for complex numbers
717b7954ce Update cost of coeff-wise arg call
fb68b149cb Rename isnan to isNaN
35c3a8bb84 Update Nexus 5 lookup table from combining now 2 runs of the benchmark, using the analyze-blocking-sizes partition tool. Gives better worst-case performance.
e274607d7f fix compilation with GCC 4.8
151b8b95c6 Fix bug in case where EIGEN_TEST_SPECIFIC_BLOCKING_SIZE is defined but false
02babb9c0f Provide a empirical lookup table for blocking sizes measured on a Nexus 5. Only for float, only for Android on ARM 32bit for now.
3589a9c115 actual_panel_rows computation should always be resilient to parameters not consistent with the known L1 cache size, see comment
1dd3d89818 Fix a unused-var warning
ca5c12587b Polish lookup tables generation
e56aabf205 Refactor computeProductBlockingSizes to make room for the possibility of using lookup tables
b6b88c0808 update perf_monitoring/gemm/changesets.txt
488c15615a organize a little our default cache sizes, and use a saner default L1 outside of x86 (10% faster on Nexus 5)
9f58524cbd merge
1330f8bbd1 bug #973, improve AVX support by enabling vectorization of Vector4i-like types, and enforcing alignement of Vector4f/Vector2d-like types to preserve compatibility with SSE and future Eigen versions that will vectorize them with AVX enabled.
d99ab35f9e Fix internal::random(x,y) for integer types. The previous implementation could return y+1. The new implementation uses rejection sampling to get an unbiased behabior.
8580eb6808 bug #949: add static assertion for incompatible scalar types in dense end-user decompositions.
a9df28c95b SparseMatrix::insert: switch to a fully uncompressed mode if sequential insertion is not possible (otherwise an arbitrary large amount of memory was preallocated in some cases)
5ffe29cb9f Bound pre-allocation to the maximal size representable by StorageIndex and throw bad_alloc if that's not possible.
d73ccd717e Add support for dumping blocking sizes tables
2f6f8bf31c Add missing coeff/coeffRef members to Block<sparse>, and extend unit tests.
f2c3e2b10f Add --only-cubic-sizes option to analyze-blocking-sizes tool
657407227e Fix bug in pdiv<Packet1cd> which swaps 32-bit halves of a pair of doubles instead of swapping the doubles.
f89fcefa79 Add hyperbolic trigonometric functions from std array support
a5e49976f5 Add log10 array support
19a71056ae Allow calling of square(array) in addition to array.square()
31fdd67756 Additional unary coeff-wise functors (isnan, round, arg, e.g.)
fd78874888 Fix compilation of iterative solvers with dense matrices
d4317a85e8 Add typedefs for return types of SparseMatrixBase::selfadjointView
9e885fb766 Add unit tests for CG and sparse-LLT for long int as storage-index
224a1fe4c6 bug #963: make IncompleteLUT compatible with non-default storage index types.
cf9940e17b Make sparse unit-test helpers aware of StorageIndex
39228cb224 deserialization assumed benchmarks in same order, but we shuffle them.
a4f956b1da merge
19bf13aa62 Automatically serialize partial results to disk, reboot, and resume, when timings are getting bad
0ee391863e Avoid undeflow when blocking size are tuned manually.
14a5f135a3 bug #969: workaround abiguous calls to Ref using enable_if.
d23fcc0672 bug #978: add unit test for zero-sized products
87681e508f bug #978: early return for vanishing products
4c8eeeaed6 update gemm changeset list
cd3bbffa73 Improve blocking heuristic: if the lhs fit within L1, then block on the rhs in L1 (allows to keep packed rhs in L1)
eedd5063fd Update gemm performance monitoring tool:  - permit to recompute a subset of changesets  - update changeset list  - add a few more cases
58740ce4c6 Improve product kernel: replace the previous dynamic loop swaping strategy by a more general one: It consists in increasing the actual number of rows of lhs's micro horizontal panel for small depth such that L1 cache is fully exploited.
4ab01f7c21 slightly increase tolerance to clock speed variation
5db2baa573 Make benchmark-blocking-sizes detect changes to clock speed and be resilient to that.
4c8b95d5c5 Rename LSCG to LeastSquaresConjugateGradient
7550107028 Product optimization: implement a dynamic loop-swapping startegy to improve memory accesses to the destination matrix in the case of K-rank-update like products, i.e., for products of the kind: "large x small" * "small x large"
2dc968e453 bug #824: improve accuracy of Quaternion::angularDistance using atan2 instead of acos.
2231b3dece output to cout, not cerr, the actual results
00ea121881 Complete the tool to analyze the efficiency of default sizes.
0196141938 Fixed the optimized AVX implementation of the fast rsqrt function
b0f2b6f297 Updated the tensor type casting code as follow: in the case where TgtRatio < SrcRatio, disable the vectorization of the source expression unless is has direct-access.
d9cb604a5d Disabled the use of aligned memory loads when converting a tensor from float to doubles since alignment can't always be guaranteed.
4fd7f47692 Added an optimized version of rsqrt for SSE and AVX that is used when EIGEN_FAST_MATH is defined.
ae73859a0a Fixed incorrect assertion
131449298f Fixed clang compilation warning
56ea45ff0f Silenced some compilation warnings
bb483313f6 Fixed another batch of compilation warnings
fb53384b0f Improved the default implementation of prsqrt
61409d9449 Silenced one more comilation warning
1a7b84dc75 Silenced a few compilation warnings
37357a310f Fixed compilation warnings
cf1eea11de Fixed compilation warnings
78732186ee Fixed compilation warnings
4250a0cab0 Fixed compilation warnings
a4e37b0617 Reverted the README
306fceccbe Pulled latest updates from trunk
75e7f381c8 Pulled latest updates from trunk
2386fc8528 Added support for 32bit index on a per tensor/tensor expression. This enables us to use 32bit indices to evaluate expressions on GPU faster while keeping the ability to use 64 bit indices to manipulate large tensors on CPU in the same binary.
e1f6a45b14 README.md edited online with Bitbucket
90893bbe18 README.md edited online with Bitbucket
473e6d4c3d README.md edited online with Bitbucket
4369538227 README.md edited online with Bitbucket
99cfbd6e84 README.md edited online with Bitbucket
6466fa63be Reimplement the selection between rotating and non-rotating kernels using templates instead of macros and if()'s. That was needed to fix the build of unit tests on ARM, which I had broken. My bad for not testing earlier.
05089aba75 Switch to truncated casting when converting floating point types to integer. This ensures that vectorized casts are consistent with scalar casts
bf9877a92a Pulled latest updates from trunk
90f4e90f1d Fixed off-by-one error that prevented the evaluation of small tensor expressions from being vectorized
573b377110 Added support for vectorized type casting of tensors
2fc3b484d7 remove trailing comma
33669348c4 Disable Packet2f/2i halfpacket support in NEON. I believe that it was erroneously turned on, since Packet2f/2i intrinsics are unimplemented, and code trying to use halfpackets just fails to compile on NEON, as it tries to use the default implementation of pload/pstore and the types don't match.
f5ff4d826f Fix NEON build flags: in the current NDK, at least with the clang-3.5 toolchain, -mfpu=neon is not enough to activate NEON, since it's incompatible with the default float ABI, and I have to pass -mfloat-abi=softfp (which is what everyone does in practice). In fact, it would be a good idea to pass -mfloat-abi=softfp all the time, regardless of NEON. Also removing the -mcpu=cortex-a8, as 1) it's not needed and 2) if we really wanted to pass a specific -mcpu flag, that would presumably to tune performance for benchmarks, and it would then not really make sense to tune for the very old cortex-a8 (it reflects ARM CPUs from 5 years ago).
b7fc8746e0 Replace a static assert by a runtime one, fixes the build of unit tests on ARM Also safely assert in the non-implemented path that should never be taken in practice, and would return wrong results.
f074bb4b5f Fixed another compilation problem with TensorIntDiv.h
57154fdb32 Can now use the tensor 'reverse' operation as a lvalue
f41b1f1666 Added support for fast reciprocal square root computation.
2fffe69b1b Added missing copy constructor
bcf9bb5c1f Avoid packing rhs multiple-times when blocking on the lhs only.
4ec3f04b3a Make sure that the block size computation is tested by our unit test.
2e9cb06a87 Update changeset list to be checked by perf_monitoring/gemm.
a46061ab7b Make perf_monitoring/gemm script more flexible:   - skip existing dataset   - add a "-up" option to recompute the dataset (see script header)   - allow to specify a filename prefix
a8ad8887bf Implement a more generic blocking-size selection algorithm. See explanations inlines. It performs extremely well on Haswell. The main issue is to reliably and quickly find the actual cache size to be used for our 2nd level of blocking, that is: max(l2,l3/nb_core_sharing_l3)
400becc591 Fix typos in block-size testing code, and set peeling on k to 8.
bffb6bdf45 Made TensorIntDiv.h compile with MSVC
27f3fb2bcc Fixed another clang warning
f8fbb3f9a6 Fixed several compilation warnings reported by clang
8e817b65d0 Silenced a few more compilation warnings generated by nvcc
410070e5ab Added more tests to validate support for tensors laid out in RowMajor order.
1cfd51908c Added support for RowMajor layout to the tensor patch extraction cofde.
eb21a8173e Pulled latest changes from trunk
8afce86e64 Added support for RowMajor layout to the image patch extraction code Speeded up the unsupported_cxx11_tensor_image_patch test and reduced its memory footprint
692136350b So I extensively measured the impact of the offset in this prefetch. I tried offset values from 0 to 128 (on this float* pointer, so implicitly times 4 bytes).
531fa9de77 bug #970: Add EIGEN_DEVICE_FUNC to RValue functions, in case Cuda supports RValue-references.
26275b250a Fix my recent prefetch changes:  - the first prefetch is actually harmful on Haswell with FMA,    but it is the most beneficial on ARM.  - the second prefetch... I was very stupid and multiplied by sizeof(scalar)    and offset of a scalar* pointer. The old offset was 64; pk = 8, so 64=pk*8.    So this effectively restores the older offset. Actually, there were    two prefetches here, one with offset 48 and one with offset 64. I could not    confirm any benefit from this strange 48 offset on either the haswell or    my ARM device.
488874781b Add analyze-blocking-sizes program under bench/ to analyze multiple logs generated by benchmark-blocking-sizes.
052b6b40f1 Fix two trivial warnings
ecbf2a6656 log1p is defined only for real Scalars in C++11
6af6cf0c2e I can reproduce any problems that justified this hack. However it makes builds fail in C++11 mode.
3cf642baa3 Fix compilation of unit tests disabling assertion cheking
458cf91cd9 Add benchmark-blocking-sizes.cpp to bench/ per mailing list discussion.
03ec601ff7 Initial version of a small script to help tracking performance regressions
333b497383 update bench_gemm
2da1594750 Fix doc of Ref<>
01b8440579 With C++11 Matrix<float> + Matrix<complex<float>> does not even compile
3594451ee0 Remove EIGEN_TEST_C++0x option and let EIGEN_TEST_CXX11 adds the -std=c++11 flag
b192e29eae In C++11 destructors do not throw by default (fix CommaInitializer unit test)
ab41652d81 Pulled latest changes from trunk
7765039f1c Marked the CUDA packet primitives as EIGEN_DEVICE_FUNC since they'll end up being executed on the GPU device.
a66f5fc2fd Fix regression with C++11 support of lambda: now internal::result_of falls back to std::result_of in C++11.
ece6b440f9 Fix a C++11 compilation issue in unit test
1b7e12847d Fix some calls to result_of on binary functors as unary ones.
0f4dd15dfc Declare const some const variables
92ceb02c6d Pulle latest updates from trunk
110fb90250 Improved the documentations
829dddd0fd Add support for C++11 result_of/lambdas
db05f2d01e rotating kernel: avoid compiling anything outside of ARM
0ed00d5438 remove a newly introduced redundant typedef - sorry.
9bd8a4bab5 bug #955 - Implement a rotating kernel alternative in the 3px4 gebp path
ee27d50633 Fixed template parameter.
73a24de424 merge
63eb0f6fe6 Clean a bit computeProductBlockingSizes (use Index type, remove CEIL macro)
fc5c3e85e2 Fix bug #961: eigen-doc.tgz included part of itself.
4a3e6c8be1 bug #958 - Allow testing specific blocking sizes
c7bb1e8ea8 Fix a regression when using OpenMP, and fix bug #714: the number of threads might be lower than the number of requested ones
168ceb271e Really use zero guess in ConjugateGradients::solve as documented and expected for consistency with other methods.
8fdcaded5e merge
c43154bbc5 Check for no-reallocation in SparseMatrix::insert (bug #974)
1ce0178363 Improve efficiency of SparseMatrix::insert/coeffRef for sequential outer-index insertion strategies (bug #974)
3dca4a1efc Update manual wrt new LSCG solver.
05274219a7 Add a CG-based solver for rectangular least-square problems (bug #975).
2aa09e6b4e Fix asm comments in 1px1 kernel
5d2fd64a1a Fixed compilation error when compiling with gcc4.7
f64b4480af Add missing copyright notices
eae8e27b7d Add a benchmark-default-sizes action to benchmark-blocking-sizes.cpp
37a93c4263 New scoring functor to select the pivot. This is can be useful for non-floating point scalars, where choosing the biggest element is generally not the best choice.
ccc1277a42 must also disable complex<double> when disabling double vectorization
f839099512 Work around an ICE in Clang 3.5 in the iOS toolchain with double NEON intrinsics.
9930e9583b Improve analyze-blocking-sizes, and in particular give it a evaluate-defaults tool that shows the efficiency of Eigen's default blocking sizes choices, using a previously computed table from benchmark-blocking-sizes.
1ec0f4fadf HalfPacket also needed to be disabled for double, on ARMv8.
3109f0e74e Add SSE vectorization of Quaternion::conjugate. Significant speed-up when combined with products like q1*q2.conjugate()
ef09ce4552 Fix for TensorIO for Fixed sized Tensors.
3a4b6827b4 Merged eigen/eigen into default
31e2ffe82c Replaced POSIX random() by internal::random
73dd95e7b0 Use @CMAKE_MAKE_PROGRAM@ instead of make in buildtests.sh
682196e9fc Fixed MPRealSupport
33f40b2883 Cygwin does not like weak linking either.
0f82a1d7b7 bug #967: Automatically add cxx11 suffix when building in C++11 mode
9aee1e300a Increase unit-test L1 cache size to ensure we are doing at least 2 peeled loop within product kernel.
b10cd3afd2 Re-enbale detection of min/max parentheses protection, and re-enable mpreal_support unit test.
4084dce038 Added CMake support for Tensor module. CMake now installs CXX11 Tensor module like the rest of the unsupported modules
548b781380 Fix bug #945: workaround MSVC warning
6f4adc9e94 Add missing install directives for arch/CUDA
371d3bef36 Workaround dead store warnings in unit tests.
63464754ef Add an internal assertion in makeCompressed to catch a possible risk of null-pointer access.
eb563049f7 Remove some dead stores.
dc7e6acc05 Fix possible usage of a null pointer in CholmodSupport
d4eda01488 Big 957, workaround MSVC/ICC compilation issue
24d65ac0b0 Removed redundant typedef which confused old gcc versions.
20cac72b82 Packet must be passed by const reference and not by value to avoid alignment issue.
36c9d08274 Pulled latest updates from trunk
f77054f43c Silenced compilation warning
1d3b64d32b Added support for tensor concatenation as lvalue
00f048d44f Added support for tensor concatenation as lvalue
97a36ecba4 Suppress some remaining Index conversion warnings
159fb181c2 Disable __m128* wrappers when compiling with AVX and -fabi-version=4
91ab2489dd Fix compilation with GCC/AVX (workaround __m128 and __m256 being the same type with default ABI)
9daf8eba6f Fix compilation of Cholmod*(matrix) ctor
3373c903b3 Fix compilation of int*complex with gcc
9f49f00feb Extend sparse-determinant unitests
f0b1b1df9b Fix SparseLU::signDeterminant() method, and add a SparseLU::determinant() method.
8768ff3c31 Add PermutationMatrix::determinant method.
64b29e06b9 bug #956: Fixed bug in move constructors of DenseStorage which caused "moved-from" objects to be in an invalid state.
1c0e8bcf09 Fix unused variable warning.
69fa405096 Update circulant custom expression example
0f464d9d87 bug #897: fix regression in BiCGSTAB(mat) ctor (an all other iterative solvers). Add respective regression unit test.
470d26d580 Remove some useless typedefs
4dded73227 bug #914: fix compiler detection on windows (grafted from 77af14fb6213b833cc37a01e2a8c7eb762db9af8 )
953d5ccfd5 Doc: explain how to free allocated memory in SparseMAtrix
98604576d1 Merged in chtz/eigen-indexconversion (pull request PR-92)
45cbb0bbb1 The usage of DenseIndex is deprecated, so let's replace DenseIndex by Index
cc641aabb7 Remove deprecated usage of expr::Index.
aa6c516ec1 Fix many long to int conversion warnings:  - fix usage of Index (API) versus StorageIndex (when multiple indexes are stored)  - use StorageIndex(val) when the input has already been check  - use internal::convert_index<StorageIndex>(val) when val is potentially unsafe (directly comes from user input)
bd511dde9d bug #952: Missing \endcode made doxygen fail to build ColPivHouseholderQR
e2cfddf75f Pulled latest updates from trunk
0927801a84 Optimized version of the sin(), exp(), log() and sqrt() function for AVX
e972b55ec4 bug #953 - Fix prefetches in 3px4 product kernel
fc202bab39 Index refactoring: StorageIndex must be used for storage only (and locally when it make sense). In all other cases use the global Index type.
fe51319980 Merge Index-refactoring branch with default, fix PastixSupport, remove some useless typedefs
0918c51e60 merge Tensor module within Eigen/unsupported and update gemv BLAS wrapper
409547a0c8 update EIGEN_FAST_MATH documentation
4470c99975 Added a test to validate tensor casting on cuda devices
6620aaa4b3 Silenced a few compilation warnings generated by nvcc
f669f5656a Marked a few functions as EIGEN_DEVICE_FUNC to enable the use of tensors in cuda kernels.
029d236ceb merge
fe25f3b8e3 FMA has been wrongly disabled
ceb4c9c10b Pulled latest changes from trunk
cc5d7ff523 Added vectorized implementation of the exponential function for ARM/NEON
d771295554 remove useless include
fefec723aa Fixed compilation error triggered when trying to vectorize a non vectorizable cuda kernel.
780b2422e2 Silenced the last batch of compilation warnings triggered by gcc 4.8
c21e45fbc5 Fixed a few more compilation warnings
057cfd2f02 Silenced more compilation warnings
114e863f08 Silcenced a few compilation warnings
410895a7e4 Silenced several compilation warnings
4716c2c666 Fixed compilation error
91fe3a3004 Removed a debug printf statement.
c3f3580b8f Fix bug #733: step by step solving is not a good example for solveWithGuess
deecff97ed typo
c6e8caf090 Allows Lower|Upper as a template argument of CG and MINRES: in this case the full matrix will be considered.
d10d6a40dd bug #897: Update unsupported iterative solvers based on IterativeSolverBased.
87629cd639 bug #897: makes iterative sparse solvers use a Ref<SparseMatrix> instead of a SparseMatrix pointer. This fixes usage of iterative solvers with a Map<SparseMatrix>.
bde98df03f merge
d4ec48575e Make Block<SparseMatrix> inherit SparseCompressedBase in the case of an inner-panels and fix valuePtr() innerIndexPtr()
554aa9b31d Add failtests for Ref<SparseMatrix>
3af29caae8 Cleaning and add more unit tests for Ref<SparseMatrix> and Map<SparseMatrix>
f2ff8c091e Add a Ref<SparseMatrix> specialization.
f3be317614 Add a Map<SparseMatrix> specialization.
08081f8293 Make SparseTranspose inherit SparseCompressBase when possible
7838fda82c Add a SparseCompressedBase class providing (un)compressed accessors (like data()/*Stride() for dense matrices), and a CompressedAccessBit flag (similar to DirectAccessBit for dense matrices).
3ba6647398 Fixed the cxx11_meta test
01f7918788 Pulled latest fixes
b50ffaddf2 merge
74e460b995 Fix symmetric product
c03c73c9b7 Fix clang compilation
668518aed6 Fix non initialized entries and comparison of very small numbers
c739102ef9 Pulled the latest changes from the trunk
2559fa9b0f Fixed compilation error in the tensor broadcasting test
dcb2a8b184 Added the EIGEN_HAS_CONSTEXPR define Gate the tensor index list code based on the value of EIGEN_HAS_CONSTEXPR
a8f2c6eec7 Using numext::pow instead of std::pow in poly_eval function.
b1eca55328 Use Ref<> to ensure that both x and b in Ax=b are compatible with Umfpack/SuperLU expectations
ebdf6a2dbb SPQR: fix default threshold value
f64045a060 Silenced a few more compilation warnings
590f4b0aa3 Silenced some compilation warnings
5ef95fabee bug #936, patch 3/3: Properly detect FMA support on ARM (requires VFPv4) and use it instead of MLA when available, because it's both more accurate, and faster.
0f21613698 bug #936, patch 2/3: Remove EIGEN_VECTORIZE_FMA, was redundant with EIGEN_HAS_SINGLE_INSTRUCTION_MADD
340b8afb14 bug #936, patch 1.5/3: rename _FUSED_ macros to _SINGLE_INSTRUCTION_, because this is what they are about. "Fused" means "no intermediate rounding between the mul and the add, only one rounding at the end". Instead, what we are concerned about here is whether a temporary register is needed, i.e. whether the MUL and ADD are separate instructions. Concretely, on ARM NEON, a single-instruction mul-add is always available: VMLA. But a true fused mul-add is only available on VFPv4: VFMA.
9f99f61e69 bug #936, patch 1/3: some cleanup and renaming for consistency.
759bd92a85 bug #935: Add asm comments in GEBP kernels to work around a bug in both GCC and Clang on ARM/NEON, whereby they spill registers, severely harming performance. The reason why the asm comments make a difference is that they prevent the compiler from reordering code across these boundaries, which has the effect of extending the lifetime of local variables and increasing register pressure on this register-tight code.
f1092d2f73 bug #941: fix accuracy issue in ColPivHouseholderQR, do not stop decomposition on a small pivot
9d82f7e30d Supernodes was disabled.
e896c0ade7 Marked the contraction operation as read only, since its result can't be assigned.
5a6ea4edf6 Added more tests to cover tensor reductions
a727a2c4ed bug #933: RealSchur, do not consider the input matrix norm to check negligible sub-diag entries. This also makes this test consistent with the complex and self-adjoint cases.
9dfdbd7e56 mproved the performance of tensor reductions that preserve the inner most dimension(s).
46fc881e4a Added a few benchmarks for the tensor code
c6eb84aabc Enable vectorization of transposeInPlace for PacketSize x PacketSize matrices
e1f1091fde Add support for dense ?= diagonal
b9d314ae19 bug #329: fix typo
14f537c296 gcc doesn't consider that    template<typename OtherDerived> TensorStridingOp& operator = (const OtherDerived& other) provides a valid assignment operator for the striding operation, and therefore refuses to compile code like: result.stride(foo) = source.stride(bar);
641e824c56 Added cube() operation
b5124e7cfd Created many additional tests
54e3633b43 Updated the list of include files
f697df7237 Improved support for RowMajor tensors Misc fixes and API cleanups.
6559d09c60 Ensured that each thread has it's own copy of the TensorEvaluator: this avoid race conditions when the evaluator calls a non thread safe functor, eg when generating random numbers.
8a382aa119 Improved the resizing of tensors
703c526355 Misc improvements
4cdf3fe427 Misc fixes
0feff6e987 Expanded the functionality of index lists
cd679f2c47 Fix doc: setConstant does not exist for SparseMatrix.
1ac8600126 Fixed the return type of coefficient wise operations. For example, the abs function returns a floating point value when called on a complex input.
378bdfb7f0 Added missing apis to the TensorMap class
0526dc1bb4 Added missing apis to the tensor class
1a36590e84 Fixed the printing of RowMajor tensors
7e0b6c56b4 Added ability to initialize a tensor using an initializer list
b12dd1ae3c Misc improvements for fixed size tensors
71676eaddd Added support for RowMajor inputs to the contraction code.
0a0ab6dd15 Increased the functionality of the tensor devices
5692723c58 Improved the performance of the contraction code on CUDA
8f4b8d204b Improved the performance of tensor reductions Added the ability to generate random numbers following a normal distribution Created a test to validate the ability to generate random numbers.
3bd2b41b2e Created a test for tensor type casting
4928ea1212 Added ability to reverse the order of the coefficients in a tensor
b00fe1590d Added ability to swap the layout of a tensor
c94174b4fe Improved tensor references
91dd53e54d Created some documentation
279786e987 Fix missing evaluator in outer-product
ae4644cc68 bug #907, ARM64: workaround ICE in xcode/clang
36f7c1337f bug #907, ARM64: workaround vreinterpretq_u64_* not defined in xcode/clang
63974bcb88 Big 907: workaround some missing intrinsics in current NDK's gcc version (ARM64)
79f4a59ed9 bug #907: fix compilation with ARM64
9f98650d0a Ensured that contractions that can be reduced to a matrix vector product work correctly even when the input coefficients aren't aligned.
db5b0741b5 Fix bug #925: typo in MatLab versions of middleRows
f5f6e2c6f4 bug #921: fix utilization of bitwise operation on enums in first_aligned
25c7d9164f bug #920: fix MSVC 2015 compilation issues
b8d9eaa19b Use true compile time "if" for Transform::makeAffine
f806c23012 Fix false negatives in geo_transformations unit tests
99501a2c4c Fix wrong negative in nullary unit test when extended precision is used (FPU).
7dad5f797e bug #821: workaround MSVC 2013 issue with using Base::Base::operator=
dcad508986 At least CMAKE 2.8.4 is required for WORKING_DIRECTORY option in add_test
608733415a Free functions should only be declared as static in separate compilation units (grafted from d85abc89c5782eebe2b0f2c920d6c495b4dcc091 )
57ec399ec9 Remove unused fortran files
56ca44ad1a Use f2c generated code instead of the original fortran code, except for dotc/dotu.
e8cdbedefb bug #877, bug #572: Introduce a global Index typedef. Rename Sparse*::Index to StorageIndex, make Dense*::StorageIndex an alias to DenseIndex. Overall this commit gets rid of all Index conversion warnings.
6ccf97f3e6 Fix GL support wrt evaluators
433bce5c3a UmfPack support: fix redundant evaluation/copies when calling compute() and support generic expressions as input
775f7e5fbb bug #697: make sure empty classes are at the end in case of multiple inheritence
a819fa148d Fix MSVC compilation issue
1a8dc85142 bug #897: fix UmfPack usage with mapped sparse matrices
4974d1d2b4 Fix bug #911: m_extractedDataAreDirty was not initialized in UmfPackLU
e2f3e4e4aa Document non-const SparseMatrix::diagonal() method.
b26e697182 Make SparseMatrix::coeff() returns a const reference and add a non const version of SparseMatrix::diagonal()
b1f9f603a0 Simplify return type of diagonal(Index) (and ease compiler job)
5384e89147 Disable MatrixBase::bdcSvd with CUDA (just like MatrixBase::jacobiSvd
8518ba0bbc Fix Hyperplane::Through(a,b,c) when points are aligned or identical. We use the stratgey as in Quaternion::setFromTwoVectors.
80cae358b0 Adds a modified f2c-generated C implmentation for BLAS.
0efaff9b3b Fix out-of-bounds write
41a20994cc In simplicial cholesky: avoid deep copy of the input matrix is this later can be used readily
a910a7466e Fix inner iterator type
4371911861 Remove useless and non standard numext::atanh2 function.
5fc4ce6449 bug #876: remove usage of atanh2 in matrix power
77294047d6 bug #876, matrix_log_compute_2x2: directly use logp1 instead of atanh2
bea36925db bug #876: implement a portable log1p function
7f7a712062 Optimize Simplicial Cholesky when NaturalOrdering is used.
30c849669d Fix dynamic allocation in JacobiSVD (regression)
e0a8615b94 Merged in infinitei/eigen (pull request PR-91)
8efd9142b3 Merged in infinitei/eigen-opengl-fixes (pull request PR-90)
80ed5bd90c Workaround various "returning reference to temporary" warnings.
eb3695d2fc Added cmake uninstall target. This adds a cmake command make uninstall Running make uninstall removes the files installed by running make install
48db34a7b9 Adding missing OPENGL_LIBRARIES for openglsupport test. Also adding OpenGL include directories as a better pratice even though these are system include directories in most systems.
da584912b6 Fix memory pre-allocation when permuting inner vectors of a sparse matrix.
509e4ddc02 Added reduction packet primitives for CUDA
b33cf92878 Fixed the evaluation of expressions involving tensors of 2 or 3 elements on CUDA devices.
1d3c8306f8 Fixed compilation errors with clang.
ec785b0180 Added support for extraction of patches from images
eeabf7975e Optimized broadcasting
c2d1074932 Added support for static list of indices
722916e19d bug #903: clean swap API regarding extra enable_if parameters, and add failtests for swap
cb37f818ca Fixed a compilation error triggered by some operations on fixed sized tensors
9a06a71627 Fixed a test
c6fefe5d8e Big 853: replace enable_if in Ref<> ctor by static assertions and add failtests for Ref<>
ee06f78679 Introduce unified macros to identify compiler, OS, and architecture. They are all defined in util/Macros.h and prefixed with EIGEN_COMP_, EIGEN_OS_, and EIGEN_ARCH_ respectively.
9ea09179b5 Fixed the return type of the coefficient-wise tensor operations.
b1789c112b Improved handling of 1d tensors
2dde63499c Generalized the matrix vector product code.
7f2c6ed2fa Fixed a compilation warning
c5a3777666 Regression test for (invalid) bug #900. We should make it possible somehow to increase the problem size depending on the available RAM.
0833b82efd Run sparse_basic unit tests also for rectangular matrices. TriangularView with UnitDiag does not work properly yet (bug #901)
85c3389b28 Fixed a test
67fcf47ecb Merged from trunk
fcecafde3a Fixed a compilation error with clang
d62bfe73a9 Use the proper index type in the padding code
bc99c5f7db fixed some potential alignment issues.
1946cc4478 Added missing packet primitives for CUDA.
5e62427e22 Use the proper index type
4ec2f07a5b Fixed bug in SparseBlock which caused a segfault in sparse_extra_3 test
883168ed94 Make select CUDA compatible (comparison operators aren't yet, so no test case yet)
e5f134006b EIGEN_UNUSED_VARIABLE works better than casting to void. Make this also usable from CUDA code
d2fc597d5b Removed deprecated header (unsupported/Eigen/BDCSVD is included in Eigen/SVD now)
3d25b1f5b8 Split up some test cases
acecb7b09f Fixed include in bdcsvd.cpp
21c0a2ce0c Move D&C SVD to official SVD module.
debc97821c Added support for tensor references
e2e7ba9f85 bug #898: add inline hint to const_cast_ptr
bd2d330b25 Temporary workaround for bug #875: Let TriangularView<Sparse>::nonZeros() return nonZeros() of the nested expression
79225db0b6 Merged in kmargar/eigen (pull request PR-87)
c426054767 BDCSVD: fix CMake install (missing separator).
1fa793cb97 Removed weird self assignment.
04ffb9956e Replace TEST_SET_BUT_UNUSED_VARIABLE by already defined EIGEN_UNUSED_VARIABLE
94ed7c81e6 Bug #896: Swap order of checking __VSX__/__ALTIVEC__
fcb3573d17 Merged eigen/eigen into default
fae4fd7a26 Added ARMv8 support
cf09c5f687 Prevent CUDA `calling a __host__ function from a __host__ __device__ function is not allowed` error.
b508619392 working 64-bit support in PacketMath.h, Complex.h needed
0f65f2762d add EIGEN_TEST_NEON64, but it's a dummy, AArch64 implies NEON support so extra CXXFLAGS are needed
87524922dc check for __ARM_NEON instead as it's defined in arm64 as well
a303b6a733 bug #670: add unit test for mapped input in sparse solver.
fe57b2f963 bug #701: workaround (min) and (max) blocking ADL by introducing numext::mini and numext::maxi internal functions and a EIGEN_NOT_A_MACRO macro.
c12b7896d0 bug #766: Check minimum CUDA version
973e6a035f bug #718: Introduce a compilation error when using the wrong InnerIterator type with a SparseVector
84aaa03182 Addendum to bug #859: pexp(NaN) for double did not return NaN, also, plog(NaN) did not return NaN. psqrt(NaN) and psqrt(-1) shall return NaN if EIGEN_FAST_MATH==0
aa5f79206f Fix bug #859: pexp(NaN) returned Inf instead of NaN
b4a9b3f496 Add unit tests for Rotation2D's inverse(), operator*, slerp, and fix regression wrt explicit ctor change
d04f23260d Fix bug #894: the sign of LDLT was not re-initialized at each call of compute()
8838b0a1ff Fix SparseQR::rank for a completely empty matrix.
f786897e4b Added access to the unerlying raw data of a tnsor slice/chip whenever possible
7acd38d19e Created some benchmarks for the tensor code
b50e5bc816 merge
a370b1f2e2 Fix SparseLU::absDeterminant and add respective unit test
a13bc22204 Ignore automalically imported lapack source files
4b7c3abbea Fix D&C SVD wrt zero matrices
feacfa5f83 Fix JacobiSVD wrt undeR/overflow by doing scaling prior to QR preconditioning
8472e697ca Add lapack interface to JacobiSVD and BDCSVD
65af852b54 Silenced one last warning
ae697b471c Silenced a few compilation warnings Generalized a TensorMap constructor
94e47798f4 Fixed the return types of unary and binary expressions to properly handle the case where it is different from the input type (e.g. abs(complex<float>))
d853adffdb Avoid calling get_future() more than once on a given promise.
880e72c130 quieted more g++ warnings of the form: warning: typedef XXX locally defined but not used [-Wunused-local-typedefs]
bfdd9f3ac9 Made the blocking computation aware of the l3 cache Also optimized the blocking parameters to take into account the number of threads used for a computation
c566cfe2ba Make SVD unit test even more tough
dba55041ab Added support for promises Started to improve multithreaded contractions
fd1aaf4772 merge
c806009453 Extend svd unit tests to stress problems with duplicated singular values.
2cc41dbe83 D&C SVD: fix some numerical issues by truly skipping deflated singular values when computing them
c26e8a1af3 D&C SVD: fix deflation of repeated singular values, fix sorting of singular values, fix case of complete deflation
0ec1fc9e11 bug #891: Determine sizeof(void*) via CMAKE variable instead of test program
99d75235a9 Misc improvements and cleanups
4c70b0a762 Added support for patch extraction
d3f52debc6 Make cuda_basic test compile again by adding lots of EIGEN_DEVICE_FUNC. Although the test passes now, there might still be some missing.
0219f8aed4 Added ability to print a tensor using an iostream.
2ed1838aeb Added support for tensor chips
4b36c3591f Fixed the tensor shuffling test
a991f94c0e Fixed the thread pool test
498b7eed25 Rewrote the TensorBase::random method to support the generation of random number on gpu.
767424af18 Improved the functors defined for standard reductions Added a functor to encapsulate the generation of random numbers on cpu and gpu.
a80e17cfe8 Remove unused and dangerous CompressedStorage::Map function
349c2c9235 bug #367: fix double copies in atWithInsertion, and add respective unit-test
48d537f59f Fix indentation
538c059aa4 bug #887: fix CompressedStorage::reallocate wrt memory leaks
a48b82eece Add a scoped_array helper class to handle locally allocated/used arrays
ccd70ba123 Various numerical fixes in D&C SVD: I cannot make it fail with double, but still need to tune for single precision, and carefully test with duplicated singular values
44beee9d68 Removed dead code
0a07ac574e Added support for the *= and /* operators to TensorBase
6c047d398d Fixed a comment
4b886e6b39 bug #889: fix protected typedef
5741349294 bug #882: fix various const-correctness issues with *View classes.
118b1113d9 Workaround MSVC issue.
503c176d8e Fix missing outer() member in DynamicSparseMatrix
dbdd8b0883 D&C SVD: add scaling to avoid overflow, fix handling of fixed size matrices
d44d432baa Re-enable products with triangular views of sparse matrices: we simply have to treat them as a sparse matrix.
893bfcf95f bug #887: use ei_declare_aligned_stack_constructed_variable instead of manual new[]/delete[] pairs in AMD and Paralellizer
fb53ff1eda Fix SparseLU regarding uncompressed inputs and avoid manual new/delete calls.
7a17639953 Extend unit tests to check uncompressed sparse inputs in sparse solvers
bbce6fa65d define EIGEN_VECTORIZE_CUDA when compiling with nvcc
95a430a2ca Vector primitives for CUDA
152f3218ac Improved contraction test
af2e5995e2 Improved support for CUDA devices. Improved contractions on GPU
1269392822 Created the IndexPair type to store pair of tensor indices. CUDA doesn't support std::pair so we can't use them when targeting GPUs. Improved the performance on tensor contractions
b7271dffb5 Generalized the gebp apis
8b2afe33a1 Fixes for the forced evaluation of tensor expressions More tests
5cc23199be More tests to validate the const-correctness of the tensor code.
7caaf6453b Added support for tensor reductions and concatenations
1c236f4c9a Added tests for tensors of const values and tensors of stringswwq::
1fa6fe2abd template keyword not allowed before non-template function call
9d3c69952b fixed to make big-endian VSX work as well
5180bb5e47 Add missing default ctor in Rotation2D
0187504912 Avoid `unneeded-internal-declaration' warning
6d26deb894 Missing outerStride in AlignedVector3 resulted in infinite recursion
81517eebc1 Missing explicit
12d59465cb bug #884: Copy constructor of Ref shall never malloc, constructing from other RefBase shall only malloc if the memory layout is incompatible.
e404841235 make sure that regex does not match cmake
15c946338f Related to bug #880: Accept make as well a gmake when searching the MakeCommand. And don't include \n in match expression
56a0bbbbee Fix compilation with GCC
842e31cf5c Let KroneckerProduct exploits the recently introduced generic InnerIterator class.
abd3502e9e Introduce a generic InnerIterator classes compatible with evaluators.
76c3cf6949 Re-enable -Wshorten-64-to-32 compilation flag.
bc34ee3365 Using Index type instead of hard coded int type to prevent potential implicit integer conversion.
9a04cd307c Added implicit integer conversion by using explicit integer type conversion.  Adding assert to catch overflow.
f0a62c90bc Avoid comparisons between different index types.
2946992ad4 Using StorageIndexType for loop assigning initial permutation. Adding assert for index overflow.
821ff0ecfb Using Index instead of hard coded int type to prevent potential implicit integer conversion
2c4cace56c Using Index instead of hard coded int type to prevent potential implicit integer conversion
8a502233d8 Correcting the ReturnType in traits<KroneckerProduct<>> to include the correct Index type. Fixed mixup of types Rhs::Index and Lhs:Index in various loop variables. Added explicit type conversion for arithmetic expressions which may return a wider type.
b2755edcdd Replaced hard coded int types with Index types preventing implicit integer conversions.
d1ef3c3546 Changed Diagonal::index() to return an Index type instead of int to prevent possible implicit conversion from long to int. Added inline keyword to member methods.
edaefeb978 Using Kernel::Index type instead of int to prevent possible implicit conversion from long to int.
3bd31e21b5 Fixed compiler warning on implicit integer conversion by separating index type for matrix and permutation matrix which may not be equal.
75e269c77b Fixed warning on implicit integer conversion in test case code by using type VectorXd::Index instead of int.
74cde0c925 Add missing return derived() in ArrayBase::operator=
ce2035af86 New doc page on implementing a new expression class.
6d0f0b8cec add VSX identifier
4ba8aa1482 Fix bug #884: No malloc for zero-sized matrices or for Ref without temporaries
27d6b4daf9 Tridiagonalization::diagonal() and ::subDiagonal() did not work. Added unit-test
446001ef51 Fix nested_eval<Product<> > which wrongly returned a Product<> expression
13cbc751c9 bug #880: automatically preserves buildtool flags when modifying DartConfiguration.tcl file.
421feea3b2 member_redux constructor is explicit too. Renamed some typedefs for more consistency.
7817bc19a4 Removed FIXME, as it is actually necessary.
eb13ada3aa Renamed CwiseInverseReturnType to InverseReturnType for ArrayBase::inverse()
36448c9e28 Make constructors explicit if they could lead to unintended implicit conversion
de0d8a010e Suppress stupid gcc-4.4 warning
72569f17ec bug #882: add const-correctness failtests for CwiseUnaryView, TriangularView, and SelfAdjointView.
3878e6f170 Add a true ctest unit test for failtests
ff46ec0f24 bug #881: make SparseMatrixBase::isApprox(SparseMatrixBase) exploits sparse computations instead of converting the operands to dense matrices.
ae514ddfe5 bug #880: manually edit the DartConfiguration.tcl file to get it working with cmake 3.0.x
f9d6d3780f bug #879: fix compilation of tri1=mat*tri2 by copying tri2 into a full temporary.
abba11bdcf Many improvements in Divide&Conquer SVD: - Fix many numerical issues, in particular regarding deflation. - Add heavy debugging output to help track numerical issues (there are still fews) - Make use of Eiegn's apply-inplane-rotation feature.
d9e0336a78 Merged in kmargar/eigen (pull request PR-84)
333905b0c2 Fix typos in docs for IterativeLinearSolvers module
5fa69422a2 Fix copy-and-paste typo in SolveWithGuess assignment This fixes compilation of code snippets in BiCGSTAB docs.
de38ff2499 prefetch are noops on VSX, actually disable the prefetch trait
60e093a9dc Merged eigen/eigen into default
56408504e4 fix compile error on big endian altivec
974fe38ca3 prefetch are noops on VSX
c0205ca4af VSX supports vec_div, implement where appropriate (float/doubles)
10f8aabb61 VSX port passes packetmath_[1-5] tests!
80de35b6c5 Remove double return statement in PlainObjectBase::_set()
60663a510a 32-bit floats/ints, 64-bit doubles pass packetmath tests, complex 32/64-bit remaining
03dd4dd91a Unify unit test for BDC and Jacobi SVD. This reveals some numerical issues in BDCSVD.
0a18eecab3 bug #100: add support for explicit scalar to Array conversion (as enable implicit conversion is much more tricky)
7b044c0ead Added tag before-evaluators for changeset 9452eb38f812194a676edc1b9eb9d08b7bc0f297
755e77266f Fix SparseQR for row-major inputs.
07c5500d70 Introduce a compilation error when using the wrong InnerIterator type.
e70506dd8f Fix inner-stride of AlignedVector3
2ae20d558b Update KroneckerProduct wrt evaluator changes
62bce6e5e6 Make MatrixFunction use nested_eval instead of nested
060e835ee9 Add evaluator for the experimental AlignedVector3
0ca43f7e9a Remove deprecated code not used by evaluators
8b3be4907d log2(int) must be inlined.
0bf5894861 workaround one more shadowing issue with MSVC
e44d78dab3 workaround ambiguous call
c2f66c65aa workaround MSVC compilation issue (shadow issue)
125619146b workaround weird MSVC compilation issue: a typdedef in a base class shadows a template parameter of a derived class
341ae8665d avoid division by 0
fc23e93707 Add a portable log2 function for integers
0f0580b97c Remove not needed template keyword.
486ca277a0 Workaround MSVC ICE
10a79ca3a3 Merged latest updates from the Eigen trunk.
466d6d41c6 Avoid a potential risk of recursive definition using traits to get he scalar type
8514179aa3 Fix traits<Quaternion>::IsAligned when using evaluators
0403d49006 Fix inverse unit test making sure we try to invert an invertible matrix
c83e01f2d6 Favor column major storage for inner products
26db954776 Re-enable aliasing checks when using evaluators
fda680f9cf Adapt changeset 51b3f558bb76c11149fc64971db786798f1b692c  to evaluators: (Fix bug #822: outer products needed linear access, and add respective unit tests)
dfc54e1bbf Fix /= when using evaluator as in changeset 2d90484450f3934db3f5db39ef37967fb9444263
749b56f6af merge with default branch
af9c9f7706 Fix comparison to block size
9452eb38f8 Make UpperBidiagonalization accept row-major matrices (bug #769) * Give temporary workspace the same storage order as original matrix * Take storage order into account when determining inner stride   of rows and columns * Change one test to use a row-major matrix.
470aa15c35 First time it compiles, but fails to pass the tests.
188a13f9fe Fix compilation of coeff(Index) on sub-inner-panels
efdff15749 Fixed a typo in the contraction code
dacd39ea76 Exploit sparse structure in naiveU and naiveV when updating them.
74db22455a Misc fixes.
b23556bbbd Oops, a block size of 1 is not very useful, set it to 48 as in HouseholderQR
1abe4ed14c Created more regression tests
d43f737b4a Added support for evaluation of tensor shuffling operations as lvalues
f50548e86a Added missing tensor copy constructors. As a result it is now possible to declare and initialize a tensor on the same line, as in:   Tensor<bla> T = A + B;  or   Tensor<bla> T(A.reshape(new_shape));
15bad3670b Apply Householder U and V in-place.
8846aa6d1b Optimization: enable cache-efficient application of HouseholderSequence.
80993b95d3 Disable a test which had never worked without evalautors
b24fe22b1a Improved the performance of the tensor convolution code by a factor of about 4.
c82dc227f1 Cleaning in BDCSVD (formating, handling of transpose case, remove some for loops)
a96f3d629c Clean bdcsvd
47829e2d16 Disable solve_ret_val like mechanism with evaluator enabled
1f398dfc82 Factorize *SVD::solve to SVDBase
b3a0365429 merge with default branch
eb39296028 Reafctoring in D&C SVD unsupported module: clean and merge the SVDBase class to Eigen/SVD, rm copy/pasted JacobiSVD.h file
72c4f8ca8f Disable a few unit tests in unsupported
b121eecf60 Fix regression is sparse-sparse product
8754341848 Fix remaining garbage during a merge.
daad9585a3 Fix Kronecker product in legacy mode.
b051bbd64f Make unsupport sparse solvers use SparseSolverBase
b3d63b4db2 Add evaluator for DynamicSparseMatrix
1c4b69c5fb Factorize solveWithGuess in IterativeSolverBase
8a74ce922c Make IncompleteLUT use SparseSolverBase.
863b7362bc Fix usage of m_isInitialized in SparseLU and Pastix support.
1bf3b34849 Fix regression in sparse-sparse product
f9580a3473 Fix Cholmod support without evaluators
fbb53b6cbb Fix sparse matrix times sparse vector.
85c7659574 Refactoring of sparse solvers through a SparseSolverBase class and usage of the Solve<> expression. Introduce a SolveWithGuess expression on top of Solve.
bc065c75d2 Implement the missing bits to make Solve compatible with sparse rhs
e6cc24cbd6 Fix compilation in legacy mode
0369db12af bug #871: fix compilation on ARM/Neon regarding __has_builtin usage
7ff266e3ce Initial VSX commit
b4a709520d merge
c1d0f15bde Enable evaluators by default
124d12a915 merge default branch
f29dbec321 undef Unsable macro
01f3ca3e8d Merged in georg_drenkhahn/eigen/georg_d/fix_warn_minmax (pull request PR-81)
aec3d90ca6 Optimization in sparse-sparse matrix products for small ones
460662cbcc Fix SparseVector::coeffRef(i,j) and add missing SparseVector::insert*Unordered
1ed9e2d004 In sparse matrix product, enable sorted insertion when doing two transposition is defenitely not optimal.
e49e84d979 Added missing STL include of <list> in main.h Removed duplicated include of <sstream> Added comments on the background of min/max macro definitions and STL header includes
c3e4080474 Allow LevenbergMarquardt to work with non-standard types.
2959045f2f Optimized the tensor padding code.
36fffe48f7 Misc api improvements and cleanups
fb5c1e9097 Optimized and cleaned up the tensor morphing code
0ba490cf80 Fixed CMakeLists.txt files to prevent CMake 3.0.0 warnings about deprecated LOCATION target property. Small whitespace cleanup in CMakelLists.txt.
25a3e65a68 In SparseQR, calling factorize() without analyzePattern() was broken.
be3477e206 bug #857: workaround MSVC compilation issue.
2e50289ba3 bug #861: enable posix_memalign with PGI
b49ef99617 Do not apply the preconditioner before starting the iterations as this might destroy a very good initial guess.
9c0aa81fbf bug #854: fix numerical issue in SelfAdjointEigenSolver::computeDirect for 3x3 matrices. The tolerance to detect stable cross products was too optimistic. Add respective unit tests.
3d298da269 Added support for broadcasting
eeadc06e83 EIGEN_EXCEPTIONS was not defined in test/main.h, therefore all VERIFY_RAISES_ASSERT tests were not enabled
4403800e11 Merged in vladimir_ch/eigen-1/vladimir_ch/fix-uninitialized-variable-warning-in-sp-1408513228472 (pull request PR-77)
9062f74d13 Merged in traversaro/eigen/traversaro/findeigen3cmake-add-reading-hints-of-eig-1407426517521 (pull request PR-76)
6a3423da80 Fix uninitialized variable warning in SparseQR
9ac3c821ea Improved the speed of convolutions when running on cuda devices
33c702c79f Added support for fast integer divisions by a constant Sped up tensor slicing by a factor of 3 by using these fast integer divisions.
756292f8aa Fixed compilation errors
8c8db49331 Added a few regression tests
eeb43f9e2b Added support for padding, stridding, and shuffling
16047c8d4a Pulled in the latest changes from the Eigen trunk
916ef48846 Added ability to get the nth element from an abstract array type.
f1d8c13dbc Fixed misc typos.
9faad2932f Added missing apis.
f8fad09301 Updated the convolution and contraction evaluators to follow the new EvalSubExprsIfNeeded apu.
72e7529708 Fixed a typo.
1aa2bf8274 Support for in place evaluation of expressions containing slicing and reshaping operations
b1892ab14d Added suppor for in place evaluation to simple tensor expressions. Use mempy to speedup tensor copies whenever possible.
439feca139 Reworked the TensorExecutor code to support in place evaluation.
e6d55c081b Fix bug #852: define Traits type in general_matrix_matrix_product when EIGEN_USE_BLAS is defined
57f71a5552 Update bench_norm utility
5e890d3ad7 Improve further the accuracy of JacobiSVD wrt under/overflow while improving speed for small matrices (hypot is very slow).
2d90484450 mat/=scalar was transformed into mat*=(1/scalar) thus laking accuracy. This was also inconsistent with mat = mat/scalar.
84a7ead059 Add one more regression test for bug #791.
d6236d3b26 Fix bug #791: infinite loop in JacobiSVD in the presence of NaN.
921a645481 ArrayWrapper and MatrixWrapper classes should not be nested by reference.
4b678b96eb fix for MKL_BLAS not defined in MKL 11.2
51b3f558bb Fix bug #822: outer products needed linear access, and add respective unit tests
6162672dc5 Runtime alignement is not possible if AlignedOnScalar is not true (e.g., for complex<double>)
e54898f53e bug #619: workaround MSVC 2008 implementing std::abs for int only on WINCE
fafc829424 bug #804: copy group__TopicUnalignedArrayAssert.html to TopicUnalignedArrayAssert.html as the second is linked to by old Eigen versions.
abb33258ce Doc: difference between array and matrix cosine etc (bug #830)
25bceefb4e Replace asm by __asm__ (bug #873)
60314beb38 Update reference value for testNistLanczos1 test
280661e67d Remove LM::sqrt_() member function in favor of a shortcut for sqrt(epsilon())
ff9bfc45f7 relax some LM unit tests
42e27d41a2 Fix hypot() and hypotNorm() wrt NaN and INF values.
a44a343f03 Fix blueNorm wrt NaN/INF.
18fbe7e7d4 Fix stableNorm() with respect to NaN and inf, and add respective unit tests. blueNorm() and hypotNorm() are broken wrt to NaN/inf
3eb5253ca1 Optimization: "matrix<complex> * real" did not call the special path and the real was converted to a complex. Add respective unit test to avoid future regression.
305aa1f9c5 Add examples for hnormalized and homogenous (fix bug #846)
50085d2c28 FindEigen3.cmake: Add reading hints of Eigen directory location from environment variables EIGEN3_ROOT and EIGEN3_ROOT_DIR .
e51da9c3a8 Memory allocated on the stack is freed at the function exit, so reduce iteration count to avoid stack overflow
953ec08089 Correct GMRES: * Fix error in calculation of residual at restart. * Use relative residual as stopping criterion. * Improve documentation.
3e59163a24 Fix bug #850: workaround MSVC 2008 weird compilation bug
4dd55a2958 Optimize reduxions for Homogeneous
f25338f4d7 Fix nesting of Homogenous evaluator
51357a6622 Fix geo_orthomethods unit test for complexes
107bb308c3 Fix various small issues detected by gcc
c2ff44cbf3 Make assignment from general EigenBase object call evaluator, and support dense X= sparse
c53f88297c Fix more typos in Ref.h (doc).
6f58a41097 Fix typos in Ref.h (doc).
2a3c3c49a1 Fix numerous nested versus nested_eval shortcomings
fc13b37c55 Make cross product uses nested/nested_eval
db76193bc7 Fix typo in PermutationMatrix (doc).
647622281e The tensor assignment code now resizes the destination tensor as needed.
d79516660c Make loadMarket use the sparse-matrix index type, thus enabling loading huge matrices.
26d2cdefd4 Fix 4x4 inverse via SSE for submatrices
db183ca7b3 Make minimal changes to make homogenous compatible with evaluators
702a3c17db Make Transform exposes sizes: Dim+1 x Dim+1 for projective transform, and Dim x Dim+1 for all others
5f5a8d97c0 Re-enable main unit tests which are now compiling and running fine with evaluators
bae2e3327b Call product_generic_impl by default, and remove lot of boilerplate code
cd0ff253ec Make permutation compatible with sparse matrices
929e77192c Various minor fixes
ba694ce8cf add missing delete operator overloads
2116e261fb Made sure that the data stored in fixed sized tensor is aligned.
5f3d542b8a Fix typo in MatrixExponential noticed by Markos.
a0a87410d0 Fix bug #61: gemm was broken since we changed the blocking order
2c625ec9ba Simplification of some Altivec constants, reuse existing constants and avoid loading from RAM esp in the case of p16uc_COMPLEX_TRANSPOSE*
1f371e78e6 Added a few tests to validate the behavior of the assignment operator.
f7bb7ee3f3 Fixed the assignment operator of the Tensor and TensorMap classes.
d1e9f39a9a Ambiguous call fixes  for clang.
7f15f27a9e Workaround ambiguous call of init1 with MSVC.
922694a2d1 Extend fixed-size ctor unit test and fix conversion warning.
baa77ffe38 Fix max sizes at compile time of DiagonalWrapper
a8283e0ed2 Define EIGEN_TRY, EIGEN_CATCH, EIGEN_THROW as suggested by Moritz Klammer. Make it possible to run unit-tests with exceptions disabled via EIGEN_TEST_NO_EXCEPTIONS flag. Enhanced ctorleak unit-test
4aac87251f Re-enable a couple of unit tests with evaluators.
6daa6a0d16 Refactor TriangularView to handle both dense and sparse objects. Introduce a glu_shape<S1,S2> helper to assemble sparse/dense shapes with triagular/seladjoint views.
2a251ffab0 Implement evaluator for sparse-selfadjoint products
9b729f93a1 Resizing is done by call_assignment_noalias, so no need to perform it when dealing with aliasing.
946b99dd5c Extend qr unit test
50eef6dfc3 Compilation fixes
62f332fc04 Make sure we evaluate into temporaries matching evaluator storage order requirements
3eba5e1101 Implement evaluator for sparse outer products
529e6cb552 Applied changes suggested by Christoph Hertzberg to c'tor leak fix.
36e6c9064f bug #770: fix out of bounds access
a325d1cb1e merge with default branch
da62eb22e4 bug #843: fix jacobisvd for complexes and extend respective unit test to chack with random tricky matrices
77af4cc3c9 bug #397: add a warning for 64 to 32 bit integer conversion and fix many of these warning by splitting the index type used for storage and as size/coefficient indexes in PermutationMatrix and Transpositions.
5e72151ca5 bug #842: warn user about MPFR++ being under the GPL
2cd38a6634 merge
84ad8ce7e3 Fix bug #770: workaround thread safety in mpreal
40b74411e4 bug #842: update mpreal copy (fix compilation with clang)
14c8793a70 Remove unnecessary <bench/BenchTimer.h>include
424c3ad266 bug #842: fix specialized product for mpreal
a53f2b0e43 bug #838: add unit test for fill-in in sparse outer product and fix abusive fill-in.
cd0b433540 Regression test for bug #714. Note that the bug only occurs on some compilers and is not fixed yet
338d2ec42b bug #826: fix is_convertible for MSVC and add minimalistic unit test for is_convertible
0a945687b7 Added HasDiv=1 to Altivec PacketMath.h, now vectorization_logic test passes. Added comments to the constants, indicative of the actual values
a0d1aac6c5 Extend unit test of dense triangular solvers
2bdb3b1afd Extend dense*sparse product unit tests
3c7686630d merge with default branch
4f440b8123 Test vectorization logic for int
a20e2462bf Fix bug #838: detect outer products from either the lhs or rhs
c0f76ce2cf Fix bug #838: fix dense * sparse and sparse * dense outer products
df604e4f49 Fix inner iterator on an outer-vector
5f1eedd655 Merged in complexzeros/eigen (pull request PR-69)
296cb40161 merge with default branch
40bb98e76a Added primitives to compare tensor dimensions
9b7a6f0122 Added tests for tensor slicing
ffd3654f67 Vectorized the evaluation of expressions involving tensor slices.
b1169ce40c Fixed index that would cause crash with two point, two derivative interpolation. Added static_cast.
d1460d9278 stride must be DenseIndex not int
cf7cf7b490 Backed out of changeset 6089:f27f55bee3efc2cafd01cb07d3faadf7eb490f66  Unfortunately this breaks things at other places
f27f55bee3 Make MatrixBase::makeHouseholder resize its output vector if it is zero
e955725ff1 Fix GMRES: Initialize essential Householder vector with correct dimension. Add check if initial guess is already a sufficient approximation.
25b2f6624d Improved the speed of slicing operations.
23bb592a2d Fix unit test when using 80bits FPU
75d19bb087 Determine version of Metis library. Apparently, at least version 5.x is needed for Eigen/MetisSupport. Marked some internal variables as advanced
62f948c56a Generalize unit testing of pscatter
da1e356306 Merged in jdh8/eigen (pull request PR-72)
54fbbe7b4e Add unit test for bug #839.
ea0906dfd8 Improved evaluation of tensor expressions when used as rvalues
cc1bacea5b Improved the efficiency of the tensor evaluation code on thread pools and gpus.
c285fda7f4 Extended the functionality of the TensorDeviceType classes
1967e7f2f3 Fix bug #839
77d57cd681 bug #808: fix implicit conversions from int/longint to float/double
e3557e8dd2 bug #808: use double instead of float for the increasing size ratio in CompressedStorage::resize (grafted from 0e0ae400843cd9a459e5306d4d6560dbea759a42 )
5214466b7a Fix implicit long to int conversions in blas interface
5c4733f6e4 Fix bug #809: unused variable warning
b47ef1431f Fix many long to int implicit conversions
e25e674852 bug #837: Always re-align the result of EIGEN_ALLOCA.
4b6b76463a Merged in jdh8/eigen (pull request PR-71)
904509fbb6 Move using std::abs from Eigen's namespace to function scope.
0dfb73d46a Fix LDLT with semi-definite complex matrices: owing to round-off errors, the diagonal was not real. Also exploit the fact that the diagonal is real in the rest of LDLT
7fa83e7374 Fix LDLT with semi-definite complex matrices: owing to round-off errors, the diagonal was not real. Also exploit the fact that the diagonal is real in the rest of LDLT
7d53633e05 Added support for tensor slicing
bc072c5cba Added support for tensor slicing
47981c5925 Added support for tensor slicing
1eefa5a841 Find benchmark opponents also in /usr/lib64
e4b6979334 Find OpenBLAS more aggressively.  This made a difference on Fedora 20
b9ee880f07 chmod -x Eigen/src/Core/GenericPacketMath.h
2bf58316ee Fix dox at internal::tridiagonal_qr_step
85777fc131 Mark internal namespace as \internal
58687aa5e6 Avoid memory leak when constructor of user-defined type throws exception.
339f14b8d1 bug #826: document caveats in 1x1 and 2x1 constructors.
d4cc1bdc7f Make the ordering method of SimplicialL[D]LT user configurable.
8e19027130 bug #826: fix 64 to 32 bits conversion warning when calling Matrix<int,1,1>(long)
ef4a86d6b8 Fix trivial warnings in MPRealSupport
68eafc10b1 Add note to EIGEN_DONT_PARALLELIZE into preprocessor documentation page (requested in IRC)
1cb71a8782 bug #138: Make building of internal documentation configurable via cmake flag
ac1bb3e5b3 bug #770: fix out of bounds access
4860da2de1 Percent "Eigen" in dox to prevent linking if not referring to the Eigen namespace
7a915f6846 Move Doxygen-only stuff to *.dox
1a817d3b70 Document internal namespace
8ee38d2db6 Fix dox for namespaces
f365380496 Fix regression introduced by 3117036b80075390dbc46f60aa0d595e5a44661b : Matrix<Scalar,1,1>(int) did not compile if Scalar is not constructible from int. Now this falls back to the (Index size) constructor.
3a9f9faada Fix unused typedef warning
998455a570 LDLT is not rank-revealing, so we should not attempt to use the biggest diagonal elements as thresholds.
0a8e4712d1 Do not attempt to include <intrin.h> on Windows CE
61b88d2feb merge with default branch
bf334b8ae5 Fix regeression in bicgstab: the threshold used to detect the need for a restart was much too large.
8f4cdbbc8f Fix typo in dense * diagonal evaluator.
7390af91b6 Implement evaluators for sparse*dense products
1e6f53e070 Use DiagonalShape as the storage kind of DiagonalBase<>.
6f846ef9c6 Split StorageKind promotion into two helpers: one for products, and one for coefficient-wise operations.
324e7e8fc9 Removed the deprecated EIGEN2_SUPPORT, as previously announced. A compilation error is raised, if this compile-switch is defined. The documentation references to the corresponding pages from Eigen3.2 now. Also, the Eigen2 testsuite has been removed.
3c63446507 Update copyright dates
746d2db6ed Implement evaluators for sparse * sparse with auto pruning.
441f97b2df Implement evaluators for sparse * sparse products
0ad7a644df Implement nonZeros() for Transpose<sparse>
7ffd55c980 Do not bypass aliasing in sparse e assignments
75e574275c Fix bug #836: extend SparseQR to support more columns than rows.
c401167712 Fix double constructions of the nested CwiseBinaryOp evaluator in sparse*diagonal product iterator.
73e686c6a4 Implement evaluators for sparse times diagonal products.
ae039dde13 Add a NoPreferredStorageOrderBit flag for expression having no preferred storage order. It is currently only used in Product.
f0648f8860 Implement evaluator for sparse views.
08c615f1e4 IndexArray is now a typename.
54607665ab Fix inverse evaluator
d73ee84d37 Disabled HIDE_SCOPE_NAMES (default doxygen setting). This might help to avoid API confusions as in bug #830.
a7bd4c455a Update sparse reduxions and sparse-vectors to evaluators.
b868bfb84a Make operator=(EigenBase<>) uses the new assignment mechanism and introduce a generic EigenBase to EigenBase assignment kind based on the previous evalTo mechanism.
3b19b466a7 Generalize static assertions on matching sizes to avoid the need for SizeAtCompileTime
199ac3f2e7 Implement evaluators for sparse coeff-wise views
e3ba5329ff Implement evaluators for sparse Block.
17f119689e implement evaluator for SparseVector
f9496d341f Merged.
e745a450de Removed tabs and fixed indentation.
e86adc87e9 Fixed type mixing issues.
b59f045c07 Using LU decomposition with complete pivoting for better accuracy.
755be9016a Workaround clang error introduced by 3117036b80075390dbc46f60aa0d595e5a44661b : "template argument for non-type template parameter is treated as function type 'bool (bool)'"
957c2c291b Changed uint to unsigned int.
15c2c083e8 Additional unit tests for bug #826 by Gael
3117036b80 Fix bug #826: Allow initialization of 1x1 Arrays/Matrices by passing a value.
1c3843bf86 Fix bug #729: Use alloca if it is defined
0ddde223e9 Fixed typos
3849cc65ee Implement binaryop and transpose evaluators for sparse matrices
5dbbe6b400 Added Spline interpolation with derivatives.
ec0a8b2e6d rm conflict
7fa87a8b12 Backport changes from old to new expression engines
b29b81a1f4 merge with default branch
47585c8ab2 merge
c415b627a7 Started to move the SparseCore module to evaluators: implemented assignment and cwise-unary evaluator
78bb808337 1- Introduce sub-evaluator types for unary, binary, product, and map expressions to ease specializing them. 2- Remove a lot of code which should not be there with evaluators, in particular coeff/packet methods implemented in the expressions.
963d338922 Fix bug #827: improve accuracy of quaternion to angle-axis conversion
98ef44fe55 Add assertion and warning on the requirements of SparseQR and COLAMDOrdering
1fdef63d1f Explain how to export sparse linear problems in matrix-market format.
de150b1e14 Add documentation and very simple test for array atan(), part 2 (files I forget in the previous commit).
55453c51e8 Add documentation and very simple test for array atan().
eb49100de9 Add component-wise atan() function (see bug #80).
afb1a8c124 fixed warning: -Wunused-local-typedefs
c06ec0f464 Fix Jacobi preconditioner with zero diagonal entries
95ecd582a3 Update decompositions tables
b0979b8598 Merged in vladimir_ch/eigen/vladimir_ch/bug-796-fix-eigen3config.cmake (pull request PR-67)
774c3c1e0a Created additional unit tests for the tensor code and improved existing ones.
f80c8e17eb Silenced a compilation warning
38ab7e6ed0 Reworked the expression evaluation mechanism in order to make it possible to efficiently compute convolutions and contractions in the future:  * The scheduling of computation is moved out the the assignment code and into a new TensorExecutor class  * The assignment itself is now a regular node on the expression tree  * The expression evaluators start by recursively evaluating all their subexpressions if needed
1ee4e2db15 Change variable names in Eigen3Config.cmake to EIGEN3_*
aa664eabb9 Fixed a few compilation errors.
4304c73542 Pulled latest updates from the Eigen main trunk.
925fb6b937 TensorEval are now typed on the device: this will make it possible to use partial template specialization to optimize the strategy of each evaluator for each device type. Started work on partial evaluations.
a77458a8ff Fixes compilation errors triggered when compiling the tensor contraction code with cxx11 enabled.
a669052f12 Improved support for rvalues in tensor expressions.
36a2b2e9dc Prevent the generation of unlaunchable cuda kernels when compiling in debug mode.
2859a31ac8 Fixed compilation error
d13711a363 Pulled latest changes from the main branch
fe102248ac Fixed the threadpool test
8c8ae2d819 Fixed a typo
29aebf96e6 Created the pblend packet primitive and implemented it using SSE and AVX instructions.
79085e08e9 Fixed a typo
a961d72e65 Added support for convolution and reshaping of tensors.
abc1ca0af1 The BLAS interface is complete.
c331ce6b8e Fix bug #738: use the "current" version of cmake project directories to ease the inclusion of Eigen within other projects.
ed37c44765 Enable LinearAccessBit in Block expression for inner-panels
8998f4099e Created additional tests for the tensor code.
96cb58fa3b unsupported/TensorSymmetry: factor out completely from Tensor module
ea99433523 unsupported/TensorSymmetry: make symgroup construction autodetect number of indices
cee62018fc unsupported/CXX11/Core: allow gen_numeric_list to have a starting point
58cfac9a12 unsupported/ C++11 workarounds: don't use hack for libc++ if not required
45515779d3 Fix compilation for CXX11/Tensor module if unsupported is not in include path
6fa6cdd2b9 Added support for tensor contractions Updated expression evaluation mechanism to also compute the size of the tensor result Misc fixes and improvements.
0f1e321dd4 Fic bug #819: include path of details.h
789674809f Fix test: EigenSolver on 1x1 matrix with NaN sets info to NumericalIssue. This was changed in 3c66bb136bf2adcb9d73d3d66850a8b907bc9264 .
eb56461ac2 Fix doc'n of FullPivLU re permutation matrices (bug #815).
736267cf6b Added support for additional tensor operations:   * comparison (<, <=, ==, !=, ...)   * selection   * nullary ops such as random or constant generation   * misc unary ops such as log(), exp(), or a user defined unaryExpr() Cleaned up the code a little.
7402fea0a8 Vectorized the evaluation of tensor expression (using SSE, AVX, NEON, ...) Added the ability to parallelize the evaluation of a tensor expression over multiple cpu cores. Added the ability to offload the evaluation of a tensor expression to a GPU.
e3ab46b8c9 AsciiQuickReference: added .real(), .imag() (transplanted from 11462c1a291bdb9c0ac27db25fef364e51632484 )
c794099e69 fixed AsciiQuickReference typo: LinSpace -> LinSpaced (transplanted from e66781905586e3c438031597fae07306d47fea60 )
aa524604b7 README.md edited online with Bitbucket
c55c5763fe PolynomialSolver: fix typo.
eda79321be PolynomialSolver: fix bugs related to linear polynomials.
df92649379 PolynomialSolver: add missing constructors.
0f94607947 PolynomialSolver: test template constructor in test suite.
edebb15275 PolynomialSolver: add a test to reveal a bug.
9aa3dc4e21 Merged in benoitsteiner/eigen-fixes (pull request PR-62)
881aab14b4 Made it possible to call the assignment operator on an Eigen::Block from a CUDA kernel.
0320f7e3a7 Added support for fixed sized tensors. Improved support for tensor expressions.
5811e68dd1 Disabled unused warnings in Eigen2-tests
9217de8bf2 Missed to remove IACA_END in previous commit
84cb1d72b8 Removed IACA-defines This caused redefinition warnings if IACA headers were included from elsewhere. For a clean solution we should define our own EIGEN_IACA_* macros
56de8d3816 Fixed unused variable warnings
b4beba72a2 Fix bug #807: Missing scalar type cast in umeyama()
b5e3d76aa5 Fixed bug #806: Missing scalar type cast in Quaternion::setFromTwoVectors()
f56d452c7e Enable atv in Blaze Benchmark
af79b158a1 Use trans(X) instead of X.transpose() in Blaze Benchmark
0b7f95a03f Fix typo in SparseMatrix assert.
d67aa1549b Add missing add_subdirectory directive
07986189b7 Fix bug #803: avoid char* to int* conversion
c0f2cb016e Extended support for Tensors:   * Added ability to map a region of the memory to a tensor   * Added basic support for unary and binary coefficient wise expressions, such as addition or square root   * Provided an emulation layer to make it possible to compile the code with compilers (such as nvcc) that don't support cxx11.
2fb64578aa Add a small benchmark to compare dense solvers for small to large problems.
ecf1f1d589 Make gdb pretty printer Python3-compatible (bug #800).
e7ef26fa44 TRMM: Make sure we have enough memory in rhs block to enforce alignment.
450d0c3de0 Make sure that calls to broadcast4 are 16 bytes aligned
f9d2f3903e Product kernel: skip loop on columns if there is no remaining rows
6f64b0b487 Fix sizeof unit test
c20e3641de Fix for mixed products
2dbfd83424 Implement pbroadcast4 on altivec
7388fdf560 pbroadcast4/2 assume aligned memory
c9788d55b9 Disable 3pX4 kernel on Altivec: despite this platform has 32 registers, this version seems significantly slower.
ae4d9434e2 Add unit test for pbroadcast4/2
4def7b1fa5 Fix ptranspose overload prototypes for NEON
c79bd4b64b Minor optimizations in product kernel: - use pbroadcast4 (helpful when AVX is not available) - process all remaining rows at once (significant speedup for small matrices)
cf7eaed38d Avoid blocking-size mismatch in unit tests calling Eigen's blas interface.
3d8d0f6269 Enable vectorization of pack_rhs with a column-major RHS. Rename and generalize Kernel<*> to PacketBlock<*,N>.
b0e19db1cf Enable fused madd for Altivec
8d85ce88e1 Implement ptranspose on altivec and fix pgather/pscatter
4eb92e5647 Fixed the NEON implementation of predux_max<Packet4i>.
ccb4dec719 Created a NEON version of the ptranspose packet primitives
82b09fcb91 Add Altivec implementation of pgather/pscatter (not tested)
ecbd67a15a Fix EIGEN_MAKE_UNALIGNED_ARRAY_ASSERT macro
934ce93886 merge with default branch
5c5231ab71 Workaround gcc's default ABI not being able to distinghish between vector types of different sizes.
2606abed53 Fix 128bit packet size assumptions in unit tests.
a7d20038df Fix alignment assertion.
3454b4e5f1 Fix calls to lazy products (lazy product does not like matrices with 0 length)
94684721bd Smarter block size computation
1388f4f9fd Fix typo (was working with clang\!)
6d665d446b Fixes for fixed sizes and non vectorizable types
2c3c95990d merge
6d6df90c9a Implemented the pgather/pscatter packet primitives for the arm/NEON architecture
c354bd47f7 Make our gemm bench a little more powerful.
9777a5ca60 Various minor fixes in BTL
9746396d1b Optimize AVX pset1 for complexes and ploaddup
e5d0cb54a5 Fix typo in Reductions tutorial.
1dd015fea6 Reduce block sizes in unit tests.
45a4aad572 add unit tests for ploadquad and predux4, and split packetmath unit test wrt real/complex
e1d461352e Extend mixingtype unit test to check transposed cases.
11fbdcbc38 Fix and optimize mixed products
0fa8290366 Optimize ploaddup for AVX
d936ddc3d1 Fallback to lazy products for very small ones.
de8336a9bc Enable alloca on MAC OSX
ffc995c9e4 Implement evaluator<ReturnByValue>. All supported tests pass apart from Sparse and Geometry, except test in adjoint_4 that a = a.transpose() raises an assert.
d5a795f673 New gebp kernel handling up to 3 packets x 4 register-level blocks. Huge speeup on Haswell. This changeset also introduce new vector functions: ploadquad and predux4.
b30706bd5c Fix typo in Inverse.h
e0dbb68c2f Check IMKL version for compatibility with Eigen
59f5f155c2 Port products with permutation matrices to evaluators.
20c840be15 Merged in benoitsteiner/eigen-fixes/nvcc_fixes (pull request PR-56)
1afd50e0f3 Fixed a typo in CXX11Meta.h
3c66bb136b bug #793: detect NaN and INF in EigenSolver instead of aborting with an assert.
7098e6d976 Add isfinite overload for complexes.
feaf7c7e6d Optimized SSE unaligned loads and stores when compiling a 64bit target with a recent version of gcc (ie gcc 4.8).
d567e3b893 Merged in benoitsteiner/eigen-fixes (pull request PR-55)
148acf8e4f bug #790: fix overflow in real_2x2_jacobi_svd
0587db8bf5 bug #793: fix overflow in EigenSolver and add respective regression unit test
7903d3f27b Updated the compiler flags to enable nvcc to work with clang.
a803ff18a9 Fixed a typo in cuda_basic.cu
91288e9bf9 Add include LevenbergMarquardt in CMakeLists.txt.
fbd5eac7cf Merged in benoitsteiner/eigen-fixes/nvcc_fixes (pull request PR-53)
1b333c89c9 Updated my previous fix to avoid introducing a compilation warning on ARM platforms.
a1fcf599fa Silenced a compilation warning produced by nvcc.
a91a7a1964 doc: Add references to Cholesky methods in SelfAdjointView.
3b2321e3ab Updated the geo_parametrizedline_2 test for AVX.
b446ff037e Deleted some dead code.
5afcb4965c Remove out-dated comment in cholesky test.
096af59799 Fix bug #784: Assert if assigning a product to a triangularView does not match the size.
8044b00a7f bug #782: Workaround for gcc <= 4.4 compilation error on the NEON PacketMath code.
aecc78325a Pulled the latest updates from the eigen trunk.
1cb8de1250 Make some actual verifications inside the autodiff unit test
56c4851323 Fixed typo: symmretric -> symmetric
ceae5b4145 Fix lapack build
ec65e6648c bug #775: propagate generator when workingaround cmake bug #9220
d992634fbc Fix bug #776: it seems that mingw does not support weak linking
5e8622477b Rename the vector() factories defined in blas/common.h into make_vector() to prevent a possible name conflict with std::vector.
1221dd90aa Fix no newline at end of file warning
93870d95b7 BTL: add blaze
f603823ef3 BTL: fix warnings and extend to 5k matrices, update GotoBlas to OpenBlas, etc.
8d0441052e Finally, prefetching seems to help getting more stable performance
82c8163067 Enable repetition in mixing type unit test
1c0728043a Workaround alignment warnings
e497a27ddc Optimize gebp kernel: 1 - increase peeling level along the depth dimention (+5% for large matrices, i.e., >1000) 2 - improve pipelining when dealing with latest rows of the lhs
ad59ade116 Vectorized the loop peeling of the inner loop of the block-panel matrix multiplication code. This speeds up the multiplication of matrices which size is not a multiple of the packet size.
39bfbd43f0 Properly align the input data to prevent false failures of the packetmath.cpp test.
10aa14592a Add a mechanism to recursively access to half-size packet types
8d2bb2c20d merge with default branch
c94fde118a Enable vectorization of gemv for PacketSize>4 through unaligned loads (still better than no vectorization)
51e85c936d Merged latest changes from parent.
8a94cb3edd Implemented the SSE version of the gather and scatter packet primitives.
7f3162f707 Implemented the AVX version of the gather and scatter packet primitives.
ee86679096 Introduced pscatter/pgather packet primitives. They will be used to optimize the loop peeling code of the block-panel matrix multiplication kernel.
58fe2fc2b2 enforce the use of vfmadd231ps for pmadd (gcc and clang stupidely generates the other fmadd variants plus some register moves...)
729363114f Fixed compilation error when FMA instructions are enabled.
1697d7a179 Silenced "unused variable" warnings when compiling with FMA.
3e1fe8e416 Vectorized the packing of a col-major matrix used as the right hand side argument in a matrix-matrix product when AVX instructions are used. No vectorization takes place when SSE instructions are used, however this doesn't seem to impact performance.
b776458ccb Vectorized the packing of a row-major matrix used as the left hand side argument in a matrix-matrix product.
c4902a3d01 Implemented the AVX version of the ptranspose packet primitive.
7d73c7f18b Change abi version when enabling AVX with GCC
6f123d209e Fix geo_* unit tests with respect to AVX
052aedd394 Implement pcplflip, palign, predux and the likes from AVC/complexes
fb03b56647 Fix warning
6a81594771 Merged in infinitei/eigen (pull request PR-50)
9ce0d78513 immintrin.h did not come until intel version 11
a419cea4a0 Created the ptranspose packet primitive that can transpose an array of N packets, where N is the number of words in each packet. This primitive will be used to complete the vectorization of the gemm_pack_lhs and gemm_pack_rhs functions. Implemented the primitive using SSE instructions.
ba3457cab2 Fixed compilation error due to obsolete internal::abs and internal::sqrt function calls
14bc4b9704 Made sure that the version of gemm_pack_rhs specialized for row major matrices is vectorized when nr == 2*PacketSize (which is the case for SSE when compiling in 64bit mode).
e45a6bed45 Specialized the pload1 packet primitive for Packet8f and Packet4d in order to take advantage of the vbroadcastss and vbroadcastsd instructions whenever possible.
cc73164aa8 Merged latest updates from the parent branch
f0a4c9d5ab Update gebp kernel to process a panle of 4 columns at once for the remaining ones.
8be011e776 Remove remaining bits of the dead working buffer
a078f442a3 Vectorized the multiplication and division of complex numbers using AVX instructions.
cf1a7bfbe1 Used AVX instructions to vectorize the complex version of the pfirst and ploaddup packet primitives. Silenced a few compilation warnings.
bc401eb6fa Implement new 1 packet x 8 gebp kernel
b286a1e75c add pbroadcast2/4 generic intrinsics
6bf3cc2732 Use AVX instructions to vectorize pset1<Packet2cd>, pset1<Packet4cf>, preverse<Packet2cd>, and preverse<Packet4cf>
7ae9b0805d Used AVX instructions to vectorize the predux_min<Packet8f>, predux_min<Packet4d>, predux_max<Packet8f>, and predux_max<Packet4d> packet primitives.
08f7b3221d Added proper support for AVX and FMA in the makefiles.
72707a8664 Made sure that EIGEN_ALIGN is defined when EIGEN_DONT_VECTORIZE is set to true to prevent build failures when vectorization is disabled.
8a0845ebd7 Merged latest changes from the parent
3e42b775ea MINRES, bug #715: add support for zero rhs, and remove square test.
dead9085c0 fixed Spline constructor dimension bug
4fe56a0e02 fix Spline constructor
35a2c9cde7 clang does not accept this without template keyword
bb4b67cf39 Relax Ref such that Ref<MatrixXf> accepts a RowVectorXf which can be seen as a degenerate MatrixXf(1,N)
0a6c472335 A bit of cleaning
2db792852f Silence stupid parenthesis warnings for old GCC versions (<= 4.6.x)
847d801a4c Fix bug #760: complete Eigen's lapack interface with default Lapack for SPQR if there is no fortran compiler.
aceae8314b Resurect EvalBeforeNestingBit to control nested_eval
16d4c7a5e8 Conditionally disable unit tests that are not supported by evaluators yet
a395024d44 More debug info and use lazyProd instead of operator* to query the right flags
f74ed34539 Fix regressions in redux_evaluator flags and evaluator<Block> flags
5e26b7cf9d Extend evaluation traits debuging info
74b1d79d77 merge default and evaluator branches
0b362e0c9a This file is not needed anymore
a6be1952f4 Fix a few regression when moving the flags
2379ccffcb bug #755: CommaInitializer produced wrong assertions in absence of ReturnValueOptimization.
88aa18df64 bug #759: Removed hard-coded double-math from Quaternion::angularDistance. Some documentation improvements
0bd5671b9e Fix Eigenvalues module
8dd3b716e3 Move evaluation related flags from traits to evaluator and fix evaluators of MapBase and Replicate
7eefdb948c Migrate JacobiSVD to Solver
082f7ddc37 Port Cholesky module to evaluators
bbc0ada12a Avoid stupid "enumeral mismatch in conditional expression" warnings in GCC
9be72cda2a Port QR module to Solve/Inverse
ae40583965 Fix CoeffReadCost issues
5806e73800 It is not clear what XprType::Nested should be, so let's use nested<Xpr>::type as much as possible
2bf63c6b4a Even ReturnByValue should not evaluate when assembling the expression
1b3d7fc04c Merged in abachrac/eigen (pull request PR-47)
da6ec81282 Move CoeffReadCost mechanism to evaluators
354bd8a428 Hide legacy dense assignment routines with EIGEN_TEST_EVALUATORS
5c0f294098 Fix evaluators unit test (i.e., when only EIGEN_ENABLE_EVALUATORS is defined
804ef2350d Move the Base typedef's from private to public scope
a6b130c63c swap 3.2 <-> default CTestConfig.cmake file
8eac97138a Merged latest changes from the main trunk
1dd176b0b0 Pulled latest changes from the Eigen main trunk
131027ee0a Merged eigen/eigen into default
db7d49efbb Added support for FMA instructions
9fdc6258cf Implement bug #317: use a template function call to suppress unused variable warnings. This also fix the issue of the previous changeset in a much nicer way.
21fecd5252 Workaround clang ABI change with unsed arguments (ugly fix)
6fecb6f1b6 Fix bug #748 - array_5 test fails for seed 1392781168.
3e439889e0 Specify what non-resizeable objects are in transposeInPlace and adjointInPlace (cf bug #749)
cbc572caf7 Split LU/Inverse.h to Core/Inverse.h for the generic Inverse expression, and LU/InverseImpl.h for the dense implementation of dense.inverse()
1e0c2f6ddb Hide some deprecated classes.
c98881e130 By-pass ProductBase for triangular and selfadjoint products and get rid of ProductBase
d67548f345 Get rid of GeneralProduct<> for GemvProduct
6c7ab50811 Get rid of GeneralProduct<> for GemmProduct
728c3d2cb9 Get rid of GeneralProduct for outer-products, and get rid of ScaledProduct
af31b6c37a Generalize evaluator<Inverse<>> such that there is no need to specialize it
93125e372d Port LU module to evaluators (except image() and kernel())
b2e1453e1e Some bit flags and internal structures are deprecated
9621333545 Fix dimension of Solve expression
5f6ec95291 Propagate LvalueBit flag to TriangularView
ecd2c8f37b Add general Inverse<> expression with evaluator
5960befc20 More int versus Index fixes
2eee6eaf3c Fix mixing scalar types with evaluators
8af02d19b2 ExprType::Nested has a new meaning now...
95b0a6707b evaluator<Replicate> must evaluate its argument to avoid redundant evaluations
b1ab6a8e0b Add missing assertion in swap()
61cff28618 Disable Flagged and ForceAlignedAccess
68e8ddaf94 Fix vectorization logic wrt assignment functors
3a735a6cf1 Fix lazy evaluation in Ref
ccc41128fb Add a Solve expression for uniform treatment of solve() methods.
b3a07eecc5 Fix CoeffReadCost of products to handle Dynamic costs
c16b80746a isApprox must honors nested_eval
cbd7e98174 Merged the latest version of the code from eigen/eigen
7ed9441ea4 Reverted the definition of the EIGEN_ALIGN to its former meaning (i.e. a boolean) Created a new EIGEN_ALIGN_BYTES define to encode how the data should be aligned Fixed a few remaining alignment issues exposed when the Eigen code is compiled with avx enabled. Created a new EIGEN_ALIGN_DEFAULT define, which is set to the minimum alignment value required for the chosen instruction set. Use this value instead of EIGEN_ALIGN32 to preserve the existing alignment on SSE/Altivec/Neon.
5b78780def Add evaluator shortcut for triangular ?= product
8169c6ac59 Simplify implementation of coeff-based products to fully exploit our reduxion mechanisms. If this results in performance regressions, then we should optimize reduxion rather than somehow duplicate the code.
463554c254 Merge with default branch
82c066b3c4 Cleaning
0543cb51b5 Product::coeff method are also OK for lazy products (including diagonal products)
99e27916cf Fix all()/any() for evaluators
37a1d736bf _MatrixTypeNested must be public in sparse Block
06545058bb Temporary workaround for permutations
7002aa858f Support Product::coeff(0,0) even for dynamic matrices
8cfb138e73 Finally, the simplest remains to deffer resizing at the latest
1b5de5a37b Add evaluator for Ref
a08cba6b5f Move is_diagonal to XprHelper, forward declare Ref
573c587e3d New design for handling automatic transposition
551bf5c66a Get rid of DiagonalProduct
2d136d3d7f Get rid of SeflCwiseBinaryOp
873401032b Fix scalar * product optimization when 'product' includes a selfadjoint matrix
d595fd31f5 Deal with automatic transposition in call_assignment, fix a few shortcomings
bffa15142c Add evaluator support for diagonal products
b14a4628af Relaxed umeyama test. Problem was ill-posed if linear part was scaled with very small number. This should fix bug #744.
3573a10712 Fix support for row (resp. column) of a column-major (resp. row-major) sparse matrix
bd6eca059d Fix compilation of SPlines module
ed461ba9bc Fix sparse_product/sparse_extra unit tests
3bb57e21a8 Fix FFTW unit test with clang
4b6b3f310f Fix a few Index to int buggy conversions
cd606bbc94 Fix infinite loop in sparselu
0508af4287 Merged in martinhofernandes/eigen (pull request PR-40)
3283d98d13 optimize sparse-sparse Kronecker product
0d3f496233 Upload the 3.2 testing result to its own CDash project
6df3bee687 reduce false negative in the qr unit test
97965dde9b alloca is not necessarily alligned on windows
0b1430ae10 Fix propagation of index type
c0e08e9e4b fix stable norm benchmark
0715d49908 Fix stable_norm unit test for complexes
3291580630 Fix bug #740: overflow issue in stableNorm
14422decc2 Fix Fortran compiler detection
7ea6ef8969 Fix documentation of MatrixBase::applyOnTheLeft (bug #739) Add examples; move methods from EigenBase.h to MatrixBase.h
31c63ef0b4 fix compilation of Transform * UniformScaling
e170e7070b Added examples for casting, made better examples for Maps
15f273b63c fix reshape flag and test case
c1921ad3e2 Remove unused typedef in polynomialsolver test.
c4f08cfc05 Merged in maksqwe/eigen/maksqwe/fix-typo-in-evalSolverSugarFunction (pull request PR-44)
9e71ecbeec fix typo in evalSolverSugarFunction()
ff8d81762d Fix bug #736: LDLT isPositive returns false for a positive semidefinite matrix Add unit test covering this case.
6c527bd811 Fixed assignment from QMatrix to Transform for compact storage.
b64a09acc1 fix reshape's Max[Row/Col]AtCompileTime
f8ad87f226 Reshape always non-directly-access
515bbf8bb2 Improve reshape test case
009047db27 Fix Reshape traits flag calculate bug
e722f36ffa Fixed issue #734 (thanks to Philipp Büttgenbach for reporting the issue and proposing a fix). Kept ColMajor layout if possible in order to keep derivatives of the same order adjacent in memory.
febfc7b9b4 Fix bug #730: Path of OpenGL headers is different on MacOS
64a85800bd Added support for AVX to Eigen.
94acccc126 Fix Random().normalized() by introducing a nested_eval helper (recall that the old nested<> class is deprecated)
34694d8828 Fix evaluator<Replicate> for fixed size objects
ee1c55f923 Add missing template keyword
f54e62e4a9 Port evaluation from selfadjoint to full to evaluators
5fa7262e4c Refactor triangular assignment
fef534f52e fix scalar * prod in evaluators unit test
a7621809fe Remove useless register keyword, and optimize predux_min/max for SSE4
6cf938df53 Add a minimalistic page on CUDA with Eigen.
afcfb560a2 NVCC: add more debug info
40c42d9788 NVCC: no need to enforce host compiler
deab937d45 NVCC: fix closed-form eigenvalue decomposition, workaround gcc4.7/nvcc5.5 issue
2b89080903 Remove reshape InnerPanel, add test, fix bug
03723abda0 Remove useless reshape row/col ctor
342c8e5321 Fix Reshape DirectAccessBit bug
66f1c56aab sparse_solve_retval_base::defaultEvalTo created extremely oversized temporary matrices in some cases
24e1c0f2a1 add reshape test for const and static-size matrix
150796337a Add unit-test for reshape
497a7b0ce1 remove c++11, make c++03 compatible
aa0db35185 Add doc page on computing Least Squares.
9c832fad60 add reshape() snippets
1e1d0c15b5 add example code for Reshape class
fe2ad0647a reshape now supported
7bd58ad0b6 add Eigen/src/Core/Reshape.h
4cd4be97a7 Port unsupported constrained CG to Eigen3
548216b7ca QuaternionBase::slerp was documented twice and one explanation was ambiguous.
e15cb9f4f8 Make geo_hyperplane unit test more stable (bug #539)
4c08385b74 Merged eigen/eigen into default
4ccff2d028 Placement new must use void* to avoid user-specific overloads.
3a4616d6e3 Add C++11 allocator overloads to avoid implicit conversions.
92190a1caf Add an example showing how to use C++11 random distributions
ac409f51f1 Document the fact that Random and setRandom are not reentrant (so not thread-safe)
a6a57748dd Fix typo
c8c81c1e74 Improved the efficiency if the block-panel matrix multiplication code: the change reduces the pressure on the L1 cache by removing the calls to gebp_traits::unpackRhs(). Instead the packetization of the rhs blocks is done on the fly in gebp_traits::loadRhs(). This adds numerous calls to pset1<ResPacket> (since we're packetizing on the fly in the inner loop) but this is more than compensated by the fact that we're decreasing the memory transfers by a factor RhsPacketSize.
60cd361ebe Fix bug #222. Make temporary matrix column-major independently of EIGEN_DEFAULT_TO_ROW_MAJOR
c8bfbf4a7e Merged in prclibo/eigen (pull request PR-49)
01fd880424 Revert previous change and introduce a new workaround regarding gcc generating a shufps instruction instead of the more efficient pshufd instruction. The trick consists in introducing a new pload1 function to be used in low level product kernels for which bug #203 does not apply. Indeed, it turned out that using inline assembly prevents gcc of doing a good job at instructtion reordering.
e3fb190edf merged incoming udpates
cfd3d6ce9c fixed a template type conversion bug in AngleAxis found by Pei Luo
c39a3fa7a1 Makes gcc to generate a pshufd instruction for pset1
2a564695f0 Simpler and hopefully more future-proof fix for bug #503 (aligned_allocator with c++11)
a58325ac2f Minor corrections in QR docs.
bbf373bbe9 Applied patch from Richard JW Roberts, resolving bug #704
1200bd2ef0 Grafted from 5725:cdedc9e90d21099e8b3191f95425680ebe710d6f  and resolved conflicts
8a49dd5626 Fixed typos in comments
ce99b502ce Use vectorization when packing row-major rhs matrices. (bug #717)
033ee7f6d9 Fix typo: 'explicitely' -> 'explicitly'
ba2f79e680 Fix selfadjoint_matrix_vector_product for complex with packet size > 2 (e.g., AVX)
72461be962 Fix typo and formating
33ca9b4ee6 Add support for OSX in BTL and fix a few warnings
ce41b72eb8 Extend sizeof unit test
d5cc083782 Fixed bug #754. Only inserted (!defined(_WIN32_WCE)) analog to alloc and free implementation (not tested, but should be correct).
7313f32efa Help MSVC to inline some trivial functions
04e1e38eed bug #289: Removed useless static keywords
47679c50ae Typo in the example for Eigen::SelfAdjointEigenSolver::eigenvectors, the first eigenvector should be col(0) not col(1)
76d2ca27e5 Fix PaStiX support for Pastix 5.2
41e89c73c7 Regression test for bug #752
ac69d8769f Remove early termination in LDLT: the zero on the diagonal of the input matrix does not mean the matrix is not full rank. Typical examples are matrices coming from LS with linear equality constraints.
6b6071866b Make pivoting HouseholderQR compatible with custom scalar types
d357bbd9c0 Fix a few regression regarding temporaries and products
27c068e9d6 Make selfqdjoint products use evaluators
e94fe4cc3e fix resizing in noalias for blocks, and make -=/+= use evaluators
2ca0ccd2f2 Add support for triangular products with evaluators
8d8acc3ab4 Move inner product special functions to a base class to avoid ambiguous calls
6c5e915e9a Enable use of evaluators for noalias and lazyProduct, add conversion to scalar for inner products
f0b82c3ab9 Make reductions compatible with evaluators
6f1a0479b3 fix a typo triangular assignment
b5fd774775 Fix flags of Product<>
34ca81b1bf Add direct assignment of products
7f917807c6 Fix product evaluator when TEST_EVALUATOR in not ON
8af1ba5346 Make swap unit test work with evaluators
c6f7337032 Get rid of call_dense_swap_loop
626821b0e3 Add evaluator/assignment to TriangularView expressions
27ca9437a1 Fix usage of Dense versus DenseShape
d0261bd26c Fix swap in DenseBase
276801b25a Fixed and simplified Matlab code and added further block-related examples
d61345f366 Fix bug #609: Euler angles are in Range [0:pi]x[-pi:pi]x[-pi:pi]. Now the unit test verifies this (also that it is bijective in this range).
c15c65990f First step toward the generalization of evaluators to triangular, sparse and other fancyness. Remove product_tag template parameter to Product.
fb6e32a62f Get rid of evalautor_impl
d331def6cc add definition of product_tag
5584275325 Remove HasEvalTo and all at once eval mode
cc6dd878ee Refactor dense product evaluators
fc6ecebc69 Simplify evaluator of EvalToTemp
49034d1570 Fix bug #708: add placement new/delete for array
230f5c3aa9 Evaluator: introduce the main Assignment class, add call_assignment to bypass NoAlias and AssumeAliasing, and some bits of cleaning
c550a0e634 extend Map unit test to check buffers allocated on the stack
28b2abdbea Fix FullPivHouseholderQR ctors for non squared fixed size matrix types
654eab3bd6 Add scaling in JacobiSVD to avoid overflows
5d1291a4de Document how to reproduce matlab's rot90
8b4dd78d57 Merged in chris-se/eigen/tensor-for-merge (pull request PR-39)
f6bac196d5 C++11/Tensor: Fix copyright headers
46dd1bb1be Workaround fixing aliasing issue in x = SparseLU::solve(x)
6b471f205e fix overflow and ambiguity in SparseLU memory allocation
03a956925a CXX11/TensorSymmetry: add symmetry support for Tensor class
f97b3cd024 CXX11/Tensor: add simple initial tensor implementation
5e28c41549 C++11: add template metaprogramming helpers
e59b38abef Implement boolean reductions for zero-sized objects
8f2d068e84 Use the specialization of Block<SparseMatrix> for const matrices too
5c2d1b4710 Add missing nonZeros() overload in Block<SparseMatrixBase<>>
b93520b1a5 Install functor folder with cmake
cb8da751a0 fix broken commit
fe0b44e876 Fix stupid mistake in CMakeLists.txt
ae83f5ede9 Fixed bug #702 and added unit test. Thanks to Alexander Werner for the report.
76c230a84d Add an option to test evaluators globally
57327cc2d5 Drop evaluators for SwapWrapper and SelfCwiseBinaryOp
5887e82729 Clean evaluator_impl_base. It will probably be removed in the future
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
8fe609311d Move internal::swap to numext to fix ambiguous call with std::swap
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.)
a37bdfc955 Fix static/inline order
03de5c2410 Split the huge Functors.h file
4f572e4c14 Add minimalistic unit tests for NVCC support
87aee5fda1 Allow calling attributes of dynamic size objects from device
1bb1a57ef7 merge with default branch
7c9cdd6030 SparseLU: fix estimated non-zeros in U
a236e15048 JacobiSVD: fix a 0/0 issue for complexes
ad1dc50b57 Check for minimal norm solutions
019dcfc21d JacobiSVD: move from Lapack to Matlab strategy for the default threshold
19521c83b8 bug #677: fix usage of pld instrinsics for ccomplexes
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
8f496cd3a3 Fix changeset 2702788da71303afa71e53dfa6542a560115425a  for fixed size matrices
6dc0e59b1e Fix bug #677: compilation issue on arm64 which does not have the PLD instruction
2702788da7 Fix bug #678: vectors of row and columns transpositions were not properly resized in FullPivQR
58c0a6f0fd Fix unused variable warnings
5974685866 Fix parenthesis min/max issue in mpreal
7fae9b358d Use aligned loads in Matrix-Vector product where possible. Fixes bug #689
e14f529dac Merged in martinhofernandes/eigen (pull request PR-33)
fe2f437642 Merged in xantares/eigen (pull request PR-36)
90b5d303db Fix bug #672: use exceptions in SuperLU if they are enabled only
9b863c1830 Merged in vanhoucke/eigen_vanhoucke_unused_variable (pull request PR-34)
11fbbc51fa Fix bug #359: fix AlignedBit flag of CoeffBasedProduct thus enabling the vectorization of more matrix products
d3e84b747a Clarify the meaning of AlignedBit (bug #359)
2e606394b1 Fix bug #685: document the range of Random and setRandom
285112fc55 Fix bug #688: make it clearer that CG is for both dense and sparse matrices.
9f3f42d66a fix a few "dead stores" warnings
a0e8577b49 Fix bug #684: optimize vectorization of array-scalar and scalar-array
a6bff116f9 simplify/uniformize eigen_gen_docs
36052c4911 Added comparisons scalar to array (previously only the array to scalar was possible) (Fixes bug #147) Extended the unit test for that
3d2a3bc755 Copy all format flags (not only precision) from actual output stream when calculating the maximal width
ad9dc05663 consider all columns for aligned output (fixes bug #616)
ff075def5c Copy and paste mistake in last commit
4d7dfafbe7 Don't add rowSpacer if columns are not to be aligned
3390db099a Fixes bug #681 Also fixed some spelling issues in the documentation
c6da881849 Fix bug #674: typo in documentation example for BiCGSTAB. They are now proper snippet files.
b61facb08b Use != instead of < to check for emptiness of iterator range (fixes bug #664)
4a42843513 Make index type of Triplet default to SparseMatrix::Index as suggested by Kolja Brix. Fixes bug #665.
b433fb2857 Allow .conservativeResize(rows,cols) on vectors
2c0303c89e bug #679: add respective unit test
0bce534c8f Fix bug #679
6bef527f9d uniformize piwik code among branches
2d186da58a Add cmake config files
3736e00ae7 Silence unused variable warning.
40f1548b32 Sparse is stable now, so Eigen/Eigen should include Sparse
446320b226 Fix dot*w to return 0 for empty vectors (BLAS interface)
54e576c88a Fix SPQR Solve() when assigning to a Map object
fe19f972e1 Fix leaked memory for successive calls to SPQR
00dc45d0f9 Reduce explicit zeros when applying SparseQR's matrix Q
4bb1c48f25 Add a block sparse matrix class. tests to be added
bd21c82a94 Fix assert bug in sparseQR
1b4623e713 Fix elimination tree and SparseQR with rows<cols
a1f056cf2a Fix bug #503
4612a1cd87 Fix ploaddup and lin-spaced with AltiVec.
07417bd03f Fix bug #654: allow implicit transposition in Array to Matrix and Matrix to Array constructors
7fa007e8bf Fix sparse block
ed78a76161 Merged in advanpix/eigen-mp-devs (pull request PR-32)
eda2f8948a Another compilation fix with ICC/MSVC combo
16cbd3d72d BDCSVD: Use rational interpolation to solve secular equation. Algorithm is rather ad-hoc and falls back on bisection if required.
86daf2f75c Added missing inline statements in order to prevent linker errors.
69c057ccb1 Fixed InnerPanel definition in the Transformation class. Added some inital documentation on InnerPanel.
94a7a1ec00 Use unblocked version if the matrix is too small, plus some cleaning.
5864e3fbd5 Implement a blocked upper-bidiagonalization algorithm. The computeUnblocked function is currently for benchmarking purpose.
d2c4f4ab21 Updated mpfr::mpreal. Move semantic support, RVO, other new features
41321e4366 Replaced memcpy & memmove to smart_* alternatives for non-POD scalar types
e6462c2ce3 Switched to smart_copy to support non-trivial scalar types
1472f4bc61 Fixed bug #647 by using smart_copy instead of bitwise memcpy.
a147500dee Added smart_memmove with support of non-POD scalars (e.g. needed in SparseBlock.h).
d1c48f1606 BDCSVD: Use HouseholderSeq directly.
1b8394f71f Fix compilation with ICC/MSVC combo
4ecfdc4716 Add explanations of the logic behind the matrix-vector products
d9381598bc Allows EIGEN_STACK_ALLOCATION_LIMIT to be 0 for no limit
403be74861 BDCSVD: Compute SVD of combined problem directly. First step at implementing final stage in BDCSVD algorithm. Uses bisection method to solve nonlinear equation. Still lots of room for optimization.
1c61e28b32 Fix indentation
c06e373beb Fix compilation with non-msvc compilers.
7bca2910c7 Make the static assertions on maximal fixed size object use EIGEN_STACK_ALLOCATION_LIMIT, and raise its default value to 128KB
2cf513e973 Merged in advanpix/eigen-mp-devs (pull request PR-31)
150c9fe536 Make FullPivHouseholderQR::solve returns the least-square solution instead of aborting if no exact solution exist
e4ffb7729a Removed unnecessary parentheses
d908ccc01c Added support for custom scalars
2b15e00106 Make ArrayBase operator+=(scalar) and -=(scalar) use SelfCwiseBinaryOp optimization
127d7f2071 Fix bug #643: enable vectorization of compound assignement for fixed size objects
c47010e3d2 typo
d4dd6aaed2 Fix bug #642: add vectorization of sqrt for doubles, and make sqrt really safe if EIGEN_FAST_MATH is disabled
d3635b08da Merged in advanpix/eigen-mp-devs (pull request PR-30)
ebd6a7a46c Added support for custom-scalars
e0dbc2913a Documentation of deprecated struct. Closing bug #426.
1d89554f1b Deprecate boolean sum operator (bug #426)
ace2ed7b87 Fix broken link on transforming normals
956251b738 bug #638: fix typos in sparse tutorial
6f5f488a80 Switched to MPL2 license.
916d29e58f Backout parts of changeset 6719e56b5bfe9ae4badc9a6e894c5824f663d62e  (these changes were not intended to be commited)
bffdc491b3 Fix cost evaluation of partial reduxions -> improve performance of vectorwise/replicate expressions involving partial reduxions
6719e56b5b Ref<> objects must be nested by reference because they potentially store a temporary object
c13e9bbabf QuickReference.dox: std::tan(array) --> tan(array), same for other functions.
e4acd6e2fd Added copy constructor and assignment to DenseStorage. Required by the standard even when its not used but elided. Added a test for DenseStorage copying and assignment.
8a89ba9275 Added alternative C++11 detection.
097a105603 Disabled std::log1p on Cygwin.
306ce33e1c BDCSVD: Streamline compute() and copyUV()
616f9cc593 doc: Explain type of result for VectorwiseOp member functions. Prompted by a question on the forum.
2f0faf117e Remove LinearLeastSquares.dox , which should not have been added. Accidentally included in changeset e37ff98bbb21f2ee44c6d912002ddf2cdf05ccda  .
8710440951 Removed errornous swap for stack storage.
8fdffdd573 Move inheritance from Eigen example in stand-alone file. Also fix a small mistake (Vector3d instead of VectorXd).
3444f06f68 Removed a warning when rvalue references are not unsed.
8f4d93a4b7 Fix compilation.
51b361b3bb Ensure that (potentially aligned) stack objects are passed by reference.
7c99b38b7c Added move support for Matrix and Array. Added EIGEN_HAVE_RVALUE_REFERENCES define. Added move unit tests. Removed superfluous 'inline' declarations in DenseStorage.
b72a686830 Fix bug #635: add isCompressed to MappedSparseMatrix for compatibility
e3058dd88b Make Pardiso solvers non copyabe
8ea7413a64 Fix compilation and warning of PARDISO
e90229a429 reduce cancellation probablity
cf884a9815 Added build name support for VC11 and its service packs.
ddf7753631 Add nvcc support for small eigenvalues decompositions and workaround lack of support for std::swap and std::numeric_limits
222eedf5f3 Removed unused testing files.
d0e543be26 Remove superfluous testing files (as changeset e41bc6cbbf9863c686e464d4479b4f562e5649c3  but more complete)
8e6d0cba5f Added a pattern which forces LF line endings for *.sh files.
32d46dd9b8 Backed out changeset: e41bc6cbbf9863c686e464d4479b4f562e5649c3
e41bc6cbbf Removed unused test files.
55b57fcba6 Disable some shortcuts with nvcc
39491e3b75 Enable support for minimal rebuilds.
68168e9eae MatrixFunctions: replace eval() by nested. This eliminates an unnecessary copy in some situations, e.g. Map.
6126ad801f Extend support for nvcc to Array objects and wrappers
43df1e707c Merged in advanpix/eigen-mp-3.2 (pull request PR-29)
b1f4601bf9 Removed non-standard conforming (17.4.3.1.2/1) leading underscore.
acb82c7f16 Quick fix in order to be custom-scalar friendly.
9ef3645cc7 Removed 'T' prefix from types and thus fixed compilation for GCC.
5f11db695b bug #502: add bool intersects() methods to AlignedBox
2437215221 Fixed constness in Array- and MatrixWrapper. This also fixes the compilation on VC11.
dd27b5c4a8 Fixed dummy_precision evaluation.
70131120ab Fix bug in MatrixFunctions for matrices with multiple eigenvalues. Store indices, not eigenvalues, in clusters. Bug was introduced in changeset a3a55357db7394281c872e911f13d69aba510aec .
6d86cd7224 merge
75dab1ce5e Fixed floating point warning. Fixed evaluation of matrix_exp_computeUV.
e43934d60f MatrixFunctions: Clean up StemFunction.h
75edc7cc8b Fixed VC11 compilation. The typedefs Lhs/Rhs in the base class are now accessible by derived classes.
5897695e8a Merged simple geometry asserts.
a3a55357db Clean up MatrixFunction and MatrixLogarithm.
084dc63b4c Clean-up of MatrixSquareRoot.
463343fb37 Clean-up of MatrixExponential: * put internal stuff in the internal namespace * replace member functions by free functions
5879937f58 Merge in jdh8's branch. * Enable singular matrix power and complex exponents. * Eliminate unnecessary copying for sparse Kronecker product.
01190b3544 Directly code failing example, or it breaks `make doc`.
c00f688c64 Fix doc. (It is also used by computeFracPower)
51573da3a4 Warn about power of a matrix with non-semisimple 0 eigenvalue.
1191949e87 Improve documentation on Kronecker product module.
3d94ed9fa0 Document on MatrixExponential::ScalingOp
ede27f5780 Apply argument-dependent lookup on user-defined types. (using std::)
dda869051d Optimize MatrixPower::computeIntPower
2320073e41 Comment on private members of MatrixPower.
c587e63631 Simplify MatrixPower::split
660b905e12 Fix ICE with ICC 11
4f0bd557a4 Previous isFinite->hasNonFinite change was broken. After discussion let's rename it to allFinite
736fe99fbf Fix bug #326 : expose tridiagonal eigensolver to end-users through ComputeFromTridiagonal()
6fab4012a3 Rename isFinite to hasNonFinite to avoid future naming collisions.
2f593ee67c merge with main branch
20e535e142 Bump default branch to 3.2.90
bbaef8ebba SparseLU: make COLAMDOrdering the default ordering method.
bd689ccc28 IncompleteLUT should not raise an assert in compute if factorize failed.
e3774e93b7 Fix vompilation of bdcsvd with ICC.
db8e88c936 Fix testing issues with x87 extra precision.
cfd7f9b84a avoid unneeded const_cast
3e094af410 Fix Sparse LU for matrices in non compressed mode
adeaa657eb Expose InnerSizeAtCompileTime in SparseMatrixBase (it was already present in DenseBase) and simplify sparse_vector_assign_selector (this also fix a stupid warning in old gcc versions)
f2aba7a768 Remove obsolete sentence on LPGL in MKL doc.
d02e329218 Fix adjoint unit test: test_isApproxWithRef works for positive quantities only.
c76990664b Add bdcsvd unit test in CMakeLists
4b780553e0 Eliminate unnecessary copying for sparse Kronecker product.
9be658f701 generateTestMatrix can use processTriangularMatrix
b8f0364a1c Test singular matrix power with square roots. Exponent laws are too unstable.
ee244d54f4 SparseVector::assign: it is not always possible to reserve according to given non-zeros.
cbe92de2b5 Fix typo in testSingular.
eeb744dc8d Add test3dRotation.
4bb0fff151 Rationalize assignment to sparse vectors
d5501d3a90 Document on MatrixPowerAtomic.
3c423ccfe2 Document on complex matrix power.
738d75d3eb Document on the return type of MatrixPower::operator()
9a16519d62 Extend the "functions taking Eigen type" doc page to present the Ref<> option.
06a5bcecf6 Stabilize eulerangle unit test.
7ee378d89d Fix various scalar type conversion warnings.
61c3f55362 Relax slerp unit test
5431473d67 Fix SparseMatrix::conservativeResize() when one dimension is null
444c09e313 Fix constness of diagonal() and transpose() for MSVC.
84f52ad317 Remove double const qualifier
6d1f5dbaae Add no_assignment_operator to a few classes that must not be assigned, and fix a couple of warnings.
71cccf0ed8 Rename map unit test to mapped_matrix: without splitting unit tests, this created a "map" binary file in the include path, not a good idea!
5a4519d2b4 Revisit the implementation of random_default_impl for integer to make sure avoid overflows and compiler warnings.
a992fa74eb Make non-conversion unary constructors explicit.
4466875d54 The only(?) way to test complex matrix power.
5c95892b83 Test power of singular matrices.
639d03d900 These casts are unnecessary because isApprox already casts them.
d204bb57d0 Remove unused struct definition in test.
c52cbd9de9 Write doc for positive power of a matrix with a semisimple zero eigenvalue.
159a3bed9e Write doc for complex power of a matrix.
25544dbec3 Add assertion against undefined matrix power.
f850550e3e merge
04bd1e3fc0 Slightly optimize atanh2.
0567cf96cc Ease setting build options when running ctest -D
00e30a5fc4 We need not prohibit assignment here.  Thanks to changeset 3edd4681f2f04c1164cb3805f1ac37fbf9a618c0 .
55ec3cc6d5 Prevent copying with internal::noncopyable.
4f28ccdd0e Rationalize the use of Index type in iterators
9b833aff42 Use numeric_limits to get NaN and inf
3edd4681f2 ReturnByValue should not be assignable!
d0142e963b Fix ambiguity from the origin of Index type in BlockImpl<Sparse>::InnerIterator
8ba7ccf16a bug #63: add lapack unit tests. They are automatically downloaded and configured if EIGEN_ENABLE_LAPACK_TESTS is ON.
cc03c9d683 bug #556: workaround mingw bug with -O3 or -fipa-cp-clone
4f14b3fa72 Fix bug #611: diag * sparse * diag
9e2b4eeac0 Const-correct the scaling functor.
9b9177f1ce Fix a couple of warnings in unit tests.
7d8823c8b7 Use true compile-time branching in SparseVector::assign to handle automatic transposition.
c273a6c37c Avoid pow(Scalar, int) for C++11 conformance.
04a9ad6e10 Let complex power fall back to "log, scale, exp".
4e26057f66 Remove unused declarations for MatrixPowerProduct.
edba612f68 Fix unresolved typename bug for MSVC
cce68d4e91 Remove unused inclusions.
75b3391e3f Enable singular matrix power using unitary similarities.
4020d4286f Fix bug in sparse documentation.
3cda1deb52 Simplify class hierarchy.
eaf92ef48c Remove unreachable MatrixPowerTriangular, paving the way to future cleanups.
155fa0ca83 Add missing namespace prefix in pconj
4e458d309c Fix some doxygen errors and warnings.
419b5cff44 doc: Mention vec=vec.head(n) in aliasing page.
1caeb814f0 Fix bicgstab for complexes, and avoid a duplicate computation
f8e325356a It's better to check that eigen_assert does raise an assert rather than testing the definition of NDEBUG
65cc51288a On windows CE, assert.h defines NDEBUG if DEBUG is not defined
22820e950e Improve BiCGSTAB robustness: fix a divide by zero and allow to restart with a new initial residual reference.
99bef0957b Add missing sparse matrix constructor from sparse self-adjoint views, and add documentation for sparse time selfadjoint matrix
9f035c876a Fiw bug #553: add support for sparse matrix time sparse self-adjoint view products
fc27cbd914 Fix bug #611: fix const qualifier in cwiseProduct(sparse,dense) and SparseDiagonalProduct::InnerIterator
a915f0292e Fix bug #626: add assertion on input ranges for coeff* and insert members for sparse objects
4cf742525f bug #626: add compiletime check of the Options template parameter of SparseMatrix and SparseVector. Fix eval and plain_object for sparse objects.
487d94f495 Fix bug #623: inlining test_is_equal leads to failures with x87
74beb218d2 Fix bug #554: include unistd.h before checking the presence of posix_memalign.
ffbe04ae78 Merged in jdh8/eigen (pull request PR-27): Matrix power cleanup
95f8a738ea Introduce a TEST_SET_BUT_UNUSED_VARIABLE macro for initialized but unused variables in the unit tests and also fix a few other warnings.
231d4a6fda Workarounf nvcc not being able to find RowMajor when declaring a Matrix<...> inside another namespace.
7b6e94fb58 Clean namespace pollution.
b9543ce237 Matrix square root can process 0 eigenvalue.
b9fc9d8f32 Remove mat.pow * vec specialization, which causes segfault for mat.pow * mat.pow
4cc9377941 fix casting from double* to void* in SuperLU and Cholmod support
ee8a28fb85 Fix segfault and bug with equal eivals in matrix power (bug #614).
1330ca611b CwiseUnaryView should not inherit no_assignment_operator!
c21a04bcf9 fix compilation of ArrayBase::transposeInPlace
c695cbf0fa fix compilation of ArrayBase::transposeInPlace
8bbde351e7 bug #620: fix robustness issue in JacobiSVD::solve (also fix a perf. issue)
d1d7a1ade9 Workaround a bunch of stupid warnings in unit tests
fab0235369 Fix bug #590: NEON Duplicate lane load
bea4a67c92 that's getting harder and harder to make ICC, GCC and clang all happy: one wants type_name to be static and if it is so then the other one triggers 'unused function' warnings -> a forward declaration seems to do the trick
260a923334 explicit template specialization cannot have a storage class
3ed919e0ed Fix an shut down a few ICC's remarks
dd964ec08c Fix a couple of warnings
620e4277bc Disable ASM comments on non x86 architecture and do not redfine if EIGEN_ASM_COMMENT is already defined
8cc9b12589 Add missing using std::pow in lpNorm.
cf5c5ed725 Fix warning typedef XXX locally defined but not used
7adfca5af2 Shutdown clang warning: argument unused during compilation: '-ansi' at linking time
c0cad44da6 Reduce maximum number of warnings/errors. (they took GBs even for limited period of time)
8105b5ed3f new unsupported and not finished SVD, using a divide and conquert algorithm, with tests and benchmark
ba79e39c5c bug #71: enable vectorization of diagonal products in more cases.
eef8d98139 Fix bug #542: fix detection of compiler version on systems without the head command.
4e6d746514 Avoid phrase "static allocation" for local storage on stack (bug #615).
e37ff98bbb Implement mixed static/dynamic-size .block() (bug #579)
05da15bf40 bug #230, fix compilation issues and wrong static assertions
33788b97dd Fix compilation issue with some compilers (when doing using Base::foo;, foo must be visible in the direct base class)
79bd6fa5ee Require at least cmake version 2.8.2 (bug #606).
a8494787f4 Merged in RhysU/eigen//fix-documentation-typo-1371479301909 (pull request PR-25)
437e26d000 Fix documentation typo
55365566b2 Fix HouseholderSequence::conjugate() and ::adjoint() and add respective unit tests.
9f11f80db1 Make psqrt works with numeric_limits<float>::min
5f178e54e9 Extend sparse-block unit test to explicitly cover bug #584
d5fa5001a7 Fix bug #613: psqrt was incorrect for small numbers
3352b8d873 Extend the magnitude range of tested numbers in packet math unit tests
d541765e85 Fix copy constructor signature
f75419c711 Add missing changes.
f3a029e957 Remove meaningless explicit qualifier
1b92d2ca33 Suppress warning #2304: non-explicit constructor with single argument may cause implicit type conversion
f6c1841316 compilation fixes in unsupported
65c59307e2 Fix sparse_basic unit test conflict
62670c83a0 Fix bug #314: move remaining math functions from internal to numext namespace
827843bbbd Complete the lapack interface to make it complete enough for suitesparse QR.
76f4820560 Improve SuiteSparse cmake scripts
f0efe60924 Fix implicit conversion warnings
92eb807c30 Fix warning: explicitely initialize all member of IOFormat
7742eacfeb Add default value for IsRepeatable in functor_traits
f3af423c70 Add missing dependency in SparseSholesky header
1bf18bd57f Fix bug in SparseLU dfs for dense matrices
9266f65318 Fix bug #588 : Compute a determinant using SparseLU
4cd8245c96 Add support with unit test for off-diagonal sparse matrix views
b3fff170a0 Restore internal math functions for unit tests
18e476107e Fix bug #583: add compile-time check that DenseIndex is signed
ca67c60150 Fix bug #591: minor optimization in NEON vectorization support
05c9be65ce Fix bug #595: typo
a4a575e2a3 fix bug #597: typo in sparse documentation
26c35b95c7 Fix bug #598: add explicit cast to Scalar type
0525874a03 Fix bug #599: add missing documentation of some members in QR module.
2b6528effc HouseholderSequence should expose standard enums (Rows/Cols, etc.))
47e89026d0 Check sparse matrices with short indices
e8c963568c Simplify and generalize assign_selector logic
b6d3fcf6f2 Fix bug #605: ambiguous call to std::min when calling .diagonal() on a sparse matrix with non default index type
e392948548 Fix bug #607: handle implicit transposition from sparse vector to dense vector
4811b4526c Add regression test for bug #608
a69b4b092b Fix bug #608: the sign computation in LDLT was broken
c98fd7a6ca Fix bug #609: avoid if statement and improve consistency of eulerAngles method
e04b59929e fix unused variable warning
64054ee396 Add nvcc support for normalize, initializers, and fuzzy comparisons
b3adc4face Add missing pconj specializations
62e337eb01 fix a weird typo I commited in ae76c977041e7584324738a3075d4a926508dd90  (Nov 10th, 2009)
d7cd957f10 Include misc struct declarations
e0566a817f Delete unneeded resize in SparseQR
8e050bd681 Optimize Sparse setIdentity and add a unit test
cf939f154f Fix bug #596 : Recover plain SparseMatrix from SparseQR matrixQ()
bd7511fc36 Fix return type of TriangularView::ReverseInnerIterator::operator++
bd0474adbb Fix A=A with A a SparseMatrix
9ab3811cc5 Disallow implicit scalar conversion of SparseMatrix
b5e5b6aa57 Fix non const data() member in Array and Matrix wrappers.
12e69ec896 Added asserts to AngleAxis class which verify that the initial axis is normalized.
8556ca3de5 Adapted settings for the eol extension.
f7bdbf69e1 Add support in SparseLU to solve with L and U factors independently
83736e9c61 Set back the default ordering method in SPQR support
122b16d841 fix memory leak from Cholmod data in SPQR support
43bb942365 Add missing support for x.noalias() = ReturnByValue<...>
fcdbfabf7a Fix setFromTripplet with empty inputs
aa8b897607 document the evaluation order of the comma initializer
9cd2d14005 merge with default branch
4e2e615a7c actually assertion are incompatible with nvcc even on host code
46755648ec Add a few missing standard functions for ScalarWithExceptions type.
41b3c56e61 Disable "operands are evaluated in unspecified order" ICC's remark
9a4caf2b0f Extend internal doc of ploaddup and palign
94e20f485c Big 564: add hasNaN and isFinite members
d4b0c19a46 Fix a bug in Supernodal Matrix Iterator
db43205dc6 Fix ICC warning when defining both -ansi and -strict-ansi
9816e8532e Fix bug #482: pass scalar value by const reference (it remained a few cases)
43f4fd4d71 generalize testing flags to clang and ICC
7450b23fbb Fix bug #563: assignement to Block<SparseMatrix> is now allowed on non-compressed matrices
6eaff5a098 Enable SSE with ICC even when it mimics a gcc version lower than 4.2
1e38928c64 workaround strange compilation issue with ICC and -strict-ansi
ff661a7b6f Add temporary check for triangularView += product
899c0c2b6c Clean source code and unit tests with respect to -Wunused-local-typedefs
7e04d7db02 Fix a serious bug in handmade_aligned_realloc: original data have to be moved if the alignment offset differs.
f7e52d22d4 Fix missuse of unitialized values in unit tests
84637ca58c Remove a useless variable in blueNorm
d7f3cfb56e bug #564: document the fact that minCoeff/maxCoeff members have undefined behavior if the matrix contains NaN.
3cb6e21f80 Fix bug #562: add vector-wise normalized and normalize functions
d8f1035355 Fix a couple of int versus Index issues.
bff264283d Add missing epsilon/dummy_precision function in NumTraits<Array>
8f44205671 Fix bug #581: remove useless piece of code is blueNorm
d97cd746ae Replace int by Index
12439e1249 Port SelfCwiseBinaryOp and Dot.h to nvcc, fix portability issue with std::min/max
9b33ab62da Fixing bug #578. Thanks to Angelos <filiatra@gmail.com>
c3a6fa03a2 elif/elseif typo
0a1d9fb9ae Fix warning: implicit conversion loses integer precision in SparseMatrix. No need to use std::ptrdiff_t instead of Index since this later is requested to be signed.
225fd0f579 adapt AutoDiff to scalar_product_traits
c519be2bac Allow multiplication like binary operators to be applied on type couples supported by scalar_product_traits
f350f34560 Add complex support to dgmres and the unit test
d63712163c Add SSE4 min/max for integers
da6219b19d Bug567 : Fix iterative solvers to immediately return when the initial guess is the true solution and for trivial solution
22460edb49 Use a template Index for COLAMD ordering
4107b371e3 Handle zero right hand side in CG and GMRES
9bfeeba1c5 Add Official/Unsupported labels to unit tests and add a ctest driver to submit subprojects to cdash
11a9091084 fix a weird bug where a space was missing before a link
aba50d842e fixes #568 (files from previous build were kept on the server, with outdated/garbled information)
f29b4c435b Make cpuid not use %%esi -> dangerous if someone is using it.
0d5a418048 Fix bug #566: rbx register has to be saved when calling cpuid on x84_64 with -fPIC and medium or large code models.
d6d638c751 Forward compiler flags to Fortran workaround
6357fd68da Patch by Kolja Brix <brix@igpm.rwth-aachen.de> that fixes bug #565 and adds a testcase to verify that.
f8addac4e1 Include SparseLU and SparseQR
5d1a74da0a Update matlab-eigen quick ascii reff
6c68f1d787 bug #563 : Sparse block assignments should be called on compressed matrices. Uncompressed matrices will be supported later
79f93247c5 Relax tolerances in matrix_power tests to avoid intermittent failures.
97c9e3c74f Handle special case in atanh2(x,y) when y = 0. This fixes matrix_power unit test on clang.
03373f41cb Fix bug #561: remove useless sign macro
f82ee241ac Added tag 3.2-beta1 for changeset 22385920621ed00e32e557f831ae18bbd59bb8e3
2238592062 bump to 3.2-beta1 (3.1.91)
4fdae4dda9 Fix bug in SparseLU kernel for 32bits indices
98ce4455dd fix sparse vector assignment from a sparse matrix
69bd334d2b Fix mismatched free/delete
a1ddf2e7a8 Update doc for the sparse module
24d81aeb20 Fix overlaping operands when calling memcpy
d2e5c9d892 Do not globally disable stupid warnings in our unit test since such warnings do affect user code.
b9fe79153b Fix a couple of remaining warnings (missing newlines, inline-noinline, meaningless type qualifiers)
87142237b5 Fix "missing return statement at end of non-void function"
210a56ff48 Update to latest mpreal.
d70366d011 Remove assumption on RowMajorBit==RowMajor and ColMajor==0
01c6308d6e Add missing template keyword in evaluators
858ac9ffe0 Add missing template keyword
1bb1945078 Fix "explicit instantiation of 'Eigen::Spline' must occur in namespace 'Eigen'" warnings
3930c9b086 Fix "routine is both "inline" and "noinline"" warnings
e5bf4440c0 Fix "type qualifiers are meaningless here" warnings
0fac91ac22 Fix "storage class is not first" warnings
b5d8299ee7 Prevent calling .norm() on integer matrices in the unit tests.
83aac6d54c MSVC fix; the compiler failed to detect the correct overload.
5882f1631d Fixed compiler warning.
5e8384df2e MSVC fix; the base class typedef shadowed the local template parameter.
6dd93fc76e The ref unit test cannot be easily written to work with EIGEN_DEFAULT_TO_ROW_MAJOR
c754023e72 Fixed MSVC dashboard (Experimental/Continuous) build scripts.
455e6e38b6 Fix two numerical issues in unit tests.
61a2995d03 Remove ICC warning in nomalloc unit test.
fe2c8e1c36 Fix compilation with ICC that was unable to instanciate Scaling from Eigen's namespace.
fa17a6da75 Fix compilation with ICC that was unable to instanciate first_aligned
bb94f0ebc6 Add a unit test for Ref.h and fix an extra copy.
63135a7350 Fix computation of outer-stride when calling .real() or .imag()
e8ccd07671 Add the possibility to define a custom build-string suffix
0b187a40a1 workaround "may be used uninitialized in this function" warning
5dda7842ca Add assertion on the input matrix size in factorizations relying on permutations of 32bits int
b73baa1ea4 Workaround warning: assuming signed overflow does not occur when...
5108ef01fc Fix no newline warning.
b6dc2613ac Fix bug #552: disable EIGEN_GLIBC_MALLOC_ALREADY_ALIGNED when compiling with -fsanitize=address, and allow users to manually tell whether EIGEN_MALLOC_ALREADY_ALIGNED.
12a1313b09 bug #482: pass scalar arguments by const references. Still remains a few cases that might affect the ABI (see the bug entry)
cc35c44256 Add reference for the default threshold in sparse QR
ced8dfc0d9 Fix the computation of the default pivot  threshold for sparse QR
5a0c5c0393 Fix bug #483: optimize outer-products to skip setZero and a scalar multiple when not needed.
96ad13abba conservative_resize unit test was executed only once
41aa0fcc3b Output random generator seed in case of failure so that we have it in CDash.
698de91c8a Fix segfault in SparseBlock::InnerIterator
19bc418f5c Remove erroneously committed debugging stuff.
80d2a65465 Fix visitor unit test.
04367447ac Fix bug #496: generalize internal rank1_update implementation to accept uplo(A) += v * w and make A.triangularView() += v * w uses it. Update unit tests and blas interface respectively.
08388cc712 Remove superfluous cast.
1c137496c6 Extend sparseqr unit test to check linearly dependent columns
4eeaff6d38 Cleaning pass on SparseQR
28e139ad60 Fix another issue related to summing up many signed values.
42af5870a4 Fix array unit test: isApprox(log(0),log(0)) is false, and summing up signed float value might result in very small values and thus large numerical errors
274c24c262 Avoid problematic ternary operator (http://forum.kde.org/viewtopic.php?f=74&t=109486)
74438f8aa9 Fix EIGEN_INITIALIZE_MATRICES_BY_NAN.
7fe6419171 remove double parenthesis
e71bc79f2a SparseLU does not accept row-major matrices for the destination.
bd8c9c69e4 Protect min with parenthesis in IncompleteLLT
d93c1c113b NVCC: EIGEN_NO_DEBUG must be defined before including Macro.h
59f9400420 Clarify the doc for column-pivoting QR
968f7591f8 Make it compile without nvcc
986f60127d Guard against transposeInPlace on non-square non-resizable matrix. Inspired by question by Martin Drozdik at stackoverflow.com/q/14954983
a054b4ee27 Be more explicit about user-defined functions in Map tutorial. See discussion on mailing list on 18 + 19 Feb 2013.
febf8e5d7b Set built-in sparse QR as the default sparse solver  and add ComputationInfo for Levenberg Marquardt,
dca7190e15 Add setPivotThreshold to Sparse QR
19de016fef Correct the SPQR backend for rank-deficient matrices and delete some public functions
bc18e06fe3 Add matrixR() to get the triangular factor from the Householder QR
962c99d462 Metis ordering backend supports only squared matrices
ba653105a2 Remove confusing transpose() in setLinSpaced() docs.
b4f6aec195 Fix linear vectorized transversal in linspace (fixes bug #526).
1a056b408d Add a rank-revealing feature to sparse QR
9fd465ea2b Fix the following warning: "comparison between signed and unsigned integer expressions"
cf259ce590 Workaround the following warning: "assuming signed overflow does not occur when assuming that (X + c) < X is always false"
a1091caa43 Fix some unused or not initialized related warnings.
19f699ded0 "-Wno-psabi" option is not supported by all gcc version.
8745da14d8 Fix SSE plog<float> to return -INF on 0
912ba10efe Remove the following note made by gcc: "The ABI of passing structure with complex float member has changed in GCC 4.4"
24e4a3af2b Add missing using std::sqrt
a0fb885c82 Update adjoint unit test to avoid instantiating sqrt(int)
9cc016d3f9 Update basicstuff unit test to avoid instantiating the ambiguous sqrt(int)
f8407742c1 Fix some implicit int64 to int conversion warnings. However, the real issue is that PermutationMatrix mixes the type of the stored indices and the "Index" type used for the sizes, coeff indices, etc., which should be DenseIndex. (transplanted from 66cbfd4d39efbec240fe90b2dd77293e71f060e8 )
25bcbfb10c Fix bug in aligned_free with windows CE
a143c5b78c Fix bug #544: assertion in JacobiSVD when compiling with EIGEN_NO_AUTOMATIC_RESIZING
3cd32996f1 Fix bug #551: compilation issue when using EIGEN_DEFAULT_DENSE_INDEX_TYPE
5adcc6c7b4 Add support for NVCC5: most of the Core and part of LU are callable from CUDA code. Still a lot to do.
5115f4c504 add EIGEN_INITIALIZE_MATRICES_BY_NAN
3c1ccca285 Add missing operator= in RefBase
e21dc15386 Add missing data member function in CwiseUnaryView
5154253933 Fix some MPL2/LGPL lisencing confusions
14e2ab02b5 Replace assert() by eigen_assert() (fixes bug #548).
35647b0133 Correct bug in SPQR backend and replace matrixQR by matrixR
8bc00925e5 Change int to Index type for SparseLU
57e50789f3 Added missing using std::sqrt.
718535ac6c Added Visual Studio 2012 debug visualizers.
7f0f7ab5b4 Add additional methods in SparseLU and Improve the naming conventions
d58056bde4 Merged local branch with main trunk
81d4bfa8d9 add support for solving with sparse right hand side
e4ec63aee7 Suppress annoying "may be used uninitialized in this function" warning with gcc >= 4.6
b74c0a4413 Check that NeedsToAlign is properly sets before checking alignment
7282a45a0a Remove dummy code in MPRealSupport
29d395f769 Relax a bit the precision in mpreal unit test.
691e607d85 Specialize GEBP traits and kernel for mpreal to by-pass mpreal and remove the costly creation of many temporaries.
c22f7cef83 Workaround "error: floating-point literal cannot appear in a constant-expression" in mpreal.h when compiling with predantic. (I really don't know how to properly fix this))
73026eab4d Fix SparseLU special gemm kernel on 32 bits system w/o SSE
ee36eaefc6 remove dummy code in ColPivHouseholderQR::solve
19c78cf510 Workaround gcc-4.7 bug #53900 (too aggressive optimization in our alignment check)
67b9f42528 Recent UMFPACK library requires to link to libSuiteSparse
ad798231ec Fix test for Metis
3d9150870d Fix documentation for SparseLU
d2dd5063b6 Documentation for the ordering methods
5b9bb00265 Test for the sparse Blue norm
5dcf6caa36 Unit test for the Metis Ordering package
392ffce3b9 Fix traits of Map<Quaternion>, and respectively extend the unit tests
fb89b66229 Some minor documentation fixes in Quaternion
23c87fcde6 I think it's OK to let XprHelper.h determine the nested type.
fe0ef8e609 Remove unused typedef (traits<MatrixPowerProduct>::PlainObject) for brevity.
40fce01648 Simplify traits<MatrixPowerProduct>: StorageKind must be Dense because MatrixPowerProduct is derived from MatrixBase.
c890cf5489 Use the nested type instead of const reference
daa65c5bce Just tidy up: no need to specify template parameters inside class body.
0017d8c58f Make MatrixPowerTriangularAtomic::computePade static because it should be.
a5d348e30a Use simplified return type, trying to work around MSVC.
4cfde4590f Make use of TRMM (speed up), and remove useless condition (the triangular don't need LU)
21c2b4e327 Make better decision on PartialPivLU vs inverse(): We have specialized inverse() only for FIXED matrices.
e92fe88159 Add test for real MatrixPowerTriangular.
eb33d307af Avoid Schur decomposition on (quasi-)triangular matrices. (Huge speed up!)
332eb36436 Implement complex MatrixPowerTriangular. There are still problems with real one.
209199a13e Move the definition of DenseBase::InnerIterator to Core module. (needed to make blueNorm generic)
f813e83bc3 Delete unused variable in SparseLU
c05848a330 Move SparseColEtree common to SparseLU and SparseQR to SparseCore and fix build issue of sparseqr
904c2f137b Fix the column permutation in SparseQR
a3b94d26c8 Remove TOC numbering, and minor improvement in overview.
761b3bbb69 Fix bug #540: SelfAdjointEigenSolver improperly used the upper triangular part to extract the scaling factor.
7262cf783c Cleaning documentation pass in ordering and ILUT
38fa432e07 Clean inclusion, namespace definition, and documentation of SparseLU
50625834e6 SparseQR: clean a bit the documentation, fix rows/cols methods, remove rowsQ methods and rename matrixQR to matrixR.
581e389c54 Fix installation path of SparseQR
121f3bdf04 Pass a const matrix to sparseQR
33febdb48b Add support for Schur decomposition of matrices in Hessenberg form
0f94e96342 Add support for sparse blueNorm
91b3b3aaab Add a sparse QR factorization and update the elimination tree in SparseLU
1ccd90a927 Make the MatrixFunctions documentation page looks a bit better
cc444bbbf9 update unsupported module documentation to be conformed with new documentation style
b0cb5e6d48 remove the 'Unsupported Modules' meta module
109cbb6ad3 typos
dcc1754f05 update javascript hacks for doxygen 1.8.3
2abe7d8c6e Rename the dox files: the number prefixes are not needed anymore
091a49cad5 Clean the manual page titles, links and intro.
c71c06b71f fix typo
8a50ed86f3 Check that minCoeff(int*)/maxCoeff(int*) always pick the first entry in case of multiple extrema.
f9927b4aca Fix _data() versus data() issue in SparseVector, and add a Storage typedef just like SparseMatrix.
86983fa1ff Update the overview page to reflect the new organisation
2de69c2f26 Doc presentation:  - remove the "modules|classes" link for module pages (they are already in the TOC)  - fine tune the TOC css
93ee82b1fd Big changes in Eigen documentation: - Organize the documentation into "chapters".   - Each chapter include many documentation pages, reference pages organized as modules, and a quick reference page.   - The "Chapters" tree is created using the defgroup/ingroup mechanism, even for the documentation pages (i.e., .dox files for which I added an \eigenManualPage macro that we can switch between \page or \defgroup ).   - Add a "General topics" entry for all pages that do not fit well in the previous "chapters".   - The highlevel struture is managed by a new eigendoxy_layout.xml file. - remove the "index" and quite useless pages (namespace list, class hierarchy, member list, file list, etc.) - add the javascript search-engine. - add the "treeview" panel. - remove \tableofcontents (replace them by a custom \eigenAutoToc macro to be able to easily re-enable if needed). - add javascript to automatically generate a TOC from the h1/h2 tags of the current page, and put the TOC in the left side panel. - overload various javascript function generated by doxygen to:   - remove the root of the treeview   - remove links to section/subsection from the treeview   - automatically expand the "Chapters" section   - automatically expand the current section   - adjust the height of the treeview to take into account the TOC - always use the default .css file, eigendoxy.css now only includes our modifications - use Doxyfile to specify our logo - remove cross references to unsupported modules (temporarily)
eac676ff6c Set matrix to zero before inserting entries (partially fixes bug #539).
8321b7ae74 Make KroneckerProductSparse inherit EigenBase instead of SparseMatrixBase, for it does not provide an InnerIterator.
204a09cb82 Fix compile error caused by incomplete SparseMatrixBase.
0508a0620b Let KroneckerProduct inherit ReturnByValue to eliminate temporary evaluation. It's uncommon to store the product back to one of the operands.
8284e7134b Add doc for KroneckerProductSparse.
c4b83461d9 Make kroneckerProduct take two arguments and return an expression, which is more straight-forward.
f34db6578a KroneckerProduct: we have const_cast_derived so why not use it?
20a984cd2e Remove #include of removed header file.
6fb3be9841 Remove useless empty file.
2ea1e49a08 Doc: replace manual TOC by doxygen's \tableofcontents command
ded70b8b58 Doc: remove page margins and limits to 60em paragraphes only instaead of the entire page (many declarations and tables are larger than 60em anyway)
3f82401890 Update doxygen files to doxygen version 1.8
f41d96deb9 Fix several documentation issues
f450303321 Fix MSVC compilation: std::log was not accessible.
85005ffbd1 Make sure sqrt and the likes are not compiled for integer type in cwiseop unit test.
b7ea59556d Fix bug #507: Mark variable as unused in NDEBUG case
0fe264869a Merge with 6300e8ca0239ed4bfe8fbf37c5f72cb4ef3451a7
6300e8ca02 replaced compiler specific __attribute__((noinline)) by EIGEN_DONT_INLINE
c69577ea31 Fix bug #531: Empty line in <table> made doxygen render it as paragraphs
22e6741da9 updated geometry benchmark to handle additional cases
98798e904b added benchmark for test vectorization in geometry package
e90752d252 Fix bug #534: rm useless initialization of rowSpacer.
925a5b7d07 Fix bug #535: unused variable warnings
6c8cf15c06 Fix compilation of Block/SparseBlock with MSVC
23ce05971b Add arpack support module file
dbe1ab67ac Added ARPACK support for standard and generalized eigenvalue problems. Currently self-adjoint only.
8844f632fa Move work in progress Levenberg Marquardt module in unsupported
4cdcb6d793 Add missing minpack copyrights/license. Fix LM header files and credits original MINPACK authors. Move minimizeOneStep code into its own file to get it more properly credited.
d85253ccf4 Backed out changeset 363e506776babe4fdfb8e670fe6d91942fc61d7c
363e506776 Rename the old LevenbergMarquardt class to LevenbergMarquardtLegacy Split the levenberg marquardt test and the hybrid nonlinear test
cc0fef9807 Add tests for dense and sparse levenberg-Marquardt
2aba6645f4 Move the Levenberg Marquardt to the supported branch Add support for sparse computations... need SPQR module.
71cb78e1ba Fix Incomplete Cholesky factorization. Stable but need iterative robust shift
5afaacedc6 Update SPQR interface
895d90d3e1 Fixed mpreal for IA64 architectures
8719b1bf16 fix geometry tutorial
36414d1f3e Update SPQR module for Sparse LM
9162a8492e ReverseInnerIterator for SparseBlock
4acc18f100 Move VectorBlock methods into plugin section
6a790058f5 remove deprecated InnerVectorSet for the deprecated DynamicSparseMatrix class
4e60283289 Remove Sparse/InnerVectorSet expression in favor of a more general Block<> specialization for Sparse expression. The specializations for "InnerPanels" are still preserved for efficiency reasons and because they offer additional usefull features.
3dc8f8536a Generalize Block<> to support various implementation wrt StorageKind (just like other expression)
493319ae5f plugin header files can be included more than once
b40a5b8b48 Improve the IncompleteLLT ... not yet robust
0412dff97b Add more useful functions to SPQR interface
9cf77ce1d8 Add support for Sparse QR factorization
474716ec5b Add restarted GMRES with deflation
a76fbbf397 Fix bug #314: - remove most of the metaprogramming kung fu in MathFunctions.h (only keep functions that differs from the std) - remove the overloads for array expression that were in the std namespace
959ef37006 Fix FindUmfpack when specifying manually the related cmake variables.
691fb92690 Disable opengl demo if Qt4 or OpenGL cannot be found. (transplanted from caf24f1c9e540c0d7120d9344a2f4a2fd14098f2 )
aa858cb43a add first_multiple helper function
90fcaf11cf SparseLU: remove the "snode" path which appears to bring nearly zero speedup
ac8c694f3e add missing copyright
fea4220f37 SparseLU: add a specialized gemm kernel, and add padding to the supernodes such that supernodes columns are all properly aligned
f7e203fb0c Fix build error in matrixfunctions on MSVC
b3254c9af5 fix bug #524: Pardiso's parameter array does not have to be aligned!
138897cc06 fix bug #521: __cpuidex is not available on all architectures supported by MSVC
9b418afff6 Windows CE does not provide an aligned_malloc function.
0753463d70 Fix bug #519: AlignedBox::dim() was wrong for dynamic dimensions
7857118f2e Fixed gcc warnings, John Westwood name and round_style function
8b84e05739 Updated multiprecision module to support the most recent version of MPFR C++
77f92bf0b1 the repeated solves are already present in check_sparse_solving()
f757034001 MINRES solver
fe78c86b4a Discard failing tests in NonlinearOptimization
b722c405b7 Use Ref instead of VectorBlock
23e2de3cb6 RealShur for a already Hessenberg matrix
a67eea05c1 fix comma initializer when inserting empty matrices
cfa8032ffb bug #517 : Small typo in AsciiQuickReference
fec6df1f7d fix dense=sparse*diagonal (there was an issue in the values returned by the .outer() function of the related iterators)
f30ca7ed7e extend unit tests to check rectangular matrices for sparse*diagonal products
62b1f75a86 add an assertion when inserting an already existing element
bf81276dad spd test instead of square test. Still missing complex version of MINRES.
2008f76120 Merge
d7d96f6694 Make testExponentLaws in matrix_power quiet. It was too noisy.
50c07e50e8 Avoid memory manipulation for simplicity, efficiency, and safety.
5814a5f1a0 Abort the extension. MatrixSquareRootTriangular only takes upper triangular matrices.
067a5a98c8 Extend MatrixPowerTriangularAtomic for future implementation for triangular matrix power.
b68102d9a2 MSVC needs parentheses around min and max
01cb88fff8 compiling (but failing) unit test
87074d97e5 old gcc versions do not have immintrin.h file...
ed18d6f2ad Fix doc and tidy up
82c3ff3784 Fix Build error on MSVC
72bfed5e20 Add forgotten SparseLUBase
3b88216d42 Move unshared items back to MatrixPower
8b83e66906 add scalar multiple to diagonal matrices (transplanted from dc5b335f9fbc25b15a408d8b1458a0140c0a8248 )
1b004d5794 fix SparseMatrix option bit flag in eval<> helper
b648484dba fix bug #515: missing explicit scalar conversion (transplanted from b0862dcb2f9260e006e67e2b0610afdc3f58ee62 )
44374788b5 fix bug #511: pretty printers on windows
7c4b55fda9 fix bug #509: warning with gcc 4.7
73a0bfe261 Write doc on (matrix power) * (matrix expression)
aa5acdb352 Create class MatrixPowerBase for further extension (like specialization for triangular or self-adjoint matrices)
7e97dd5bd8 we should not directly include the *mmintrin.h headers but include immintrin.h only
1edb396542 fix minor typo in doc
357fe3641d Correct reference to iterative scaling method
15a9f6b9c1 Doc for sparseLU
5a3f49036b Removed scaling from the umeyama when it is not requested.
088379ac2f Fix MSVC compile error in SparseLU
a01371548d Define sparseLU functions as static
fd0441baee some clean-up and new comments.
d387dfa9dc Remove unnecessary code. lazyAssign seems to fix all (noalias, initialization, etc.)
18c41aa04f Some minor optimization.
dd7ff3f493 moved MINRES to unsupported. Made unit test.
334532b7f5 Remove class MatrixPowerEvaluator with enhanced existing MatrixPowerReturnValue to simplicity, but docs are not completed yet.
1d402dac03 Fix bug in MatrixPower(expression) due to destruction of temporary objects. Sorry for ugly pointer manipulation but it prevents copying a PlainObject.
8c5e4fae61 working preconditioned MINRES solver
963794b04a Eliminate unnecessary evaluations
7e64f78f65 Avoid inefficient 2x2 LU
d7b1049cab Fix my typo in MatrixPowerBase.h, no effect on the flow.
dd8034bd1c Fix cost evaluation. (chain product for integral power)
7740127e3d Make Ref<> suitable for both Matrix and Array kinds. Note that Matrix kind objects can be implicitely converted to an Array kind Ref<> and vice versa
446d14f6ad Implement matrix power-matrix product again
87afd99433 Enable saving intermidiate (Schur decomposition) but disable unstable specialization for matrix power-matrix product.
7e0dd17312 Improve BiCGSTAB : With exact preconditioner, the solution should be found in one iteration
d5d99dd1f0 Optimize matrix functions: m_fT is triangular and trmm is faster than gemm
48c4d48aec workaround weird compilation error with MSVC
0c584dcf4d fix compilation with m.array().min/max(scalar)
28528519e9 Merged in jdh8/eigen (pull request PR-17)
9e80822fc9 fix compilation on freebsd
45672e724e Incomplete Cholesky preconditioner... not yet stable
504edbddb1 Replace COPYING.LGPL by a copy of the LGPL 2.1 (instead of LGPL 3).
2d49d049d1 Clean the Colamd routine and add test for sparselu code
761fe49f37 Clean the Colamd routine
2c99d84133 add SparseLU in sparse bench
04f315d692 Fix rank-1 update for self-adjoint packed matrices.
65caa40a3d Implement packed triangular solver.
3642ca4d46 Implement packed triangular matrix-vector product.
2828c995c5 Use conj_expr_if to clarify what it's doing.
669db3d776 Extend rank-1 updates for different storage orders.
1b8f416408 Implement rank-1 update for self-adjoint packed matrices.
dac5a8a37d Simplify Rank2Update.h
17c746523e Comment FIXMEs on Rank2Update.h and remove unused files.
24f371bdb4 Merged in jdh8/eigen (pull request PR-16)
721671cc4e fix bug #501: remove aggressive mat/scalar optimization (was replaced by mat*(1/scalar) for non integer types)
e4e7585a24 Implement rank-2 update for packed matrices.
b5f9bec8ac Perform direct calls in xHEMV and xSYMV.
06d2fe453d remove stupid assert in blue norm.
1b61aadcbe Implement SDSDOT with DSDOT and avoid allocating buffers in DSDOT.
b0b9b4d6b2 Implement functors for rank-1 and rank-2 update.
5433986f5a multiple warnings for unused variable
fdd0f0c5fc merge Sparse LU branch
063705b5be Add tutorial for sparse solvers
145f89cd5f Fix memory leak in DSDOT.
c86d047c2f BLAS: implement DSDOT and SDSDOT; update test for them.
2280f2490e Init perf values
2e38666d01  correct bug in Blas 3 2D block update
3a22c47fb5  Bug in blas 3 2D block update
288e6aab14 Insert XSL styles into output XML files
c4051d3d02 Fix a typo in blas/common.h
751501eade added preconditioner with preconditioned-Lanczos iteration
d4144583bb Write dox for assertions
d23134e4a7 Avoid inefficient 2x2 LU. Move atanh to internal for maintainability.
9da41cc527 forward resize() function from Array/Matrix-Wrapper to the nested expression such that mat.array().resize(a,b) is now allowed.
5f3880c5a8 some optimization in MINRES, not sure about convergence criterion
c5031edb92 Fix out-of-range memory access in GEMV (the memory was not used for the computation, only to assemble unaligned packets from aligned packet loads) (transplanted from 221f54698c2f6690da8c0f44c1e31e55118dedab )
064f3eff95 first working version. Still no preconditioning
d0ee31aea6 Fix dox and tabbing
ba4e886376 Tidy up and write dox.
5252d823c9 Optimize matrix power
1cd4279b03 Fix a lot in MatrixPower.h
edc7a09ee7 merge
bfaa7f4ffe Add test for matrix power. Use Christoph Hertzberg's suggestion to use exponent laws.
fe9956defe Read real and complex bench matrices  from a unique folder Output and display bench results using XML and XSLT
b55d260ada Replace atanh with atanh2
ebe511334f workaround clang bug (see http://forum.kde.org/viewtopic.php?f=74&t=102653)
576d62db64 fix a typo in commit 324ecf153b9b9ab85297e3087f0376e6c55f78fc  (regarding MKL on windows)
75435079ca fix bug #499: the image was missing because of a dependency issue when building/executing the "special" examples
aa1aa36d6d simplify eigen-doc.tgz file generation, and make it more future proof
904c2e6cfb remove EXTRACT_ALL
edc496f087 add piwik code to documentation (web stats engine)
1b4aed7255 Fix toc in dox and claim copyright
573d88f81c Dox in MatrixFunctions
15dabd4db7 Bugfix in MatrixLogarithm.h
42c1b9a8dd Ensured that all branches of MatrixLogarithmAtomic::getPadeDegree return values.
f047030104 Add specialization for float and long double
dee866a99a Undo incorrect fix in previous commit, and fix real mistake instead.
5eefca637e Documentation fixes. Thanks to Rodney Sparapani for reporting these.
2337ea430b Remove useless code (abort specialization for complex exponent temporarily)
4be172d84f matrix power: MatrixBase::pow(RealScalar) and MatrixBase::pow(T) where T is integral type
c5800a2452 using std::frexp instead of frexp
8cddcaf839 Optimize getting exponent from IEEE floating points.
63d2dcfb70 Clean the supernodal matrix class
43f74cb5b1 Bug in 2D block update, disable it for now
4d3b7e2a13 Add support for Metis fill-reducing ordering ; it is generally more efficient than COLAMD ordering
a1b405c92e Add missing const in some casts
af824091be Fix precision regression when attempting to fix underflow issues.
93967b0dd6 Fix some typos in MatrixLogarithm to improve accuracy.
a51806993b Prefix with glu, the global structure
70db61c269 Prefix with glu, the global structure
03509d1387 SparseLU: add leverage level3 ops
48dc95f1da factorize column_dfs and panel_dfs
7dc39b7037  Add unit tests
6e8aa96e0f  correct bug when solving with multiple Rhs
c73c3ec2f8 fix bug #495: remove too aggressive EIGEN_FLATTEN_ATTRIB attribute (after some benchmarking, it was not useful anymore)
e3ac608e41 bug #493 : multiple calls to FindUmfPack (transplanted from 1914024965172d6920f3cbfa35b09053dcbb7fc8 )
3a0f5a2a7f Update copyrights sections
02935b4249 switch to MPL license
390d6599ba Add missing .noalias()
7d98c864ff fix warning
22e0ebbc2c fix lower acceptable bound of SSE pexp for double
e88817cc51 add another missing .noalias()
8f6d5eacb4 optimize LU_kernel_bmod for small cases, and add an important .noalias()
696b2f999f Eigenvalues module: Implement setMaxIterations() methods.
6f54269829 add an example for GeneralizedEigenSolver
8ab0e16e27 fix various regressions with MKL support
d937e67b48 RealQZ: added example and some code comments
52a0e0d65e Added a default constructor for Splines which creates zero (constant) splines.
f23dd7c6f1 Fix typo in the doc: s/Succeeded/Success
e8aa1f00c5 add SSE pexp function for double, make use of _mm_floor_p* for pexp with SSE4.1
ce30d50e3e Improve the permutation
6eee2918d9 extend quotient functor to allow for mixed types (complex-real)
c0fa5811ec Refactoring codes for numeric updates
9e8d2dea80 Add a preliminary GeneralizedEigenSolver computing the eigenvalues of Av=lBv with A and B general real matrices. Currently only the eigenvalues are reported.
cfb76b242f RealSchur: improve speed of computeNormOfT
4e60e2cdf6 RealQZ: improve computeNorms speed, improve shift accuracy (better to do a/b than a*(1/b)),         update API to set the maximum number of iterations
7518201de8 SparseMatrix: add missing ctor for ReturnByValue
ea310249f3 RealQZ: bug in pushDownZero fixed too
a3a9773ab6 RealQZ: bug in splitOffTwoRows fixed
925ace196c correct bug in the complex version
59642da88b Add exception handler to memory allocation
b0cba2d988 Add a draft (not clean ) version of the COLAMD ordering implementation
bf7d986af6 Add static assert that objects on stacks are not too big (bug #491).
e75b1eb883 Fix aliasing issue in sparse matrix assignment. (m=-m; or m=m.transpose(); with m sparse work again)
7b34b5f6f9 do not apply plane rotation when it is exactly the identity
e7c07de549 RealQZ: optimize general hessenberg to not apply rotations to zero entries.
c1cab7b8ed real QZ: update license
773804691a  working version of sparse LU with unsymmetric supernodes and fill-reducing permutation
65db91ac2b Add a RealQZ class: a generalized Schur decomposition for real matrices
ba5eecae53 Allow user to specify max number of iterations (bug #479).
b7ac053b9c Use EISPACK's strategy re max number of iters in Schur decomposition (bug #479).
fd5749f51c LDLT: Report sign consistent with D for indefinite matrices. See http://forum.kde.org/viewtopic.php?f=74&t=106942
907f4562ac Fix some illegal memory access in sparse conservativeResize()
6bf49ceac2 bug #449: add SparseMatrix::conservativeResize feature
3f08a6a126 add COPYING.MINPACK
df06e5662d MINPACK license is OK for MPL2 after all
f28e95500b add COPYING.README
9bf3ec134e add COPYING.MPL2
b596f6c10c remove outdated "Eigen itself is part of the KDE project" outside of eigen2 files
d3998de472 Silence clang warning about && inside ||
4ae3e0a9b8 Evaluators: Fixed bug caused by Diagonal dynamic index change. This caused the evaluators unit test to fail.
79214745c7 clean Eigen2Support wrt KDE mentions
e59f95a9a0 clean old KDE mention and related
54559094ec document EIGEN_MPL2_ONLY
46b1c7a0ce fix bug #485: conflict between a typedef and template type parameter
269be00925 Add a EIGEN_MPL2_ONLY build option to generate compiler errors when including non-MPL2 modules
0733e622a3 Manual MPL2 relicensing fixes
69124cfca2 Automatic relicensing to MPL2 using Keirs script. Manual fixup follows.
d4ca0963bc Add preliminary script to relicense Eigen to MPL2.
904ecdf9d8 Add a DynamicIndex constant for signed quantities and use it to fix the conflict between Diagonal<S,-1> (the first sub diagonal) and a runtime super/sub diagonal which is now: Diagonal<S,DynamicIndex>
3e6329a0d9 fix computation of fixed size sub/super diagonal size
e529bc9cc1 correct bug when applying column permutation
de2544cc9b working version of sparse LU without fill-reducing permutation
a2c3003be2 Fix possible underflow issues in SelfAdjointEigenSolver
3095e4a5f9 Correct bug for triangular solve within supernodes
ff12a6cd43 fix include path
b5a83867ca Update Ordering interface
b1b6864c88 Evaluators: Remove member variables if known at compile-time. Also, use composition instead of inheritance in EvalToTemp evaluator.
203a0343fd Update Ordering interface
7bfd8eabff fix compilation with MSVC
5dbdde0420 Fix bug #480: workaround the Android NDK defining isfinite as a macro
23df2eed46 bug #481 step 1: add a new Ref<> class for non templated function arguments
60edf02f6f doc: Typo in CustomizingEigen, introduced in previous commit. Thanks to Christoph Hertzberg for noting this.
37d5825c5a merge
b582b2ebdc doc: Add constructor to example for inheritance. See "Error in Inheriting Eigen::Vector3d" on forum.
0a7ce6ad69 fix bug #486: template speacialization of member functions must be declared inline to avoid duplicate references
cb9f3685d3 Move implementation of coeff() &c to Matrix/Array evaluator.
03fe095622 bug #488: Add setShift method (and functionality) to Cholmod classes Also check for Success of numerical factorization
54d55aeaf6 fix bug #487: isometry * scaling was not compiling
d878cf2227 fix typo
f737536744 fix NEON port, use vget_lane_*() instead of temporary variables (saves extra load/store), following advice by  Josh Bleecher Snyder <josharian@gmail.com>. Also implement pmadd() using vmla instead of nested padd/pmul.
9a97dac4d9 Doc: add an example for HouseholderQR::householderQ()
eee34f2da4 workaround compilation issue with MSVC 2005
15f1563533 Before moving to the new building
746378868a Implement A.noalias() = B * C without temporaries * Wrap expression inside EvalToTemp in copy_using_evaluators() if we   assume aliasing for that expression (that is, for products) * Remove temporary kludge of evaluating expression to temporary in   AllAtOnce traversal * Implement EvalToTemp expression object
d0b873822f Make product eval-at-once. * Make product EvalAtOnce in cases OuterProduct, GemmProduct and   GemvProduct * Ensure that product evaluators are nested inside EvalToTemp   evaluator * As temporary kludge, evaluate expression to temporary in AllAtOnce   traversal and pass expression operator to evalTo()
2393ceb380 Implement eval-at-once in evaluator. - Add evaluator_traits with HasEvalTo flag, which is true if evaluator   has evalTo() function. - Add AllAtOnce traversal, which calls evalTo() in evaluator. - If source evaluator in copy_using_evaluator has HasEvalTo set, then   use AllAtOnce traversal.
c1eb820e50 Implement interface for NoAlias assignments. * Rename the old copy_using_evaluators to noalias_copy_using_evaluators. * Write a new copy_using_evaluators which strips NoAlias expression, if present,   and calls noalias_copy_using_evaluators; in future, it will also take care of   aliasing in products. * Add expression() getter to NoAlias.
069fd0e4be Move (part of) evaluation of products to evaluator objects. * Copy implementation from CoeffBasedProduct. * Copy implementation from GeneralProduct in InnerProduct case. * For GeneralProduct in other cases, call the evalTo() member function with   expression objects in constructor of evaluator.
9629ba361a bug #482: pass scalar by const ref - pass on the sparse module (also fix a compilation issue due to previous pass)
23184527fa Resize lhs automatically in copy_using_evaluator().
139c91bf30 fix implicit scalar conversion
a2ace4b79a bug #482: pass scalar arguments by const references. This changeset only concerns the Core and Geometry modules
cc964b6caf fix performance regression due to check_rows_cols_for_overflow and add appropriate assertions in the PlainObjectBase::resize() functions. The fix consists in disabling this useless test for statically allocated objects.
57b5804974 remove dynamic allocation for fixed size object and triangular matrix-matrix products
8994f9962a Fix bug in {Matrix,Array}Wrapper evaluator
d0d077b212 Fix bug in evaluators with sliced vectorization.
172af9facc Fix an evaluator test which was wrong and failed in debug builds.
7c32904766 typo
e46fc8c05c fix GMRES
cc6dd55028 put the resurected files into the Eigen namespace
62c504e7bf fix most of the shadow warnings in Core/*.h
5fae6c7848 resurrect expression evaluators
81e39e1bc6 bump default branch to 3.1.90
b737850d38 Added tag 3.1.0-rc2 for changeset dd86165c135a5dfc8f4e8040d242cd3812d56087
dd86165c13 bump to 3.1.0-rc2
110cf8bbf5 fix compilation issue with MKL's backend
d428b620aa add the multithreading topic in the topic list
eb626877d7 fix sparse benchmark help
6f3057f624 extend documentation of *Support modules
5b5f3ecafa MPreal: extended unit test, remove useless internal overloads, add support for internal::cast (needed for printing)
7380592bc2 patch mpfr c++ copy to fix warnings and min/max issues
b5093e2585 update internal mpfr C++ copy
8c71d7314b Fix some typos in sparse tutorial.
b96b429aa2 fix bug #478: RealSchur failed on a zero matrix.
c8346abcdd fix bug #477: warning with gcc 4.7
52dce0c126 significantly extend the tutorial of sparse matrices
882912b85f comment two tests in nomalloc (there is no regression here, it's just I've been too optimistic when adding them recently)
1727373706 fix geometry tutorial about scalings.
47a77d3e38 update custom scalar type doc
791e28f25d update adolc support wrt "new" NumTraits mechanism
148587e229 Update custom scalar example, based on unstable/Eigen/AdolcForward .
3c9289129b prevent the allocation of the two preconditioner, only one is needed
f0c34c6822 Build finished... start debugging
aa3daad883 fix a warning and formatting
3fd2beebc8 Matrix-Market: fix perf issue and infinite loop
c858fb353f fix a few warnings
37d367a231 fix typo in unsupported/NumericalDiff
12e9f3b0fc Added tag 3.1.0-rc1 for changeset 4ca5735de4b0213f3907784b0f2df68aef9c0cd2
4ca5735de4 bump to 3.1.0-rc1
0c9b08e46e build complete... almost
b9f25ee656 bug #466: better fix for the race condition: this new patch add an initParallel() function which must be called at the initialization time of any multi-threaded application calling Eigen from multiple threads.
a3e700db72 fix bug #475: .exp() now returns +inf when overflow occurs (SSE)
324ecf153b disable the MKL's vm*powx functions on windows
f8a0745cb0  Build process...
c0ad109499 Checking Data structures and function prototypes
9c7b62415a simplify and clean a bit the Pastix support module
4e8523b835 update blas interface for trsm
88e051019b extend nomalloc unit test to test the solve calls
cd48254a87 fix inclusion order
924c7a9300 avoid dynamic allocation for fixed size triangular solving
bccf64d342  Checking Syntax...
bc580bbffb fix typo
0591011d5c Sparse LU - End Triangular solve... start debugging
f2849fac20 Fix bug #466: race condition destected by helgrind in manage_caching_sizes. After all, the solution based on threadprivate is not that costly.
7bdaa60f6c triangular solve... almost finished
28d0a8580e workaround ICC 11.1 compilation issue
7e36d32b32 fix ambiguous calls in the functors by prefixing function calls with internal::
f091879d77 Memory management
5cec86cb1e BTL: add missing TRMM plots, update Eigen's interface
512e0b151b clean the support for testing existing sparse problems
83c932ed15 fix a warning
1e5e66b642 For consistency, Simplicial* now factorizes P A P^-1 (instead of P^-1 A P). Document how is applied the permutation in Simplicial* .
63c6ab3e42 fix documentaion of twistedBy
c1edb7fd95 Added tag 3.1.0-beta1 for changeset b7a72859097ac33d2bb7b9396180f1a00d06212d
b7a7285909 bump to beta1
5a697e495c fix installation path
268ba3b521 Memory expansion and few bugs
05af70a958 make sure we do not solve with a null right hand side
fd32697074 Fix stopping criteria of CG
b9f0eabd93 discourage users to user developer preprocessor directives
84d20720b2 fix umfpack for row-major
9d2b6dd71a test block objects for sparse solving
c58b759865 Fix bug #454: allow Block/Map objects for solving with SuperLU
fc5f21903b Fixed RVCT 3.1 compiler errors.
cb64e587c5 Fix kdBVH unit test
945179b26c CholmodDecomposition now has explicit variants. These variants will allow to provide access to the underlying factors.
5f5a4d4546 make Simplicial* non-copyable, and fix return type of Simplicial*::compute()
a2ae063491 add a noncopyable base class for decompositions
1b20e16546 extend umfpack support
4e5655cc03 Supernodal Matrix
b509cf0742 Fix bug #468: generalize UmfPack support to accept any input at the cost of an implicit copy.
7f63169f09 SimplicialCholesky: avoid multiple twisting of the same matrix when calling compute()
b26d6b02de Eliminate and prune columns in a panel
8608d08d65 Symbolic and numeric updates within the panel
8ab820b5b8 Symbolic and numeric update on a whole panel
97cdf6ce9e ARM NEON supports multiply-accumulate instruction vmla, use that in pmadd().
b6267507ea Add preliminary files for SparseLU
b202c5ed2f The sparse quick reference guide is not ready
1b9097644d Add common options to the benchmark interface
5cbe6a5fbf Read header of Hermitian matrices
2fecd818c4 Add a preliminary reference guide on sparse interface
695a7ab9d7 protect min/max with parenthesis
b5f70814c1 Warn users against dangerous macros. Also, mark EIGEN_DEFAULT_TO_ROW_MAJOR as internal (see also bug #422).
ce2e2fe336 bug #455: add support for c++11 in aligned_allocator
823c44e4e5 merge
cb3b1bb73e AutoDiffScalar: fix bug with operator/, add missing functions
d062a8bd31 Got rid of a warning message by doing an explicit cast
8f47246475 fix lmdif1 with Scalar!=double
65fb0d43ff Define NoChange as enum constant (bug #450). This gets rid of some warnings on Intel Composer XE, apparently.
1741dbce1a fix more warnings in MKL support
57b5767fe2 Fix infinite recursion in ProductBase::coeff()  (bug #447) Triggered by product of dynamic-size 1 x n and n x 1 matrices. Also, add regression test.
5cab18976b cleaning pass: rm unused variables in MKL stuff, fix a few namespace issues, MarketIO needs iostream
1198ca0284 remove debug output
5d56f9f763 Remove unused file EigenvaluesCommon.h
3c412183b2 Get rid of include directives inside namespace blocks (bug #339).
84c93b048e Added spline interpolation with pre-defined knot parameters.
f6a5508392 remove an extra ';' and suppress a 'variable used before its value is set' warning
a3ddb14426 remove use of GSL in polynomialsolver unit test
51410975ac suppress extra ',' and ';'
b0cf95619e fix compilation of "somedensematrix.llt().matrixL().transpose()" (missing constness on the return types)
311c5b87a3 Replicate now makes use of the cost model to evaluate its nested expression
3018e80c59 uniformize eigen_gen_docs between branches / cleaning
a060e0b486 does not include MatrixMaketIterator on win32, no "using whatever" in global scope in a header file
daaeddd581 rm unused gsl_helper file
48f0bbb586 fix bug #362 and add missing specialization for affine-compact * projective
63ea667ed7 fix compilation with ICC
5dbb646190 Add private copy constructors to sparse solvers backends
2d35f88bcf Cholmod does not compute a determinant
22cd65ee33 Adding a householder-GMRES implementation from Kolja Brix
f776c061a1 Correct a small bug in sparse_solver
f804a319c8 modify the unit tests of sparse linear solvers to enable tests on real  matrices, from MatrixMarket for instance
ada9e79145 add a benchmark routine for all sparse linear solvers in Eigen
caecaf9c9e add missing forward declaration
c172abdcc7 add sparse * permutation products with assiciated unit tests
8ff882aa4c add sparse-selfadjoint to sparse-selfadjoint assignment operators (no need to use .twistedBy(I) anymore)
fd2f399c18 fix bug #439: add Quaternion::FromTwoVectors() static constructor
6c3b8b2ebc we have a new server for hosting CDash reports.
afeddd80ab Algorithm to equilibrate rows and columns of a square matrix
0d52b965c8 Add simple API to set Pastix parameters
f6cd3389a2 compress loaded market matrix
daad446d5d workaround stupid gcc 4.7 warning
f0a1652113 s/__SSE3__/EIGEN_VECTORIZE_SSE3
b0fd94aa85 improve FindFFTW  cmake module
30dee7d235 Add some documentation to existing methods in the Householder module.
77b05d5b7d remove parenthesis suggestion warning
60daf70a20 add 2 missing ReverseInnerIterators
dd9365e089 Fixed division by zero corner case in array unit test.
d7da6f63a8 declare Block::m_outerStride as Index (instead of int)
728ca6ad9c export IsRowMajor in MappedSparseMatrix
9b1ad5e5bd rm cC++11 features
fe9b7c2564 typo in variable name not revealed by ICC
48a3e0ed55 fix conversion warning
0d8466d317 Adding an interface to PaStiX, the multithreaded and distributed linear solver
37d2efd4f6 Adding support to read and write  complex matrices in Matrix Market format
c08521ea6b Improved the unit tests for setLinSpaced. Provide a default constructed step size as opposed to an int when the size is 1.
ef022da28e Fixed setLinSpaced for size==1.
81c1336ab8 Added support for component-wise pow (equivalent to Matlab's operator .^).
aee0db2e2c Moved the operator/(Scalar,ArrayBase) into the Eigen namespace.
8cb3e36e14 Added support for scalar / array division.
8a7d16d523 Replicate ctor now uses Index instead of int.
553a0ae924 simplify and speedup sparse * dense matrix products
85b358097d allow null elements in sparse assignments
fc85f91df0 fix MKL interface with LLT::rankUpdate
309b27b545 update unit test for Simplicial-Cholesky
0d3d46573e fix assertion condition
5effdba2c6 SimplicialCholesky*: s/LLt/LLT and s/LDLt/LDLT for consistency with dense names
ece30e9e6f fix a couple of warnings
eb168ef8ed add analyzePattern/factorize API to iterative solvers and basic preconditioners
122f28626c fix and clean Pardiso solver and s/PARDISOSupport/PardisoSupport
b240a3fad9 add unit tests for analyzePatter/factorize API
bc8188f6a1 fix symmetric permuatation for mixed storage orders
128ff9cf07 declare a ReverseInnerIterator in sparse CwiseBinaryOp. These ReverseInnerIterator should probably be removed anyway since we currently don't have real use cases for them. The only one in TriangularSolver could be advantageously replaced by a binary search.
1edfa64f44 bug #419: Add spaces between adjacent > in template arguments
eff167d2c8 SSOR is not there yet
4cc6d7aa62 clean a bit the ILUT code
ef448da57b add Eigen::Array support to GDB pretty printers
7de3478027 <complex> must be included first
ef7f1371b2 some cleaning and add copyrights
16da7299dd Add test in BiCGSTAB for ILUT
edbebb14de Split the computation of the ILUT into two steps
a815d962da Add the implementation of the Incomplete LU preconditioner with dual threshold (ILUT) Modify the BiCGSTAB function to check the residual norm of the initial guess
9ed6a267a3 Modify the LinSpaced function to take only the two bounds
2ea98594c4 Modify the symmetric permutation to deal with nonsymmetric matrices
70284b7eff suppress generation of TEMPLATE_RELATIONS: they are useful but take much too much space
8dd3ae282d fix bug #417: Map should be nested by value, not by reference
44b19b432c Add a tutorial page on the Map class, and add a section to FunctionsTakingEigenTypes about multiple-argument functions and the pitfalls when using Map/Expression types.
5bb34fd14c fix bug #415: wrong return in Rotation2D::operator*=
a1c7b5aa48 Adding support for twistedby on SparseMatrixBase
3836402631 Improve performance of some Transform<> operations by better preserving the alignment status. There probably many other places in Transform.h where such optimizations could be done.
ff67676c0b Added tag 3.1.0-alpha2 for changeset fe0350cf1bb635f4967f2b5d17fe7b25a07065da
fe0350cf1b bump
99c694623a fix a dozen of warnings with MSVC, and get rid of some useless throw()
6ad48c5d92 fix conjugation in packet_lhs
4ed87c59c7 Update the PARDISO interface to match other sparse solvers. - Add support for Upper or Lower inputs. - Add supports for sparse RHS - Remove transposed cases, remove ordering method interface - Add full access to PARDISO parameters
1763f86364 add the recent setFromTriplets() feature in the manual
fe85b7ebc6 fix several const qualifier issues: double ones, meaningless ones, some missing ones, etc. (note that const qualifiers are set by internall::nested)
bc7b251cd9 fix compilation errors with ICC
a594d7ffd7 stop disabling this legitimate warning, recall that in the following the const on FooRef is really meaningless: typedef Foo& FooRef; const FooRef foo;
ad4aa7873f remove unused variables
fd4aefadcd fix ctest -D Foo with MSVC 2008
a64407f086 Enable Eigen to compile on 'pure C/C++' Gcc environment (with no inline assembly or asm directive). Required if we want to use Eigen with Adobe Alchemy.
13abb37721 shutup floating point underflow warning for this specific unit test
7002639844 the default ctor had no sense because of the const reference member
13e46ad847 add missing return *this
9a954d29ec rm non standard and useless overloads of is_arithmetic for long long
634fedaf68 proper C++ casting
10cd52350f fix a few warnings: change of sign and missing return statement
9c86ee2695 fix static inline versus inline static issues (the former is the correct order)
8d6e394b06 workaround "empty macro argument" warning
670e3af5a8 add .data() member to Diagonal<>
18e3ac0f0d fix some compilation errors with ICC and -strict-ansi
87138075da add the possibility to assemble a SparseMatrix object from a random list of triplets that may contain duplicated elements. It works in linear time, with O(1) re-allocations.
fc2d85d139 fix memory leak in SuperLUSupport
27d222d23e honor nested types in dense * sparse
ed244e9c1a Document that JacobiSVD also handles complex matrices. Thanks to 'Jazzdude' for noting this on IRC.
0251bb6c1d add missing inline keyword (linking issue)
65d5311c68 SimplicialCholesky: the shift offset must be real, and fix a comparison issue for complexes
d9f5840f7a simple compilation fix
a108216af1 fix bug #410: fix a possible out of range access in EigenSolver
362fcabc44 Check for positive definiteness in SimplicialLLT
5e4dfa4a09 fix a nesting type issue in Sparse/TriangularView
606e204f6d fix bug #406: Using OpenMP and Eigen causes infinite loop/deadlock (transplanted from fd52daae87b7b1cc2618b12b4579a0eab5194d48 )
c68616b3b5 fix warning with gcc 4.6
87f2af5930 workaround ICC compilation error with -strict-ansi
d615d39af0 determine windows version from major.minor only, the patch number is irrelevant.
0d03492e1e std::isfinite is non standard
ee9f3e34b0 LLT: improve rankUpdate to support downdates, LDLT: add the missing info() function, improve unit testing of rankUpdate()
039408cd66 added functions to allow for cwise min/max operations with scalar argument (bug #400). added function for array.min(), array.max(), matrix.cwiseMin(), matrix.cwiseMax().
238999045c optimize the packing of lhs blocks for matrix-matrix products => significant speedup for small products
0e1e0a2a58 Make sure that now-fixed assert is not triggered.
274f8a0947 Fix broken asserts releaved by Clang.
589cc627f8 fixe one more VC10 ICE
db8f528737 fix VC10 ICE
d6bf9f848a Correct description of rankUpdate() in quick reference guide. Thanks to Sameer Agarwal for pointing out this mistake. (transplanted from bc0fc5d21e420766bcf4e3e89cfd87eb7ab68bea )
2d4fee0b40 Fix out-of-range int constant in 4x4 inverse. (transplanted from 45bcad41b444a44d28558472ff27d5cd1207d41c )
e7ef367db1 suppress unused variable warnings
bdee0c9baa set the default number of iteration to the size of the problem
15ea999f84 pushed too fast the previous one
901bcdd2a8 the previous test works for Dynamic sizes only
96a18ef230 add a reconstruction test
8171adb7ff fix bug #398, the quaternion returned by slerp was not always normalized, add a proper unit test for slerp
67ae94f3a2 fix compilation of sparse_basic unit test for complexes
e3e39ea26d suppress an 'unused variable' warning
2c03e6fccc evaluate 1D sparse expressions into SparseVector and make the sparse operator<< and dot honor nested types
7f04845023 fix assignment of a row-major sparse vector to a column major sparse one
e4cea957df fix bug #391: prune was for compressed format only, now it also turns the matrix into compressed form
7e866c447f fix bug #391: improper stream output for uncompressed mode, also avoid double debugging outputs for column major matrices
6f92b75874 add aliasing test for sparse*sparse product
50d756b9ea fix bug #394: innerVector::nonZeros() was broken for uncompressed mode
15d781b64c we need to define EXTRACT_ALL to YES to get doxygen see the whole hierarchy. Exclude internal::* from the doc.
fcc966b40d workaround doxygen limitation to follow the base class of PlainObjectBase
33e52a3943 rm local fill-in ratio estimation (was broken sometimes)
732a50d043 implement a more optimistic heuristic to predict the nnz of a saprse*sparse product
40c0f3af57 fig bug #396: add a static assertion on the storage order of a sparse-sparse coeff-wise binary op
3db6455896 Remove evaluators for 2.1 release. We plan to re-instate them when we branch 2.2 (see bug #388).
0308c11849 remove a file that was not intended to be committed
1e7712771e Remove asserts that eigenvalue computation has converged (bug #354).
1aa6c7f122 fix sparse insertion example
d738bedc5b remove redundant declaration (fix compilation with clang 3.0)
f60e6f5ee8 s/compressed()/isCompressed()
594fd2d11d Cholmod: add support for uncompressed SparseMatrix objects
9d7d634897 add cholmod_support unit tests
f35708d2e0 enforce weak linking of xerbla
105e170d8b trivial compilation fix
2600ba1731 feature 297: s/intersectionPoint/pointAt, fix documentation, add a unit test
c06ae325a4 feature 297: add ParametrizedLine::intersectionPoint() and intersectionParam() -> intersection() is deprecated
36457178f9 bug #352:properly cast constants
d400a6245e fix compilation with EIGEN_NO_DEBUG
38277e8a9b feature 319: fix LDLT::rankUpdate for complex/upper, simply the algortihm, update copyrights
2d7c3eea53 feature 319: Add update and downdate functionality to LDLT
37f304a2e6 add a "using MKL" documentation page, add a minimal documentation of PARDISO wrapper classes, refine a bit the EIGEN_USE_* logic
fff25a4b46 Fix MSVC integer overflow warning
57c6bfba08 add missing CMakeLists.txt
081abb701d add user defined CXX and LINKER flag cmake variables for the unit tests
10447a7b57 mv blas.h to src/misc such that it would be possible to use any blas libraries, however, this requires some more works:  - add const qualifiers in the declarations of blas.h  - add the possibility to add a suffix to blas function names
43cdd242d0 - split and rename defined tokens to enable the use of BLAS/Lapack/VML/etc - include MKL headers outside the Eigen namespace.
015c331252 Intel(R) MKL support added. * * * License disclaimer changed to BSD license for MKL_support.h * * * Pardiso support fixed, test added. blas/lapack tests fixed: Scalar parameter was added in Cholesky, product_matrix_vector_triangular remaned to triangular_matrix_vector_product. * * * PARDISO test was added physically.
e270a5656a fix min/max clash with clang's header by including fstream beforehand
86bb20c431 remove dead code
e36a4c880a suppress deprecated warning when compiling legacy tests
06450882ab add missing CMakeLists.txt in Splines
dd232e30b0 Document QuaternionBase, minor doc improvements. * Document class QuaternionBase so that docs for members are displayed. * Remove obsolete \redstar refering to Array module * Fix typo in Constants.h * Document EIGEN_NO_AUTOMATIC_RESIZING
a1fa05f14e improve compiler name and version detection
a0da96e2f4 fix detection of ICC version
80f8ed9f9c improve compiler and architecture detection
c3ad1f9382 eigen_gen_docs: dont try to update permissions on server
6ec0af6dc7 Added tag 3.1.0-alpha1 for changeset e017f798eba1847fcfa16f0ce03ff96a4ef6a07e
e017f798eb bump
accae638b2 Fixed a typo.
84cf1b5b1d fix QuaternionBase::cast. It did not work with clang, and I'm unsure how it worked for gcc/msvc since QuaternionBase was introduced
9ca673daed fix compilation with clang
dd504d6aae fix bug #223: SparseMatrix::Flags no longer encode triangularness information
59576014a9 fig bug #373: compilation error with clang 2.9 when exceptions are disabled (cannot reproduce with clang 3.0 or 3.1)
b60624dc2a fix bug #384: add a static assertion on the Index type which has to be signed
82f9aa194d fix bug #294: add a diagonal() method to SparseMatrix (const)
69966e90e1 fix bug #221: remove the dense to SparseVector conversion ctor.
5dc9650f11 fix bug #281: replace csparse macros by template functions
a8a2bf3b5a Added docs to the spline module.
9bd902ed9c fix bug #341: trisove on MappedSparseMatrix
9353bbac4a fix bug #356: fix TriangularView::InnerIterator for unit diagonals
32917515df make the accessors to internal sparse storage part of the public API and remove their "_" prefix.
1cdbae62db add SparseVector::ReverseInnerIterator
91e392a042 add ReverseInnerIterators to loop over the elements in reverse order, and partly fix bug #356 (issue in trisolve for upper-column major))
a09cc5d4c0 fix bug #282: add the possibiliry to shift the diagonal coefficients via a linear function.
c861e05181 fix matrix names in the insertion example
9ae606866c Eigen2sSupport: import some fixes from the 3.0 branch (MSVC fix)
950eeab4d7 RandomSetter: turns the matrix into compressed form before the filling
c0e36516f3 add a command to fix the permission of the uploaded documentation
3f56de2628 improve sparse manual
e759086dcd improve documentation of some sparse related classes
4ca89f32ed Sparse matrix insertion:  - automatically turn a SparseMatrix to uncompressed mode when calling insert(i,j).  - now coeffRef insert a new element when it does not already exist
f10bae74e8 - move CompressedStorage and AmbiVector into internal namespace - remove innerVectorNonZeros(j) => use innerVector(j).nonZeros()
a0bcaa88af Extend tutorial page on broadcasting to reflect recent changes.
b85bcd91bf remove GSL dependency in the unit tests
7aaae9d6df remove useless blas reference code
3a4c78b588 add code for band triangular problems:  - currently available from the BLAS interface only  - and for vectors only
9fdb6a2ead output error messages in blas unit tests
b00a33bc70 Integrated spline class and simple spline fitting
49d652c600 fix assigment from uncompressed
6b8d6887ac bug fix in SparseSelfAdjointTimeDenseProduct for empty rows or columns
00d4a360ba bug fix in SparseView::incrementToNonZero
d1b54ecfa3 add more support for uncompressed mode
cda397b117 cleanning pass on the sparse modules:  - remove outdated/deprecated code  - improve a bit the documentation
2d621d235d fix alignment computation in Block and MapBase such that aligned means aligned on 16 bytes and nothing else (transplanted from dcb36e3d49f25566a1733846cd4d6592bf8be0c4 )
a2810aa32f bug #383 - another c++11-user-defined-literal fix
8107b3da75 bug #383 - EIGEN_ASM_COMMENT broken in C++11
f56316f7ed add two alternative solutions to the problem of fixed size members
70206ab1e1 draft of the new sparse manual reflecting the new sparse module
57d1ccb2dc fix compilation of doc (broken by changeset bc6d78982fb2b8d07827246e682acdf47d0e8944  - General tightening/testing of vectorwise ops)
2d4fe54b73 fix CG example
01b4b6e456 improve accuracy of 3x3 direct eigenvector extraction
be9b87377f typo
63dcdb65fd Install eigen3.pc in default directory if pkgconfig not found (bug #358).
ffe6d1f901 Alignment fixes:  * Fix AlignedBit computation for Plain Objects  * use it for the conditional alignment of operator new  * only overload new in PlainObjectBase, don't overload again in Matrix and Array
f278a3eaba stop fill pivoting LU only if the pivot is exactly 0
bc6d78982f Bugs 157 and 377 - General tightening/testing of vectorwise ops:
de22ad117c bug #157 - Implemented *= /= * / operations for VectorwiseOp (e.g. mat.colwise())
08c0edae86 Move EIGEN_USING_MATRIX_TYPEDEFS macros to Eigen2Support.
db36e4204f [Geometry/AlignedBox] New typedefs, like for Core/Matrix
8fbbbe7521 fix some include paths
cb2f1944e2 add the new module headers
53fa851724 move sparse solvers from unsupported/ to main Eigen/ and remove the "not stable yet" warning
dcb66d6b40 fix ei_add_property
3e4a68cc60 optimize vectorized reductions by peeling the loop:  - x2 for squaredNorm() on double  - peeling the loop with a peeling factor of 4 leads to even better perf    for large vectors (e.g., >64) but it makes more difficult to keep good performance on smaller ones.
c110abb7d2 fix performance issue with SPMV
9d82a7e204 merge with hauke/eigen-cdash-improvements branch
3a82aa1133 [Core/Matrix] Fix: Clear the right typedef macro
fb3aa7220f reimplement abs2 not to use std::norm which is incredibly slow.
45a6bb34c3 Add simple example on how to compute Cholesky decomposition.
f422668d39 Patches to support ARM NEON with Clang 3.0 and LLVM-GCC
1b98b73472 Refactor force-inlining macros and use EIGEN_ALWAYS_INLINE to force inlining of the integer overflow helpers, whose non-inlining caused major performance problems, see the mailing list thread 'Significant perf regression probably due to bug #363 patches'
aa3e420df5 Add test for Matrix(x, y) ctor static assert added in previous changeset
ab3f138b23 In the Matrix constructor taking (rows, cols), statically assert that the types are integer.
478de03bd8 fix a couple of warnings in the unit tests
cdd3e85060 Automatically produce a tgz archive of the documentation.
b4d1d4a2e0 completely remove EIGEN_BUILD_BLAS_LAPACK option
c5ddaf0c87 fix compilation
1de769d122 remove deprecated assert
05de3dddca use runtest.sh script iif /bin/bash does exist
94d87abbdb fix fftw cmake stuff
a594ac3966 Allow for more iterations in SelfAdjointEigenSolver (bug #354). Add an assert to guard against using eigenvalues that have not converged. Add call to info() in tutorial example to cover non-convergence.
57207239f3 Mention that the axis in AngleAxis have to be normalized.
fa7c08a831 bug #365 - Rename B0 in GeneralBlockPanelKernel.h to avoid name clash with termios.h on POSIX systems.
0cf2a05f3e bug #365 - Add test for non-usage of B0
9df2f5c923 bug #369 - Quaternion alignment is broken
0609dbeec6 fix more variable-set-but-not-used warnings on gcc 4.6
6a1caf0351 Fix some unused-variable warnings with GCC 4.6
4477843bdd bug #206 - part 4: Removes heap allocations from JacobiSVD and its preconditioners
5e431779f3 bug #206 - part 3: Reimplement FullPivHouseholderQR<T>::matrixQ() using ReturnByValue
7bf0e8cd82 bug #206 - part 2: For HouseholderSequence objects, added non-allocating versions of evalTo() and applyThisOnTheRight/Left that take additional working vector parameters.
bca18a13ea The most important inline keyword ever? Without it, gcc failed to inline this function, which is called by all matrix constructors...
d7e70edfb3 remove the MSVC specific blas/lapack option
e44c19d1cc hopefully this workaround of cmake bug #9220 works for MSVC too
1ddf88060b update sparse*sparse product: the default is now a conservative algorithm preserving symbolic non zeros. The previous with auto pruning of the small value is avaible doing: (A*B).pruned() or (A*B).pruned(ref) or (A*B).pruned(ref,eps)
a997dacc67 mark deprecated sparse solvers as so.
39d4585bff add the possiibility to disable deprectated warnings (useful for deprecated unit tests!)
5d43b4049d factorize solving with guess
70df09b76d move DynamicSparseMatrix to SparseExtra
a2d414f568 move the blas.h header to blas/ and remove declaration of function returning a complex
de69129f56 forgot inline keyword
16b638c159 Throw std::bad_alloc even when exceptions are disabled, by doing new int[size_t(-1)]. Don't throw exceptions on aligned_malloc(0) (just because malloc's retval is null doesn't mean error, if size==0). Remove EIGEN_NO_EXCEPTIONS option, use only compiler standard defines. Either exceptions are enabled or they aren't.
dcbc985a28 bug #363 - add test for integer overflow in size computations
739559b08a bug #363 - check for integer overflow in size=rows*cols computations
0c6055c285 bug #363 - check for integer overflow in byte-size computations
c1170d2e93 update the decomposition catalogue
3fce43a704 add a basic ILU preconditioner
a5761d6dd7 fix sparse tri-solve for full matrices
15cb4f5b09 extend BiCGSTAB to arbitrary rhs
21d27c6f71 add proper bicgstab unit test
cd3c2451b6 add a unit test for permutation applied to sparse objects
3172749f32 refactor sparse solving unit tests
4f237f035c extend SimplicialCholesky for sparse rhs, and add determinant
5dc8458293 extend CG for multiple right hand sides
b94c00226f make it compatible with Diagonal<>
ae9c96a32d fix assignment to a set of sparse inner vectors
4e7f38ffc7 fix nesting
e97879857b DiagonalPrecond: fix potential segfault in case the diagonal contains explciit zeros
1beb8a6564 add a generic unit test for sparse SPD problems
2fc1b58cd2 split SimplicialCholesky into SimplicialLLt and SimplicialLDLt classes and add specific factor access functions
e1dec359ba Configured unsupported/test/mpreal/*.* as CRLF files.
b96d0bd240 Added a flag to build blas/lapack.
683ea3c93f fix superLU when the salver is called multiple times
ac3ad9c1e7 Convert tabs to spaces.
17c321617d Fix bug #286: Infinite loop in JacobiSVD with denormals
961a825b97 Add method which returns worst time (and make some methods const).
9bba0e7ba1 clean sparse LU tests
b2988375e8 fix a couple of issues in SuperLU support (memory and determinant)
6799fabba9 port umfpack support to new API
d8ae978b65 fix some compilation issues
823b2105b6 fix atan2 when tmp4==0
b0adbfbae7 BiCGSTAB does not like starting from 0...
c331c092d5 no comment
7301f4345c quick workaround of MSVC9' ICE in pset1
83563dee3c find macport' umfpack/cholmod
ebfed5a512 Enable incomplete BLAS/Lapack builds when no fortran compiler has been found. Works here with gcc. Hopefully this will work for MSVC too.
1d796acb05 fix status after initialization
5d1836b182 accept both STL and Eigen's containers for reserve()
e0a6ce50dd Typo in geometry tutorial.
2092b45d0d Bug fix for matrix1 * matrix2 * scalar1 * scalar2. See report on http://forum.kde.org/viewtopic.php?f=74&t=96947 .
16b13596a6 mainly enhance MatrixLogarithm's performance for RealScalar != double
edf4c4b217 add support for macosx
9053729d68 add a bi conjugate gradient stabilized solver
f4122e9f94 add tan, acos, asin
6b006772f1 Fix LDLT::solve() if matrix singular but solution exists (bug #241). Clarify this in docs and add regression test.
59b83c14fd Write page on template and typename keywords in C++. After yet another question on the forum, I decided to write something on this common issue. Now we just need to link to this and get people to read it. Thanks to mattb on the forum for some links. Caveat: IANALL (I am not a language lawyer).
3e7aaadb1d fix bench_gemm
d52d8e4a53 reactivate the sorting in the experimental sparse-sparse product
7706bafcfd add the possibility to reserve room for inner vector in SparseMatrix
7898281b2b Put docs for unsupported modules in right place. Doxygen was confused by the unsupported modules being partly in the doc/ directly, instead of completely in unsupported/doc/ . Thus, the link to the unsupported modules on the server did not work (I think this manifested itself after doxygen was upgraded on the server).
b38d3b360e Define log2() on FreeBSD (fixes bug #343).
f1d98aad1b add atan2 support in AutoDiff and remove superfluous std:: specializations
063042bca3 Merged in trevorw/eigen (pull request PR-7)
477d3e5726 Update docs of PlainObjectBase::Map(); fixes bug #335. Also fix some typos.
a2feb6f3c7 Add defensive assert to MatrixExponential,
dd598ef8ce enhance efficacy via avoiding exception handling
6b31aa4bd1 resolve pkgconfig destination - #338
7ee084f82f Leverage triangular square root in matrix log.
c01ed935dd Split code for (quasi)triangular matrices from MatrixSquareRoot. This way, (quasi)triangular matrices can avoid the costly Schur decomposition.
8ddd1e390b fix: <ctime> is necessary for srand(time(NULL))
8414be739b fix bug #330: Index to int conversion warning
b3f5fbbd9a oops EIGEN_DEFINE_STL_VECTOR_SPECIALIZATION now perfroms full specialization, no need for the typename keywords
b85c89c313 fix bug #262: Compilation error of stdvector_overload test with GCC 4.6 Now our aligned allocator is automatically activatived only when the user did not specified an allocator (or specified the default std::allocator).
9bf4d709e4 Fix failures in redux test caused by underflow in .prod() test.
9e667e28f5 Add coverage for long double to matrix_exponential test.
6d7a32231d add compatibility with long double
ea4a1960f0 mv the mpreal copy in its own folder
79ad55a901 update to latest mpreal and fix a min/max issue in mprel.h
42e2578ef9 the min/max macros to detect unprotected min/max were undefined by some std header, so let's declare them after and do the respective fixes ;)
5734ee6df4 add the possibility to specialize assign_impl and still call the default implementations. (yes I know this change will be deprecated as soon as the evaluators will be in shape but I need this now)
ca7d3dca79 fix linking issue
f162f7c323 fix a numerical issue in the direct 3x3 eigenvector extraction
a660e6425c fix a bug where some rotations were not initialized They actually were in the original minpack code, this is a bug introduced by our migration. Reported on #322 and http://forum.kde.org/viewtopic.php?f=74&t=96197#p201158
5748d3c96f wa2 was computed twice because of a confustion between changesets 746c787a763ed8be1bbba1e42310d8b968feacd0  and ee0e39284c8ddd94ae82604e8bb51a846e3dc644 . Reported on forum: http://forum.kde.org/viewtopic.php?f=74&t=96197#p201158
b12522f696 Remove unnecessary template keywords (breaks compilation under MSVC). Thanks to Hauke for finding this.
3431c052c6 Improved compilation errors for Transform initialization/assignment with different numeric types.
3a2cabc275 compilation fix with conjugate_gradient_solve_retval_with_guess
51f706b916 add the possibility to configure the preconditioner
66fa6f39a2 add a naive IdentityPreconditioner
80b1d1371d add a conjugate gradient solver
8fa7e92e77 fix sparse selfadjoint time dense such that the other triangular part is not used at all
97ac0fd192 fix eigen2 support min/max garbage
e8313364c1 simplify a bit the 2x2 direct eigenvalue solver
47a2bca89f integrate Hauke's 2x2 direct symmetric eigenvalues solver
26d7dad138 add a computeDirect method to SelfAdjointEigenSolver for fast eigen decomposition
22bff949c8 protect calls to min and max with parentheses to make Eigen compatible with default windows.h (transplanted from 49b6e9143e1d74441924c0c313536e263e12a55c )
d4bd8bddb5 fix bug #320 (pretty gdb printer on mingw)
705023fd85 Translation * RotationBase now returns an isometric transformation.
3fb65734ab fix triangular unit test: it only accepts small matrices
22cc2b727b fix trmv unit test
38a4e3053d fix LLT rank one update for "upper" hermitian matrices
0d02182ae8 add an "InvalidInput" enum, used by the SuperLU interface
a8f66fec65 add the possibility to configure the maximal matrix size in the unit tests
bdb545ce3b enable instalation of blas and lapack libs
5fdebc2fa5 fix bug #316 - SelfAdjointEigenSolver::compute does not handle matrices of size (1,1) correctly
08074843ac fix few warnings reported by clang
c52268c649 suppress polluting EMPTY macro defined by SuperLU
2489c81562 add new interface to SuperLU
c98cd5e564 fix constness of intersection methods (bug #309)
0b308e79c4 Add DenseStorage specializations for dynamic size with MaxSize = 0 (bug #288). This is necessary for instantiations like Matrix<float,Dynamic,Dynamic,0,0,0>.
16db255333 Fix compilation of cholesky rank update test.
9b52fe0432 fix typo in doc for ParametrizedLine
3ecf7e8f6e add a KroneckerProduct module (unsupported) from Kolja Brix and Andreas Platen materials.
7aabce7c76 rm confusing sentence
16a2d896bc Relatively straightforward changes to wording of documentation, focusing particularly on the sparse and (to a lesser extent) geometry pages.
4a95badf74 A first tiny test commit: fix a spelling error in the documentation.
2f32e48517 New feature: add rank one update in Cholesky decomposition
a55c27a15f fix documentation of norm
642d452921 Suggest placing Eigen directory in system include path.
e3491beb48 Fixed a few typos and cleaned up some language.
a871f3cdb8 adapt test to the change reverting normalize() to returning void
aedccbf52f back out 842881cfb1b8ece6e41c58f0466ae979e514d001
d2673d89bd add test for normalize() and normalized()
842881cfb1 bug #298 - let normalize() return a reference to *this
40287d2fd9 remove the use of non standard long long
f82b3ea241 fix aligned_allocator::allocate interface
cf04a7c682 fix typo in constant name
6d3dee1b66 introduce a smart_copy internal function and fix sparse matrices with non POD scalar type
8c8ab9ae10 Implement matrix logarithm + test + docs. Currently, test matrix_function_1 fails due to bug #288.
a6d42e28fe Decouple MatrixFunction and MatrixFunctionAtomic in preparation for implementation of matrix log.
86ca35ccff Fix and test MatrixSquareRoot for 1-by-1 matrices.
91fe1507d1 Sparse: more fixes regarding long int as index type
421ece38e1 Sparse: fix long int as index type in simplicial cholesky and other decompositions
7a61a564ef Fix snippets for operator|| and && by adding pair of parens.
5bc4abc45e fix compilation with MinGW
562d3ea91d forgot to include this file in previous commit
35c1158ee3 add boolean || and && operators
b495203310 update URL
5830f90983 add read/write routines for sparse matrices in the Market format
9d6fdbced7 Fix truncated instructions for printers.py ... as noted by kp0987 on forum
5b71d44e18 fix bug #278: geometry tutorial (transplanted from 3cd1641dac7b9cc0f969d3ad656c15f037f2d1d1 )
9464745385 do not directly call std::ceil
7b46d7ed0f finish to fix bug #270: we have to use EIGEN_ALIGN_STATICALLY and not EIGEN_DONT_ALIGN_STATICALLY...
d23845c4cc Fix typo ('using namespace' instead of 'using').
87ac09daa8 Simplify the use of custom scalar types, the rule is to never directly call a standard math function using std:: but rather put a using std::foo before and simply call foo: using std::max; max(a,b);
5541bcb769 bug #225: add a unit test for memory leak
117d17ee58 bug #271: fix copy/paste mistakes in doc (transplanted from 145b9cad63101ee46924d446fa8b08ffb48c7f3a)
46bee5682f clean a bit previous patch (ctor vs static_cast and a few bits)
074b067624 fix implicit scalar conversions (needed to support fancy scalar types, see bug #276)
7209d6a126 fix gemv_static_vector_if on architectures that cannot aligned on the stack (e.g., ARM NEON)
96464f8563 clean several other assertion checking tests
501bc602ec fix vectorization_logic when EIGEN_GCC_AND_ARCH_DOESNT_WANT_STACK_ALIGNMENT
f2837aebc4 NEON: fix plset
8170ef0b2d add unit test for plset
7f2a88c91f NEON: disable unaligned assertion checking for non vectorized types
85c137ccd4 NEON: fix ploaddup
179d42bb2b fix bug #267: alloca is not aligned on arm
d4fd298fbb Autodiff: fix scalr - active_scalar
9a06055870 Store light-weight objects in evaluators by value. This resolves failure in unit test caused by dying temporaries.
a34a216e82 AutoDiff: add one missing operator- version
3de2f4b75a AutoDiff: fix most of bug #234 (missing operators, used old internal math function interface, etc)
ae3b6cc324 AutoDiff: fix unary operator-
e22a523021 Remove Eigen::internal::sqrt(), see bug #264.
0aa7425f15 fix bug #260: broken Qt support for Transform (transplanted from 84c8b6d5c58c8e09c53356287bdfc8bc730492a0 )
0c463a21c4 Forgot to 'hg add' example file in last commit.
d7e3c949be Implement and document MatrixBase::sqrt().
dac4bb640a Fix compilation error under GCC 4.5. That version is stricter in forcing function prototype and definition to match.
837db08cbd Add test for sqrt() on complex Arrays. From Gael's dashboard output of matrix_square_root test, I suspect the test committed here may fail on old gcc.
6e1573f66a Implement square root for real matrices via Schur.
6b4e215710 Implement matrix square root for complex matrices. I hope to implement the real case soon, but it's a bit more complicated due to the 2-by-2 blocks in the real Schur decomposition.
0896c6d97d Get rid of wrong "subscript above bounds" warning (bug #149).
4e7e5d09e1 s/n=n/EIGEN_UNUSED_VARIABLE(n)
fb76452cbc add missing .data() members to MatrixWrapper and ArrayWrapper
97b6d26f5b fix compilation on ARM NEON (missing AlignedOnScalar)
883219041f better fix for gcc 4.6.0 / ptrdiff_t, as suggested by Benoit
a18a1be42d Fix compilation with gcc-4.6.0, patch provided by Anton Gladky <gladky.anton@gmail.com>, working on debian packaging.
012419166e Bail out if preprocessor symbol Success is defined (bug #253).
781e75cbd7 Document some more preprocessor symbols: EIGEN_NO_MALLOC, EIGEN_RUNTIME_NO_MALLOC, eigen_assert.
cc23b0a3d9 Remove unused enums in Constants.h .
a96c849c20 Document enums in Constants.h (bug #248). To get the links to work, I also had to document the Eigen namespace. Unfortunately, this means that the word Eigen is linked whenever it appears in the docs.
1947da39ab fix bug #258: asin/acos copy paste mistake
10426b7647 Final working fix for the EOL extension. MSVC debugger tools are now forced to CRLF.
0358a8247c This should fix the eol extension.
9e0c8549ce Fixed Unix script line ending conversions.
06fb7cf470 Implement compound assignments using evaluator of SelfCwiseBinaryOp.
3b60d2dbc4 Implement swap using evaluators.
2d11041e24 Use copyCoeff/copyPacket in copy_using_evaluator.
3457965bf5 Implement evaluator for Diagonal.
f924722f3b Implement evaluators for Reverse.
bb2d70d211 Implement evaluators for ArrayWrapper and MatrixWrapper.
6441e8727b fix aligned_stack_memory_handler for null pointers
392eb9fee8 Quaternion : add Flags on Quaternion's traits with the LvalueBit set if needed Quaternion : change PacketAccess to IsAligned to mimic other traits test : add a test and 4 failtest on Map<const Quaternion> based on Eigen::Map ones
f85db18c1c I doubt this change was intented to be committed
50c00d14c8 be nice with the server : dont use -j3
e87f653924 fix bug #250: compilation error with gcc 4.6 (STL header files no longer include cstddef)
67d50f539b fix bug #242: vectorization was wrongly enabled on MSVC 2005
e48bc0dfe3 WIN32 isn't defined ?? but _WIN32 is.
0b40b36d10 Make MapBase(PointerType) constructor explicit (fixes bug #251)
820545cddb fix unaligned-array-assert link
c9b5531d6c Normalize eigenvectors returned by EigenSolver (fixes bug #249) because the documentation says that we do this. Also, add a unit test to cover this.
e654405900 Implement unrolling in copy_using_evaluator() .
7e86324898 Implement evaluator for PartialReduxExpr as a dumb wrapper.
11164830f5 Implement evaluator for Replicate.
12a30a982f Implement evaluator for Select.
88b3116b99 Decouple AssignEvaluator.h from assign_traits from Assign.h
0c146bee1b enforce no inlining of the GEBP product kernel: this is a big function that makes no sense to inline, though GCC was thinking the opposite. This even slighlty improve the perf. And as a side effect this workaround a weird GCC-4.4 linking bug (see "Problem with g++-4.4 -O2 and Eigen3" in the ML)
eae5a6bb09 Decouple Cwise*Op evaluators from expression objects
11ea81858a Implement evaluator for CwiseUnaryView
cca7b146a2 Implement evaluator for Map
a6b5314c20 Performance tunning for TRMM products
ae06b8af5c Make evaluators for Matrix and Array inherit from common base class. This gets rid of some code duplication.
afdd26f229 Do some of the actual work in evaluator for Block. Also, add simple accessor methods to Block expression class.
0d58c36ffd std::min/max are not implemented and they cannot be implemented easily
70d5837e00 Correct typo in QuickReference doc, plus typographical improvements.
77a1373c3a fix trmm unit test
d90a8ee8bd Evaluators: add Block evaluator as dumb wrapper, add slice vectorization.
b471161f28 fix typo and remove unused declaration.
969e92261d fix bug #239: the essential part was left uninitialized in some cases
10dae8dd4d Add directory containing split_test_helper.h to include path.
8175fe43e0 Evaluators: Make inner vectorization more similar to default traversal.
00991b5b64 extend trmm/trmv unit test to thoroughly check all configurations
4f1419e9c3 add the possibility to specify a list of sub-test suffixes in a compact way
6feb1d3c0b fix trmv for Strictly* triangular matrices and trapezoidal matrices
568478ffe5 fix trmm for some unusual trapezoidal cases (a dense set of columns or rows is zero)
f4ac7d2b43 automatically generate the CALL_SUBTEST_* macros
b175bc464f Evaluators: Implement linear traversal, better testing.
1b17a674dd Evaluators: Implement inner vectorization. The implementation is minimal (I only wrote the functions called by the unit test) and ugly (lots of copy and pasting).
5c204d1ff7 Evaluators: Implement LinearVectorizedTraversal, packet ops in evaluators.
e6fa4a267a improve computation of the sub panel width
931814d7c0 improve performance of trsm
c6ad2deead Bug fix in linspace_op::packetOp(row,col). Fixes bug #232. Also, add regression test.
42bc1f77be impl basic product evaluator on top of previous one
abc8c0821c makes evaluator test use VERIFY_IS_APPROX
4ada45bc76 BTL: add eigen2 backend
7d24cf283a do not confuse Eigen3 or beta versions of Eigen3 with Eigen2
7bb4f6ae2f BTL: do not enable GOTO1 if GOTO2 was found
3ef0da6efb fix tridiagonalization action
816541d82c add a stupid Product<A,B> expression produced by prod(a,b), and implement a first version of its evaluator
cfd5c2d74e import evaluator works
611fc17894 add support for ublas
ec32d2c807 BTL: by default use current Eigen headers, and disable the novec version
b3e43246bc BTL: add a Eigen-blas backend
f9da1ccc3b BTL: clean the BLAS implementation
e35b1ef3f3 BTL: rm stupid backends
fe595e91ae update plot settings
9cca79f5ca update aat action to do a syrk operation, and remove (comment) ata action
da3f3586e0 BTl: GMM++ LU is not a full pivoting LU
22c7609d72 extend sparse product unit tests
5fda8cdfb3 fix 228 (ei_aligned_stack_delete does not exist anymore)
eb9c6b6cfd merge
bb8a25e94b fix typos
535a61ede8 port sparse LLT/LDLT to new stack allocation API
eba023d082 make compile_snippet use Eigen/Dense
b8ecda5c66 clean a bit the stack allocation mechanism
bbb4b35dfc test the new stack allocation mechanism
290205dfc0 fix memory leak when a custom scalar throw an exception
5991d247f9 bump
37c5341d64 fix compilation for old but not so old versions of glew
2359486129 disable testing of aligned members when aligned static allocation is not enabled (e.g., for gcc 3.4)
dd2e4be741 fix array_for_matrix unit test
c5ef8f9027 Added tag 3.0-rc1 for changeset 4931a719f43f753c54d32fcc449952e888aef11b
4931a719f4 bump
27f34269d5 Document EIGEN_DEFAULT_DENSE_INDEX_TYPE. Also, expand description of EIGEN_DONT_ALIGN.
e7d2376688 Change int to Index in equalsIdentity(). This fixes compilation errors in nullary test on 64-bits machines.
dc36efbb8f fix bug #219: Map Flags AlignedBit was miscomputed, didn't account for EIGEN_ALIGN
9a47fb289b add test for EIGEN_DONT_ALIGN and EIGEN_DONT_ALIGN_STATICALLY, cf recent bugs (214 etc) and changeset 56818d907ed08bcc831da1e990dbc105fb681866
151e3294cf Fix equalsIdentity() for rectangular matrices.
5d1263e7c5 bug #37: fix resizing when the destination sparse matrix is row major
c6c6c34909 repeat nullary tests, and fix some tests
931edea57d Tweak geo_quaternion test to squash intermittent failures.
bfcad536e8 * bug #206: correctly forward computationOptions and work towards avoiding mallocs after preallocation, with unit test. * added EIGEN_RUNTIME_NO_MALLOC and new set_is_malloc_allowed() function to implement that test
b464fc19bc try to fix a ICC 11.1 compiler error (bug #217)
c541d0a62e disable ICC 12 warning 279 - controlling expression is constant
b43d92a5a2 The Eigen2 intrusive std::vector hack really can't be supported in eigen3 (bug #215)
56818d907e Make EIGEN_ALIGN16 always align to fix crashes with EIGEN_DONT_ALIGN_STATICALLY. New macro EIGEN_USER_ALIGN16 had the old behavior i.e. honors user preference.
e9868f438b Changed debug/gdb/printers.py to correctly display variable sized matrices. There is no python error now.
4f0909b5f0 fix bug #212 (installation of Eigen2Support/Geometry)
6cac61ca3e Copy fix of unit test when GSL is enabled to eigen2 test suite.
1180ede36d Escape hash character in docs as required by doxygen.
99fa279ed1 Use copy_bool() workaround in Eigen2 test suite. See bug #89 and changeset 59596efdf70244f92cd88b07498db8bf293689ac .
dbab12d6b0 Fix bug #205: eigen2_adjoint_5 test fails.
dc727d86f1 extend unit tests of Transform * MatrixBase and Transform * Homogeneous
5cec29162b fix compilation in the case of 1D Transform
703c8a0cc6 fix compilation when mixing CompactAffine with Homogeneous objects
d30f0c0953 fix transform * matrix products: in particular it now truely considers the rhs as a set of (homogeneous) points and do not neglect the homogeneous coordinates in the case of affine transform
adacacb285 fix bug #204: limit integer values to numbers which are representable using float
c8e1b679fa re-enable fast pset1-pstore by introducing a new higher level pstore1 function
951e238430 now fixing "unsupported" "legacy" code...
9c5c8d8916 Added tag 3.0-beta4 for changeset 77fc6a99144b05f22ab5cfc5dcf576f779f3c9b9
77fc6a9914 bump
eef03525b8 fix bug #203: revert to using _mm_set1_p[sd]
31621ff0ef relax condition in matrix_exponential test for clang
0b44893b4e fix umeyama test
8cad73072e fix stable_norm test: the |small| value was 0 on clang with complex<float>.
9be2712bf7 remove now-useless comments
0612768c1c fix bug #201: Clang too has intrinsics bugs preventing us to use custom unaligned loads
32025a2510 disable BVH test on Clang++. Looks like there's a good reason why BVH is unsupported. It seems to have a very weird usage pattern, relying on an externally defined bounding_box function in a naive way.
771e64200f fix compilation of unit tests with clang
4846c76d9d shut up a stupid clang 2.8 warning
afc9efca15 fix compilation with clang 2.8
ea7d872181 documentation fixes
b6299c974f add option to build in 32bit mode
b3544ce2ae bug #195 - fix this once and for all: just never use _mm_load_sd on gcc/i386, it generates redundant x87 ops
a8f5ef9388 Document (non)sorting of eigenvalues. Also, update docs for (Generalized)SelfAdjointEigenSolver to reflect that these two classes were split apart.
58abf0eb98 Use absolute error to test sum in which cancellation may occur.
ef73265987 to ease debugging let's catch invalid template options in Transform
4fbd78d993 fix compilation with gcc 3.4
5dfae4524b fix bug #195: fast unaligned load for integer using _mm_load_sd failed when the value interpreted as a NaN
2064c59878 Improved docs of PlainObjectBase::conservativeResize methods.
bb9a465c5a fix AltiVec ploaddup
28d17c5390 bounds the range of random integers for AltiVec
4bfe38eda2 extend testing of ploaddup
23aae0d63e fix pset1 for complex
0dfea7fce4 improve packetmath unit test
c121e6f390 implement ploaddup for complex and SSE/NEON even though they are not used in practice
955c099eb5 implement ploaddup for altivec and add respective unit test
a00aaf7f7e fix overflow in packetmath unit test
6e01780541 fix a couple of issues with pcplxflip
939f0327b6 mention reverse and replicate in the quick ref
78e1a62c54 implement pcplxflip for altivec
59eeb67187 add unit test for pcplxflip
b8374aec00 implement workarounds for MSVC IDEs and the Experimental target
7dc18b20bb same for neon
32e7dae776 Altivec: fix infinite loop (ei_ -> internal:: change)
9ab503903e suppress unused warning
14b164b00e do not try to use Eigen's blas/lapack if they cannot be compiled
c78b5fd9aa fix no newline warning
2fb5567e08 add missing AlignedOnScalar
3df134dec2 fix icc warning #68
c58a2ff03a add EIGEN_PERMANENTLY_DISABLE_STUPID_WARNINGS non-default option. Use it in our own CMakeLists. also add a include-guard-like mechanism to prevent doing unmatched #pragma warning push/pop.
9e1127619c merge
720767ae40 ICC 12 / linux only defined __INTEL_COMPILER, not __intel_compiler
d8e97aee89 shut up stupid ICC warnings
625814464e fix legitimate ICC 12 warning
39b27fb656 altivec compilation fix
25579df2d4 'fix' a couple of clang -Wconstant-logical-operand warnings (still not convinced about the pertinence of that warning)
3884308da7 __attribute__((flatten)) seems to be recognized by neither clang nor icc despite these compilers defining __GNUC__.
68631e28d4 also test non_projective_only with row major transformations
39d3bc2394 fix bug #190: directly pass Transform Options to Matrix, allowing to use RowMajor. Fix issues in Transform with non-default Options.
659c97ee49 gcc 4.4 also defines float32_t as a special type
769eeac35e disable output compression since this feature seems to be broken
51da67f211 more compilation fixes for altivec
05545d0197 fix compilation
8bee573a78 workaround ICC aggressive optimization
fb1a29fed5 fix ICE and warning with gcc 4.2.4
e129e985c3 link to blas/lapack only when needed, and use the static versions to hopefully workaround weird linking issues to gfortranbegin (see jitse dashboard)
2d5ea82807 fix bug #176 (workaround a too aggressive optimization made by ICC)
50a3cd678a Improved site and buildname generation.
3c00e3da03 enable some tests that have been commented out
434817164e fix umfpack with complexes
2c1ac23c62 remove unused code
a0e5b00280 forgot that one, again
6456b74a89 merge
86ca05b324 remove largeEps in adjoint unit test and use a more accurate test_isApproxWithRef test.
8f8c67b8bd fix bug #186 (in 32 bits mode, gcc 4.3 messed up with pfirst for complex<float>)
aa966ca319 fix bug #187: stable norm test was quite broken
f7cd63b964 fix bug #189 (issue with fortran concentions to return COMPLEX values)
69cecc45e5 extend mapstride unit test to test unaligned configurations
abce49ea21 fix a segfault in "slice vectorization" when the destination might not be aligned on a scalar (complex<double>)
d271ad38ce back to brute force linking to sparse libraries (fix cmake when these libs are not found)
3e2314dd67 forgot to include this file in previous commit (needed for lapack)
444c1bc55b now cholmod, umfpack, and superlu uses our own BLAS and LAPACK libs
390724b4b6 add lapack interface to real symmetric eigenvalue dec and enable building of the lapack shared library
d8ca948148 it is now up to user of these Find* module to find and link to BLAS and/or LAPACK
3345ea0ddd clean a bit SuperLU declarations
9195a224f3 fix division by zero if the matrix is exactly zero
b8ef48c46d for consistency forward declare tan, asin, acos functors
a53a7d6e6a use C linkage for umfpack (might fix some linking issues)
eda59ffc1b mention std::ptr_fun in the quickref guide
6f86c12339 typo
aea630a98a factorize implementation of standard real unary math functions, and add acos, asin
2ba55e90db make check no test everything - also rm the EigenTesting cmake sub-project
d0b8ce8f2a fix unused var warning
1c4e85ac7e forgot to include this file in one pretty old commit (missing EXCLUDE_FROM_ALL)
78fa34e8ff Add blas tests for buildtests target.
8fb27fad36 remove #include <iostream> at the wrong place
be224d93f4 Include necessary header files when working around bug #89. Fixes bug #188.
11402edfd3 with old gcc (bug #89), only include iostream in debug mode
fe8a710a21 properly report OpenGL as a disabled backend
03d86ea736 fix intallation of unsupported modules
13a5582835 undo debugging change
59596efdf7 Fix bug #89: on GCC <= 4.3, use a custom assert implementation to work around a compiler bug
6db8fa7d04 Replace unset() by set() with no value specified; this does the same. unset() was introduced in CMake 2.6.3 but we require only 2.6.2.
2f15f74218 CTEST_CUSTOM_* parameter have to be put in a CTestCustum.cmake file which itself has to be in the build directory
578d6f7ced now ctest does compile the test even though they are not in the "all" target
a1d7e9051e fix bug #184 (warning)
8e0a42350d fix stupid warning (bug #185)
ac465a0891 Improve the Transform interface in order to prevent T.rotation() = R from compiling.
211e1f8044 Improve documentation of plugins.
d09b94e2ad Added tag 3.0-beta3 for changeset 58986ac832728707618ff43f34d0cf120226d6f6
58986ac832 bump
8bca23bbec Mention comma initializer can be used to concatenate vectors (inspired by a question on IRC)
1a6597b8e4 MSVC does not like using uninitialized SSE variables, so we have to pass all zeros.
509ca63543 Merge
beb03032b7 Disabled warning regarding the use of uninitialized variables on MSVC.
9ac68e40a0 Write topic page for storage orders.
7015aa00a9 Added configuration file for the 'eol' extension.
9d2bf35a05 implement optimized ploadu for MSVC10: this also fix bad code generation in gebp_kernel :)
ec7409b16e since gebp_kernel handled the scaling by alpha it used too many packets, this patch fix that.
f7e4602a40 doc fixes
bf79a3199c Reduced error traces when mixing matrices with different scalar types.
fe70113fab fix Transform documention regarding Mode
f3b81302cd fix typo
57b22204db document the eigen2 support stages
6a5a13e394 The pfirst hack is needed also on msvc 2010 as it gets completely nuts, even though it doesnt segfault as msvc 2008 did
63626bb966 remove debug #error
85f9fab003 back out changeset efdf2e405664163c685127aecec53a21977f8031 . It turns out that the SSE3 header is always included, even without any SSE enabled, so it was making us wrongly use SSE3 paths. Backing this out fixes msvc related crashes, at least bug #165.
d6c4ca4845 fix redundancy
c0d5131435 workaround gcc 4.2.1 ICE (fix bug #145)
40526e24b4 fix memory leak (when conservatively resizing vectors of dynamically allocated scalar types such as bugnums)
ba9f6a2c3b now random<integer types> spans over 0..RAND_MAX, or -RAND_MAX/2..RAND_MAX/2 for signed types, or the most significant bits for smaller integer types.
3386a946f8 fix unit tests for integer types in preparation for next changeset making random<int> span over a much bigger range
68a2e04a96 fix fuzzy compares for integer types, using a selector
c5c8efa575 workaround gcc 4.2 and 4.3 compilation issue with NEON
9105e62d0a introduce EIGEN_MAKING_DOCS to tell whether we're compiling the docs examples
02ee26a3a5 fix build of class Block examples
182ed9ba6c merge
bc6625ab87 fix const correctness in Diagonal::coeffRef (fix found by failtests)
dab4e583cb fix EIGEN_STATIC_ASSERT_LVALUE (fix found by failtests)
80500b693c add more failtests
d975b82105 Removed internal::as_argument. This fixes the alignment issues of bug #165.
7ea6ac79a3 Exposed failtetst publicly.
ea99880760 fix under- and overflow
9ce08b352f add more failtests
9b13e9aece failtest: a new cmake-based test suite for testing stuff that should fail to build. This first batch imports some const correctness checks from bug #54.
8aee724274 Made MatrixBase::BasisReturnType const.
6c3dc0d243 Fix Diagonal related const correctness issues.
e20f1a44bb Fixed hidden const correctness issue.
e2d46eac42 Remove all references to EIGEN_TUNE_CPU_CACHE_SIZE. This macro is no longer used as of revision 0212eec23f4cb64e8426bf32568156df302f8fcf .
0b555a4a3d fix misc warnings
0ed604583f turnaround for a compiler bug in gcc 3.4.6
aee4e950d3 extend ctest script for SSSE3 and above
5887a086cf fix SSE3 issue (infinite loop after the ei_ => internal change) - this fix bug #174
1526de96a0 fix compilation with MSVC
4489c56c9e add Map static methods taking Strides, add test checking for compilation errors
2e2614b0fd fix MSVC8 compilation
2f71277105 add global tan function
d028262e06 add tan function in Array world
1eae6d0fb9 an even more stable procedure
5beb2f4f0d slightly more stable eigen vector computation
a617d7f2ad fix compilation with MSVC2005 (strange, stupid fixes for MSVC9 confuse MSVC8....)
52e0a44034 implement GBMV
d5f6819761 split BandMatrix to a base and a wrapper class
8915d5bd22 fix 168 : now TriangularView::solve returns by value making TriangularView::solveInPlace less important. Also fix the very outdated documentation of this function.
59af20b390 extend nomalloc test
ffc8386fdb mark the packet access methods as internal
a486d5590a implement optimized path for selfadjoint rank 1 update (safe regarding dynamic alloc)
3eb74cf9fc forgot hg add
fa32ce0fc5 fix alignment issue
2d09b11a97 relax Matrix/Array(Index) ctors to allow size 0, add test.
faa1284c12 fix compilation of snippets
4cb9d0f943 notify the creation of manual temporaries
c60818fca8 fix trmv regarding strided vectors and static allocation of temporaries
0fdd01fe24 operator(int) and the likes are not only fine for linear storage
f4a7679904 fix packing criterion
f46ace61d3 fix dynamic allocation for fixed size objects in matrix-vector product
5ca407de54 update .hgignore
dc22ae101f kill stage 15, it's useless
df06f0be31 eigen2 support: pass remaining 2 tests
7032ec80ae eigen2support: disable sparse tests, and do not require to define YES_I_KNOW_NOT_STABLE
374deaed5f make eigen2 eigensolver test pass
e2642ed620 clean the script to generate the plots
3874e6a72b include cblas.h header file to ease configuration
476cb4c65c fix name collision
9a73bfeb85 add GOTO2 and clean a bit the cmake macros
6e67d15795 now gemv supports strides
157a5040d5 Added the /bigobj flag in order to enable compilation with MSVC when EIGEN_SPLIT_LARGE_TESTS is not set.
a1f5ea8954 make eigen2 cholesky test pass
e001db2a15 fix bug in triangular matrix-vector produce found by eigen2 tests!
852077fbc9 still test fftw even if the binary for long double is not available
c478e0039e disable broken determinant for complexes and SuperLU
6f2ba1f52b typo reported by Don Lorenzo
817d86cbaf really fix permute_symm_to_symm for sparse complex matrix
6ec660ca7e fix crash in autodiff
af712e80e6 fix bug #73: weird compilation error in HouseholderSequence where double and float were mixed. Hopefuly this also solve bug #91...
d76ed18a9f rm useless ctor
1731a432e7 fix BTL cholesky action and output errors if the factorization failed
837f1ae59c fix compilation with old gcc
ddfd288dc9 start nighlty builds at 00:00:00 UTC
42d512d33c fix compilation with gcc 4.2 and older
97801e5e0e Eigen/Eigen should not include Sparse until it is API stable
736d00ab87 typo
162d29e696 fix compilation of sparse module with ICC
22db1a6e82 fix fftw test
b2b8c6a89c dot() now always uses eigen3 convention, even in eigen2 support mode, even stage 10. Didn't have a choice as lots of eigen code is using it.
e761ba68f7 merge
3d8e179aa2 fix MaxCols in ComplexEigenSolver which was causing memory allocation instead of static allocation in the nomalloc test. Uncomment commenetd parts of the nomalloc test since now matrix-matrix products are safe.
32124bc64a EIGEN_YES_I_KNOW_SPARSE_MODULE_IS_NOT_STABLE_YET must be defined to use Eigen/Sparse
52fed69baa add test for geometry with eigen2_ prefixes. fix that stuff.
955e096277 add an Options template parameter to Hyperplane and ParametrizedLine
d5e81d866a Added regression tests for bug #148.
fd400ffffb reverse order of testing for eigen2 support stages. Higher stages now have priority. So if your whole project builds with say stage 10, you can manually enable stage 20 for selected files.
b69b6a9db2 add Threshold API to FullPivHouseholderQR
a954a0fbd5 Add an Options template paramter to Transform to enable/disable alignment
e3306953ef test case for unaligned quaternion
0aa752fc4f add quaternion Options, add unaligned possibility
9ccd16609c fix twisted selfadjoint to selfadjoint (conjugation issue)
f5d0f115b4 EigenSolver is now in the Eigenvalues modules, not QR !
255f2a1379 fix various compilations issues
999678c3f0 fix mixingtypes unit test
40998f5e86 fix const-related compiler error on MSC.
5f03cbd44f fix many missing const in return types
e8d6a5ca87 fix cross product for complexes and add support for mixed real-complex cross products
0bfb78c824 allow mixed complex-real and real-complex dot products
fe3bb545e0 allow matrix[index] in EIGEN2_SUPPORT
c90d0c363b improve automatic handling of gotoblas and atlas
0e8a532f87 always link to gfortran for gotoblas, it seems to be harmless for 1.x but needed for 2.x
240bfdd142 finish the move to Eigen3 in BTL, and let's use our own FindEigen3.cmake script
86acb46518 pass to eigen3 ;)
faeae169dd fix compilation
210a280daf update FindMKL to match the default installation behavior of MKL 11
1eb85b4cf1 allow the possibility to automatically call or not the ctors on a per scalar type basis, and disable automatic initialization of std::complex<>
4783748953 do not include reference lapack files if they are not there
162cb8ff42 import back LeastSquares into eigen2support. Pass most of eigen2's 'regression' test, except for regression_4 which is about complex numbers.
98285ba81c merge
7ef9d82b39 add a minimalistict lapack wrapper
15ef62ca43 extend PermutationMatrix and Transpositions to support arbitrary interger types and to support the Map/Wrapper model via base and derived classes
76c630d185 eigen2 support: import SVD back, pass SVD tests
313eea8f10 fix the remainder of bug #159
f88ca0ac79 fix the eigen3 part of bug #159 - build issue with selfadjointview
9a5ded3e1d fix bug #160 - forgot hg add
c350f6f12c fix bug #161
39536d44da fix build
1d98cc5e5d eigen2 support: implement part<SelfAdjoint>, mimic eigen2 behavior braindeadness-for-braindeadness
4fbadfd230 merge
07e3ef4f38 eigen2: pass QR decomposition and hyperplane tests
6896cab5b9 one more const missing
28d6e84150 fix compilation after recent const change in return types
b1d6a9945c eigen2: pass the inverse test
09d1923f61 eigen2: pass lu test
3e2469f951 eigen2: split tests
b04591fbb4 disable eigen2_first_aligned test, it's completely internal stuff
acd2c82655 fix eigen2_bug_132 test
8acd43bbdb let eigen2 tests use the same ei_add_test macro, which required to prefix them with eigen2_ ; rename buildtests_eigen2 to eigen2_buildtests, etc.
dcfb58f529 eigen2: fix USING_PART_OF_NAMESPACE_EIGEN
84448b058c fix USING_PART_OF_NAMESPACE_EIGEN to export ei_ prefixed math functions
7dd4aaba9f fix missing const qualifier in cwiseEqual
bd12ac4ffc import eigen2 Geometry module into Eigen2Support. fix build of geometry tests
5bfde30e48 fix compilation of array tests
9089488210 fix compilation of Eigen/Geometry with EIGEN2_SUPPORT: was including non-existent header
c3a4f6b5c5 const-qualify template parameters representing const arguments to expressions. needed to fix docs compile issue.
5331fa3033 fix compilation of LU class example
1dabd133cc pass eigen2's triangular test
5c82fd7f40 Move part() to EIGEN2_SUPPORT (had been deprecated for a long time)
1cf4996d3c make eigen2 visitor test pass
8df5bca979 rename build stages to multiples of 10; old stage 2 becomes stage 15, while stage 20 generates errors (instead of warnings) on conflicting API.
cc1f70abc3 make eigen2 dynalloc test pass (add to eigen2 support some internal stuff that some users may have been relying on)
30de1651d3 relax Map const correctness in eigen2 support stages <= 3 introduce new 'strict' stage 4
54dfcdf86e remove eigen2 vectorization_logic test, it's not an API test
5be269db88 make eigen2 submatrices test pass
cc2b7a5397 introduce the 3 stages of eigen2 support, writing to the mailing list about that in Eigen2 to Eigen3 Migration Path thread
34d93686db lots more EIGEN2_SUPPORT fixes. Now several of the most important core tests build and succeed.
66a2ffa9bd Completely disable Eigen/Array in Eigen3; completely enable in EIGEN2_SUPPORT.
96f08213f7 big eigen2support fix, aimed at users who relied on internal eigen2 stuff: now we dont need customizations in test/eigen2/main.h anymore.
bf0cffa897 restore the behavior of defaulting to Release build type
1f6bd2915d import eigen2 test suite. enable by defining EIGEN_TEST_EIGEN2
604afc9aca fix bug #155, const-related compilation error
9b2546fea8 Added remaining const coeffRef accessors to Array- and MatrixWrapper.
c7eaca50a0 __cpuidex is not (always) present in VS 2008 + SP1, it seems
5e28f34005 Replace CMAKE_SOURCE_DIR with PROJECT_SOURCE_DIR to allow the cmake project to be included by a root project.
5010033d88 do not stop the factorization if one pivot is exactly 0, and return the index of the first zero pivot if any
ef3e690a0c return the index of the first non positive diagonal entry (more useful than simply true or false)
8b6c1caa3e fix compilation of rowmajor sparse time diagonal
dcbf091e60 fix EIGEN_TEST_NOQT (reported by Philippe Hamelin)
cbfab7204f Update of CPUID macros to fix segfaults in amd64 code.
98f0274305 third pass of const-correctness fixes (bug #54), hopefully the last one...
c7baf07a3e add plugin mechanism to sparse objects
9111d73017 Fix compilation error in HouseholderSequence introduced in my previous commit.
4abb772b52 Fix bug #38 * address of temporaries were passed to umfpack_zi_* functions. It is ok with g++-4.4 or 4.5, but not with the -std=c++0x in both versions. This patch makes it work for c++98 and c++0x versions
2cc75f4922 Make HouseholderSequence::setTrans() protected (cf. bug #50). Users can call .transpose() instead.
934720c4ba Decrease the degree of the polynomials being tested to reduce time spent during the tests.
4ba0ec5e0e Fixed #148 where a const-accessor for coefficients was missing in the MatrixWrapper.
d7e1eeaece fix compilation when defaulting to row major
3a4d56171d fix openglsupport unit test when defaulting to row major
64356a622d fix vectorization_logic unit test when defaulting to row major
004488a31d Fix bug in symmetric rank-2 update for row-major matrices (bug #144).
fb023b871f Const-correctness fix for gemv_selector<OnTheRight,ColMajor,true> (bug #144).
fd4e366d7e fix severe perf bug: coeff-based matrix products were not considered aligned, typically preventing vectorization. added unit test.
47a9d2ed54 Document HouseholderSequence. Incomplete: I did not explain the difference between OnTheLeft and OnTheRight, and there is only one example.
583f963517 make the table fit within 80 characters
e7318148b5 an attempt to fix a compilation issue with -std=c++0x
7feb644620 Switched "MESSAGE(" -> "MESSAGE(STATUS " in CMake script, since otherwise they may look like errors to the user.
902af035d3 merge
25efcdd042 fix sparse time dense product with a rowmajor lhs
11e253bc10 [Sparse] Added regression tests for the two bugfixes, the code passes all sparse_product tests
13867c15cc fix compilation of code using e.g. Transpose<const Foo>::data() non-const-qualified. Same problem existed for coeffRef() and also in MapBase.h.
26c2afd55a fix compile errors in Tridiagonalization and in doc examples
dbd9c5fd50 fix HouseholderSequence API, bug #50:  * remove ctors taking more than 2 ints  * rename actualVectors to length  * add length/shift/trans accessors/mutators
e112ad8124 In QuickRefPage LinSpaced is improperly documented.
d6a5ba5a08 Rename EIGEN_DENSESTORAGEBASE_PLUGIN to EIGEN_PLAINOBJECTBASE_PLUGIN.
3ca31a8b74 fixed msvc9 build errors.
d84b135ed3 Enable GSL tests (reverts part of changeset 6628534eb587f6d96e9c8bbc0447f9685c6cea5c ).
97c54ad220 fix MSVC warnings, bug #143
7a29ae0b5c fix preprocessor checks for availability of cpuid
657013c974 Mention ptr_fun in docs for .unaryExpr()
265e1ef4ef Extend doc page on preprocessor directives.
8db9acbc16 Move doxygen comments for EIGEN_NO_DEBUG from source to I14. This reverts changeset 76fbe94279bda314e717cb3f98b46b253d081993 . Benoit and I agree that my approach there (to use doxygen comments) pollutes the code too much.
840c4e1ab5 Move section on preprocessor directives from I00 to its own page.
42a050dc68 Finish doc page on aliasing.
dc3618a557 move BandMatrix and TridiagonalMatrix to the internal:: namespace
8d2a10c5c1 more renaming to make this file matrix-or-array-agnostic
e8768251db rename macro
86d3711fb7 remove EIGEN_REF_TO_TEMPORARY, clarify docs
75b7d98665 bug #54 - really fix const correctness except in Sparse
3b6d97b51a Re-enabled the BLAS compilation on non-MSVC systems.
5e46f7a499 Switched back to the old behaviour where EIGEN_SPLIT_LARGE_TESTS was ON per default on MSVC systems. Without splitting these tests, some do not compile
a21d56b766 disable blas if C++ compiler is MSVC
efdf2e4056 Added automatic SSE3/4.1/4.2 support for MSVC.
b31e1246e1 Re-enabled the missing tests, again...
83e3c4582f Improved the array unit test - internal::isApprox needs to use the same precision as VERIFY_IS_NOT_APPROX. Removed debug code from test_isApprox.
2d0dfe5d60 Uups - re-enabled subtests 1 to 5.
f578dc7aff Fixed compound subtraction in ArrayBase where the assignment needs to be carried out on the derived type. Added unit tests for map based component wise arithmetic.
dbfb53e8ef Added unit test for matrix creation from const raw data.
6f5c45ceff Fixed ctor from const raw data for Matrices and added the missing implementation for Arrays. Fixed a warning regarding the conversion from int to bool in MapBase.
6a9a6bbc78 fix warning
68fe80861c Fix bug #133: remove the EIGEN_RESTRICT which was useless here anyway
f2c18f2e37 merge
4a5ebcd1ce Fix compilation of Tridiagonalization_diagonal example. After changeset 0d6321225786bc3d95f1dbe5236f07c5e5e96179 , matrixT() is a real matrix even if the matrix which is decomposed is complex.
c7f01157dd enforce compilation of blas unit tests when running ctest
9cd4f67e7f Specify root namespace for fftw_plan from FFTW3 library. After changeset 4716040703be1ee906439385d20475dcddad5ce3  (the ei_ --> internal:: change), there are two symbols called fftw_plan, one from the FFTW3 library and one from Eigen.
e05c79cbd8 Fixed NEON compilation errors, changed float-abi back to softfp (which is the most used right now). Some complex tests appear to segfault, needs a more careful look.
b11343e15c fix intermittend failure of schur_real test: there only is an iterative process if size>2
74cc42b22f bug #54 - The big Map const-correctness changes
e736df3edd suppress stupid warning
79cc86f701 fix compilation
67c28570e3 fix compilation with ICC (template keyword on a non template method)
5bc21c25c5 fix ICE with gcc 3.4 and 4.0.1
bacd531862 fix bug #128 : tridiagonalization failed for 1x1 matrices
17de59278b simplification
147a63c4b5 compilation fix
0b32c5bdda fix compilation of sparse_basic for DynamicSparseMatrix
aec0782719 fix the build of eigensolver_complex test.
1be6449f2e fix bug #127. our product selection logic was flawed in that it used the Max-sized to determine whether the size is 1.
819bcbed19 fix comment
7a7ca99a31 [mq]: Mingw32 fix
c49c013c47 add main ei_* functions into Eigen2Support
14208eb478 add a word about the ei_ prefix change in Eigen2 -> Eigen3 doc page.
a289065c73 Applied a fix to our std::vector specialization which prevents the usage of workaround_msvc_stl_support when T is not a class.
59b944cb50 add is_const
46387cc180 remove makeconst_return_type
f0ba513f41 Fixed compilation of tridiagonalization related unit tests.
3899857e08 Removed remove_const_on_value_type since the meaning is unclear and it is in fact unused. Extened the meta unit tests.
60a544c879 Added STL like (add|remove)_const. Fixed add_const_on_value_type for "const T* const".
bf9d25ce58 Postfixed add_const and remove_const by _on_value_type to express the differences to the STL.
139392488d dos2unix
e868b6736a Merge.
d551e99644 make HessenbergDecompositionMatrixHReturnType internal
e06c6553e0 make TridiagonalizationMatrixTReturnType internal and only export a public MatrixTReturnType typedef
0d63212257 add a TridiagonalizationMatrixTReturnType class to make Tridiagonalization::matrixT() more efficient and future proof.
9bad7c7edb Compilation fix in case EIGEN_DEBUG_ASSERTS is defined.
421b2b5ff7 fix a couple of issues with TridiagonalMatrix
d8b26cfeec s/id/p to avoid name clash
156a31b0e9 fully implement scalar_fuzzy_impl<bool> as, e.g., the missing isMuchSmallerThan is convenient to filter out false values.
010ed9510b Remove parentheses for compatibility with cmake 2.6.2
cd1225ef14 make example compile
f84cbba52a minor fixes
07f2406dc1 some dox tweaks
f1690fb9fa fix bug #122 : rank 2 update test and scalar multiple extraction were both wrong
0ab9a0a2f7 make UpperBidiagonalization internal: don't want to support it, it's not used. Keeping it because it tests BandMatrix.
ee38dbf1e6 Rework nested<> to be cleaner, see bug #76.
4c5932f8f5 Improves the filter for hidden files in "Eigen" and "Eigen/src". This generic solution prevent cmake from having an error .svn folders when the source folder is under subversion.
5a65d7970a now the full blas folder requires a fortran compiler
3976a66889 fix bug #120 : compilation issue of trsolve unit test
f5f288b741 split level 1 and 2 implementation files into smaller ones and fix a couple of numerical and tricky issues discovered by the lapack test suite
a6f483e86b import reference BLAS routines which are not already implemented in Eigen : modified givens rotations, and packed and banded storages
7213dd1e6b this product still badly read the imaginary part on the diagonal
a3f214ade9 holy crap, i had disabled all static asserts in 71f023de3e7a41f456d538d4cdb75c72b90dcc75
d8396a8da0 fix compilation of product_mmtr
fb6d9ca951 add missing non const data() method to MapBase
0020ea544a implement HEMV level2 blas routine
12bfe5e718 make sure our internal selfadjoint*vector product does not use the imaginary part of the diagonal entries
e88901daf4 implement SYMV level2 blas routines
1ac9124fac implements TRMV level 2 blas routine
d72a8f1e50 make trmv uses direct access
437dff80ee fix issue 114: workaround cmake enable_language bug
86474115f5 IBM XL C compiler supports __attribute__((aligned(n))) syntax
8ad1f64e0a some cleaning in blas level 2
94f59a92cb fix typo
ed1ecb24d2 implement GERC and GERU blas routines
458637f097 implement GER blas routine
68f8519327 implement HER and HER2 blas routines
5ce199b1dd update rank 2 update doc
f369b5a711 makes rank 2 update function conformant to BLAS HER2
e14f14642d implement SYR and SYR2
661ef6c127 add regression unit test
3f24dbf6f5 fix compilation of transform * scaling
3e99356b59 clean a bit AMD and SimplicialCholesky and add support for partly stored selfadjoint matrices
1618df55df Add support for sparse symmetric permutations
fb71b737e4 update blas lib wrt recent change of general_matrix_matrix_triangular_product
e54c8d20cb Docs: aliasing and component-wise operations.
da05b6af0e fix some remainign issue with  ei_ -> internal change
9a3ec637ff new feature: copy from a sparse selfadjoint view to a full sparse matrix
5a3a229550 fix return type of rightHouseholderSequence()
cad73d9cdc Correct std::map fix (two commits ago); copy fix to aligned_allocator doc.
d64e68c8bc fix doc compilation
9ba15cd63c Docs: correct declaration of aligned std::map in TopicStlContainers.
b4fa8261b1 properly use nested types
05ed9be639 prevent warning
2577ef90c0 generalize our internal rank K update routine to support more general A*B product while evaluating only one triangular part and make it available via, e.g.: R.triangularView<Lower>() += s * A * B;
c810d14d4d add missing specialization
39477e697a extend unit test to cover previous bug
572b5585e3 fix Eigen's trsv for complexes
0e30c4ae3f blas level2: gemv and trsv are green
3fdea699b8 trsv: simplifications/cleaning
0e6c1170ab trsv: add support for inner-stride!=1, reduce code instanciation, move implementation to a new products/XX.h file
fe1353080e fix error handling of level 1 routines
15e8ad686c add a minimum degree ordering routine based on CSparse (LGPL) and a new built-in sparse cholesky decomposition
5a4f77716d fix bug #107: SelfAdjointEigenSolver and RowMajor (and add unit test)
20fcef9656 fixes related to ei_ -> internal change
62a51184d7 merge
fd88d721d2 implement proper error handling in level 3 routines
a8fb6b0ad3 improve detection of erros
1eea88bff7 fix matrix product bug with OpenMP
8d27f55eb3 rm auto normalization in favor of clamping
d204ec491d Additional fix to enforce the compiler to use the correct prunning method.
3a3f163e31 Fix bug #65.
b3007db131 Added a comment on why is_arithmetic is used in DenseCoeffsBase.
96e4a4b59c Fixed compilation due to lacking Transform definitions.
d2e257cb5d oops (rm commented code)
c7eda0d866 Let's be safe: enable auto normalization is quaternion to angle-axis code since a slight numerical issue may trigger NaN. The overhead is small and I doubt the perf of this function could be critival for any application !
006c9a5105 implement VERIFY in a function so it doesn't get compiled thousands of times.
7d441260db on test failure, abort instead of exit, so we can get a stack trace
99ccb26cfe add eigen2support Transform typedefs, add Eigen2To3 section on Transform
bd249d1121 fix bug #92 - we were doing stupid things when passing the list of libraries to link to.
868f753d10 document LvalueBit better
1d4e80f09d generalize the prune function
02c8b6af82 fix sparse rankUpdate and triangularView iterator
241e5ee3e7 add the possibility to solve for sparse rhs with Cholmod
5d4ff3f99c Fixed bug #95 by changing _M_IX64 to _M_X64 as proposed by Jan Schlicht.
3efff8c69e Merge
f4a6a8e295 rm the useless SparseSolverBase class and provide more compile time traits
c738cd56eb Renamed cleantype to remove_all since it is close to remove_{const|pointer|reference}.
2fbb9932b0 fix compilation (bad internal:: stuff)
5e95ee6662 fix compilation and unit test of adolc
92044fcc2b fix bug #94: add #include src/misc/Solve.h in SparseExtra
666c16cf63 add new API for Cholmod preserving the legacy one for now
7bc8e3ac09 Initial fixes for bug #85.
597b2745e1 Allow unset ${CMAKE_BUILD_TYPE} which is required for some targets and corresponding to using default values.
724af13540 make polynomialsolver test compile faster
a94f216487 error out on bad build type
fdaa3f311a adapt mpreal to eigen3 mathfunctions system
4716040703 bug #86 : use internal:: namespace instead of ei_ prefix
ca85a1f6c5 remove build type tweaking
dbdf7ee942 Use 'Release' as default when build type is not specified. Otherwise, "cmake /path/to/eigen/" in an empty build directory, as specified on the CMake page on the wiki, yields a fatal error.
bfd46eacad don't change the build type, fatal error if bad build type
969518f99d Improved I13_FunctionsTakingEigenTypes.dox.
ba86d3ef65 Fixed bug #84.
9bbaff6b41 Fixed the unit test splitting for MSVC.
ee60fc2062 fix typo and rephrase sentence
8c17fab8f5 renaming: ei_matrix_storage -> DenseStorage           DenseStorageBase  -> PlainObjectBase
9cf748757e Improved the fixed size array display.
e259f71477 rename PlanarRotation -> JacobiRotation
9044c98cff work around stupid msvc error when constructing at compile time an expression that involves a division by zero, even if the numeric type has floating point
e5073746f3 allows blocks of code to be larger than the page body (like tables)
e19c6b89f5 update the position of the owl
54814eb05b factorize CSS code, make use of the "manual" class when appropriate, clean the style of the big linear algebra table
70f95ef80d increase css max-width
b1604ea553 merge
b8dfc62f3c specify max-width in em not px
6d8e7d68e4 factorize CSS code, make use of the "manual" class when appropriate, clean the style of the big linear algebra table
9e3005d552 css update: max-width and margins
9fa54d4cc9 move tables from class "tutorial_code" to "example" also remove a align="center" in the Aliasing page -- it doesn't make sense to have 1 centered table page when all others are left aligned.
ca4bd5851c update style of the quick ref guide
f66fe2663f update CSS to doxygen 1.7.2, new CSS and cleaning of the tutorial
9f8b6ad43e Fixed bug #79.
3481f10e7a re-fix the broken msvc warning in JacobiSVD
3404d5fb14 improvements in pages 5 and 7 of the tutorial.
1c15a6d96f improvements in tutorial page 4 : block operations
4b0fb968ea fixed table html
597bb61c23 fix stupid msvc warning in jacobisvd
6628534eb5 fix bug i just introduced in ei_add_test_internal
19ae4362bd ah ok, we want to build this even without GSL. so the bug is in FindGSL.cmake.
4e3feb023d more unsupported/ CMake fixes
1e3a035275 Fix general linking issue for tests linking to multiple libs, and explicitly link mpfr_real test to GMP.
8356bc8d06 add jacobiSvd() method, update test & docs
cd3a9d1ccb Fixed bug #74.
c19b965730 Added stddeque unit test dervied from the stdlist test.
6f6400e488 Added tag 3.0-beta2 for changeset 3f79884f03e97d20451ff811fcdd05cb0b060743
3f79884f03 bump to 2.92.0
26129229ec doc updates/improvements
fcee1903be update the porting guide
6dc478fd77 doc typo
65c01e2bf7 JacobiSVD doc fix
8f0e80fe30 JacobiSVD:   * fix preallocating constructors, allocate U and V of the right size for computation options   * complete documentation and internal comments   * improve unit test, test inf/nan values
e85a3857f0 import BLAS test suite
47197065da compilation fix
bcb9068268 fix bug #44: use VERIFY_IS_APPROX instead of exact comparison to please x87 extended precision
c8ecc897c0 add EIGEN_TEST_X87 option
3a2bb7f782 fix compilation and warnings with fcc 4.0.1
bf402dd9b8 add the possibility to disable OpenGL testing
8eb0fc1e72 remove SVD class (was bad code taked from elsewhere) Use JacobiSVD for now. We do plan to reintroduce a bidiagonalizing SVD asap.
dbedc70012 Jacobi improvements:   * add fixed-size vectorized path   * add missing restrict keywords   * use innerStride()   * allow vectorization even if innerStride()>1, if PacketSize==1     (think of the case of rows of std::complex<double>)
12a152031d fix the Jacobi bug, expand unit test
75e60121f4 add Jacobi unit test. jacobi_5 fails, exposing bug #39.
0308f64515 add support for uniform of double
fb30bb9e59 uncomment commented line for debug
20be8ad91e add support for uniforms
b8bb804007 set ColPivHouseholderQR as default preconditioner for JacobiSVD
5c3d21693b implement JacobiSVD::solve() and expand the unit test
0cae73d1eb add the prototype of all level2 functions
eb105cace8 compilation fix
d229f99ba2 adapt Quaternion to JacobiSVD API changes.
8ba8d90063 add option to compute thin U/V. By default nothing is computed. You have to ask explicitly for thin/full U/V if you want them.
6fad2eb97b Rework JacobiSVD api / template parameters. There is now an integer QRPreconditioner template parameter, defaulting to full-piv QR. Since we have to special-case each QR dec anyway, a template template parameter didn't add much value here. There is an option NoQRPreconditioner if you know your matrices are already square (auto-detected for fixed-size matrices).
58e0cce0f7 merge backout
4a98cada26 Backed out changeset 2334291157fe192b7b9f651967126de3bf8d8cbe
a76ce042e6 MSVC for windows mobile does not have the errno.h file
af22364988 an attempt to fix compilation on windows mobile
d9c131de5b remove the Taucs backend : Taucs is not maintained anymore and the backend was crap anyway
423f88aa1e improve FindCholmod
c6503e03eb Updates to the Sparse unsupported solvers module. * change Sparse* specialization's signatures from <..., int Backend> to <..., typename Backend>. Update SparseExtra accordingly to use structs instead of the SparseBackend enum. * add SparseLDLT Cholmod specialization * for Cholmod and UmfPack, SparseLU, SparseLLT and SparseLDLT now use ei_solve_retval and have the new solve() method (to be closer to the 3.0 API).
e3d01f85b2 extend OpenGL support module with true unit tests and support for Transform, Translation, etc.
b5f32830fd fix geometry tutorial regarding the need to specify the "mode"
01fad14d78 mark LLT/LDLT solveInPlace func internal and rm their boolean returned value
2334291157 fix doc
71f023de3e fix compilation on ubuntu 9.04's version of gcc 4.3 (yes, wtf)
94ea1eed9a fix warning
327ed3d1d3 Added a note to the Gram Schmidt code and improved some formatting.
72d4d45133 Merge.
316dadc8e4 Fixed some SVD issues.
053261de88 Make the SVD's output unitary and improved unit tests.
1c54514bfc merge
c253cc3d53 SVD:  * fix unit test for rectangular matrices.  * enforce that rows >= cols since various places in the code assume that.
947f84633b Fixed bad memory access in the SVD.
62bf04b339 Fixed bad memory access in the SVD.
82e4a16759 remove superfluous #ifdef
77c943670e add cmakelists for 2 subdirs and make sure all subdirs are installed (GLOB)
91e9344be9 fix vectorization logic and code of cross3 which was never enabled..
f9123df772 fix unitialized quaternion
d591b0466d add a bench to compare various transformation methods
9bb75937cc fix += return by value like operations
62eb4dc99b noalias was wrongly skipping automatic transposition
4824db6444 add the possibility to extend QuaternionBase
d17bb02ccd Fixes mingw32 compile issues
e0ea25fc21 add missing copyrights
b49dde01dc fix bad mat * mat * scalar when the implicit conversion operator to a Matrix is used
dd94f10442 Docs: Improved the docs for writing functions taking Eigen types.
dcff9ba785 fix bad "using typename"
cb7a72d5b0 Fix Sun CC parsing of Eigen/Core. In particular, I moved all the block related methods to a plugin file. This also significantly reduce code verbosity.
e17d17cea3 didn't want to commit that bench change.
bd8d06033d make a couple of typedefs public so stuff compiles
a47bbf664c fix 4x4 SSE inversion when storage orders don't match
548ecc2fe5 update inverse unit test to highlight another bug in SSE 4x4 inversion code
ad9a7c69bc fix inversion of 4x4 unaligned matrices
6924d4eec5 update this test to build against current eigen. remove the 'normal' path as it was not compiling anymore and I couldn't see the point of it (?)
6261f4629f add TriangularMatrix::conjugate to be consistent since we have adjoint
474c2996bd Docs: add section on resolving the aliasing issue.
d1111d625c Docs: Typos in ArrayBase doxygen comments
103b9351fd Docs: Add references to TopicClassHierarchy
a6da803873 Document DenseCoeffsBase
60aad09878 Fixed DiagonalMatrix assignment.
92b1674c79 Fixed typos.
610d79e686 Simplified to product templates to a minimum of template parameters.
a64aabf73c Removed unused code.
55c7848877 Matrix product refactoring (rhs products only).
d4b664c4cd fix ugly conversion from double[2] to complex
5354ffbb4f add missing specialization for vector * selfadjoint
6264755dd3 merge
ab41c18d60 quickly mention how to solve a sparse problem
216c9125e9 disable NonLinearOptimization test until it's fixed
ddbbd7065d * disable unalignment detection when vectorization is not enabled * revert MapBase unalignment detection
85fdcdf055 Fixed Geometry module failures.
87aafc9169 fix Transform() constructor taking a Transform with other mode. Not really tested as the geometry tests are currently busted.
19d9c835e0 fix warnings
b37551f62a further improve compilation error message for array+=matrix
c625a6a85b improve compilation error message for array+=matrix and the likes
453d54325e fix declaration of AffineTransformType in Translation
ba212aeaa9 fix missdetection of GLUT
aa2b46aa91 allow vectorization of mat44.col() by adding a InnerPanel boolean template parameter to Block
853c0e15df slightly generalize the alignment assert in MapBase
8566ef805b remove the aligned bit flag for non vectorizable types
3a30a2bc3e forgot to remove a #endif
b80d9dd42e fix determination of number of registers on sse:   __i386__ was not defined by MSVC 2010. fixed as (2*sizeof(void*)). also move that to SSE/ and let the default for unknown arch's be just 8.
8bbe556e35 merge the backout
97ced33b33 Backed out changeset 40f6e26a247976ba1868520a4747e49e0739a42a
76fbe94279 Document EIGEN_NO_DEBUG macro. I needed some doxygen tricks to get this to work, so it may not be worth it.
530b328769 Aliasing doc: explain that some cases are detected, reverse order examples.
3dd8225862 Added more detailed docs to the QR decompositions classes.
976d7c19e8 some small improvements to the page on functions taking eigen objects.  - make the beginning more precise  - make the first example be a full selfcontained compiled example, no need for all the others, but having the first one doesn't hurt.
5c7cb3c05c Added more examples to the function writing tutorial including EigenBase, DenseBase, etc.
d558e84f0b Fixed some typos and reformulated a few sentences.
224dd66e10 Added a tutorial on writing functions taking Eigen types.
d90d7a006f fix warnings. The one in Reverse was potentially serious: coeff() methods should return CoeffReturnType, not "Scalar", if the expression is potentially a Lvalue.
cc25edd5de Fixed Affine transform typedef.
508b51cb62 Add page giving an overview of the class hierarchy. This is mostly copied from the wiki, which in turn copies Benoit's email at http://listengine.tuxfamily.org/lists.tuxfamily.org/eigen/2010/06/msg00576.html I used ASCII art for the inheritance diagrams for now, but I don't mind moving to GraphViz/dot as discussed earlier.
a9fe75efc4 Documentation: Start special topic page on aliasing.
7cefa75901 Added static method Identity() to the Translation class.
e92993d7b9 Safeguarded some Transform functions with compile time asserts. Added missing static Identity() to Rotation2D, AngleAxis.
6b89ee0095 Transform is now per default Projective. Improved invert() in the Transform class. RotationBase offers matrix() to be conform with Transform's naming scheme. Added Translation::translation() to be conform with Transform's naming scheme.
2f0e8904f1 Removed debug outputs.
b038a4bb71 * added EIGEN_ALIGNED_ALLOCATOR macro to allow specifying a different aligned allocator  * attempted to add support for std::deque by copying and modifying the std::vector implementation...MSVC still fails to compile with the std::deque::resize() "will not be aligned" error...probably missing something simple but I'm not sure how to make it work
1420f8b3a1 Several changes in comments to keep Doxygen happy.
3d9764ee24 Add some more examples for the API documentation. The only missing examples now are for homogeneous() and hnormalized(); I don't know what they're used for ...
425444428c Add examples for API documentation of block methods in DenseBase.
2b5a0060b4 Add examples for API documentation of MatrixBase::cwiseXxx() methods.
072ee3c07d Set Doxygen config variable INCLUDE_PATH to plugins directory. This is necessary to get functions like MatrixBase::cwiseAbs() documented; otherwise doxygen can't find the include file in which they are defined.
ae8425c74c Tutorial page 7: more typical example for .all(), minor copy-editing.
145830e067 Add newline at the end of Dense.
40f6e26a24 allow vectorization of mat44.col() by adding a InnerPanel boolean template parameter to Block
d0f6b1c21f Tutorial page 6: Fix typo, add table of contents.
9daa66f262 fix merge conflicts
5d98fa235d merge with complex branch
403e672587 Extend tutorial page 5: Advanced initialization.
7020f30da3 sync with default branch
b9edd6fb85 oops
96ba7cd655 add an OpenGL module simplifying the way you can pass Eigen's objects to GL
fa6d36e0f7 fix SparseView: clean the nested matrix type
734469e43f Unified LinSpaced in order to be conform with other setter methods as e.g. Constant.
c7f40e522e merge
06250a154c add matlab-like mixed product
bec3f9bfe4 rename indices to a common scheme
0916d69ca5 fix inner vectorization logic
0dfc5b296b fix strict aliasing issue
8a96b0080d now that we properly support mixing real-complex: clean mixingtypes test
8e21cef80a fix typo
4393f20fea fix compilation of quaternion demo
f1104a3b0f fix mandelbrot compilation, and make it use Array instead of Matrix
35f0bc70d8 fix a strict aliasing issue with gcc 4.3
b5f2b7d087 fix storage order request
7dbbc6ffd1 fix static allocation of workspace
ced1a45f82 add NEON ploaddup and pcplxflip functions
193eedbfe2 one more fix for openmp
d7fa09bf05 improve block-size heuristic
4824ac1363 fix openmp version
b551a2d77a fix declaration of pack_lhs in trsm
10a7668035 uncomment commented code for debug
7b23fad4c9 report a true assert when not checking for an assertion
44cb1e4802 it appears only the "on the left" case was tested
872523844a fix trmm and symm wrt lhs packing
76eb9c9fd9 fix compilation by including file in correct order
70b1ce11c6 * fix SelfCwiseBinaryOp traits and handling of mixed types * improve compilation error in case of type mismatch
8b0b121c9e explicitely disable vectorization for mixed coeff based products
08c841eb87 fix lhs packing in the case of real * complex products
1ed4233fd2 port Jacobi to new ei_pset1/ei_pload API
c2ee454df4 * fix compilation of mixed scalar product * optimize mixed scalar products
6e157dd7c6 * fix a couple of remaining issues with previous commit, * merge ei_product_blocking_traits into ei_gepb_traits
f8aae7a908 * _mm_loaddup_pd is slow * optimize SSE ei_ploaddup<Packet4f>
cd0e5dca9b wip: extend the gebp kernel to optimize complex and mixed products
45362f4eae update mixing type test
3f532edc6d update unit test for new API
1dc9aaaf36 add support for mixing type in trsv
36d9b51a44 optimize non fused MADD, and add a flatten attribute macro to enforce inlining within a function
b72b7ab76f matrix product: move the alpha factor to gebp instead of the packing, clean some temporaries, etc.
f8678272a4 mixing types step 3: - improve support of colmajor by vector and matrix - matrix - now all configurations are well handled, but the perf are not always very good
8e3c4283f5 make colmaj * vector uses pointers only
ff96c94043 mixing types in  product step 2: * pload* and pset1 are now templated on the packet type * gemv routines are now embeded into a structure with   a consistent API with respect to gemm * some configurations of vector * matrix and matrix * matrix works fine,   some need more work...
4161b8be67 sync
e5bc9526f1 * generalize rowmajor by vector * fix weird compilation error when constructing a matrix with a row by matrix product
c4ef69b5bd fix compilation: make the check_coordinates* functions const
6dcd373b9d let ei_pset1 use _mm_loaddup_pd. Not a significant speed improvement, but also not a speed regression, and replaces 3 instructions by 1 single instruction.
6ad3f1ab1f Added NEON/Complex.h, ~3.5x faster than scalar std::complex<float> minor fix in AltiVec Complex.h
96f9015807 disable MSVC optimization when the underlying compiler is ICC
b2effa2b2c move ei_conj_if to a more appropriate file
642cc27eb1 forgot to commit ei_p4f_FORWARD;
f6bd508351 forgot to add the Complex.h include for AltiVec.
d9e134c73c Altivec port of Complex.h. Note: For some reason g++ 4.4 is >200% slower than g++ 4.3 on altivec code. The same benchmark (bench_gemm) was tested, on the same hardware/OS (G4/Debian testing), with same CFLAGS. With some code reorganizing I managed to get some minor gain on 4.4, but I just could not reach 4.3 speed. This is most likely a bug, but I'm waiting to see if it's fixed on 4.5. I'll look into this a bit more.
26cfe5a958 Be consistent in how the tutorial pages link together.
2c03ca3325 Small changes to tutorial page 2 (matrix arithmetic): * slightly more extensive discussion of aliasing * layout: put example code and output side-by-side * add some links, etc
b1a17dbfe4 fix a few weird issues with gcc 4.3 32bits and complex<float>
551cb9b7b4 bench: use of Eigen/Array is deprecated + fix includes for iostream
504d3a3586 fix SliceVectorizedTraversal for packetsize==1
51ec188da0 extend vectorization_logic
951da96f14 Added more redux types/examples in tutorial and fixed some display issues
cb3aad1d91 Reductions/Broadcasting/Visitor Tutorial added to index
9852e7b9cb Reductions/Broadcasting/Visitor Tutorial added
300a226ffa scalars fitting in a single packet requires more work, step 1 * add a, Alignable trait * update LinearVectorization assignment
2a1500915a compilation fix
2066ed91de enabling aligned loads/store for complex<double> is much more tricky, so the temporary fix is to always perform unaligned load/store
d89925e6de an attempt to fix wrong unaligned store
02fd3acd81 update to support mixin types
31a36aa9c4 support for real * complex matrix product - step 1 (works for some special cases)
fc3fd8ab57 mention that array = matrix is fine too
861962c55f sync
0f2d480af0 add support for complex
a2415388ef optimized conjugate products for SSE3
65257f6b29 optimize for SSE3 => significant speed up !!
dd18b22f0b optimize pmul for complex<double>
845994f18f optimize gemv for complex<double> and fix gcc alignment issue in 32bits
e07c0f6bb5 cleanning
3a7f16a655 typo
b0896382a3 s/IsVectorized/Vectorizable
74cf12cbe0 add a compile time error if someone call packet on Diagonal (instead of infinite runtime loop)
d5e0efaf69 fix vectorization rule of diagonal-product
c851044eae fix row cwise-prod column in coeff based products... I really don't know why this worked so far...
55495dcbae extend product unit tests
e38fc9692d add a conj_product functor and optimize dot products
f8d3b4c060 fix mixing types in DiagonalProduct
bfa606d16f * add a IsVectorized mechanism (instead of packet-size>1...) * vectorize complex<double>
38d0a0d5d6 add a unit test for previous bug
2dba4b7ce7 add a unit test for conj_helper and ei_pconj
bc57c68cf5 bug fix forgot to conjugate the scalar factor when needed
e04c3f2cc0 reduce code generation and minor speed up
d6454788d9 add support for vectorized conjugated products
291fef5760 fix range
49747fa4a9 Various documentation improvements. * Add short documentation for Array class * Put all classes explicitly in Core module (where applicable) * Section on Modules in Quick Reference Guide * Put Page 7 after Page 6 in Contents :)
3428d80d20 Small changes to tutorial page 1.
d849bc4401 Avoid calling resizeLike, if EIGEN_NO_AUTOMATIC_RESIZING is defined
5322b670c8 Add all unsupported modules and fix header file paths
7d23e7f9f1 indentation
d1243b393e Added tag 3.0-beta1 for changeset 8cfbf33f601ab95ed3a1d5b776bf456d7c4682c3
8cfbf33f60 fix the overview page and add mention that the wrong stack alignment issue may have been solved by gcc 4.5
c69a226192 * extend the Has* packet traits and makes all functor use it * extend the packing routines to support conjugation
8db60afb47 oops I did not see that
e1eccfad3f add intitial support for the vectorization of complex<float>
1505221263 add check for non x86 platforms, we get a compile error on arm/powerpc without the check (there is no known -yet- method to get cpuid, without resolving to kernel /sys interface)
1daf9b11ba check for !x86 platforms, otherwise the BTL benchmark doesn't compile on arm/powerpc
9fa4e9a098 Improve documentation, mostly by adding links to Quick Start Guide.
efb79600b9 fix warning "type qualifiers ignored on function return type" for long long scalar types
15a421ef63 char is not necessarily signed....
6249d60715 improve packetmath unit test for sum reductions
fffaa58ac2 fix unaligned workspace in sybb
8a38047ec5 fix nomalloc_2 issues with ICC and gcc 4.0.1 (and speed up compilation ;) )
c201aabf3e comment the workaround of the EIGEN_EMPTY_STRUCT_CTOR workaround for gcc 4.3
282b5614ed Relaxed precision test.
0c25f868c7 update topic page on products
41ea92d355 * update the general TOC * integrate the old geometry/sparse tutorial into the new one (they are better than nothing) * remove the old tutorial on the core module
11329f49f4 suppress warning and add a fixme about this transpose argument
be1fdbf3af fix openmp for row major destination
0d9dc578dd Adapted the MSVC visualizer to the new Dynamic value.
b4ef323e90 fix bug with openmp
d6791e8f3d Fixed annoying CMake - Qt warning.
5a52f2833f simplify and polish a bit the page 4 / block ops
08c17c412e polish the Array tutorial page
ba7e9a760d actually remove 3.0-beta1 tag
51fae7e57d Removed tag 3.0-beta1
ce1e5e52dd Enable OpenMP testing for MSVC. Added CMake comments.
b212227418 shut one more warning
1399fd9cbd fix compilation issue with clang
d414ab51f0 oops... fix it better
2874101b62 fix compilation with icc. Anyway, the use of an enum instead of a 'const bool' is more consistent with the code around.
04648becf7 fix warnings with old gcc
7d72d4f3c7 Bug fix for NumTraits<T>::lowest() . std::numeric_limits<T>::min() is the lowest *positive* normalized number for floating point types. This fixes the test failure for geo_alignedbox8 for me.
6326f4623a slightly raise the threshold used in this test to accomodate results obtained with gcc 4.1
532aeba308 s/struct/class/g ; bug reported by Thomas
962b30d75e fix linalg tut; remove the old one
97f3c7f282 Fixed nullary test not passing on Core Duo
34d79b6a63 Firefox specific style fix.
7b74d376d3 More style fixes.
e1348b9cc9 Slight pimping of the "Basic matrix manipulation" table. More CSS simplifications.
c64c0f382f Examples for DenseBase::middle{Rows,Cols}()
63287ff08f Added tag 3.0-beta1 for changeset 73db507d150933e79c19be1a9ed51fa8f1a9ea41
73db507d15 merge. first time i see this: someone pushed *between* my hg pull -u and my hg push ! I guess that means we have very high activity these days. good!
4d4a23cd3e nearly complete page 6 / linear algebra + examples fix the previous/next links
b83225edfb Fixed small typo in arithmetic tutorial
b1741c1dc6 Fixed some doc appearance issue. Started cleaning up the CSS.
56fe64c15d Fix hover background color for H2. Align tutorial tables at the top.
21d940fbe4 fix unsupported module doc
1688b86823 Followed Benoit's comment and removed the Mainpage.dox too.
020bf9e922 clean the class hierarchy
af9f452299 Removed old doxygen config file.
c66c4b3293 Added exclusion filters.
096c13ea6d Fill in open entries in decompositions table.
1b8277fc2a update the big linear algebra table (fixes, add notes and definitions)
a06cd0fb13 it remains only to set the status of RealSchur and EigenSolver
1f4927a28c update the big table and add an Optimization column
5c58582a08 Renamed DenseBase::{row,col}Range() to DenseBase::middle{Rows,Cols}()
6e5bed69dc Included tests for middleRows() and middleCols()
82c4a755af disable empty struct trick for buggy gcc 4.3
e5de9e5226 Remove \nonstable yet. The stability rules for Eigen3 are much simpler:  - all what's not in unsupported/ is considered stable API     (except internal stuff e.g. expression templates).
76152e9844 start linear algebra tutorial
3bd421e073 fix potential warning
deba829911 Added Block tutorial to docs index
3070164525 Fix name clash in "m.block(i,j,m,n)" where m has two meanings. Fix simple typos in tutorial.
cf3616b2c0 AltiVec signed integer pmadd removed, proved to be 2x slower than the scalar trait(!).
97889a7f46 Added Block Operations tutorial and code examples
82e2e8b13a Modified Array Class tutorial, added examples
bdef7eb656 Added doxygen info for .matrix() and .array()
086ad93295 start a topic page on decompositions, with a big table.
dbefd7aafb * update redux section * fix output precision to 3 for the snippets
768bdd08c8 fix bad tests
75da254fc3 * use transpose() instead of row vectors (more common use case) * add a word about noalias and performance for BLAS users
aae5994b9e mv comma initializer to page 1
de1220aa62 add a Transposition section in page 2
ca29620e25 fix filename
f98c758f61 fix link
b5659dc9cf show a more fancy example for the getting started tut
189d4b51c2 fix unused warning when EIGEN_HAS_FUSE_CJMADD
25f44266a2 fix #146
f096452dfd Fix cache computation on old Intel CPUs which do not support the cpuid function 0x4
5e7bd967cc add the manual Intel's way to query cache info
464fc297cf Included definitions for rowRange() and colRange() member functions of DenseBase
4b474fdb34 Relax assertion to allow for matrices with cols() == 0 and/or rows() == 0.
95f2e7f3f5 introduce a new LvalueBit flag and split DenseCoeffBase into three level of accessors
3abbdfd621 Add (set)LinSpaced to quick reference guide.
abd5faf784 Require at least MPFR version 2.3.0, because we use mpfr_signbit. Code in FindMPFR.cmake is taken from FindEigen2.cmake .
cac147ba10 add support for determinant on empty matrix
78d3c54631 add a small bench demoing the possibilities of a direct 3x3 eigen decomposition
ea27678153 fix compilation of ei_tridiagonalization_inplace_selector for 1x1 matrix
2a820d41df finish/fix level1 blas, all test pass
dd27e10360 fix level3 blas: it now passes all computational tests
2d78023815 fix hemm to not use the imaginary part of the diagonal entries
cbd6fe323c fix a couple a issue with blas (new TRMM api, and enforece column major)
f59226e901 fix compilation of blas lib
4c19024fbf re-enable writing to reversed objects
fb041c260c fix for empty matrices
883a8cbb2c disable the optimized 3x3 path for complexes which was not working at all
6ab9e8632f fix bad fuzzy comparison in 3x3 tridiagonalization
044424b0e2 fix sum()/prod() on empty matrix making sure this does not affect fixed sized object, extend related unit tests including partial reduction
6a370f50c7 MPRealSupport was missing
b08c26aefa merge
84fdbded4d add support for strictly triangular matrix in trmm though it is not really useful
87e89fea4e add a support module for MPFR C++ with basic unit testing
bfbe61454e merge
cf9edd9958 fix compilation for non trivial types
b6fac91998 merge
d4d4382b18 use dummy_precision by default instead of 0
90d6fc0e28 fix ei_aligned_delete for null pointers and non trivial dtors
b0bd1cfa05 Tutorial page 4: add some text, diversify examples. Use \verbinclude for output text to disable syntax highlighting. Give tables consistent look.
e4f3759c4d add a bench for quaternion multiplication
c36316f284 Change EXPAND_AS_DEFINED doxygen configuration option. Add macros so that MatrixBase::cwiseProduct() and ArrayBase::min() are documented, and remove one macro which is no longer used.
140ad0908d Tutorial page 3: add more cwise operations, condense rest.
6ba5d2c90c Implemented SSE optimized double-precision Quaternion multiplication
8e776c94c1 Tutorial page 1: Put code and output side-by-side.
19a70ae939 fix doc compilation on non 32bits systems
850c6d8a2b fix unused warning
931027f31b add a utilility to debug cpuid, and makes sure we get 0 if we query an unsupported cpuid function
d8b1ce664b update the main page and add a TOC
f3c64c7cce improve ref tables
e078bb2637 big improvements to tutorial, especially page 2 (matrix arithmetic). add placeholders for some 'special topic' pages.
1c783e252f extend the quick ref table page
5c866f2d8c started the quick reference tables
85c2c468df rename file
9d44005916 add initial versions of pages 2 and 3 of the tutorial: matrix arithmetic and the array class
4338834e33 add tutorial page 1 - the Matrix class  + 3 examples
a90575514a int main() is a standard main() prototype, and makes for cleaner examples
67d79c6751 adapt to change: lu() now gives partial piv LU, here we want fullPivLu()
eb4095d41a extend the eigen 2 to 3 guide
ec07c4109d add default parameters for InnerStride/OuterStride to be able to simply write OuterStride<> instead of OuterStride<Dynamic>
4056db01e7 use const Scalar& instead of Scalar for function arguments
686689e9cf comment all disabled MSVC warnings
75b6d2b2f8 fix very annoying warning (gcc 4.3): type qualifiers ignored on function return type
01553c419e fox blcok size computation for fixed size objects
e313826890 add mixed sparse-dense outer product
1927b4dff5 Fix use of nesting types in SparseTranspose and split the big SparseProduct.h file
28e64b0da3 email change
002f7114d1 add support for oski
88e7a572fd makes sure to test small sizes
99e4afd43e makes SparseView a true sparse expression and fix use of nesting types
f3b875e434 fix infinite loop
566867428c - add a low level mechanism to provide preallocated memory to gemm - ensure static allocation for the product of "large" fixed size matrix
e039edcb42 fix temporary creation rule
b22fc6cdc3 bug fix in gemv: solution always use a temporary in dst.innerStride != 1 even though this is not needed when packet_size == 1....
7e836ccb4c unit test fix for default to row major
6be06745df block householder : minor optimization
905beb0953 fix symm
af38bccd3d fix syrk
e499646c74 fix vectorization logic test
19f2f53e2c fix compilation when default to row major
d44fce501b fix computation of blocking sizes for small triangular matrices
0068d3ccf6 Added version testing for MSVC.
22a6cb2dc0 Fix compilation when the memory layout is RowMajor.
83f1b747e7 Fixed MSVC cpuid.
0a42f8c876 fix compilation when EIGEN_CPUD is not defined
8beb60bf63 fix EIGEN_CPUID for i386 & PIC, still remains to fix the MSVC version
98fec45d3c btl: add a trmm action and update eigen interface
546587c7d3 default to Intel's API by default
e1a6bad087 fix cache queries for non core2 CPU ;)
37dcdb1ed6 add missing typename
b284bb8bba add a spmv mini becnhmark for Eigen, GMM++, ublas, mtl4, and oski
b4fe53f561 * makes all product use the new API to set the blocking sizes * fix an issue preventing multithreading (now Dynamic = -1 ...)
fd9a9fa0ae slightly optimize computeProductBlockingSizes by explicitely precomputing what is known at compile time
3ae0eee0b8 merge
d132b5b061 Correct the options computation for RowMajor matrices.
6ff28eb3cf forgot to include this file in my previous commit
98686ab86c fix in case we don't know how to query the L1/L2 cache sizes
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.
4bac6fbe1e The intrin.h header needs to be included after cmath in order to prevent warnigns. Fixed (hopefully) final Index realted warnings.
80b6e5f278 Added include reuqired for __cpuid.
4cd38b333c make bench_gemm print out the queried cache sizes
e54635da11 add functions to query the L1 and L2/L3 cache sizes
7196777b74 Added missing typename.
dc6ad5e25b More Index related stuff.
5f65a89f49 Compilation fix.
a1af6e1151 This does hopefully really raise the warning/error limit.
8239c3b85b Fix compilation.
bb46a45340 Finally fixed the matrix function/exponential warning. Index fixes.
69b50047d6 Raise the error/warning limit.
52165ba55a compilation fix
f34eaa2628 Next try - more Index fixes.
546b802b77 Still fixing warnings.
cb11f2f8a6 Fix compilation of some tests as well as more warnings.
f1679c7185 Utilize Index in all unit tests.
e402d34407 More Index realted warnings.
7548708848 Silence index warnings in triangular unit test. Silence index warnings in FFT module.
9a6967d9ba Attempt to fix MatrixExponential/Function related warnings.
aeb12b417d Silence indexing warning.
e3853353fb fix array_comp *= array_real
7fd8418b19 finish to merge Array into Core: - mv Array/* into Core/ - merge Functors.h files, and move Norms.h into Dot.h
575ac5409c add missing support for std::pow(array,scalar)
eba418a458 remove reference to the dead Array module
17af8c763d fix compilation of sparse tests
b1103c5767 Fixed spare unit test.
6db6e358f5 add the possibility to set the cache size at runtime
f85a1cf5df optimize SparseMatrix iterator
f0a6d56f07 fix linking errors with multiply defined functions
9d4b16c1d1 QuickStart examples: shorten var names, remove superfluous 'using'.
729960e465 add missing files
ece48a6450 split the Sparse module into multiple ones, and move non stable parts to unsupported/ (see the ML for details)
22d07ec2e3 Add blocking inside HouseholderQR based on code from Vincent Lejeune. This is all internal stuff for now.
bc99c82d17 add an inplace householder QR dec function in preparation for a block version
3acd007f9d more compilation fixes for ICC
9637574e2b compilation fix for ICC
ab6a044d0d eigenvalues: documentation fixes
9196b6b659 Add second example to QuickStart guide. Also, some changes suggested by Keir and Benoit on mailing list.
7fdf218951 makes trmv works with the triangular matrix on the right
6bff339cc5 add unit tests for other generalized variants
43086d12d2 implement other variants
db160f2e0b warn users other variants are not implemented yet... (will do it very soon)
74006a9fe9 * decouple the generalized selfadjoint eigenvalue problem to the standard one * uses named values instead of bools
197ce96c00 typo
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.
2d1ae6fa08 fix #126, part 1/2: fix the return type of coeff() on direcaccess xprs: was amounting to
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.
404aa963d9 fix #138: const bool is (rightly) not considered a compile-time constant by ICC, use enum.
8438719111 Compilation fix for matrix_exponential test: add 'typename'.
9726824f7c improve trmm unit test and fix several bugs in trmm
2e792d1f42 * make the triangular matrix * matrix product works with trapezoidal matrices * extend the trmm unit test for unit diagonal
134ca4acb3 packet math functions:  - take const Packet& args like the other packet funcs  - SSE specializations: make them be actual template specializations
7958797648 Ups, fixed a little ugly bug.
99d952466f This scalar needs to be passed by ref to preserve its alignment.
e5aa6a466b Fixed 64bit/Index related warnings in the matrix functions module.
0afb1e80c7 Really fix #123.
3cabd0c417 fix issue 135 (SparseBlock::operator= for SparseMatrix)
2d65f5d3cd remove extra semicolon;
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.
a54772250f Fixes bug #123.
8673f68fd8 merged
c2f6cbab8d Fix compilation of docs after changes in Eigenvalues module. Clean-up after revision 469382407ca5d730f23788c593e71e91d24e9b89 .
af5117dbd5 fixed a bug in the DenseBase InnerIterator ctor.
dcd39a96e1 added the SparseView class.
9e00697ccc First draft for the 5-minute quick start guide to kick off discussions.
9ffc0f6975 an attempt to fix 133
f159613210 compilation fix
eb95c57a9f Fixed another enum related warning.
058f7d3486 Fixed another enum related warning.
91c7af28a8 Remove printouts.
340ac9ea9d Fixed warnings regarding enums.
03331552a9 add a info() function in LLT to report on succes/faillure
a25749ade9 add missing overload of operator= in SparseVector
f5b1b6b351 undo 314bfa13753f153d44ff76a1c8ce0206616b06d9 , 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.
d72d538747 merge my Dynamic -> -1 change
bdd7c6c88a change the value of Dynamic to -1, since the index type is now configurable. remove EIGEN_ENUM_MIN/MAX, implement new macros instead
52e8c42a00 unsplit this test: was compiling 16 times the same thing! Need to find another way. Suggestion: should compile the stuff once into a binary library, or properly split into different tests with different code.
00267e3a47 Added some verbosity on failures in order to get an idea of what is goind wrong on GCC 4.3.
f48af91c7e For 1x1 matrices we really need to check the abs diff of the determinants.
cedea2aba4 Fixed warnings regarding missing assignment operator.
988aaed964 merge
5b192930b6 add runtime API to control multithreading
4d597e4654 Merge.
fcab4c951d Add line to prevent compiler warning on unused variables.
842b54fe80 make the cache size mechanism future proof by adding level 2 parameters
54235879a9 Make test slightly fuzzy to account for effect of extended precision.
986f65c402 merge
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.
d2d7465bcf merge
d2779a1a8e fix warning with gcc 4.3
dad19c4173 compilation fix for gcc 4.2
941ca80b80 Adapted the determinant test for rank 1 matrices with zero determinant.
f8683c409f generalized eigendecomposition doc
41e5625f96 clean general symm eigensolver
3f388282ae Fixes geo_transformations_3 unit test.
8855c4e264 fix unit test when GSL is enabled
8692ccc5fb Fix generalized symm eigensolver (I don't know why the eigenvectors were normalized)
bcf738811e Added missing return statement.
56e585efcc Fixed language issue.
2b7b549e9e Fix #131.
e242ac9345 fix LDLT, now it really only uses a given triangular part!
201bd253ad fix ldlt unit test
8cc02169fd Fix devision by zero warning.
45d3b405eb Fixed many MSVC warnings.
50e43bc75a * add Transpositions to PermutationMatrix conversion * make PartialPivLu uses the  Transpositions class
684656d41c added inline to setL1Cache functions to avoid shared object compile error
fb3fcd0919 Disabled warning caused by declspec(align()).
8b0da2de64 Fix stable_norm compilation.
1c9b7a8d9f Fighting for a green dashboard! Next warning's gone.
4c5778d29d Made the supression of unused variables portable. EIGEN_UNUSED is not supported on non GCC systems.
2a64fa4947 Eigen types must always be passed by reference in order to retain memory alignment.
4b5d359c3a improve/fix stable_norm unit test
626afe8b62 Fixed integer type warnings.
bda40da002 Fixed GCC compilation.
f6d26bf6dc Fixed more warnings.
04274f6793 Fixed eigensolver warning.
f3a568c81d remove ei_ prefix of public global functions, and s/cpu/l1
727376b5f4 compilation fix (std::sqrt(int) does not exist)
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.
7726cc8a29 clean old stuff used to support precompilation inside a binary lib
bfeba41174 Add a Transpositions class to ease the representation and manipulation of permutations as a sequence of transpositions. Make LDLT use it.
1ff1bd69ac Schur decomposition of 1-by-1 always converges.
9178e2bd54 Add info() method which can be queried to check whether iteration converged.
ed73a195e0 Refactor compute() by splitting off two smaller private methods.
e64460d5d0 LDLT: make it honors the Lower/Upper directive and make it works inplace
4159db979d make LDLT uses only the lower triangular part
d92de9574a fix sparse LDLT with complexes
8350ab9fb8 * remove ei_index, and let ei_traits propagate the index types * add an Index type template parapeter to sparse objects
e40852d282 Fixes #104.
38d8352b7b Add field m_maxIterations; break loop when this limit is exceeded.
9ff0d67156 fix typos (oops)
8710bd23e7 clean the ambiguity with insertBack and add a insertBackByOuterInner function
143e6ab9d0 improve aliasing detection for inverse and add unit test
4ebb80490a implicit conversion to scalar for inner product
314bfa1375 fix issue #128 : inner stride can also be 0 in which case it means 1...
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.
e3e2380548 Make all compute() methods return a reference to *this.
4c6d182c42 Addressess small compile error with OpenMP
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()
3e95609cd4 Backed out changeset 641d968a9a7ed57a3b8a3f45dea43c5ee6717f97
6ce22a61b3 oops, remove extra 'typename'
aaaade4b3d the Index types change. As discussed on the list (too long to explain here).
faa3ff3be6 tests:  * change test_is_equal so it just checks for equality, doesn't try anymore to allow to ignoring the difference between col and row vectors.    (needed for the upcoming Index types change)  * in ei_assert, don't report on cerr if we're inside of VERIFY_RAISES_ASSERT
42f1b7d470 finish the change of adding .sh extensions to scripts
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.
09a1b7f7e1 Fixes the problem, described here: http://listengine.tuxfamily.org/lists.tuxfamily.org/eigen/2010/05/msg00154.html
39c568445c simplify a using statement
0116261407 make BenchTimer compatible with 2.0 branch
e2097c55f8 fix issue #125 - *norm() return RealScalar and not Scalar
8dc947821b Allow user to compute only the eigenvalues and not the eigenvectors.
609941380a Change skipU argument to computeU - this reverses the meaning. See "skipXxx / computeXxx parameters in Eigenvalues module" on mailing list.
c21390a611 Define non-const operator() in Reverse; enable test for this. Introduction of DenseCoeffBase (revision bfdc1c49730c79e6058ba1506628341559670c25 ) 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?
07a65dd02b Fix stupid compilation error in test.
db8631b66a Guard with assert against using decomposition objects uninitialized.
48b8ace517 Fix SparseMatrix/SparseVector::sum()
a240f83216 Fix to ProductBase::evalTo() in order to get matrix multiplication working for numeric types that don't have implicit conversion from int
4a2d6ece2e fix readcost for complex types
e7dc772554 Respect MaxRowsAtCompileTime in HouseholderSequence::evalTo(). This fixes the failing test nomalloc_4. Also remove a print inserted for debugging in schur_real test.
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
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
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().
68820fd4e8 Use ReturnByValue mechanism for HessenbergDecomposition::matrixH().
eb3ca68684 Change return type of matrixH() method to HouseholderSequence. This method is a member of Tridiagonalization and HessenbergDecomposition.
76dd0e5314 fix some warnings
79e9e3f24c erm.. use EIGEN_ONLY_USED_FOR_DEBUG() as it already exists.
618640bf2b fix another warning
00a3d07795 display actual/expected warning if ei_isApprox() fails
aadea5ae56 fix a warning
c1d005e976 introduce a new macro EIGEN_ARG_UNUSED(arg) and use it in some places to silent some warnings (from clang)
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..)
4daba0750e fix some warnings with clang
2ab446695b fix some compilation issues with clang (and hopefully bring eigen more close to std ?)
17d080edf2 clang shocks on this. According to people on #llvm, this is indeed not allowed by c++ standard:
b9bcd93ddc fix a compilation pb with clang (it's actually surprising gcc did not complain)
cec297f77b Disabled to __forceinline warning - it creates too many spurious errors and we disabled it only for the unit test (see also the code comment).
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!
05910b7996 merge
188171b991 merge
64cbd45266 minor chnages in Taucs and Cholmod backends
6c18246a80 DenseBase is implemented as a class, not a struct.
2b6153d3ed simplify inner product
bf09fe55ed fix selfadjoint to dense
f0283c13e8 Applied tiny Qt related fixes.
08fbfa93e0 make the cmake options EIGEN_DEFAULT_TO_ROW_MAJOR and disabling EIGEN_SPLIT_LARGE_TESTS work also for unsupported tests
1c04484a01 bug fix, since the last storage order changes, this InnerSize calculation was wrong
5250c4395c compilation fix: const T ---> typename ei_makeconst<T>::type (error was appearing when building tests with alignmnet disabled)
cf6d3162cc cache outer size in Block => x1.5 speed up for a.block() = b.block()
0f3bcf853f fix mixing types in inner product
6d08301dcc add regression test for previous fix
42a1c983c1 fix bug in sliced redux
c55761e015 make inner product return a 1x1 matrix
82d898083f fix compilation error thanks to test case by Trevor Irons, and expand unit test
6624b93d67 add important comment and move stride helpers to DenseCoeffsBase.h
8f076f6817 fix installation of global headers in case the src path contains 'src'
0928c40f68 rename Coeffs.h -> DenseCoeffsBase.h
7cbb84b046 move the strides API to DenseCoeffsBase, and various fixes to make stuff compile after my big changes
0e2a480466 use CoeffReturnType
eda2795f51 use modern ei_first_aligned function, dont try compiling coeffRef() on rvalue expressions.
5deda97413 remove bogus test that was failing
65bd1652b1 let Diagonal have the DirectAccessBit, using an inner stride
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.
d03779f75f fix CwiseUnaryView: it shouldn't have the AlignedBit, but it should have the DirectAccessBit and corresponding strides API.
2d74f1ac92 Document SelfAdjointEigenSolver and add examples.
6ea6276f20 Quiet MSVC.
38021b08c1 Merge.
afed0ef90d Document Tridiagonalization class, remove unused types.
8f249e8b54 fix compilation: const (T&) != const T& , use ei_makeconst
cf4f90ccea fix #116 and remove debug cout's
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...
664f2d4508 dont try passing --version to qcc
d3f97f7582 forgot hg add
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
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.
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
024995dbca Use topRows() and rightCols() in ComplexSchur and RealSchur.
4f83d6ad19 Remove doc/snippets/MatrixBase_minor.cpp because minor() was removed.
34b3cdb82c Added EIGEN_DONT_PARALLELIZE preprocessor directive
bf71b466e9 Removed ambiguity between Map and Matrix Options template parameter.
17dbe6c743 Added file extensions to our unit test scripts to prevent MSVC from failing to build because of name clashes.
18c70b12d7 Fixed a warning.
c4dda79904 Fixed stablenorm test, condition was not met when running tests
ce09b4ddfc compile
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.
5acf46bd12 Backed out changeset 6972c140f737874d88da0e225c7c27b4563a4518
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.
e3e34b5920 remove MakeBase, use ei_dense_xpr_base instead (yes, it was only used in dense xprs anyway)
a16ba80bfa * remove ei_block_direct_access_status * remove HasDirectAccess / NoDirectAccess constants
58e7297859 * remove class DenseDirectAccessBase * remove member XprBase typedefs, use ei_dense_xpr_base * remove member _HasDirectAccess typedefs, use ei_has_direct_access
1dd27ce280 merge
f22ade8ee4 restrict operator[] to vectors, not matrices.
c29b431ad9 remove eigen_gen_credits script
4502afeedf remove disabled/ directory. It's useless. It remains in the hg history anyways.
a4f9ca44ab add minor to Eigen2Support
2362eadcdd remove Minor adapt 3x3 and 4x4 (non-SSE) inverse paths
abbe260905 remove USING_PART_OF_NAMESPACE_EIGEN, leaving it in Eigen2Support. improve porting-Eigen2-to-3 docs
ef789fe0d2 forgot to hg add...
bc22f4da9d * fix Eigen2Support, was not including VectorBlock.h * move the corners support stuff to a new Block.h there * expand the unit test
00c716d20e merge
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
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.
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).
faf8f7732d merge
e33953b888 fix compilation in Sparse (error introduced yesterday)
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.
028bb7ea48 Changed the gdb display format of vectors and added support for quaternions.
4ba032c9ab fix grave bug introduced by me: the low-level matrix-vector product functions can't be fed strided vectors, only strided matrices.
941a7e4ebd oos, remove eval() used for debugging
84d1b2ae3a add platform check for how to link to the standard math library. This allows to support QNX.
40b2aaa8b1 merge
504a31f643 renaming (MatrixType ---> whatever appropriate) and documentation improvements
34b14c48f3 shut up stupid gcc 4.5.0 warning
29a3aec483 erf() is really non standard, better dont pollute eigen with it.
086d5f1ac6 Fixed indentation and removed debug code.
214d5a892d Added support for STL lists with aligned Eigen types.
031932b4ec Disabled erf also for Cygwin where it is not supported and causes errors.
7db0f242ef Disabled unsupported erf on MSVC machines.
63eaa8948e tests for nonlinear module : use different slots + misc cleaning
f1deab0e5a introduce ei_erf() for various scalar type
ce32f90fdd clarify help message about make install
ba5b5f6a4b fix compilation
cc33a56140 Added MSVC stack allocation support.
0326a51f89 fix use of uninitialzed calues
797f63044a oops, forgot to add DenseDirectAccessBase
d9ee28851e fix ei_blas_traits directaccess check: in the case of vectors, having a nontrivial inner stride is OK.
04c663840b * add some 1x1 tests * temporarily disable tests that strangely fail, with a big FIXME
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
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
ea1a2df370 taucs: make SupernodalMultifrontal the default mode
0b6b316f18 an attempt to fix compilation with MSVC
a2324d6265 fix sparse squared norm
614fbe497d Merge.
574ad9efbd Move computation of eigenvalues from RealSchur to EigenSolver.
73d3a27667 RealSchur: Make sure zeros are really zero (cont'd); add default ctor, docs.
0b0366a53d cholmod: assume selfadjoint matrix by default since selfadjoint flag has been removed
872df22ca4 RealSchur: Make sure zeros are really zero; simplify initFrancisQRStep().
1ad6c79467 merge
7a59f9ae01 make sure that changing CMAKE_INSTALL_PREFIX is properly taken into account
7dea3a33a5 RealSchur: change parameter lists; minor rewrite of computeShift().
b6829e1d5b RealSchur: use makeHouseholder() to construct the transformation.
cc57df9bea RealSchur: Rename l and n to il and iu.
9fad1e392b RealSchur: split computation in smaller functions.
7dc56b3dfb RealSchur: Use Householder module in Francis QR step.
86df74c765 RealSchur: reduce scope of temporary variables in hqr2().
dad50338b8 RealSchur: Use PlanarRotation in "found two real eigenvalues" branch.
d88d1cfa62 Merge.
79e1ce6093 RealSchur and EigenSolver: some straightforward renames.
a16a36ecf2 Add tests for real and complex Schur; extend test for Hessenberg. Make a minor correction to the ComplexSchur class.
9d6afdeb22 ei_psqrt fix for zero input
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.
8cfa672fe0 Use HessenbergDecomposition in EigenSolver.
1b3f7f2fee Extend documentation and add examples for EigenSolver class.
338ec0390f let the cast functor use the new ei_cast()
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.
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.
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
e6300efb5c Extend documentation for HessenbergDecomposition.
0a5c2d8a54 fix misc warnings, more importantly when NDEBUG is defined, assert() is a nop.
af08770890 Center version number on main page of API documentation.
eb0c921a58 Fix some doc typos.
df1cbe8c3d fix display of modules list in documentation
671cfb7ad0 Fix wrong header and warnings in polynomialutils.cpp
89f2d5667f Add the possibility to use the polynomial solver of the gsl.
5ef83d6a6c Add missing test files for Polynomials module.
9a4a08da46 Creation of the Polynomials module with the following features: * convenient functions:   - Horner and stabilized Horner evaluation   - polynomial coefficients from a set of given roots   - Cauchy bounds * a QR based polynomial solver
4e871c6c80 blas: fix compilation and build both a shared and static lib
c68098b9be Clean up ComplexSchur::compute() .
13a1b0ba27 Add snippets file which should have been added in the previous commit.
37e17938e9 Extend documentation of ComplexSchur and add examples.
307c428253 Move documentation of MatrixBase methods in MatrixFunctions to module page. I think that because MatrixFunctions is in unsupported/ and MatrixBase is not, doxygen does not include the MatrixBase methods defined and documented in the MatrixFunctions module with the other MatrixBase methods. This is a kludge, but at least the documentation is not lost.
525d6b655f Merge.
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().
1803db6e84 merge
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
8b093dd2df oops, fix symv (innerStride instead of outerStride)
d91ffffc37 Allow ComplexEigenSolver and ComplexSchur to work with real matrices. Add a test which covers this case.
fbdf16d425 Added x()/y() and z() access functions to translations.
d3e271c47e Extend documentation and add examples for ComplexEigenSolver.
547269da35 fix the flags and matrix options, to always have the right RowMajor bit in the vector case
9dba86df0b merge
089bd89512 compile with gcc 4.5
0ee10f7da4 Document member functions and types of ComplexEigenSolver.
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
d536fef1bb fix and extend replicate optimization, and add the packet method though it is currently disabled
d68b85744f Replaced strong with weak inlines in CwiseUnaryOp.
6d08f71a2d Removed strong inlines which cannot always be inlined.
0e5a232dae Ups - again a missing typename.
fc20e6fd55 Try to avoid modulo operations in Replicate if possible.
b9644f3323 Propagate fixed size dimensions if available (on MSVC it leads >2.5x speedup for some reductions).
3e08c22028 attempt to fix #101
2a82b162d7 Nest expression within MatrixWrapper by value.
b20b393a4e Enable resizing of Arrays.
dd9ff1b9a6 Fix MSVC warnings.
74a7c5caee implement the idea that row-vectors have the RowMajorBit and col-vectors don't.
b81351cb07 nomalloc: minor cleanup
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.
898762529e update the product selection logic to use the Max* sizes
2af9468dd1 update the product selection logic to use the Max* sizes
9a3b00c040 add missing cmake directives for arch/Default
b2e7329356 tests : fix compilation issues, adding <iostream> and removing <Eigen/Array>
89343a38af * Fix #97 : Householder operations on 1x1 matrices * Fix VectorBlock on 1x1 "vectors" * remove useless makeTrivialHouseholder function
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
3565e89be2 minor edit
101cc03176 merge
e31929337e needed different proxy return types for fwd,inv to work around static asserts
5b2c8b77df created FFT::fwd and FFT::inv with ReturnByValue
9fe040ad29 Reintroduced the if-clause for MSVC ei_ploadu via _loadu_.
aeea00a9cf fix compilation
3130b7a722 bugcount--, this time trmm
1958b7eccc stride() => inner/outerStride()
4402034678 pff I introduced much too many bugs latey, count--
61ce1de048 fix symm
a7d199bf9a fix trsolve
6f0b96dcf4 fix issue #100 (fix syrk)
271fc84e47 bugfix in gebp for 32bits x86
c4f8afdf49 #undef minor at the right place
7e2afe7e95 remove the __ARM_NEON__ check there since Konstantinos said he removed it but apparently didn't commit :)
bf0a21a695 * disable static alignment on QCC * remove obsolete #error
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.
61a14539c7 merge
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.
afd7ee759b fix copy pasted comment
273b236f72 Altivec brought up to date. Most tests pass and performance is better than before too!
51b0159c96 Fixed line endings.
f2a246c225 add a small program to bench all combinations of small products
c442208358 clean a bit the bench_gemm files
5f172cd01f add a FIXME
48d0595c29 * dynamically adjust the number of threads * disbale parallelisation if we already are in a parallel session
dd961f8c60 add an option to test ompenmp
62ac021606 fix openmp version for scalar types different than float
d13b877014 remove the 1D and 2D parallelizer, keep only the GEMM specialized one
24ef5fedcd minor cleaning
279ad44509 merge
620bd28480 enable posix_memalign for QNX
7e2683dc39 merge
0964810fba merge
ea8cad5151 make the number of registers easier to configure per architectures
cefd9b8888 merge with default branch
1723068694 Moved x()/y()/z() and w() access functions to DenseBase; they are now available for Arrays as well.
8ed1ef4469 add a minor FIXME
68d94d914e integer division is vectorizable on no SIMD platform, not just SSE.
710bc073a7 arm_neon.h is a standard header file, fixed
6c89fd4df0 minor cleanup
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.
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.
45d19afb18 cleanup/simplification in computation of matrix flags
7dbe806711 merge
6a92168915 Backed out changeset 2f3d685e0c687ae1121428dab6bc0ec868b14fe3
aa6570c3a3 Added a missing inline hints. Removed a useless Nested temporary.
b0ffd9bf04 clean #defined tokens, and use clock_gettime for the real time
2f3d685e0c a matrix (or array) does not always have the LinearAccessBit! => fixes in outerStride and matrix flags
0ed5edd24d blas: add a default implementation of xerbla
a76c296e7f blas: fix most of level1 functions
bca04bd983 fix compilation
a2d7c239f5 blas: fix HEMM and HERK
7fd6458fec selfadjoint: do not reference the imaginary part of the diagonal
abfed301cb blas: fix SYRK
ff6b94d6d0 BenchTimer: avoid warning about symbol redefinition on win32, and include <Eigen/Core> (required to compile)
f1d3101956 blas: add warnings for non implemented functions
32823caa62 Adapted the comment and removed it from the public dox.
3295c1c3e6 product selector: the symmetric case
afad108b5f Added a comment to prevent placing an EIGEN_STRONG_INLINE where it makes no sense.
3efb3cc828 Changed product type selector to fix perf regression.
c7828ac45c add missing implementation of uniform scaling products
3cc9e3f5bb Fixes a compilation issue for MSVC.
a7b9250ad0 blas interface: fix compilation, fix GEMM, SYMM, TRMM, and TRSM, i,e., they all pass the blas test suite. More to come
a1ac56a7c7 Add (failing) test for computing HouseholderQR of a 1x1 matrix.
65eba35f98 rm useless omp shared directive
1710c07f63 remove Qt's atomic dependency, I don't know what I was doing wrong...
2d7bd1ec91 Make MatrixFunctions tests more robust. * Use absolute error instead of relative error. * Test on well-conditioned matrices. * Do not repeat the same test g_repeat times (bug fix). * Correct diagnostic output in matrix_exponential.cpp .
31aa17e4ef GEMM: move the first packing of A' before the packing of B'
aeff3ff391 make Aron's idea work using Qt's atomic implementation for the synchronisation
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.
07023b94d8 forgot defined(...)
9334ed4444 on 64-bit systems, glibc's malloc returns 16-byte aligned ptrs, and we now take advantage of that.
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
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).
40bd69fbaa Hide some internal stuff from the docs.
1d9c18a8f3 comment out cerr's
eb3a3351cc misc cleaning
27f5250258 Only include <iosfwd> unless either EIGEN_DEBUG_ASSIGN is defined or we're in eigen2 support mode
e84f7e07e9 add ei_posix_memalign_realloc
22fabb8940 add missing inline keyword, thanks to Eamon.
e0830cb1b7 Use a specialization of test_is_equal() instead of defining COMPARE()
6c9eb36222 Added support for realloc based conservative resizing.
78b2c7e16e Fixed a typo.
3f393490ad dot: handle the rowvector.dot(colvector) case where one needs to transpose.
15a33622ac * define COMPARE(,), which prints expected/actual results in case of failure * use it in test/NonLinearOptimization.cpp
d9f6380499 Remove the dot product's separate implementation and use cwiseProduct.sum instead. Also take special care to get nicely working static  assertions.
b5c79e7291 add examples
2c9a91812e merge
814e40c72a let redux use the new ByOuterInner accessors
4927841cba Document Map and Stride, add examples.
b1f666d007 Fix Map-with-Stride and cover it by new unit tests.
6924bf2e99 implement Aron's idea of interleaving the packing with the first computations
c72a5074e6 Fixed perf problems for vector subtraction: inlining wasn't always happening when necessary.
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
ac425090f3 BTL: allow to bench real time
8d4a0e6753 fix compilation without openmp
c05047d28e fix some BTL issues
3ac2b96a2f implement a smarter parallelization strategy for gemm avoiding multiple paking of the same data
d86f5339b2 ComplexSchur: fix bug introduced in my previous commit. The value of c is actually used a few lines later.
f56ac04c34 DenseBase::IsRowMajor now takes the special case of vectors into account.
b1c6c215a4 merge
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
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.
53bae6b3f8 update matrix product selection rules for 1xSmallxLarge and the transposed case
959a1b5d63 detect and implement inplace permutations
d9ca0c0d36 optimize inverse permutations
77c922bf05 * move the 's': InstructionsSet ---> InstructionSets * proper capitalization: SSE, AltiVec
50a5ac3c4b oops, fix typo
00bc535b66 provide a static method to describe which SIMD instructions are used
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.
7c98c04412 add reconstructedMatrix() to LLT, and LUs => they show that some improvements have still to be done    for permutations, tr*tr, trapezoidal matrices
a7e4c0f825 make testsuite aware of EIGEN_CTEST_ARGS
f7aa9873ca * fix LDLT's default ctor use * add a reconstructedMatrix() function to LDLT for debug purpose
60325b8330 actually, this is not even meant to be a termination criterion. so the proper fix is this.
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.
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.
a1e1103328 add a 2D parallelizer
022e2f5ef4 fix typo
68eaefa5d4 update BTL (better timer, eigen2 => eigen3, etc)
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
4a0d41c5fb merge
1fd8d7b96a Attempt to fix PGI compilation issue.
b528b747c1 merge
5d530e0373 enable caller to supply FFT length for Eigen Matrix interface functions to effect zero pad or source shrink at Nyquist bin
3beedba244 merge
d3b314569b provide default values for CXX, remove duplicate define
e6f0cd7121 Merge.
d2b0eadf52 fully adapt the gebp kernel and optimize it for CPU with only 8 registers (transplanted from 2ed88ebbf1995be90b8d0c25ff10248c8f56d023)
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)
3e6ab8f93b ups
d5af5ab92b Added getRealTime() for windows.
f797ba0abe extend the bench timer to allow benchmarking of parallel code, improvements are welcome
801440c519 fix BTL's eigen interface (transplanted from 437f40acc1cbd9ce2f2a2a3f413cae3a5b35f8fb )
eb905500b6 significant speedup in the matrix-matrix products
d579d4cc37 oops
fc4a85ecd5 fully adapt the gebp kernel and optimize it for CPU with only 8 registers
dd569c7d0f merge
e00f1fd125 implement an even lower level version of the gebp kernel for MSVC (it seems to be faster with gcc as well)
6730fd9f3f Port BenchTimer fix.
4ba25a8d5c merge
aaaf855a88 add a small benchmark to quickly bench/compare SMP support
1c6bdb4060 merge
3e62fafce8 clean a bit the parallelizer
b20935be9b add initial openmp support for matrix-matrix products => x1.9 speedup on my core2 duo
437f40acc1 fix BTL's eigen interface
1a70f3b48d fix compilation
a901bed33a Added IsRowMajor enum to DenseBase.
e2a059863e Added missing precision/eps functions to AutoDiffScalar.
f079f52b58 merge
f75e6773b0 Added ei_traits<Quaternion>::PlainObject.
ac8ff44278 Tried to get rid of MSVC warning D9025.
a7d085eb4e NonLinearOptimization : clean 'mode' handling from the old minpack code : * this is actually a boolean, not an int * use a better name * can be set at initialization time instead of bloating all methods signatures
608959aa6f compilation fix in ldlt() for non matrix types
71fecd2371 add missing return value
6b4cecc1c6 CMake cleanup.
4e389b195d Change MatrixFunction::separation() parameter from 0.01 to 0.1 . The latter is actually the value used in the literature.
abc8c01080 Renamed PlainMatrixType to PlainObject (Array != Matrix). Renamed ReturnByValue::ReturnMatrixType ReturnByValue::ReturnType (again, Array != Matrix).
67ce07ea83 matrix_function test: replace expm(A).inverse() by expm(-A) The latter is more stable. This fixes one of the issues with the test. Also, make typedef's in MatrixFunctionReturnValue public; this is necessary to get the test to compile.
f0c8dcf1e2 Renamed AnyMatrixBase to EigenBase.
4f8773c23a fix stupid enum values
5491531a81 add Stride.h
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.
39d9f0275b Update matrix_exponential test after API change in ei_matrix_function Apologies for forgetting this yesterday and not testing properly.
2cd1ad2ded typo in merge
f200c84d9f merge
8f51a4ac90 found out about little-documented FFTW_PRESERVE_INPUT which has effect on c2r transforms
319bf3130b Use ReturnByValue to return result of ei_matrix_function(), ...
25019f0836 Use ReturnByValue to return result of ei_matrix_exponential() .
a9096b626b not all versions of gcc support -Wno-variadic-macros
016943f870 avoid 2 redundant calls to resize
dcb395c6f5 explicitly disable the use of evalTo for dense object
21d0eb3f11 the default implementation should really call evalTo
d00bff91ad workaround weird gcc 4.0.1 compilation error
8519558d11 Workaround for compounds affected by #94.
b18f737aa1 Test matrix functions with matrices with clustered imaginary eivals. The idea is that these test MatrixFunction::swapEntriesInSchur(), which is not covered by existing tests. This did not work out as expected, but nevertheless it is a good test so I left it in.
a4a2671fd0 Refactor matrix_function test in preparation of next commit.
9251cfed9b this had to be done here, not at the end.
37ca4200b2 Piotr's patch was missing many occurences of size_t. So,   using std::size_t; This is the only way that we can ensure QCC support in the long term without having to think about it everytime.
a76950bdab fix a couple of ICE with gcc 4.0.1
1701a5d1f8 std:: namespace fixup for more restricive compilers such as QNX's QCC
ae0a17d30b Here is the proper fix.
13ce92f5ba Fixed notemporary unit test.
93e86b0884 Fixed typos. Replace NumTraits<bool>::dummy_precision() (three locations) by false in order to suppress warnings.
48f5980669 fix compilation (cwise and epsilon)
602778ea26 also fix tests for NumTraits<double>::epsilon()
fd19dd57d8 fix usage of epsilon wrt to latest API change
ccc58e935e fix usage of epsilon wrt to latest API change
fc5fa77743 unsupported/Eigen/AlignedVector3: dummy_precision is now in NumTraits
d0e8342a04 Fixed warning.
0ca67afe6a finally here is a simple solution making (a*b).diagonal() even faster than a.lazyProduct(b).diagonal() !!
1d342e135c changed destination argument to reference
141c746fc7 if the src.stride() != 1, then the layout is not continuous -- need to copy to temporary
cd7912313d changed FFT function vector and Matrix args to pointer as Benoit suggested implemented 2D Complex FFT for FFTW impl
a30d42354f updated comments and played around with Map
7a6cb2a39c added benchmark for unscaled and half-spectrum FFTs
f1a025185a Added array() to ArrayBase and matrix() to MatrixBase().
dbf3af866e Remove some Array #includes.
7bf5930496 Adapted Geometry includes. Adapted the decomposition documentation regarding the solve signature.
ecc71abdda Added the Array include's warning for GCC.
26df0609e2 Corrected the Array include's deprecation warning for MSVC.
85d80d0fcd merge
5d48cc1f5b Moved the Array module to Core.
71b64d3498 Updated tests for enhanced AlignedBox with volume, diagonal and better handling of integral types.
8918d18e21 Improved patch from Manuel Yguel: Enhance AlignedBox to accept integral types and add some usefull methods: diagonal, volume, sample.
bb290977b8 add highest and lowest functions to NumTraits
fe0827495a * move dummy_precision and epsilon to NumTraits * make NumTraits inherits std::numeric_limits
c11df02f0d Deactivated test which requires variadic macros.
5da3049b80 Regression tests for number of nested temporaries. Moved EIGEN_DEBUG_MATRIX_CTOR to ei_matrix_storage to capture resize related allocations.
f96e6a6944 merge
71e580c4aa fix nesting in Arraywrapper and nesting_ops
04333c6ace Now variadic macro related warnings should be supressed as well under Linux.
905050b239 extend sparse product benchmark with ublas
285bc336d5 document lazyProduct
840977529f * as promised, remove the "optimization" for Product::diagonal() * add MatrixBase::lazyProduct
9ce1212d7c For the record, here is a solution for (a*b).diagonal, at the cost of extra copies if a and/or b as to be evaluated. So in the next commit I'll remove it. A nice solution would be to evaluate the lhs/rhs into member of the initial product, but that would be overkill.
0a680a9857 Added a non-diagonal product nesting test.
dd283b3f82 Fixed paste&copy error.
928ae382b4 Added debug only unit test for nesting ops - just run ./check nesting.
8185a3c6cf fix one useless temp & copy
1cb59e4781 fix nesting lazy prod by ref
d104d2cd29 add accessors to coeff based product
5686eca7b1 * fix multiple temporary copies for coeff based products * introduce a lazy product version of the coefficient based implementation   => flagged is not used anymore   => small outer product are now lazy by default (aliasing is really unlikely for outer products)
0398e21198 s/UnrolledProduct/CoeffBasedProduct
c076fec734 fix the multiple temporary issue for nested products
8b016e717f get rid of NestParentByRefBit
871698d3aa Introduced NestParentByRefBit and NestByRefBit - this should fix temporaries related to nested products. Fixed a few typos and a few warnings.
6f3f857897 make noalias works for coefficient based products
52167be4c8 make sure the correct diagoanl() function is called in trace()
73eb0e633c * resurected Flagged from Eigen2Support * reimplement .diagonal() for ProductBase to make (A*B).diagonal() more efficient!
b44240180f optiization: make hybrid small/large outer products use the unrolled path
d0b4ef81f0 Prevent temporaries for reductions.
1a77334d54 Silenced type conversion warnings.
05837be8fb Fixed a warning. Transform::Identity() is now returning a Transform.
8861dce7ee Fixed 32bit builds.
7b2dd988fa Fixes #89. Added regression test.
7c41fb66f8 fix compilation on 32bits systems
08f154b93a remove some trailing nestbyvalue
dd817361f5 use unrolled product path for small outer product
15c0a78c6e One warning less...
43f0c0cbb3 fix triangular view assignment
b6521b799f add specialization of ei_ref_selector for Array (fix a big perf issue \!)
6dee5440e4 Adapted mean to work with complex numbers. Added regression test.
42b88983ff Fixed mean reduction leading to unresolved symbol.
ae06365bbd Disable variadic macro warning when compiling at full warning level. I was not able to get a macro version running and thus I opted for a cmake patch.
2b2fcc9460 erm.... using nxn is the actual purpose of this variant, fix this.
375b5faa8a Fix copy-paste error in first_aligned test.
13b078efc9 remove reference to dead option
33abe75afa Fixed Quaternion operator*= added regression test.
98a584ceb8 Put the Status outside of the class, it really does not depend on the FunctorType or Scalar template parameters.
27cf1b3a97 eigenization of ei_r1updt()
40eac2d8a0 misc cleaning / eigenization
fcd074c928 silent warning of icc
bd732986bc fix compilation
0ce5bc0d14 add support for global math function for array
7d92b7ad5f Modified license header.
3bfba8c9a9 Added the missing unit test file.
5b9cc65418 Added EIGEN_DEFINE_STL_VECTOR_SPECIALIZATION macro including unit tests and documentation.
828d058b4b EIGEN_ENUM_MIN ---> EIGEN_SIZE_MIN
dcbf104bcc add EIGEN_DEFAULT_TO_ROW_MAJOR cmake option for the tests.
35bacf7cb8 *forward port fix in MapBase::coeff(int) and coeffRef(int) *forward port expanded map.cpp unit test *fix unused variable warnings
7ba9dc07ed port ei_rwupdt to c++,  and misc cleaning
e97529c2e3 doc : update code, mention examples
4365a48748 Added an ei_linspaced_op to create linearly spaced vectors. Added setLinSpaced/LinSpaced functionality to DenseBase. Improved vectorized assignment - overcomes MSVC optimization issues. CwiseNullaryOp is now requiring functors to offer 1D and 2D operators. Adapted existing functors to the new CwiseNullaryOp requirements. Added ei_plset to create packages as [a, a+1, ..., a+size]. Added more nullaray unit tests.
afb9bf6281 use PlanarRotation<> instead of handmade givens rotation in cminpack code + cleaning. This results in some more memory being used, but not much.
c04a93df31 clean r1mpyq: remove fortran leftovers
55f328b264 misc cleaning
71f513e250 forgot to commit this: qform.h is not used anymore
69f11c08a1 more eigenization, dropped 'ipvt' in lm
8a690299c6 fix possible segfault
d791b51112 remove spaces
113995355b get rid of ei_qform + lot of other cleaning, now that we do not depend on minpack qr factorization.
ba2a9cce03 some more eigenization
a3034ee079 cleaning
91561cded4 use a plain matrix to store the upper triangular matrix 'R', instead of the "compact inside a vector" scheme used by fortran/minpack. The most difficult part is to fix all related code. Tests pass.
4b859c8554 cleaning
c759814f11 some more (thoroughly checked) eigenization
bdb0e9fcd0 Clean up one compilation error and two warnings.
1403cea087 fix a bug introduced between the cminpack version of Manolis Lourakis and the one from Frédéric Devernay. Here, we want to compute the max over the column, the -1 is not needed in fortran because indices start at 1, contrary to c/c++.
9651e0c503 Use eigen methods for solving triangular systems. We loose again very slightly on both speed and precision on some tests.
92be7f461b define ei_lmpar2() that takes a ColPivHouseholderQR as argument. We still need to keep the old one around, though.
ee0e39284c Replace the qr factorization from (c)minpack (qrfac) by Eigen's own stuff. Results as checked by unit tests are very slightly worse, but not much.
1cb0be05b0 useful cleaning
cbf6022e5a useless cleaning
6ae7d842a3 generate a compilation error when using ReturnByValue::coeff() or coeffRef(), instead of doing an infinite recursion
858539a6af Use matrices with clustered eigenvalues in matrix function test. This is in order to get better code coverage. Test matrix_function_3 now fails regularly because ComplexSchur reaches the max number of iterations; further study needed.
d08035f3e1 fix the script again (definitely?) + cleaning
be11a254ac rm ExpressionMaker stuff (weird as I was pretty sure that I had already removed them)
d40c110053 lot of cleaning: - clean the *_PUBLIC_INTERFACE_* - update Diagonal, ReturnByValue, ForceAlignedAccess, UnaryView, etc. to support array - many other small stuff
e78e3cd41b Fix bug in MatrixBase::setIdentity(int, int).
e0c2c6385f Add small test for Matrix::setIdentity() This is to exhibit the bug that makes the jacobisvd_7 test fail.
89ee9f092f Fixed compilation of MatrixFunctions module.
d5d5417062 add SSE code (from Intel) for the fast inversion of 4x4 matrices of double
60b0ddc3e1 update the fast 4x4 SSE inversion code from more recent Intel's code
a13ffbd836 Get rid off GCC warning on comparing enums from different types.
dacfa97e82 merge
adb2170eb8 removed Eigen::Complex class since it offered insufficient advantage over std::complex when sane real,imag structure packing is assumed. for more info see: http://www.cpptalk.net/portable-complex-numbers-between-c-c--vt46432.html
c8b9097740 erm.. forgot to test after previous commit. Now it's ok (tm).
9f899808d7 fix scalar - matrix
0158d78906 extend CwiseNullaryOp to support Array
c70d54257b add unit tests for true array objects
c436abd0ac fix both compilation and previous fix : now 'basicstuff' passes again. (Gael: i dont think you meant removing this setIdentity(), did you?)
6b380992b5 fix !=
0c89475317 unit tests for == / != operators
71630b2160 fix MatrixBaseAddons example
b5a6f382ca work around warning about /* inside of a comment (gcc 4.4)
37d4505228 More documentation improvements.
90d5a7c0dd Adapted doxygen's new style sheet. Added documentation to some of the typedefs.
dd4b2f044d forgot to include this file in previous commit
d62ee0668f remove useless using comp. assignment operators
76a355817b fix a warning
bfe6fdde24 allow to multiply a householder sequence and a matrix when one is real and one is complex. This is especially important as in bidiagonalization, the band matrix is real.
ddc32adb0e New UpperBidiagonalization class
f1d1756cdd Introduce third template parameter to HouseholderSequence: int Side. When it's OnTheRight, we read householder vectors as rows above the diagonal. With unit test. The use case will be bidiagonalization.
5d796e363c compilation fix for UmfPack
814659c201 Changed parts of the documentation. The param keyword is now tparam (in Matrix). Made PlainMatrixType non-internal (currently MatrixBase only); I think this is an important typedef in particular when writing your own template methods.
624902f559 Enabled class diagrams (requires dot, i.e. graphviz). Adapted the style sheet in order to center class diagrams.
c0b2aa0ace Added some minor comments. Adapted some of the doc/snippets.
a33b2dfeb3 introduce new state, "Not started"
a87c0a5ed8 Fixes #83.
553fb31f7e Using operator*= is not required in MapBase. Since no other operator*= is present, none of the base class operator*='s may be hidden and all of them should be visible. As far as I was able to verify, this is not affecting GCC. This fixes #84.
ffaea1d995 merge
e48c3faf25 Fixed the ProductReturnType (at least for UnrolledProducts). Fixed operator= (MSVC specific) in Array.
a8ea2c8cef Fixes #81.
caa9ced853 Add a real plain matrix type to the ei_nested declaration used in product return type.
65cd1c7639 Add support for matrix sine, cosine, sinh and cosh.
a05d42616b Fixed DenseStorageBase typedef (MSVC specific). Unified the ei_plain_matrix_type.
24a09ceae8 * Fix a bug in HouseholderQR with mixed fixed/dynamic size: must use EIGEN_SIZE_MIN instead of EIGEN_ENUM_MIN, and there are many other occurences throughout Eigen! * HouseholderSequence:   - add shift parameter   - add essentialVector() method to start abstracting the direction   - add unit test in householder.cpp
325da2ea3c Fixed conservativeResize. Fixed multiple overloads for operator=. Removed debug output.
376341de4a Eigen/src/Core/DenseStorageBase.h: add 'typename'
83d21d5ff6 Fixes unit test swap_3. Friends are not inherited.
3d5912d458 Backed out the removal of the actual resize like implementation. Now, resizing by dimension is optional.
350c7beb92 Fixed swapping and corresponding MSVC compilation.
e0f5b4add3 Fixed MSVC compilation.
3eb80eecde doc/A05_PortingFrom2To3.dox: fix typos
3407e8a67e triangularView<UpperTriangular> --> triangularView<Upper> Necessary after c5d7c9f0def693e77797e6e43cb1fd2e7f8ae2fd  (big delete of "triangular").
ef0ed5b271 test/triangular.cpp: isUpper() --> isUpperTriangular() Necessary to get the test to compile after c5d7c9f0def693e77797e6e43cb1fd2e7f8ae2fd . I'm assuming that isUpperTriangular() is the name we want; the alternative is to change Eigen/src/Core/{MatrixBase,TriangularMatrix}.h
0fb0307377 implement BandMatrix::evalTo (thus avoid infinite recursion when assigning a BandMatrix to a Matrix)
44ed79fc3c finally, undo this
b05f59ee07 Backed out changeset 58fb27cd566f4057cee914be4cfe4f87abe8dc04
58fb27cd56 undo
7befc8d6f3 undo my last commit
5f0cf1d7f6 Added std::sqrt(std::complex<float>) and std::sqrt(std::complex<double>) support to MathFunctions.h
c5d7c9f0de remove the Triangular suffix to Upper, Lower, UnitLower, etc, and remove the respective bit flags
82ec250a0f make applyHouseholderOnTheRight take a row vector, not a column vector: this is how it's used in practice.
c24de5b413 typo
2fbe8da7a1 improved a bit the list of API changes
7d3fe69eff Various documentation updates: - update the tutorial - update doc of deprecated cwise function - update cwise doc snippets
c11300dbd5 a couple of fixes
a0efdd843c actually stop on failure
e77748ef96 merge
f287ad651a fix comments
95c00ca8ff started a page on the porting from Eigen2 to 3, updated a bit the tutorial
023e0dfb4e improve the new experimental sparse product
eda4e98c61 merge
801e601ff1 a couple of improvements in the Autodiff module
c3823dce72 extend benchmark for sparse products
d8534be728 add a novel, experimental sparse product
1837b65b28 add operators *= and /= (bis)
39209edd71 port unsupported modules to new API
cab85218db add missing operators: /, /=, *=
3e22e3907f fix types of scalar constants
97f0f02e10 forgot to hg add this file
9d9e00b608 merge and add start/end to Eigen2Support
90d2ae7fec fix aliasing detection
37851cfe11 fix a coupe of warnings
51b8f014f3 merge
39ac57fa6d Big renaming:   start ---> head   end   ---> tail Much frustration with sed syntax. Need to learn perl some day.
78ba523d30 Make snippet run successfully again:  the snippet for 'eval' was taking m=m.transpose() as an example of code  that needs an explicit call to eval(), but that doesn't work anymore now  that we have the clever assert detecting aliasing issues.
e9724c8ea2 accessor for the levenberg-marquardt parameter
708e6629e2 Further refactoring of MatrixFunction<MatrixType, 1> * move some data to member variables * split and/or rename member functions * document all members
fd19e0a9ea unimportant small fix
57275b2b8c make some changes to please clang, fix some warnings too.
95d9cb77f8 fix compilation in some cases
71a171c267 s/asMatrix()/matrix()
b6898996d4 fix dirty triangular unit test
8eab9fb87e port VectorwiseOp and Swap to the novel mechanisms, and various cleanning
826bff58c6 Fix #69 for the second time, and add the respective regression test
80d1f9e966 remove debug output. sorry!
ff94eaa4ae clarify docs as requested on forum
25f8adfa6c * Fix bug #79: ei_alignmentOffset was assuming that ptr is multiple of   sizeof(Scalar), and that assumption breaks with double on linux x86-32. * Rename ei_alignmentOffset to ei_first_aligned * Rewrite its documentation and part of its body * The variant taking a MatrixBase doesn't need a separate size argument.
ed5c972801 put the assign assert and debug info before the assignment itself
c436d94f18 Instead of EIGEN_JOBS, introduce EIGEN_MAKE_ARGS and EIGEN_CTEST_ARGS. This is much more powerful! Notice that CTest 2.8 supports the -j argument, although that is undocumented. Last commit of 2009! Happy new year to all!
2038f9cc8d * The 'check' and 'buildtests' scripts no longer take a jobs parameter.   Instead, they honor the EIGEN_JOBS environment variable if defined. * The syntax ${BLABLA} in bash scripts was conflicting with CMake configured   file syntax. Resolved by using the @ONLY option and the @BLABLA@ syntax.
233540e58a Refactoring of MatrixFunction: Simplify handling of fixed-size case.
fcf821b77d Rename test per naming convention.
d35cc381fe Refactor MatrixFunction class: Split new class MatrixFunctionAtomic off.
a25c9b1e46 Simplify and document Sylvester equation solver in MatrixFunction.
72b6c05bf0 sorry for committing this mess
24302ad5cd fix #76, MayLinearVectorize depends on MaxSizeAtCompileTime and not on MaxInnerSize
0b5853d917 fix the xpr analyzer for Transpose
c90ccd089a clean a bit Hessenberg and make sure the subdiagonal coeff is real even for 2x2 matrices
791bac25f2 fix #75, and add a basic unit test for Hessenberg (it was indirectly tested by the eigenvalue decomposition)
d65c8cb60a fix #69 and extend unit tests or triangular solvers
5adfe934c8 add checks for on the right triangular solving with matrices
fcc3be5dce a couple of fixes after thye merge
eaaba30cac merge with default branch
e182e9c616 extend the DenseStorageMatrix mechanism to all expressions
eeec7d842e merge
f54a2a0484 Add support for general matrix functions. This does the job but it is only a first version. Further plans: improved docs, more tests, improve code by refactoring, add convenience functions for sine, cosine, sinh, cosh, and (eventually) add the matrix logarithm.
4ec99bbc0c support gcc 4.5
9f1fa6ea5e Fix compilation error in doc/examples/class_CwiseBinaryOp.cpp . This is a follow-up of 9d5478303667bd97f3e20696f8a8c82cb5b2d65f  (better work around for empty structs).
32f6242b60 Set default for second argument for check script. Otherwise, buildtests will be run with a second argument of "" if check is called with only one argument, which leads to infinitely many jobs.
02beaea2f8 add missing inclusion of LU/arch, thanks to J.B. Rouault
f8cb9a6230 oops, remove duplicated ctor
9d54783036 much better workaround for empty struct (the previous one caused GCC 4.3 to generate wrong code leading to segfaults)
af4d8c5cec a couple of fixes, now Array passes the linearstructure test
4b70b47998 clean a bit Matrix and fix static Map functions
5ca90e1b0c some cleaning in DenseStorageBase
ebb2878829 finally add a Array class with storage via the introduction of a DenseStorageBase base class shared by both Matrix and Array
4e9c227bd5 partial LU optimization: noalias
30d47860dd more fixes
34c95029ca a couple of fixes and cleaning
945cbc3bc6 Add test for issue #75 (Hessenberg of 1x1 matrix). Also remove an superfluous #include in matrixExponential test.
2033903376 a trivial compilation fix
9f79558839 a lot of cleaning and fixes
22a6ab1f4b add an eigen2support test and a few fixes
5cb779e5e1 * introduce ei_alignmentOffset(MatrixBase&,Integer)   couldnt put it in Memory.h as it needs the definition of MatrixBase * make Redux use it
e0aa29121f this really fix the previous warning
c35fcf3bbd fix warning by making ei_empty_struct::_ei_dummy_ private
bb59c22dc9 fix compilation when mixing types
6db6774c46 * fix aliasing checks when the lhs is also transposed. At the same time,   significantly simplify the code of these checks while extending them   to catch much more expressions! * move the enabling/disabling of vectorized sin/cos to the architecture traits
7a9988ebb6 fix spasre triangular solve for row major lower matrices
0d8ffe5240 ignore more build*/ directories
a314814a6e suppress unused variable warnings
949f14e1e4 no, this wasn't equivalent to ei_pload at all, after all!
805eb9cc8b Gael, who is a man of few words^Winstructions, is right, as usual.
3ea1f97f69 Suppressed the warning for missing assignment generators (forgot that in the last submission). Commented Quake3's fast inverser sqrt in SSE's MathFunction header.
46a9cac7fb silence 'statement has no effect' warning with gcc 4.4
4948448939 *use scalar instructions, packet not needed here *remove unused var warning
39095c8faa only include SSE path if SSE enabled
d02eccf584 add SSE path for Matrix4f inverse, taken from Intel except that we do a kosher division instead of RCPPS-followed-by-Newton-Raphson. The rationale for that is that elsewhere in Eigen we dont allow ourselves this approximation (which throws 2 bits of mantissa), so there's no reason we should allow it here.
d5f3b2dc94 change the Arch constants: const int ---> enum, more explicit names, and use of a namespace instead of Prefix_Name.
832045d363 Warning 4512 (assignment operators could not be generated) is now simply disabled. All unimplemented assignment operators have been removed.
4498864fc8 Fixed a bad type conversion.
63957ad5d6 Remove //@{ ... //@} for same reason as in changeset 2026ea7ff2be0473511cc74c56538cb98c13d301 .
929521678d Correct type of ei_solve_retval<LLT,...>::operator=
3dce51bd8e Removed more warnings.
d088ee35f6 Added to possibility to compile unit tests at maximum warning level. Silenced (amongst others) many conversion related warnings.
494a88685e Fixed the bad fix - now the unsupported examples and snippets work on windows.
9a8c16810b Reverted Jitse's change - the targets unsupported_examples and unsupported_snippets are unknown over here.
2026ea7ff2 Coax doxygen in producing better docs for MatrixFunctions. The //@{ ... //@} in unsupported/Eigen/MatrixFunctions for some reason caused doxygen to list the constructor of the MatrixExponential class as a separate function in the MatrixFunctions module without any reference to the class; very confusing.
7d444375e7 fix compilation (for some reason the pb happens only under windows)
9facdaf7b9 some compilation fixes
7caf751fdd adapt select, replicate and reverse
d2e44f2636 * 4x4 inverse: revert to cofactors method * inverse tests: use createRandomMatrixOfRank, use more strict precision * tests: createRandomMatrixOfRank: support 1x1 matrices * determinant: nest the xpr * Minor: add comment
f0315295e9 Handle row and col major matrices in the gdb pretty printer
4da991eaa8 Display the data ptr as part of the header
a4c162dbdc Correct license header of the gdb pretty printer
f2304f3b88 Adding __init__.py so the printers can be used directly from the checkout
64beff03b6 Added a 'pretty printer' for the msvc debugger (tested on Visual Studio 2008).
097cab26fb Added a pretty printer python script for Eigen::Matrix (gdb-7.0 and later).
8bfa354ee3 Documentation clean up. * remove non-existant reference to CwiseAll * define \householder_module (used in HouseholderSequence.h) * update I01_TopicLazyEvaluation.dox - Product is now called GeneralProduct * remove reference to list of examples which was deleted ages ago * rename PartialLU_solve.cpp snippet to PartialPivLU_solve.cpp
a682a0eeb1 C05_TutorialLinearAlgebra.dox: Correct file name
39ceba409b Various improvements to the docs for unsupported. * Enable compilation of examples for unsupported. * Fix use of std::vector in BVH example. * Add an example for the matrix exponential. * Bug fixes in unsupported/doc/{examples,snippets}/CMakeLists.txt .
8e05f9cfa1 add a DenseBase class for MAtrixBase and ArrayBase and more code factorisation
36969cc2a5 add a slerp benchmark (for accuracy and speed))
c68c695b87 Fix poor Quaternion::slerp snapping
ea684af6b4 merge
7aad434160 fix compilation and clean a bit Map<Quaternion>
ffaea19a70 Fixed compilation warnings in MSVC with Scalar==float
af17770680 Fix compilation for MSVC.
012cd62c81 explicitly cast to use the acos(long double)
e5c91b4e95 removed troublesome M_PI and M_PIl constants
e12f5adbde fix MSVC10 compilation
de25059502 * Remove test_ prefix in tests * tests now honor EIGEN_REPEAT and EIGEN_SEED if no arguments were passed
b0100a336a merge
3e73f6036c * HouseholderSequence:   * be aware of number of actual householder vectors     (optimization in non-full-rank case, no behavior change)   * fix applyThisOnTheRight, it was using k instead of actual_k * QR: rename matrixQ() to householderQ() where applicable
e3b5a90611 Removed unused 'benchmark'.
3279e39340 * fix include for case-sensitive filesystem * on GNU, clock_gettime requires linking -lrt
26ea7c9801 * remove empty destructors in Matrix.h and MatrixStorage.h
84551d067e merge
95861fbd6c Added NestByValue and .nestByValue() again for the sake of backwards compatibility.
e3612bc0b8 Removed unnecessary code.
c05ae35441 merge with tip
ff1e9542f6 added comments to help vim understand the header files are c++.
d1e06721a2 instruction to remove CMakeCache.txt for out-of-source build
0e8cd8de4d quieted signed/unsigned comparison warning
8fce0b5459 added newline at the end of file to quiet gcc warning
291fd4f8da merge
68117c267c ColPivQR: now the unit tests even succeeds: * with random matrices multiplied by 1e+8 (i.e. fixed wrong absolute fuzzy compare) * with 10,000 repetitions (i.e. the fuzzy compare is really clever) and when it occasionnally fails, less than once in 10,000 repeats, it is only on the exact rank computation.
95d88e1327 Big reworking of ColPivQR and its unit test, which now passes even with thousands of repetitions and correctly tests matrices of all sizes. Several surprises along the way: for example, a major cause of trouble was the optimized "table of column squared norms" where the accumulation of imprecision was a serious issue; another surprise is that tests like "x!=0" before dividing by x really benefit from being replaced by fuzzy tests, as i hit real cases where i got wrong results in 1/epsilon.
49c0986d86 minor cleanup
d3250cb38f That's it NestByValue and .nestByValue() are both gone!
b08d5b2d2c Even more NestByValue cleanup...
2bf354da80 Much more NestByValue cleanup.
3091be5134 Removed NestByValue dependency from Cholesky, Eigenvalues, LU and QR.
7b3e205ebd Removed NestByValue dependency from VectorwiseOp.
88be826791 Removed NestByValue dependency from MatrixBase::select().
82971a5dcd Adapted the number of test runs.
1fc5fdea25 Added missing typedef (will I ever learn it!?) Removed unsupported directories that do not provide CMakeList.txt (CMake 2.8 warning). The BenchTimer is now also working on Cygwin.
052742e6f9 merge
7af1ee0b6c Added the profiling test to unsupported.
b2a5fb874f add specialization ei_ref_selector for sparse matrix types
120882c4f1 fix another 'duplicated content in doxygen pages' bug : exclude *.orig files
e6c560aedf Removed wrong typename.
1c2e476fa7 Initial commit for a modified ei_nested logic.
66534b782c Some of our unit tests require mathematical constants and thus we rely on non-ansi code. It seems as if the new standard removed pow(T,int). M_PIL is only defined when _GNU_SOURCE is defined.
21ff296652 Adapted a mail from Mark about some design and add it as documentation for the FFT module.
a255336e4f fix doc
4b1aca2288 precision  --->  dummy_precision
c245054aa8 cleaning
f948df5a72 cleaning
db39f892a3 kill yet another un-needed parameter
905aecf803 make qrsolv use eigen types
e18caf7a01 clean qrsolv
e95f736402 reduce ei_qrsolv() signature, wa is actually a 'working array'
5923bcb1b9 improve the scripts for building unit tests: * support unsupported/ * use egrep instead of grep, properly escape special chars.
746c787a76 computes column norms outside of ei_qrfac()
9cbfdbad22 cleaning
f795681da0 export stableNorm(), blueNorm() and hypotNorm() to colwise() and rowwise() + rudimentary test
dca80b5f22 use typedef
a6380ae272 silent warnings
40ce7589de Added tag actual-start-from-scratch for changeset 1dabb45d945eba0090db037fb649a93c4c3d6627
1e2bcba5e4 forward port slight changes in the 4x4 inverse test
684d76eba3 add SSE4 support, start with integer multiplication
abdb2a2bd5 fix assert and handle Unit shapes
e6ea9e401c improve precision test
44d0d667cd 4x4 inverse: * change block selection threshold from 1e-2 to 1e-1 * add rigorous precision test
06f11f3379 fix important typo
80ebeae48d Add the concept of base class plugins, and started to write the ArrayBase class. Sorry for this messy commit but I have to commit it...
4af1753b6f * remove EnforceAlignedAccess option to Block, VectorBlock, Map and MapBase   because thanks to the previous commit this is not needed anymore * add a more general ForceAlignedAccess expression which can be used for any expression.   It is already used by StableNorm.h.
3c5e32f0da improvements in FindEigen*.cmake, ported from changes in CMakeLists.txt:  - better regular expression  - grep the whole file, not expensive anyway, more robust
eb8f450071 Hey, finally the copyCoeff stuff is not only used to implement swap anymore :) Add an internal pseudo expression allowing to optimize operators like +=, *= using the copyCoeff stuff. This allows to easily enforce aligned load for the destination matrix everywhere.
34be9d4537 Replace toDense() by toDenseMatrix() in tests.
b0baf43114 Eigen/CMakeLists.txt: remove parens from if. Only CMake 2.6.3 and later recognize this syntax, and at the moment we require 2.6.2. CMake uses the right precendence, per its man page, so the parentheses are not necessary.
6cbf662f14 * don't laugh, but these bugs took me forever to fix. * expand unit tests to make sure to catch them: they nearly escaped the existing tests as these memory violations were highly dependent on the numbers of rows and cols.
eac3232095 minor improvements in triangular stuff
88b551e89b * fix compilation of unit-tests (sorry, had tested only 1 channel) * remove buggy (superfluous?) specialization in the meta-unroller
a20a744adc TriangularMatrix: extend to rectangular matrices
2275f98d7b move signature file to root directory, where it belongs
bbf0eb35a7 * in Eigen/CMakeLists.txt, finally do a globbing to we no longer will have problems with "oops forgot to install new module". * add a file Eigen/signature_of_eigen3_matrix_library, use it to make FindEigen3.cmake more solid: able to find Eigen in either eigen3/ or eigen/ and not mix it up with Eigen2.
b5f4636d42 * eigen2->eigen3 * bump version to 2.91.0 * add FindEigen3.cmake
abb2a1bb15 simplification
126a8e6a69 fix remaining bug in ColPivHouseholderQR, so now all tests pass again
40865fa28c fix bugs, old and new: * old bug: in CwiseBinaryOp: only set the LinearAccessBit if both sides have the same storage order. * new bug: in Assign.h, only consider linear traversal if both sides have the same storage order.
11fa2ae2c6 temporarily disable linear traversal. Actually I don't think it's buggy. But it probably triggers existing bugs, I suspect that some xprs have LinearAccessBit and shouldn't have it. Also this fixes the "bugs" with JacobiSVD ---> now it works again
8860203e6a fix stuff after the PermutationMatrix changes. I still have JacobiSVD errors when cols>rows
e3d890bc5a Another big refactoring change: * add a new Eigen2Support module including Cwise, Flagged, and some other deprecated stuff * add a few cwiseXxx functions * adapt a few modules to use cwiseXxx instead of the .cwise() prefix
94c706d04f Assign.h: add LinearTraversal (non-vectorized index-based traversal) Rename some constants to make names match more closely what they mean.
0529ecfe1b Big refactoring/cleaning in the spasre module with in particular the addition of a selfadjointView, and the extension of triangularView. The rest is cleaning and does not change/extend the API.
1e62e0b0d8 more ET refactoring: * extend Cwise for multiple storage base class * a lot of cleaning in the Sparse module
9f21e2aab7 port the QR module to PermutationMatrix
63bcc1c0fb adapt CwiseBinaryOp and the Sparse counter part
30b610a10f vade retro
ac00902f84 for consistency: PlainMatrixType ---> DenseMatrixType
984c000778 addToDense ---> addTo subToDense ---> subTo
07412b2075 PermutationMatrix: add setIdentity and transpositions methods LU: make use of that
b90744dc05 Port FullPivLU to PermutationMatrix
76c614f9bd PartialPivLU: port to PermutationMatrix PermutationMatrix: add resize()
eb6df28c6c DiagonalMatrix: release-quality documentation BandMatrix: rename toDense() ---> toDenseMatrix() for consistency
e8d0dbf82e PermutationMatrix:  * make multiplication order not be reversed  * release-quality documentation
8a1bada43d initialize-by-zero: remember that when the newsize==oldsize, resize() must remain a NOP
1c9a2d246f adapt CwiseUnaryOp and CwiseUnaryView
2a3a6fe45e Experiment the ET refactoring on Transpose for Dense and Sparse storages. All tests work fine.
307898e84b merge
b25eb5fdaa PermutationMatrix: add inverse() and product of permutations
e09768e3bc handle make errors ---> exit, don't run ctest
a89b22f352 rename test for coherency with previous renaming of the module
f7e73f1bf9 don't be shy and test them all
955cd7f884 * add PermutationMatrix * DiagonalMatrix:    - add MaxSizeAtCompileTime parameter    - DiagonalOnTheLeft ---> OnTheLeft    - fix bug in DiagonalMatrix::setIdentity()
1aaa9059c0 maketests -> buildtests
9aa37f3108 prevent in-source builds. hope it's ok with you... it's still possible, of course, to have the build dir as a subdir of the source dir.
3f04a14d7c there's no reason why we should follow the FSF's stupid recommendation for the naming of these files, right? This could give the wrong impression that Eigen is only GPL-licensed.
c4dacabcc8 add workaround for Guillaume
6680fa42ee * add Map<Quaternion> test based on Map from test/map.cpp * replace implicit constructor AngleAxis(QuaternionBase&) by an explicit one, it seems ambiguous for the compiler * remove explicit constructor with conversion type quaternion(Quaternion&): conflict between constructor. * modify EIGEN_INHERIT_ASSIGNEMENT_OPERATORS to suit Quaternion class
d07c05b3a5 Build tests for unsupported modules if EIGEN_LEAVE_TEST_IN_ALL_TARGET
7e3c4096d8 xargs ---> xargs echo (xargs alone doesnt seem to be documented in the man page, while xargs echo is documented)
9b7708f660 introduce check target, and some renaming
8b563d7163 ouch, avoid infinite loop! optimization is not so important here, so a for loop will do.
5266a78aca also optionnally initialize by zero after resizing
8132ee3908 * add non-default option to initialize matrices by 0   (useful for porting) * maketests really has to be in test/
358452bbe6 * add ./debug and ./release scripts * update the messages * rename EIGEN_CMAKE_RUN_FROM_CTEST to something saner
fc492b6264 add mctestr script. In your build directory, just do:    ./mctestr ^qr 5 and it will build all tests matching ^qr with 5 jobs and then do `ctest -R ^qr`
bc18ba7e49 * add maketests script. It is like make but takes a regexp allowing to build selected targets. Next step will be a "mctestr" script doing that and then calling ctest -R. * in runtest.sh, don't override the default number of repeats. If one thinks the default should be changed, let's change it at the source.
ff7fbc9431 * use standard CMAKE_BUILD_TYPE * remove debug_xxx targets * runtest.sh: don't run make
343eec7ca8 Compilation fix: makeHousholderInPlace now uses references.
bf691cc3f1 fix PowerPC platform detection
b53c2fcc99 fix for *.pc install dir (suggested by Ingmar Vanhassel on IRC)
a440385b41 *adapt Householder to the convention that we now favor refs over ptrs for output. Keep "workspace" as pointer because it is an array (which is now more obvious). *rename makeHouseholderSequence to householderSequence, because that's what it returns.
e06aa749a4 doxygen : exclude diff files
2612bbdf8b make the complex module appear in doxygen + small documentation
d47a723a6e make FFT appear in doxygen doc, and provide a mininum of documentation
2c9f46d151 fix Skyline module doxygen stuff
df117a64c7 merge with main repository
ae76c97704 documentation fixes
f647fb8dd4 fix compilation and removed some unused stuff in skyline
6a56262bf4 merge with main repository
58632c1652 fix #68 I did not see the skyline matrix patch contained that
1879403562 mv the Skyline module to unsupported/
42b92c2022 merge with main repository
77fd44a246 revert previous commit on the matter : once doxygen cache is flushed this gives very bad results
92749eed11 * merge * remove a ctor in QuaternionBase as it gives a strange error with GCC 4.4.2.
4b366b07be add missing includes
9a0900e33e last round of changes, mainly to return derived types instead of base types, and fix various compilation issues
670651e2e0 Quaternion: fix compilation, cleaning
087df89e20 few doc fixes
d1cc2745f7 Reduce general diff with eigen-tip. Moreover, this test now seems to pass again.
17f3e8571c more documentatin
3e17046668 only define groups once in unsupported, in order to prevent ambiguity for the group names.
de195e0e78 some more documentation
ac8f7d8c9c various fixes in headers
71a3e96b49 rename NonLinear to NonLinearOptimization
09cb27c587 documentation + move "namespace eigen" to the main file, as others do.
cddc83752c starting documentation
ecbcdafb0f include NonLinearOptimization_Module and NumericalDiff_Module + cleaning
e4e58e8337 simplifications in the ei_solve_impl system, factor out some boilerplate code
751a333491 merge with main repository
ba7bfe110c port the qr module to ei_solve_xxx.
aa0974286f fix compilation adding a makeconst helper struct
5dc02fe5e9 improve a bit AutoDiffVector, but it still not working
6647a58847 update product bench
771c0507fb back out previous back out, and this time don't forget to include the NumTraits.h file in the commit ;)
1470afda5b Backed out previous changeset: Does not compile. There is no member Nested in NumTraits.
fe81b3f651 Add the possibility to control the storage mode of scalar value (by value or reference) in order to avoid unecessary copies when using complex scalar types (e.g., a AutoDiffScalar)
daa4574a43 Add regression test for issue #66 (ComplexSchur of zero matrix).
68210b03c1 port svd to the ei_xxx_return_value thing
4c456d4211 fix bug in svd solve reported on forum, was apparently assuming square matrix, not sure how the unit test could work.
3979f6d8aa Let's try to stick to the original code, thus activate the fix of #62 only for 64 bit builds.
e2170b9f7e Direct access of the packet structs fixes bug #62 and doe not seem to influence compiler optimization.
1333fe651d Added basic SkylineMatrix.
103f741619 initialize Eigen::Complex arrays
a7bebe0aeb an attempt to fix a compilation issue with MSVC
0182695204 move cholesky to ei_xxx_return_value
a77872dd6c move partial-pivoting lu to ei_solve_impl
da363d997f introduce ei_xxx_return_value and ei_xxx_impl for xxx in solve,kernel,impl put them in a new internal 'misc' directory
979431b987 fix #66 : upper triangular checks in ComplexSchur
5ba19a53a6 rephrase tutorial on Map
3ae4e3880f fix compilation
48261fc773 * default MatrixBase ctor: make it protected, make it a static assert, only do the check when debugging eigen to avoid slowing down compilation for everybody (this check is paranoiac, it's very seldom useful) * add private MatrixBase ctors to catch cases when the user tries to construct MatrixBase objects directly
ec70f8006b added inlines to a bunch of functions
4c3345364e moved half-spectrum logic to Eigen::FFT
d659fd9b14 moved real-half-spectrum reflection into Eigen::FFT
a26b729cc9 moved scaling to Eigen::FFT
0fa68b9e50 switched to BenchUtil.h
f975b9bd3e SVD::solve() : port to new API and improvements
6b48e932e9 *port the Cholesky module to the new solve() API *improve documentation
a2268ca6b3 properly implement BenchTimer on POSIX (may require a platform check for the clock name on non-linux platforms)
d0562bd473 corrected the computation cost of mean
c70a603e34 added mean() reduction
e513cc75c4 oops I forgot to include that file in the previous commit (fixing #65)
541eac0828 fix #65: MatrixBase::nonZero()
7911df4b6e improved selftest for Eigen::Complex -- mainly a documentation of what does not work
288ba155f1 forgot Complex test file
938f03e5cf added many inlines and attempted to fix castable pointer so it works with std::vector
e8dd552257 sync with mainline
2840ac7e94 big huge changes, so i dont remember everything. * renaming, e.g. LU ---> FullPivLU * split tests framework: more robust, e.g. dont generate empty tests if a number is skipped * make all remaining tests use that splitting, as needed. * Fix 4x4 inversion (see stable branch) * Transform::inverse() and geo_transform test : adapt to new inverse() API, it was also trying to instantiate inverse() for 3x4 matrices. * CMakeLists: more robust regexp to parse the version number * misc fixes in unit tests
6219f9acfa * rename new Quat class to Quaternion, remove existing Quaternion * add Copyright line for Mathieu * cast() was broken (compile errors) and needed anyway to be in QuaternionBase * it's VectorBlock<T,3>, don't pass additional parameter 1, it has different meaning!! * make it compile with GCC (put 'typename' at the right location)
611d2b0b1d Quaternion could now map an array of 4 scalars :
427f8a87d1 Added dox for the new typedefs.
dbaba9019b Added more common typedefs.
7cc9fb5d0a Umeyama is now working with fixed size src and dst points.
1f1c04cac1 sync the documentation examples
44cdbaba4d * make inverse() do a ReturnByValue * add computeInverseWithCheck * doc improvements * update test
07d1bcffda remove 1 useless layer of functions
ec02388a5d big rewrite in Inverse.h in particular, the API is essentially finalized and the 4x4 case is fixed to be numerically stable.
66fe5a5f36 It is just not that easy and requires more work to get it done right.
a382963b04 * extend Map to allow the user to specify whether the mapped data   is aligned or not. This is done using the Aligned constant:   Map<MatrixType,Aligned>::Map(data); * rename ForceAligned to EnforceAlignedAccess, and update its doc,   and emphasize this is mainly an internal stuff.
0167f5ef43 added inline to many functions
83a7b7c44c support gcc 3.3
99bb29abcf demeaning with colwise expression
e3d08443dc inlining,all namespace declaration moved to FFT, removed preprocessor definitions,
68d48511b2 move PartialLU to the new API
78a53574b7 merge branches
85f8d1f0c6 renamed 'Traits' to 'Impl', added vim modelines for syntax highlighting
c3180b7ffb MatrixBase:  * support resize() to same size (nop). The case of FFT was another case where that make one's life far easier.    hope that's ok with you Gael. but indeed, i don't use it in the ReturnByValue stuff.
471b4d5092 handle mark's first commits before he configured his id
902b6dcd6c added Eigen::FFT and Eigen::Complex
5e3e6ff71a Added Windows support to the BenchTimer.
d9b418bf12 merged eigen2_for_fft into eigen2 mainline
13f31b8daf * make PartialLU avoid to generate inf/nan when given a singular matrix   (result undefined, but at least it won't take forever on intel 387) * add lots of comments, especially to LU.h * fix stuff I had broken in Inverse.h * split inverse test
d1db1352f5 update doc snippets
890bff977e * proper check for Make * fix documentation of ei_add_test
6c1b91678b kill ei_add_test_multi. Now the macro ei_add_test does all that automatically, by parsing the source file. No risk anymore to specify the wrong number of tests! Also, introduce CALL_SUBTESTX for X=1..10 that allows to port existing code much quicker. And port already the product* and eigensolver* files.
580672ea43 Add new default option EIGEN_SPLIT_LARGE_TESTS and cmake macro ei_add_test_multi. When enabled, large tests are split into smaller executables. This needs minimal changes in the unit tests. Updated the LU test to use it.
9a700c2974 * LU unit test: finally test fixed sizes * ReturnByValue: after all don't eval to temporary for generic MatrixBase impl
47eeb40380 remove the m_originalMatrix member. Instead, image() now takes the original matrix as parameter. It was the only method to use it anyway. Introduce m_isInitialized.
d71c7f42d3 * useThreshold -> setThreshold * remove defaultThreshold()
0255f28279 oops, didn't want to commit that
8332c232db big huge changes in LU! * continue the decomposition until a pivot is exactly zero;   don't try to compute the rank in the decomposition itself. * Instead, methods such as rank() use a new internal parameter   called 'threshold' to determine which pivots are to be   considered nonzero. * The threshold is by default determined by defaultThreshold()   but the user can override that by calling useThreshold(value). * In solve/kernel/image, don't assume that the diagonal of U   is sorted in decreasing order, because that's only approximately   true. Additional work was needed to extract the right pivots.
7b0c4102fa * add a Make* expression type builder to allow the   construction of generic expressions working   for both dense and sparse matrix. A nicer solution   would be to use CwiseBinaryOp for any kind of matrix.   To this end we either need to change the overall design   so that the base class(es) depends on the kind of matrix,   or we could add a template parameter to each expression   type (e.g., int Kind = ei_traits<MatrixType>::Kind)   allowing to specialize each expression for each kind of matrix. * Extend AutoDiffScalar to work with sparse vector expression   for the derivatives.
44ba4b1d6d add operator+ scalar to AutoDiffScalar
3c4a025a54 merge
41e942d3fb don't try to finish early
d177c1f3ac Inlining fixes + fixed typo. Removed ei_assert in presence of static assert.
1503043981 autodiff: * fix namespace issue * simplify Jacobian code * fix issue with "Dynamic derivatives"
0927ba1fd3 More warning fixes.
c37cfc32b3 Fixed more W4 warnings.
f4661e696e Resize is only defined in Matrix and not in MatrixBase. I am not sure whether the better fix is to move the resize functions to MatrixBase.
949582c809 Added prod() reduction to the AsciiQuickReference.
8c37b1b5b7 add missing PartialReduxExpr::coeff(index) function
1443094072 compilation fix: make the generic template ctor explicit
2049f742e4 trivial compilation fix
c4ab6a2032 also test that the matrix Q is unitary
456f7d094d merge with eigen-tip
e5bf72679c Fixed nmake parameter. Disabled debug_* targets for MSVC_IDE (they already exist). Removed the make usage message for MSVC_IDE.
81a70cef5c merge
8f3e33581e extend the sparse matrix assembly benchmark
af31345df3 really fix stable norm compilation for older gcc
075830ddb0 - remove the debug_test_* targets from "all"   (otherwise they are compiled when you simply run    make in test/ or when enforcing "test" to be part of "all") - add linking libraries to the debug_test_* targets
9115d33fae the answer to the ultimate question in life is: 664
24e1d3266a merge
80ede36b24 allow arbitrary resulttype, fixes Xuewen's issue, and this stuff is going to get deeply refactored soon anyway.
4cf7366027 fix compilation in stable norm, move a platform check to the unit tests
904f35d194 discard vectorization in matrix-vector product when data is not even aligned on the scalar type size (e.g., for double on 32 bits system without -malign-double)
bb1cc0d092 after all we're not aligning to 8byte boundary keep most of the changes though as they make the code more extensible
f01a8112d6 merge
d41577819b we were already aligning to 16 byte boundary fixed-size objects that are multiple of 16 bytes; now we also align to 8byte boundary fixed-size objects that are multiple of 8 bytes. That's only useful for now for double, not e.g. for Vector2f, but that didn't seem to hurt. Am I missing something? Do you prefer that we don't align Vector2f at all? Also, improvements in test_unalignedassert.
a7d51435e1 added cygwin specific stuff
a9a9ba8453 remove unneeded stuff
fa9fc1397b next attempt ... introduce EIGEN_CMAKE_RUN_FROM_CTEST, in that case don't EXCLUDE_FROM_ALL
b78b2ede5f finally, the right fix: set CTEST_BUILD_TARGET. So this is the come-back of btest target, and the default target is empty again.
7956fc49a0 dd first-time tip, to warn against doing "make". now i think we're reasonably safe.
5f32088443 use provided $USER if available, let the caller do the update (safer)
d040c9fc9e add INSTALL and message about no need to do "make"
a1d9b76dd5 add debug targets like debug_qr to build a specific test with debug info remove the btest target, instead just do "make" since anyway we have to let "make" build the tests
3e4cb08054 fix #59, can't EXCLUDE_FROM_ALL the test directory
7d2ca0e05e Added cmake project definitions.
71f19d90d0 forgot to hg add this file
57e1c5b0aa fix permissions 666->660
2b810ea818 finally, actually purge the Main Page
bcdeb68b63 merge
9a3cae4655 better fix for (v * v') * v, we still have to find a way to reorder it
3529179376 merge
5409ce1625 Fixed wrong line endings.
3a315fdc9a make Replicate ctor require the exact expected type
d7a2a37a4c bugfix in the eigenvalue solvers (forgot to resize the eigen vectors)
4b04a9bcfa *add test to prevent future regression
fa65b09661 add outerproduct coeff(int,int) method. This is needed to make this expression work: (vec1*vec2.transpose())*vec3 Gael, no objection? Seems to make sense as that's fast.
977ed615a6 be sure that there's no name clash between NumericalDiff::df and the original functor df()
457b7cba96 more message improvements, tell the user about building a specific test
eeabd18afc Fix compilation of HouseholderQR and ColPivotingHouseholderQR for non-square fixed-size matrices. For Colpiv that was just changing MatrixQType to MatrixType in the instantiation of HouseholderSequence. For HouseholderQR I also re-ported the solve method from Colpiv as there were multiple issues.
67bf7c90c5 * update test to expose bug #57 * update createRandomMatrixOfRank to support fixed size
7968737247 fix tests : we perform slightly worse because we do use one more function evaluation in our numericaldiff than what (c)minpack did
d912034565 fdjac2 is not needed anymore
d3850641a1 remove some duplicated code LevenbergMarquardt::minimizeNumericalDiff*() by using the generic Eigen NumericalDiff recently introduced.
87be19de4a central sheme for numerical diff
206b5e3972 starting work on a Numerical differenciation module
a453298322 cleaning doc
52026eb800 cleaning
de942a44c2 default argument for _jac in functor operator() : this way, we can use AutoDiffJacobian::operator()(x,value) exactly as the original functor
8e8997d403 use dynamic type in functor, as NonLinear only knows about this currently
bee14ee8e6 use operator() so that to be coherent with eigen AutoDiff functor
956d65ea63 define a generic functor and makes other ones inherit it
765600458b * bump to 2.90.0 now that it's agreed that we're doing eigen3   ---> question: do we change the prefix eigen2/ to eigen3/ now?        no, better wait until we've also changed the repository name * more message improvements: "Install Eigen" was unclear as it left   out other things like the BLAS library
2e4be5a75c improve message
251c0f45ac remove references to adolc and split tests functions for clarity
92480ffd26 * Introduce make targets btest (build tests), blas (build blas lib), demos (build demos). * remove EIGEN_BUILD_TESTS and siblings * add summary at the end of cmake run, hopefully not too verbose * fix build of quaternion demo * kill remnants of old binary library option
6b23cb2101 remove the hack we made to allow api.kde.org to generate the dox. Update the error help page.
e115fa3cea Ok, too many class bodies - it was only required for ei_svd_precondition_2x2_block_to_be_real.
3c74d6b7d4 Added private, non-implemented assignment operators to functions that don't need them (fixes VC warning on /W4).
13545eab9b Fixed VC compilation error on the JacobiSVD module.
924b55e9a9 when copying a ReturnByValue into a MatrixBase, first eval it to a PlainMatrixType. This allows to limit the number of instantiations of the big template method evalTo. Also allows to get rid of the dummy MatrixBase::resize(). See "TODO" comment.
b1637df4f4 update URL for adol-c
e82ab8a5dd move also inverse() to ReturnByValue, by doing a solve on NestByValue<Identity>. also: adding resize() to MatrixBase was really needed ;)
c532f42a0e update the sparse tutorial wrt not so recent changes about the filling API
104f9954e1 Removed implicit type conversion (VC warning fix).
21d2533723 Matrix::conservativeResize, resize only when necessary.
04dc63776a add a wip blas library built on top of Eigen. TODO: - write extentive unit tests (maybe this already exist in other projects) - the level2 functions still have to be implemented
bdf603caec remove some dirty lines
e12bd2e8d2 extend the support for bool
3d6e4ab879 Uuups that was not yet intended for a commit.
2fbf5ce7df Fixed issue #57.
e58e9c842e remove (changesets), it's enough numbers like this
ddfd23a13e * sort by last name alphabetically * replace (no own changesets) by (no information)
68988e4ad0 use -f so that the script is happy even if the log file is not there
905b3b9379 oops, don't append, overwrite
64648b4b35 improvements, especially: automatically flush the server side cache
a279a277e3 fix typo
51db7ab0df add eigen_gen_credits script
b347075936 Removed unnecessary MSVC check.
176c26feb5 allow to do xpr = solve(b) etc... just by adding a dummy MatrixBase::resize()
4f9e270343 * make LU::kernel() and LU::image() also use ReturnByValue * make them return zero vector in the degenerate case, instead of asserting   (let's stick to the principle that we only assert on memory errors)
0ad3494bd3 fix docs
ab5cc8284a convert LU::solve() to the new API
c1c780a94f * ReturnByValue:   -- simpplify by removing the 2nd template parameter   -- rename Functor to Derived, as now it's a usual CRTP * Homogeneous:   -- in products, honor the Max sizes etc.
c6822d6723 Added EIGEN_REF_TO_TEMPORARY define for rvalue support. Allowed VC10 to make use of static_assert.
1df54e3ac2 fix bug #42, add missing Transform::Identity()
828a79ac78 allow to override EIGEN_RESTRICT, to satisfy a smart ass blogger who claims that eigen2 owes all its performance to nonstandard restrict keyword. well, this can also improve portability in case some compiler doesn't have __restrict.
3c780fd472 add legalese
bd491a89c5 add demo of how to mix eigen with C code
0b60027f3c implement __gnuc_forget_about_setZero_its_over_now
6b5f96cb03 undef B0
3b5a9acba8 fix stable_norm unit test
0b426ea00d update page to explain how to get rid of it
add5381be7 finish my evalToDense => evalTo change
5ba7fe3bee clean the commented asm instructions because now I'm sure the previous fix is ok
f2737148b0 merge
760636a237 fix bug #52: Transform::inverse() should return a Transform
9395326e44 fix #53: performance regression, hopefully I did not resurected another perf. issue...
fcae32cc3f compilation fixes
24950bdfcb make ColPivotingQR use HouseholderSequence
49dd5d7847 * add a HouseholderSequence class (not good enough yet for Triadiagonalization and HessenbergDecomposition) * rework a bit AnyMatrixBase, and mobe it to a separate file
77f858f6ab improve ComplexShur api and doc
a4fd0aa25b * fix bug in col-pivoting qr, forgot to swap the colNorms when swapping cols * add Gael a copyright line
46be9c9ac1 * fix super nasty bug: vector.maxCoeff(&index) didn't work when 'vector'   was a row-vector. Fixed by splitting the vector version from the matrix version. * add unit test, the visitors weren't covered by any test!!
4a6e5694d6 disable warning 279: controlling expression is constant for ICC
9e9abab2b9 bugfixes for ICC (compilation and runtime)
432fcefcb1 fix warning with gcc 4.2
d5319f4ba8 fix warning in stable norm
7a8ec4ba26 cleaning
6d8baa757e fix indentation (and only that)
a39de276a9 added the test case for FFTW
ab88ba6f7f provide some default values for important results. So that we can read them even before *Init() and do no get random values.
8c3f7d8e94 cleaning
8b84c3733a functors need not be const
9f14d72927 Remove no-op statement in AlignedVector3.
72746838ad merge with tip
2a6db40f10 Re-factor matrix exponential. Put all routines in a class. I think this is a cleaner design.
220ff54131 Fix LaTeX error in doxygen comment.
26ed19e4cf Fixed if clause.
3a2499fb11 Fixed conservative_resize compilation errors.
e6cac85333 Added missing casts.
437a79e1ab Fixed unit test and improved code reusage for resizing.
e49236bac6 Ups - that was not intended to be part of the commit.
64095b6610 Changed the AnyMatrixBase / ei_special_scalar_op inheritance order as proposed by Gael. Added conservativeResizeLike as discussed on the mailing list.
8f4bf4ed7f add optional compile flags to enable coverage testing
ae1d1c8f6c improve coverage of matrix-vector product
fb5f546161 improve coverage of unitOrthogonal
b56bb441dd add a stable_norm unit test
bdcc0bc157 fix compilation of swap for ICC
a921292381 uncomment stuff commented for debugging (sorry for the noise)
225ec02b06 fix another .stride() issue in Cholmod support
61fe2b6a56 bug fix in SuperLU support: the meaning of Matrix::stride() changed for vectors
5eea8f1824 Typos in tutorial 1.
e4f94b8c58 enable ILU in super LU only if the super version supports it
e3db42611b fix warning about unused variable
982a146a67 merge with tip
c990938415 eigenization of fcn_chkder + bugfix
c1265ebbfe fix bounds using c standard instead of fortran's
4f7daf942c fix indentation for fcn_chkder
aacada1662 Force release builds on Windows machines in the test suite. Added an IGNORE_CVS flag to the test suite (allows submitting local and modified repositories). Fixed the EI_OFLAG for MSVC.
227f6cbce0 Fixed SSE related build warning on 64-bit windows systems.
76fa46c6db Typos in tutorial
16d08b2b0f check number of evaluation even in the case of *1(), now we have it..
458947af5e move Parameters as a class member, simplify calling sequence. Convenience methods from minpack ( "*1()" ) get their original name back : they are only useful when porting, anyway. Still, i prefer to keep them.
c1be96967e remove printfs, they are of no use and may prevent compilation
3705498721 add coeff(int,int), coeff(int) and value() functions to the inner product specialization
a1e9e8d082 merge with tip
6de3f5f0e7 cleaning
eac9293449 split every algorithm in  *Init() + while(running) { *OneStep() }
bbd44ef0ad move more stuff into Parameters
a2abb4afb6 cleaning
baec4f39ab reduce local variables so that we can split algorithms
be368c33bb cleaning
470ea55834 put nfev/njev as internal variables as well
41b6ea81db oops... fixing return values, some copy/paste was done far too quickly
3bca4bba87 if mode==2, the user is supposed to supply diag: do some basic check.
fa0183e7c7 make diag be an internal variable too
e465ea82e1 define and use struct Parameters
d13bcdc891 those are actually bools
84f2c451e5 cleaning
d38d4709bc use an enum for status reporting
d0a5da95b1 fix installation for recently added files
d59cc0ad82 merge files
493c72ac38 rename files
858acfcc64 remove the boring, old-school nprint option, we'll have a dedicated method for 'one iteration' anyway.
613a464320 cleaning
6c1a9703b1 move most of results vectors/matrices inside respective classes.
38fc6c8553 cleaning
201f58e528 merge both c methods lmstr/lmstr1 into one class LevenbergMarquardtOptimumStorage with two methods.
3f1b81e129 merge both c methods lmdif/lmdif1 into one class LevenbergMarquardtNumericalDiff with two methods.
a736378331 cleaning
d880e6f774 merge both c methods hybrj1/hybrj into one class HybridNonLinearSolver with two methods. hybrd stuff renamed to HybridNonLinearSolverNumericalDiff.
a043708e87 merge both c methods hybrd/hybrd1 into one class HybridNonLinearSolver with two methods.
602b13815f merge both c methods lmder/lmder1 into one class LevenbergMarquardt with two methods.
86cb9364c9 clean fortran stuff in fdjac*
45442b8d41 some more work on Functors
191d5275a7 modernize HouseholderQR too, uniformize all that stuff, update tests
15d2c3af90 playing with functors
6f567f10be cleaning
7e4bd70157 Fix comment which may cause latex to hang when generating docs
078a870a87 fix issue #43
4e62e29869 cleaning covar
17905c7399 eigenization of ei_covar()
0eb142f559 bring the modern comfort also to ColPivotingHouseholderQR + some fixes in FullPivotingHouseholderQR
3288e5157a finally, the correct way of dealing with zero matrices in solve()
f69869c42a covar : cleaning, removing goto's
312ab1abb3 further cleaning/ goto removing
92a5bb4539 clean debug stuff
c6d7da6edc cleaning some more
63071ac968 cleaning, removing goto's, uniformization (try to reduce diff between hybr[dj].h  or lm[der,dif,str].h as much as possible), for future merging.
b8106e97b4 add logAbsDeterminant() move log and exp functors from Array to Core update documentation
91a2145cb3 clean, remove goto's
d4968cd059 cleaning, fixing most goto's
e65a7c7c70 misc cleaning
6e41f15fea use a local variable for qrfac
dff5135026 merge with head
88f5d06b08 move ipvt/fortran fixing deeper
950eb4a254 various cleaning and homogeneization
f31b5a7114 add test for absDeterminant()
c9a307f330 give FullPivotingHouseholderQR all the modern comfort
154bdac9f4 small improvements
b37ab9b324 clarifications in LU::solve() and in LU documentation
0926549659 fix bug: with complex matrices, the condition (ei_imag(c0)==RealScalar(0)) being wrong could bypass the other condition in the &&. at least that's my explanation why the test_lu was often failing on complex matrices (it uses that via createRandomMatrixOfRank) and why that's fixed by this diff. also gcc 4.4 gave a warning about tailSqNorm potentially uninitialized
d38624b1ad merge
97bc1af1f1 add ColPivotingHouseholderQR rename RRQR to fullPivotingHouseholderQR
47fda1f3b2 hm, forgot to conjugate the arguments in applyJacobiOnTheLeft
e86dbd5255 fix apply Jacobi for complexes and add documentation for some *Jacobi* functions
a848ed02ad let createRandomMatrixOfRank support fixed-size!
930651ff9a dogleg, lmpar : use more eigen features
4958c53bfb trivial fixes
5e8dee7a19 eigenize dogleg()
f793dbe45c only indentation fixes (this eases porting)
feb5af3ede porting lmpar() to eigen : both api and some of the code
9a8c5cbd2c misc cleaning
264e61932c cleaning fdjac*()
f01332043b only indentation
8b9b671e83 some eigenization in main algorithms
134dea76d3 beautify functors for lmdif, lmstr, hybrj, hybrd
acd757737a beautify Functor for lmder : we now have f,df,debug methods
878f15b8a5 * use eigen object for callbacks for hybrd and lmdif * use Functor instead of argument for ei_fdjac*()
f2fcbb0207 use eigen objects for ei_fdjac*(), this is a prerequisite before porting hybrd/lmdif..
8a27e774f8 use eigen objects for hybrj and lmstr
3251e12258 use eigen objects for the lmder callback
2727099906 remove redundant code, fix bounds in those loops that still come from fortran
1225704753 we do not need/use the 'void *p' parameter
90735b6a9c Rewrite tutorial section on solving linear systems
37dede6077 fix typo
a3e8a14e3a forgot to clean this one
c5218c7d38 ei_lmpar : use a reference for the parameter
b3f8d02df4 use const for machine constants
bb6ffafdb9 keep on cleaning f2c mess
a35586504e cleaning f2c mess / trivial stuff
7bedf5e9cb add initial, rough, full-pivoting RRQR decomposition lots of room for improvement! and add Gael a (c) line in Householder.h
93fabbff5e use blueNorm() instead of norm()
aa3a7c3303 raw import of covar() : this is the last one, and we now do not depend on the cminpack library anymore.
16061a46db Now that the main algorithms are imported into eigen, we import subroutines used by those algorithms (aka "second level").
783f355904 cleaning defines from f2c (use std::min and such instead of own ones)
11c3762068 cleaning : removing #define, use std:min() and such
ef582933c1 Proper fix for linking to the Qt libraries (and others)
2f0b4e1abc fix compilation with gcc 4.1. Indeed the path for recent gcc doesn't work with gcc 4.1, and looking at the implementation of vector in g++ 4.1, it was exactly our fallback case, so use that.
80179e9549 Added support for SuperLU's ILU factorization
b0aa2520f1 * add real scalar * complex matrix, real matrix * complex scalar,   and complex scalar * real matrix overloads * allows the inner and outer product specialisations to mix real and complex
6902ef0824 extend mixingtype test to check diagonal products and fix the later for real*complex products
a7ed998d52 bug fix in novel makeGivens for real
3fbf71d6b9 compilation fix for conservativeResize
68b28f7bfb rename the EigenSolver module to Eigenvalues
7f5256f628 Added conservativeResize + unit test.
82ad37c730 implement the continuous generation algorithm of Givens rotations by Anderson (2000)
41aea9508e This seems to be important for MSVC to optimize the size of empty base classes.
3eb37fe1fb update mixingtype unit test to reflect current status, but it is still clear we should allow matrix products between complex and real ?
00f4b46908 typo in sqrt(complex)
a54b99fa72 move eigen values related stuff of the QR module to a new EigenSolver module. - perhaps we can find a better name ? - note that the QR module still includes the EigenSolver module for compatibility
9515b00876 remove the \addexample tags
16c7b1daab add examples for makeJacobi and makeGivens
c893917d65 Fix serious bug discovered with gcc 4.2
8d449bd80e Removed debug cout. Disabled MSVC inconsistent DLL linkage.
e6c9d6c528 Remove last lazyness warnings.
2abd5eeffd Added support to overwrite the generator type. Eigen'fied the new variables.
7aa6fd3625 big reorganization in JacobiSVD: - R-SVD preconditioning now done with meta selectors to avoid compiling useless code - SVD options now honored, with options to hint "at least as many rows as cols" etc... - fix compilation in bad cases (rectangular and fixed-size) - the check for termination is now done on the fly, no more goto (should have done that earlier!)
89557ac41d introduce EIGEN_SIZE_MIN now we should check if some EIGEN_ENUM_MIN usage needs to be replaced by that... potential bug when using mixed-size matrice
7d18c30641 finally the first version was the good one...
7586f7f706 fix #51 (bad use of std::complex::real)
b83654b5d0 * rename JacobiRotation => PlanarRotation * move the makeJacobi and make_givens_* to PlanarRotation * rename applyJacobi* => apply*
496ea63972 fix wrong assert
4a8258369a much simpler fix for Matrix::swap
ec20d58317 * add serious unit test for swap * fix my stupidity in Matrix::swap()
cc375e2f79 merge
e6b77bcc6b JacobiSVD: implement general R-SVD using full-pivoting QR, so we now support any rectangular matrix size by reducing to the smaller of the two dimensions (which is also an optimization)
c16d65f015 fix compilation errors in swap (could not swap with anything else than the exact same Matrix type)
59f5bce41c fix issue #49
05ddd32849 added missing JacobiRotation's ...
5b8ffa4d46 clean a bit the previous commit which came from a patch queue, and since it was my first try of the patch queue feature I did not managed to apply it with a good commit message, so here you go: * Add a ComplexSchur decomposition class built on top of HessenbergDecomposition * Add a ComplexEigenSolver built on top of ComplexSchur There are still a couple of FIXME but at least they work for any reasonable matrices, still have to extend the unit tests to stress them with nasty matrices...
4d91229bdc [mq]: eigensolver
67ccc6b851 I've been too fast (again)
1e7a9ea70a fix issue #47: now m.noalias() = XXX properly resize m if needed
8392373d96 add a JacobiRotation class wrapping the cosine-sine pair with some convenient features (transpose, adjoint, product)
32f95ec267 Bug fix in MatrixExponential.h Initialize matrices for intermediate results to correct dimension
6e4e94ff32 * JacobiSVD:  - support complex numbers  - big rewrite of the 2x2 kernel, much more robust * Jacobi:  - fix weirdness in initial design, e.g. applyJacobiOnTheRight actually did the inverse transformation  - fully support complex numbers  - fix logic to decide whether to vectorize  - remove several clumsy methods
29c6b2452d simplifications
5339db6164 add VERIFY_IS_UNITARY
a16599751f fix Matrix::stride for vectors, add a unit test for Block::stride and make use of it where it was relevant
ab6eb6a1a4 Adaptions from .lazy() towards .noalias(). Added missing casts.
bc7aec0ef5 ifdef removed from MapBase and warning disabled
095809edda fix issue #45 and document the .data() and .stride() functions
27c9ecc50f fix copy/paste issue
0a0a805569 Fixed a cast warning in scaleAndAddTo. Fixed lazyness in umeyama. Added a few missing casts.
32a9aee286 Added MSVC guards to assignment operators.
99bfab6dcf Removed redundant assignment operators.
9005eb0788 compilation fix in AmbiVector<int>
20480a5438 merging ei_lmdif() and lmdif_template()
2e3d17c3ce be (hopefully) smarter with indices convention : we keep the c convention (0->n-1) as much as possible, and only convert at borders with fortran-expecting methods, that will eventually dissapear.
524e112ee5 merging ei_lmstr() and lmstr_template()
e48b6ad905 merging ei_hybrj() and hybrj_template()
f2ff0d3903 merging ei_hybrd() and hybrd_template()
1715e2cb3b merging ei_lmder and lmder_template into ei_lmder() which takes eigen argument, but still uses f2c code inside.
6a8b52b3aa simplifying
0abb148b7d use ei_sqrt instead of sqrt
1ad042c981 rename i__ to i. i really wonder how f2c can produce such things
9294d33a11 use references intead of pointers for njev/nfev
054652b789 use math function adapted to the Scalar type instead of hardcoding float or double
d05af200a5 some more trivial fixes to f2c generated code
9e71c2827a nothing more than indentation fixes (using vim '=' command)
b1e0662785 cleaning f2c mess
275a658ec5 porting chkder to eigen
2e3fa34b9f cleaning a little bit the f2c mess for chkder
b09ebe01da * porting lmdif1 to eigen * qtf was missing in lmdif signature (this is an output of the method)
8d2f6ad7e1 iwa is not really an argument, but just an old fashioned 'work array' : remove it from the eigen API
b423e640a6 porting hybrj1 to eigen
6027c4bedf porting hybrd1 to eigen
de7d14b2b3 porting lmstr1 to eigen
980c40f72c porting lmder1 to eigen (no more wrapper)
a84dc9a5c1 coherency for scalar typename : use "Scalar" everywhere
df98e66019 oops fix hardcoded typename, which is actually provided as template parameter
9a876806e1 use eigen stableNorm() instead of cminpack 'enorm'. The results are mostly slightly better in tests (one test needs 15 iterations intead of 16, for the same result). Some numerical results have improved slightly, too.
72b002eab9 work around internal compiler error with gcc 4.1 and 4.2, reported on the forum
c7ae261ac0 adapt to API changes
6953cad81d remove unneeded "Eigen::", we already 'use' Eigen namespace
369693aa1c oops, forgot those ones
01622e9855 use machine precision from eigen instead of the one from cminpack. The test pass though they would not if using a value of 2.220e-16 (the real value for 'double' is 2.22044604926e-16). How sensitive those tests are :)
3093e92da5 machine_epsilon is now called epsilon in latest eigen
47ac354190 merge with the main dev branch
fb54cfb013 import main files from cminpack as *.h files: * function names are changed by appending _template * it uses basic templating : template<typename T> * wrappers now use those versions instead of the ones from cminpack * lot of external methods from cminpack are still used * tests pass though they are unchanged (they use wrappers)
703198a1a6 wrapper for chkder() : this was the last wrapper missing
59a0c4a0d2 Add new unsupported modules to doc/unsupported_modules.dox
7262716b78 Correct syntax error in doxygen comment.
d56be9c128 * make HessenbergDecomposition uses the Householder module * bugfix in ei_blas_traits for .conjugate().conjugate()
ff0f005d4c change the make householder algorithm so that the remaining coefficient is real, and make Tridiagonalization use it
e125c199bb add EIGEN_TRANSFORM_PLUGIN
737bed19c1 make HouseholderQR uses the Householder module
ef13c3e754 add normalize and normalized overloads in AlignedVector3
5274c5c326 quick update of TopicLazyEvaluation
fc9480cbb3 bugfix in compute_matrix_flags, optimization in LU, improve doc, and workaround aliasing detection in MatrixBase_eval snippet (not very nice but I don't know how to do it in a better way)
ee982709d3 in all decs, make the compute() methods return *this (implements feature request #18)
65fe5f76fd rename back MayAliasBit to EvalBeforeAssigningBit
f5f2b222a3 make SVD reuses applyJacobi
044dd0c1dd revert previous change in Quaternion::setFromTwoVectors
03c1e79f35 svd: sort in decreasing order, remove unused code
239ada95b7 add overloads of lazyAssign to detect common aliasing issue with transpose and adjoint
a3e6047c25 fix and improve docs
50c703f0c7 As proposed on the list: - rename EvalBeforeAssignBit to MayAliasBit - make .lazy() remove the MayAliasBit only, and mark it as deprecated - add a NoAlias pseudo expression, and MatrixBase::noalias() function Todo: - we have to decide whether += and -= assume no aliasing by default ? - once we agree on the API: update the Sparse module and the unit tests respectively.
13a8956188 bugfix in inner-product specialization, compilation fix in stable norm, optimize apply householder
7b60713e87 my previous fix was not very good
0da31a6e1d bugfix and compilation fix in ProductBase
bff4238d15 fix setFromTwoVectors because of the change in sorting of the the singular values
109a4f650b fix a couple of warnings
d2becb9612 add a "rot" benchmark in BTL
846e8b49ba fix compilation of unit tests
2f027b0d2c only append the changeset to the version if we're in the default branch
5fe0c30811 new script that update from mercurial, make the doc, and upload the result to tuxfamily.org
62748a0963 new script to generate and upload the docs for a given branch needs cleanup by a better shell scripter!!
8372bd12bd update snippet
fe4a86443f fix warning
a5f820b873 forgot to update this
2f74801ca4 as discussed on list: default to align cols, reorganize parameters accordingly so that the default corresponds to 0 flag, and implement FullPrecision output (non-default).
16abc0ba7f try to support 16 bit platforms... optimistic, but can't hurt
22ae236d4e machine_epsilon -> epsilon as wrapper around numeric_traits
3f63d6f97f fix BoxBOD in the first case : now all tests pass
3856c2d84d oops, i missed one : real last difficult nist test : Eckerle4
93627fefcf last 'hard' test from Nist : ratkowsky3
91f61f7679 fix bad urls
d8c671f475 yet another (difficult) Nist test : Thurber
e057d1ef47 tweak precision for Chwirut2 test
56127cfb1a add yet another easy Nist test : Chwirut2
6373c3cd00 oops bis, I forgot that SelfAdjointEigneSolver directly called the selector...
8abec72259 oops forgot to remove the #include in Core
13e95f7f68 optimize "apply Jacobi" for small sizes, and move it to Jacobi.h
f2536416da * remove EIGEN_DONT_INLINE that harm performance for small sizes * normalize left Jacobi rotations to avoid having to swap rows * set precision to 2*machine_epsilon instead of machine_epsilon, we lose 1 bit of precision   but gain between 10% and 100% speed, plus reduce the risk that some day we hit a bad matrix   where it's impossible to approach machine precision
f7cd4c8923 cleaning : wa1 used in 'covar' needs not be the same as in lmder* and all. it's just an old-fashioned way to re-use memory without allocation...
76a3089a43 oops, don't set the precision to -1 !!
13b191d94b apply Koldo's workaround for MSVC bug
1b257a7620 add an optimized "apply in place a rotation in the plane", and make Jacobi and SelfAdjointEigenSolver use it => ~ x1.75 speedup for JacobiSVD and x2 for SelfAdjointEigenSolver
1d80f561ad apply change discussed on the list : * new default precision "-1" means use the current stream precision * otherwise, save and restore the stream precision
99802094e4 do without an empirical homemade formula that i wasn't comfortable about... turns out it's not needed anymore and removing it seems to only increase the precision
6bb6810c5e merge
2b618a2c16 make jacobi SVD more robust after experimenting with very nasty matrices... it turns out to be better to repeat the jacobi steps on a given (p,q) pair until it is diagonal to machine precision, before going to the next (p,q) pair. it's also an optimization as experiments show that in a majority of cases this allows to find out that the (p,q) pair is already diagonal to machine precision.
f71f878bab Add support for matrix exponential of floats and complex numbers.
309d540d4a add parentheses; hopefully this solves Koldos MSVC compilation issue...
22d65d47d0 finally, the good approach was two-sided Jacobi. Indeed, it allows to guarantee the precision of the output, which is very valuable. Here, we guarantee that the diagonal matrix returned by the SVD is actually diagonal, to machine precision.
7b922eb634 BoxBOD : oops.. shame on me, i did a mistake in the derivative.... now we need 16 iterations instead of 7693 ;-) the first test still fails though.
fd307b8f3f fix a bug in BoxBOD Nist test : we now get the actual value for 'start 2' 'start 1' still fails though :/
3c675609bf add another Nist test of 'hard' difficutly : Bennett5
54d09a8122 add another Nist test of 'hard' difficutly : MGH09
ce033ebdfe add EIGEN_DEBUG_VAR
5ac17b4680 add another Nist test of medium difficutly : MGH17
afbd73b5cd overload operartor* with a ProductBase such that "scalar * (mat * mat)" is optimized as one could naturally expect
a4f6642518 fix issue #36 (missing return *this in Rotation2D
ea884e6f48 remove #include Bidiagonalization, and add missing ";"
d1bc9144cb wrapper for lmstr1 and lmstr + eigenization of calling tests
bb1204a145 wrapper for lmdif1 + eigenization of calling test
80372c18ee wrapper for lmdif (+test call eigenization)
4a26baa718 wrapper for hybrj1
1d53ce8d48 wrapper for hybrj
120235deef add another (actuallY) difficult NIST test : BoxBOD. The first try fails, the second one passes, but with a very bad accuracy (~4 digits only). anyway, my aim is to check we do not change cminpack while portint, so i keep this test.
bcfe874968 add another 'difficult'-rated NIST test, which passes
7d65bd42eb fix testNistHahn1 : i had swapped x[] and y[].... :/
b71aa34946 a Nist test rated 'difficult', which passes.
9b1130b82a another nist test with difficulty 'leverage', it passes.
7ecbbc9aa4 another nist test with difficulty 'leverage', this one passes
1045bc17f5 another nist test ('average' difficulty), which fails. It is disabled until further notice.
c7a72958ba add an easy test from the NIST set : http://www.itl.nist.gov/div898/strd/nls/data/misra1a.shtml
ec2b9f90a3 hybrd : wrapper + eigenize test
35b4077a5d merge
ef55e7f4ce make custom asm directive volatile
216ee335ac LinearVectorization: If the destination isn't aligned, we have to do runtime checks and we don't unroll, so it's only good for large enough sizes
1f1705868b now you can #define EIGEN_DEBUG_ASSIGN, and all the values in ei_assign_traits are printed
527557672a disable the assembly for fast unaligned stores. indeed, there is a strange bug that is triggered by this code:
8e08680119 don't depend on uninitialized value
3ed83fa681 * add Jacobi transformations * add Jacobi (Hestenes) SVD decomposition for square matrices * add function for trivial Householder
953c37f8e5 i wonder how useful this really is, but others do this way. Probably related to doxygen.
50c192961c eigenize lmder + some other small fixes
a6625f22d4 eigenize the test for lmder1, clean functor stuff. (and check the tests still pass, of course, that's the whole point..)
5e4cf6cae1 oops.. use the template paramater instead of hard coding 'double'
ceeb023ff2 use template parameter Scalar instead of VectorType, fix a segfault.
7db4052749 eigenize the test a little more
f19eda7cf6 first test for a basic wrapper (and only wrapper!) for cminpack functions
2b9f110639 actually use eigen include file
fe813911f2 make LU::solve() not to crash when rank=0
5f8d58f36a fix bug in sorting of singular values
b695113a81 Add all other file from cminpack/examples as tests.
d646d99366 Start of module "NonLinear". We start out of cminpack-1.0.2 (http://devernay.free.fr/hacks/cminpack.html) The first test is adapted from the example/ directory. Some stuff is hard coded for our initial tests.
b10637be50 add basic .hgignore file for most common generated/temporary files
f5e1c896c7 replace custom rank one update in LU by an expression
d1dc088ef0 * implement a second level of micro blocking (faster for small sizes) * workaround GCC bad implementation of _mm_set1_p*
543a785756 Fix compilation in sparse module
2707a6b87c fix determinant in PartialLU
1d1e4884da oops, one more bug fix in homogeneous
9822493aaf fixes in determinant and homogeneous
3ac01b1400 compilation fix in EigenSolver, bugfix in PartialLU
e82e30862a typo
03febf00a0 fix VS compilation issue in MapBase::operator+= and -=
2e46e9f2b4 shame on me
d34c5ef509 fix my bad fix of Hauke's fix ;)
1d4fea48b5 fix a couple of compilations issues
c2861dd41a fixed inversion for AffineCompact matrices
56d00779db more product refactoring
6b2ab13ac5 fix vs.net compilation issue
8163757cf0 fix vs.net compilation issue
fa55cf5ce7 fix compilation and segfault issues
b9b17ea5a5 add the missing Affine Transform * set of column vectors products...
0744638b6f remove remnant of MultiplierBase
84a7659bef implement the missing outer product, and attempt to workaround a gcc internal error
88147e0a91 big refactoring in Product.h: - all specialized products now inherits ProductBase - the default product evaluated by Assign is still here,   but it is currently enabled for small fixed sizes only - => this significantly speed up compilation for large matrices - I left the OuterProduct specialization empty as an exercise...
014c581a5b fix assertions, improve docs. we never assert on conditions that depend on the result of a computation!! also the assertion that rank>0 amounts to matrix!=0 which we have to leave under the responsibility of the user.
b183a4f879 merge
ab6302376c merge
c20236ea75 remove the FORCE
7d607048a9 implement a ProductBase class and, as a proof of concept, update TriangularProduct and SelfAdjointMatrixProduct to take advantage of it => fewer LOC
f3a6bc48c4 fix a couple of compilation issue due to the removal of MultiplierBase
2089a263f8 merge
c2a92e92a6 add ger and lu with partial pivoting in BTL
4bec101470 implement two levels of blocking in PartialLU => high speedup
4436a4d68c use explicit Block/VectorBlock xprs to make sure that compile-time known sizes are used
523cdedf58 make the dot product linear in the second variable, not the first variable
912da9fade merge with special_matrix branch
a8f943127c merge
d10c710b15 add new Householder module
3cf5bb31f6 * Bye bye MultiplierBase, extend a bit AnyMatrixBase to allow =, +=, and -= * This probably makes ReturnByValue needless
66ee2044ce small fixes
3cde9c0e35 apply Gael's idea for auto transpose in mixed fixed/dynamic case
ce1dc1ab16 implements a blocked version of PartialLU
0103de8512 bugfix in trsm
cd49780143 apply patch from Marcus Hanwell: Improved quoting of tests when added to the build
48fc64458c add blocked LLT, and bugfix in trsm asserts
18429156a1 add selfadjointView from a trinagularView
2796bcabb1 some cleaning
a156f5a869 faster trsm kernel and fix a couple of issues
21f686846b s/std::atan2/ei_atan2
ae5e26a363 add missing ei_atan2 without painfull warnings
2e9f7f80bf compilation fixes for sun CC
d8bfd151d1 forward-port Anthony Truchet's changeset 8eab0bccbf8b1969f32bb006b61d2137f6f37ead
ff20a2ba94 add explicit "on the right" triangular solving,  => no temporary when the rhs/unknows is row major
62d9b9b7b5 fix typo
864171df5c fix a couple of issues related to recent products
1ba35248e9 synch with main branch
54804eb626 synch with main branch
264fe82c65 add a debug mechanism to compute the number of intermediate evaluations (only for dynamic size)
508f06ac0f update doc
de8b795895 compilation fixes in BTL
7ed7ec64b5 improve the expression analyzer to bypass Transpose expression
6713c75fac update doc
7579360672 fix compilation of the doc and started a page dedicated to high performance and or BLAS users
5f3606bce9 bug fix in inverse for 1x1 matrix, some compilation fixes in sparse_solvers
94cc30180e compilation fixes
0590c18555 various compilation and bug fixes in selfadjoint stuff
b5e4064289 cleaning and fix a perf issue
f95b77be62 trmm is now fully working and available via TriangularView::operator*
6aba84719d trmm is now working in all storage order configurations
1d4d9a37fd some cleaning
f3fde74695 finalize trsm: works in all situations, and it is now used by solve() and solveInPlace()
282e18da49 ok, now trsm works very well for upper triangular matrices TODO: link it with the meta triangular_solve_selector and handle the case where the rhs is row major by copying it to a col-major temporary + handle right solving: X = B * M^-1
f4112dcff3 The new trsm is working very very well (read very fast) for lower triangular matrix and row or col major lhs. TODO: handle upper triangular and row major rhs cases
35927e78c2 add WIP trsm
c6d06c22ac some cleaning
6076173f0b add a simplified version of the sybb kernel built on top of gebp
82c5438c95 split and add unit tests for symm and syrk, the .rank*update() functions now returns a reference to *this
b67abe22b3 oops,, update SYRK so that the rhs can be non-square²
a81388fae9 Implement efficient sefladjoint product (aka SYRK) : C += alpha * U U^T It is currently available via SelfAdjointView::rankKupdate. TODO: allows to write SelfAdjointView += u * u.adjoint()
713c92140c improve SYMV it is now faster and ready for use
eee14846e3 formating
ddb3ac98a2 addd matrix * self adjoint high level API
8d2cd744b0 Added an explicit cast from int to bool to suppress MSVC warnings.
f696efc00e bugfix in SYMM
0cb4f32e12 implement high level API for SYMM and fix a couple of bugs related to complex
e7f8e939e2 * GEMM enhencement: no need to pre-transpose the rhs   => faster a * b.transpose() product   => this also fix a bug in a so far untested situation * SYMM is now ready for use => still have to write the high level   stuff to convert natural expressions into a call to SYMM
d6475ea390 more refactoring in the level3 products
d6627d540e * refactoring of the matrix product into multiple small kernels * started an efficient selfadjoint matrix * general matrix product   based on the generic kernels ( => need a very little LOC)
afa8f2ca95 * various fixes related to sub diagonals and band matrix * allows 0 sized objects in Block/Map
562864bcfb enable our own ctest dashboard
a012aecbc4 bugfix in SVD
4375c043ac minor compilation fixes for Sun CC and ICC
4c85fa8c73 compilation fix (sun CC)
c10b919edb compilation fix
b3ad796d40 bugfix in operator*= (matrix product)
a551107cce bugfix for a = a * b; when a has to be resized
32b08ac971 re-implement stableNorm using a homemade blocky and vectorization friendly algorithm (slow if no vectorization)
15ed32dd6e add other stable norm impl. in the benchmark
525da6a464 bugfix in blueNorm
65fc70b750 add a benchmark for the different norms
34490f1493 * bugfixes in Product, and test/product_selfadjoint * speed up in the extraction of the matrix Q in Tridiagonalization
97c9445c60 synch with main devel branch
079fa81d84 add a TridiagonalMatrix wrapper arround BandMatrix, and extend this latter
4f792583c7 add BandMatrix::col()
df6561a73f change the implementation of BandMatrix to follow the BLAS/LAPACK storage scheme
1578421ed1 fix issue #25 : the problem was that we assumed Dynamic was a multiple of a packet size (also disable the test of blueNorm)
587029a612 started an implementation of BandMatrix: at least the read/write access to the main/sub/super diagonals seems to work well.
8120a5cecd synch with main devel branch
7a9519a9be fix typo in blue norm
279cedc1ce some cleaning/renaming is Triangular/SelfadjointView
f5d2317b12 add a blueNorm() function implementing the Blues's stable norm algorithm. it is currently provided for experimentation purpose only.
ddbaaebf9e one more fix of the previous commit (forgot to update ei_must_nest_by_value)
bd506d837c fix typo in previous commit
1e7b1a8a85 add a SparseNestByValue expression and fix issue in sparse adjoint evaluation
a2cf7ba955 add triangular * vector product
a2087cd7a3 Add an efficient rank2 update function (like the level2 blas xSYR2 routine). Note that it is already used in Tridiagonalization.
ab17f92728 more sun studio fixes
ec5c608aa3 Set of fixes and workaround to make sun studio more happy. Still remains the problem of alignment and vectorization.
b47dea8b7a add a meta unroller for the triangular solver (only for vectors as rhs)
1a1b2e9f27 finally directly calling the low-level products is faster
1c52985aa7 merge
629e083d81 slight change in the comparison to -1
8885d56928 commit woking versions of triangular solvers naturally handling conjuagted expression. still have to bench whether it is faster (runtime and compile time) to directly call the cache friendly functions, whence all the commented piece of code...
fa60c72398 started to simplify the triangular solvers
96e7d9f896 ok now all the complex  mat-mat and mat-vec products involving conjugate, adjoint, -, and scalar multiple seems to be well handled. It only remains the simpler case: C = alpha*(A*B) ... for the next commit
13b2dafb50 conjugate expressions are now properly caught by Product => significant speedup in expr. like a.adjoint() * b,    for complex scalar type (~ x3)
5ed6ce90d3 started to catch scalar multiple and conjugate xpr in Product
ea23f36c78 * change the nesting order of adjoint_return_type to  1 - make it easier to catch conjugate expressions  2 - make sure there is no unecessary copy (we had NestByValue<Derived> which seems to be very bad) * update eigensolver wrt recent changes
79877a9917 * take advantage of new possibilies in LLT (mat -= product) * fix Block::operator+= product which was not optimized * fix some compilation issues
92a35c93b2 * extended the cache friendly products to support C = alpha * A * M and C += alpha * A * B * this allows to optimize xpr like C -= lazy_product, still have to catch "scalar_product_of_lazy_product" * started to support conjugate in cache friendly products (very useful to evaluate A * B.adjoint() without   evaluating B.adjoint() into a temporary * compilation fix
544888e342 add a generic mechanism to copy a special matrix to a dense matrix so that we don't need to add other specialization of MatrixBase::operator=, Matrix::=, and Matrix::Matrix(...)
1aea45335f * bybye Part, welcome TriangularView and SelfAdjointView. * move solveTriangular*() to TriangularView::solve*() * move .llt() to SelfAdjointView * add a high level wrapper to the efficient selfadjoint * vector product * improve LLT so that we can specify which triangular part is meaningless => there are still many things to do (doc, cleaning, improve the matrix products, etc.)
889726bf7c add matrixQR() method exposing the storage. that's where the householder thing impacts the API.
e057beee4e fix some search-and-replace damage
e093b43b2c * rename QR to HouseholderQR because really that impacts the API, not just the impl. * rename qr() to householderQr(), for same reason. * clarify that it's non-pivoting, non-rank-revealing, so remove all the rank API, make solve() be void instead of bool, update the docs/test, etc. * fix warning in SVD
f84bd3e7b1 include the fixes of the third edition
0c2232e5d9 quick reimplementation of SVD from the numeral recipes book: this is still not Eigen style code but at least it works for n>m and it is more accurate than the JAMA based version. (I needed it now, this is why I did that)
0cd158820c switch from eigensolver to SVD which seems to be more accurate with float
90f1e24579 significantly improve the accuracy of setFromTwoVectors (fixes #21)
ecc4f07af5 fix doc of Quaternion::setFromTwoVectors
c6f610093b add a VectorBlock expr as a specialization of Block
eec334c604 fixes a segfault
60467e54a5 some docs improvements
c398d0edcf another test in the non invertible case
08e419dcb1 * update sparse module wrt new diagonal matrix impl * fix a bug is SparseMatrix
d457ec5810 fix #20: SVD::solve() now resize the result
7b750182f2 * polish computeInverseWithCheck to share more code, fix documentation, fix coding style * add snippet for computeInverseWithCheck documentation * expand unit-tests to cover computeInverseWithCheck
126a031a39 computeInverseWithCheck method added to matrix base (specialization for 1D to 4D)
632cb7a4a1 patch by Myguel from the forum: fix documentation
2de9b7f537 fully vectorize DiagonalProduct
bf91003d37 FreeBSD: determine precisely when malloc is 16-byte aligned
5eabf2b75d double precision() : change to 1e-12 instead of 1e-11 (as discussed several times on the list)
6809f7b1cd new implementation of diagonal matrices and diagonal matrix expressions
fc9000f23e only disable the inline ASM if we're NEITHER gcc nor icc. right ??
6ccb97620a patch by Patrick Mihelich: use empty struct + anonymous namespace for NoChange
60e6ac3178 use system variable instead of custom one
903acf0d5c add missing code snippets for newer Matrix methods and PartialLU::solve()
03ad303d14 * add resize(int, NoChange) and resize(NoChange, int) * add missing assert in resize(int) * add examples for all resize variants * expand docs (part of which is from Tim Hutt's e-mail)
96dca681b0 use <...> for system headers
a44f7cf440 re-enable the fast unaligned loads for gcc and icc using inline assembly (this allows to avoid incompatible pointer casts and to specify the dependency to the data explicitely)
aa17b5b514 use the slower unaligned load intrinsics in ei_ploadu because GCC mess up with my tricks
3934a8b5e8 check version number using newer cmake functionality, instead of kde macro
ec8596f863 update the stack alignment doc
ac9680fb20 document the "wrong stack alignment" issue.
7d48ed4be3 refine the check to disable alignment. now it's disabled on gcc3 (where we don't vectorize anyway)
8be088bfb0 add Eigen/Eigen
fe8ab0147b add "Dense" header
032594cee2 forward port fix to #12
a57325e971 fix #14: make llt::solve() and also ldlt::solve() work with uninitialized result
c6e81869d0 fixed typo in SuperLUSupport.h
fb9a15e451 added copyright notice
e577c70e49 candidate header for Eigen/Complex
218711e18b example file
4d6b962ba4 added FindFFTW, but I don't think it's right yet
627595ad19 * rename PartialRedux to VectorwiseOp * add VectorwiseOp's +, -, +=, -= operators
f3fd7fd22b fix #11: now the default Transform ctor set the last row in Affine mode.
d97d307fcf SparseMatrix::resize() always resets the matrix to an empty one
55de162cf6 fix #10: the reallocateSparse function was half coded
c49d1fd2b5 add a partial LU bench in BTL
f26c691678 Renamed internal helper functions from the Memory header.
5f04f8eb6b Fixes #9. Thanks to the (unknown) bug contributor.
6530c8f5b4 A much simplified version of the earlier commit introducing way fewer changes compared to changeset f292d2352e0ac9be8a9c5b0d931dc9a2c6da1aa0 . The reason of the previous commit was incorrect. The smart pointers issues were actually a result of issue 9.
71e5cbcbc4 Added specializations for DontAlign when using Dynamic matrices. This allows users to store Matrices in smart pointers without the need for a specialized allocator/de-allocator.
1c54340174 more work on ei_fftw_impl
1fd6dfe428 added ei_fftw_impl
f292d2352e Relaxed checks againts _MaxRows and _MaxCols in Matrix::_check_template_params().
f13e000b45 various comment changes
ee92009fd8 make Umeyama, and its unit-test, work for me on gcc 4.3
86be59124d fix the static assert checking the size template parameters.
4d1e492c00 * Umeyama has now similar performance for RowMajor and ColMajor layouts. * Fixed a bug in umeyama for fixed size matrices. * Fixed the umeyama unit test for fixed size matrices. * Added XprHelper::ei_plain_matrix_type_row_major.
7a7a3f3570 Fix out of source build
db5647abae Added Umeyama implementation.
09b4733255 added real-optimized inverse FFT (NFFT must be multiple of 4)
03ed6f9bfb refactored ei_kissfft_impl to maintain a cache of cpx fft plans
210092d16c changed name from simple_fft_traits to ei_kissfft_impl
326ea77390 added FFT inverse complex-to-scalar interface (not yet optimized)
3047988172 scalar forward FFT optimized for even size, converts to cpx for odd
9c0fcd0f62 started real optimization, added benchmark for FFT
9d5728c511 fix #4 and also improve performance of Tridiag::diag/subDiag at the same time
8b4afe3deb added non-optimized real forward fft (no inverse yet)
42848498aa fixes #5 : freebsd really has aligned malloc
7667a93cbe merge
6347b1db5b remove sentence "Eigen itself is part of the KDE project." it never made very precise sense. but now does it still make any?
0ed7c2f6d7 fix typo
c7303a876f Oops, here the actual LLT and LDLT patch.
0523b64fe9 Eigensolver decomposition interface unification. Added default ctor and public compute method as well as safe-guards against uninitialized usage. Added unit tests for the safe-guards.
7435d5c079 LLT and LDLT decomposition interface unification. Added default ctor and public compute method as well as safe-guards against uninitialized usage. Added unit tests for the safe-guards.
2c247fc8a8 LU and PartialLU decomposition interface unification. Added default ctor and public compute method as well as safe-guards against uninitialized usage. Added unit tests for the safe-guards.
5c5789cf0f QR and SVD decomposition interface unification. Added default ctor and public compute method as well as safe-guards against uninitialized usage. Added unit tests for the safe-guards.
c7baddb132 add internal comment (mostly a pretext to test the eigen-commits list)
dd45c4805c * add a writable generic coeff wise expression (CwiseUnaryView) * add writable .real() and .imag() functions
6ecd02d7ec merge
56aad5aafb * add a FindEigen2.cmake file for reference * parse the version number from the Macro.h header file
a697cb4094 fix comments (old comments that were copied from LU)
066acca179 Added pkgconfig support
65181df1f9 update CTestConfig file for my.cdash.org
93123bc021 merge
510029f2bc * optimize sum() for sparse matrices and vectors * fix the row()/col() functions of some InnerVector
f47c4b5da8 update cdash testsuite file to use mercurial
68cad98bc9 indent level change
be1b2ad4ec removed unused code
92ca9fc032 initial pass of FFT module -- includes complex 1-d case only
72f66d717d Evaluate argument of matrix exponential only once.
b83d9b48fa fix compilation with ICC
c8629e12f4 fix #3, remove inline keywords in QtAlignedMalloc (MSVC fix)
e186728867 fix #1 : need to nest by value the affine part in homogeneous product
e0832d5d93 fix bug reported by Moritz Lenz about random setter
e3d64cb418 Fix compilation error in createRandomMatrixOfRank()
6358c12998 * introduced method createRandomMatrixOfRank (R = U*D*V where U,V unitary, D r-by-c diag. with rank non-zero values) * switched lu/qr tests to be using createRandomMatrixOfRank * removed unused methods doSomeRankPreservingOperations * removed NOTE about doSomeRankPreservingOperations
934d6b4749 fix #2, bug in Diagonal::MaxRowsAtCompileTime when Index==Dynamic
6ea7cbdc87 * added missing project definition (see doc of add_subdirectory and EXCLUDE_FROM_ALL) to fix a win build issue * commented out non-existing unsupported-snippets and -examples
36c9c2597f Added tag after-hg-migration for changeset cd6c258f44faa239441a1c22ed30cc23b6955ff5
cd6c258f44 Fix a previous mistake in moving the 2.0-beta5 in svn for some last-minute fixes.
bd9c32e2f1 Remove this old file. It was stalling in history because of a bug in svn, which did not prevent the commit (svn r722564) to 'svn copy' a directory called 'Core/' on top of an existing file 'Core'
e0554752d8 update tags
dd390470e1 simplification (no reason anymore to write that in that convoluted way)
5ee9f1a705 argh, forgot to re-add the throw()
126284d08b * fix bugs in EigenTesting.cmake: it didn't work with -DEIGEN_NO_ASSERTION_CHECKING=ON * only try...catch if exceptions are enabled
7c14e1eac4 add partial-pivoting LU decomposition the name 'PartialLU' is not meant to be definitive! make inverse() and determinant() use it, so it's *almost* considered well tested.
877c3c00a2 enable testing of complex numbers for taucs
159c99a288 fix adolc unit test for dynamic sizes
f5b5571a5a compilation fixes
9b256d997e various minor updates of some unit tests
6a4e94f349 bugfix from Jens Mueller (s/RowMajor/IsRowMajor)
9afd1324fd constant Diagonal  ---> DiagonalBits introduce ei_is_diagonal to check for it DiagonalCoeffs ---> Diagonal and allow Index to by Dynamic -> add MatrixBase::diagonal(int) with unittest and doc
eac79b6d2e CREDIT Hauke Heibel, fix MSVC warnings
3b79d99f71 *make coeff() return a const reference (required with the recent change with CoeffReturnType) *fix a unused variable warning
c500415e18 result of our experiments with LU tuning: implement very simple formula, that turns out to be similar to Higham's formula already in use in LDLt
b6c76c30cd apply patch from Hauke Heibel cleaning overloaded operator new/detete
47fc3858b9 oops, didn't want to commit that
c8a22dbc08 CREDIT Hauke Heibel, more std::vector::insert fixes
159ab4a043 CREDIT Hauke Heibel, windows compatibility fixes in MatrixExponential
7080282a6d forgot a svn add CMakeLists.txt
6dffdca123 fix realloc when initial size was 0 (bug reported by Jens Mueller)
4f0af00e51 *add missing overloads of setZero, etc... that were mentioned in the tutorial  --->they go into Matrix as they resize. *add isConstant() alias to isApproxToConstant() *extend unit-test *change an assert into a static assert
0c0d38272e add copyright on two public headers that are not so trivial...
e1abffa513 add missing function, thanks to Hauke Heibel
3361ad4589 one more gcc 3.3 fix
db079f3a8c fix internal error with gcc 3.3 (all tests are now ok with 3.3 !)
1e286464ab * compilation fixes for gcc 3.3 * test Part::swap
23f073625d add -Wextra only if compiler supports it
834eb5bfc8 new unsupported module by Jitse Niesen: matrix exponential
66f059b99d remove unused member remean that was just initialized
46e1162a39 reimplement linearRegression on top of fitHyperplane which is much better
2b2f0c0220 fix linearRegression, fix doc, add unit test (it was untested since the change making fitHyperplane no longer use it)
5b364a68cb oops
2829314284 new simplified API to fill sparse matrices (the old functions are deprecated). Basically there are now only 2 functions to set a coefficient: 1) mat.coeffRef(row,col) = value; 2) mat.insert(row,col) = value; coeffRef has no limitation, insert assumes the coeff has not already been set, and raises an assert otherwise. In addition I added a much lower level, but more efficient filling mechanism for internal use only.
ddb6e96d48 fix warnings with recent gcc
dec09a618d fix warning, unused variable dummy
b60571a193 fix warnings with unused static functions
8aa8854bbf fix SSE2 detection on win64, reported by 'kajala'
c25fc50d54 add an AlignedVector3 module suitable for vectorization of 3D vectors
469b8aa380 "forgot to commit the required changes in stdvector unit test"
95bda5e6ab let the user disable alignment altogether by #defining EIGEN_DONT_ALIGN. Until now, the user had to edit the source code to do that. Internally, add EIGEN_ALIGN that takes into account both EIGEN_DONT_ALIGN.and EIGEN_ARCH_WANTS_ALIGNMENT. From now on, only EIGEN_ALIGN should be used to test whether we want to align.
facee57b8d add auto transposition for vectors
7029ed6b88 ok, this time cast should really work ; sorry for the noise
428a12902a fixed my mistake in cast
746079f75d gni, forgot to call the new subtest
9e9e99a42e casting to the same type no longer generates a CwiseUnaryOp
8b1e7c2792 add cast<>() tests. including a vectorization_logic test that currently fails (casting to same type should not prevent vectorization)
e722f55382 fix the Matrix(int,int)/vector 2D ctors issue so that we really have a Matrix(Scalar,Scalar) ctor. (useful for std::complex, user defined types, etc.
32e9801890 CREDIT Ross Smith: fix posix_memalign detection
e201091d89 remove unsupported/doc from make's "all" target
acb32c69d4 * update BVH to explicitely use aligned_allocator * fix warning in StdVector
c7bb7436f9 make the ei_p* math functions overloads instead of template specializations
e0904a70ce update STL vector doc
6f6b5ad016 add a generic version of std::vector::resize for other stl implementations
2697877fac std::vector now explicitely requires the use of Eigen::aligned_allocator CREDIT Hauke Heibel
c5c384cf06 add missing vector ctor reported by Markus Moll on the ML
5e5bac52d7 this should fix the linking issue with StdVector without any user changes... I cross my fingers...
4efcc14b91 fix ctor issues with ei_workaround_msvc_std_vector
b14d1139df not compilable with msvc :(
c744960984 patch from Ilya Baran: This small patch fixes a potential initialization bug in BVAlgorithms and slightly corrects the BVH doc.
6ee4eb94fb fix the 4x4 inverse -- unit test passes again
2bb1c9e8dc finally commit Rohit's work as the start of a new (currently unsupported) module, MoreVectorization.
804a239d30 patch from Moritz Lenz to allow solving transposed problem with superlu
fb3078fb62 fix memory leak in superlu backend
7254201632 bugfix when the diagonal is not stored and assumed to be 1
22edf77470 add a 4x4 inverse case which is not handled by the current ei_compute_inverse_in_size4_case (reported by mikola on IRC)
ea41a18b80 clean asm comments
d78eb02627 add aligned_allocator operator == and != as suggested by Hauke Heibel
0c99de5a17 more patches from Hauke Heibel: compilation/warning fixes from VC++
e6332cba4b forward-port r951449: patch by Hauke Heibel: compile fix with VS 9
e8329f9f45 relicence Julien Pommier's SSE code to Eigen's licenses
aabca5a44f stupid typo
502bf4a81d * fix the binary bloat issue, Rohit's idea was the good one * a few dox fixes (alloc routines do return 0 on error) and forgot to update version number in CMakeLists
38f501a596 fix computation of aligned_bit (has been broken by the change of AutoAlign/DontAlign)
5b1d0cebc5 sparse module: new API proposal for triangular solves and experimental solver support with a sparse matrix as the rhs.
5a628567b0 Compile fix.
9a8096dd1d  * fixed truncation warnings caused by MatrixBase::CoeffReturnType under MSVC
ff3a3209ca add an assertion in sparse LLT for invalid input matrix
adf5104bae oops, bad copy paste in ei_psqrt, thanks to Jitse Niesen
40432c84b9 CwiseUnaryOp -> SparseCwiseUnaryOp
0170eb0dbe add an auto-diff module in unsupported. it is similar to adolc's forward mode but the advantage of using Eigen's expression template to compute the derivatives (unless you nest an AutoDiffScalar into an Eigen's matrix).
0f8e692b3f * Find SuperLU also when it is installed without a superlu/ prefix * Some more CoeffReturnType changes
113fc3a260 now if Derived has the DirectAccess flag, then MatrixBase<Derived>::coeff() const returns a const Scalar& and not a Scalar as before. useful for people doing direct access. + 1 bugfix thanks to Patrick Mihelich, forgot a & in MapBase::coeff(int).
2f45eeb0c6 More Cholesky fixes. * Cholesky decs are NOT rank revealing so remove all the rank/isPositiveDefinite etc stuff. * fix bug in LLT: s/return/continue/ * introduce machine_epsilon constants, they are actually needed for Higman's formula determining   the cutoff in Cholesky. Btw fix the page reference to his book (chat with Keir). * solve methods always return true, since this isn't a rank revealing dec. Actually... they already did always return true!! Now it's explicit. * updated dox and unit-test
8e2b191acf fix typo found by noir.sender from KDE forums
1e6097a810 fix mistake in static assertion, patch by Markus Moll.
bf596d0b3a add adjointInPlace() and add documentation warnings on adjoint() and transpose() about aliasing effects.
a1ba995f05 Many improvements in LLT and LDLT: * in LDLT, support the negative semidefinite case * fix bad floating-point comparisons, improves greatly the accuracy of methods like   isPositiveDefinite() and rank() * simplifications * identify (but not resolve) bug: claim that only triangular part is used, is inaccurate * expanded unit-tests
df9dfa1455 fix superLU backend: missing operator=
e9f6167485 make special ei_p functions static to avoid linking issues (they are too complex to be inlined)
49fc1e3e84 add vectorization of sqrt for float
3499f6eccd fix Taucs support (it appears Taucs does not return sorted matrices)
1b7b538e05 The ABI break: * set AutoAlign=0, DontAlign!=0 * set Dynamic=33331 * add check on fixed sizes * bump version to 2.0.52
ce5669dbf9 * enable vectorization of sin, cos, etc. by default with an option to   disable them (-DEIGEN_FAST_MATH=0) * add a specialization of MatrixBase::operator*(RealScalar) for fast   "matrix of complex" times scalar products (even more useful for   autodiff scalar types)
62de40f8bb oops forgot to include a file in previous commit (I had other local changes I did not want to commit yet...)
a22ef7e1f3 for some reason passing the argument by const reference killed the perf (in the packet version of sin, cos, exp, lop), so let's pass them by value. Also, improve the perf of ei_plog by reducing dependencies.
17860e578c add SSE2 versions of sin, cos, log, exp using code from Julien Pommier. They are for float only, and they return exactly the same result as the standard versions in about 90% of the cases. Otherwise the max error is below 1e-7. However, for very large values (>1e3) the accuracy of sin and cos slighlty decrease. They are about 3 or 4 times faster than 4 calls to their respective standard versions. So, is it ok to enable them by default in their respective functors ?
64fbd93cd9 As values may be used uninitialised, they have now been given sensible defaults; or, in other words, if worse comes to worst, we'll get a guaranteed segfault rather than a heisenburg.
70c0174bf9 * allows fixed size matrix with size==0 (via a specialization of   MatrixStorage returning a null pointer). For instance this is very   useful to make Tridiagonalization compile for 1x1 matrices * fix LLT and eigensolver for 1x1 matrix
f4cf5e9b26 split and extend eigen-solver tests
fe00e864a1 ei_pnegate implemented for AltiVec
fbf415c547 add vectorization of unary operator-() (the AltiVec version is probably broken)
4bb5221d22 Add BVH module in unsupported (patch from Ilya Baran) (I thought I committed it a week ago but it seems the command failed)
3d385ae968 angle-axis doc: make it more clear the axis must be normalized
dcf49e5a28 more MSVC fixes: restrict keywords (sorry for all these commits)
718af05517 more MSVC fixes (asm comments...)
497d77b08c fix compilation MSVC
312994fa98 opengl demo: add aligned operator new where appropriate and remove my mess...
c6264d9b7e add affine * homogeneous vector for backward compatibility (e.g., kgllib)
02e97ac0ae minor changes in AlignedBox needed for BVH module
b8f46090ff add optimized cross3 function (code from Rohit Garg)
3298320007 fix doxygen generation of unsupported modules
f697ea6d30 fix a few compilation errors and warnings (ICC)
14691d6836 fix compilation with old, and future gcc
3e4307d8a8 compilation fix in MapBase
caa1ef7515 various BTL updates (disable Cholesky for MTL, add new plot settings, etc)
8aa5aa269a add "slice vectorization" of redux (eg. m.block().minCoeff() is now vectorized)
c087373968 because of a missing specialization, operator/(scalar) was not vectorized
db6c3d0197 fix MapBase's ForceAligned concept which was not working at all....
3f80c68be5 add the vectorization of abs
bd8107c90c forgot to include a file in previous commit
8a424efb11 add an option to bench eigen without GCC's auto vec (might conflict with Eigen's auto vec)
314aff875e fix warning in Tridiag
44f218988c add a small note in Transform doc.
3ac42fed94 big rework of the Transform class: * add Projective and AffineCompact modes as an optional third template   argument * extend Transform::operator* to support more use cases
7718a8ed83 slight optimization of SSE base integer mul (thanks to Rohit Garg)
f9790a649c Install the newly added eigen2/Eigen/src/Geometry/arch/Geometry_SSE.h
e4f64ce098 add optimized quaternion * quaternion product specialization for float/SSE using code from Rohit Garg
6f95270ede significantly reduce the default stack allocation limit which was much too high
2c78ca62a6 patch from Stjepan Rajko (MSVC fix in RotationBase)
093e3cd5b5 Commented out duplicate definition of TransformTraits - was causing compile-time errors.
fa9f7708d4 add efficient matrix product specializations for Homogeneous
31332fca0b remove bad #include of SelfadjointRank2Update.h
0be89a4796 big addons: * add Homogeneous expression for vector and set of vectors (aka matrix)   => the next step will be to overload operator* * add homogeneous normalization (again for vector and set of vectors) * add a Replicate expression (with uni-directional replication   facilities) => for all of them I'll add examples once we agree on the API * fix gcc-4.4 warnings * rename reverse.cpp array_reverse.cpp
d710ccd41e BTL: add syr2 action
a72ff5abc1 BTL: - patch from Victor (add ACML support)      - fix overflow issues
6a26506341 add ReturnByValue pseudo expression for in-place evaluation with a return-by-value API style (will soon use it for the transform products)
45136ac3b6 various update of of BTL
3288e9e168 add much faster versions of unaligned stores (and slightly faster unaligned loads)
c4601314be cleaned Tridiagonalization impl, with improved performance
ed134a0ce5 performance improvement: rewrite of the matrix-matrix product following Goto's paper => x1.4 speedup with more consistent perf results
8ed186b9ab improve WIP new matrix product
40774c625e add a proof of concept autodiff jacobian helper class based on adolc with unit test and FindAdolc cmake module
170128770a compilation fix + test orho methods for complex
91af389a9a fix unitOrthogonal() for size > 3
2d6d14a3d3 Add COMPONENT Devel
8e7c4df0db Fix install header
de014efdaf * split CacheFriendlyProduct into multiple smaller files * add an efficient selfadjoint * vector implementation (= blas symv)   perf are inbetween MKL and GOTO   => the interface is still missing (have to be rethougth)
3d86dcf473 oops, got confused by the preprocessor directives around posix_memalign...
7c4f9ecf0c fix posix_memalign return value warning
177500f37e fix typo found by markusfroeb (forum)
032880074e Added new product implementation. Just works for square, power of 2 matrices of floats.
7485aa6d57 add symv bench
22b9de1849 Fix some formatting in quick ref. Add references to headers.
e2ee7a6a58 increase version number for step
752d95c20e eventually c++ does not provide any optimized pow(int,int) function, so here you go :) (should also fix Timothy's troubles)
747d83a05a add size, rows, cols, (), (,) functions in ASCII ref
eb2cc8f502 patch from Jitse Niesen: fix ascii quick ref matlab operator '
8f83b37b2a fix install of IterativeSolvers module
23f543ee5e add the ASCII quick reference made by Kier
21161d8bcf fix typo in FindTaucs.cmake
ee04c5c874 add tests showing bug in unitOrthogonal such that we don't forget it!
e6f1104b57 * fix Quaternion::setFromTwoVectors (thanks to "benv" from the forum) * extend PartialRedux::cross() to any matrix sizes with automatic   vectorization when possible * unit tests: add "geo_" prefix to all unit tests related to the   geometry module and start splitting the big "geometry.cpp" tests to   multiple smaller ones (also include new tests)
67b4fab4e3 fix assertion issue in slice vectorization
c5245a3388 update vectorization_logic unit test wrt previous sum/redux change
349557db9a no reason for 3 vec_mins, 2 are enough apparently in ei_predux_min
ad2bf14dbb modified ei_predux_min/max to actually use altivec instructions
3b12f48aa3 compilation fix for SuperLU 3.1
20a8bb96eb fix m = m*m with m sparse (gug found by Frederik Heinz)
59a1ed0932 fix bug in MapBase found by myguel
51c991af45 * exit Sum.h, exit Prod.h, welcome vectorization of redux() ! * add vectorization for minCoeff and maxCoeff
dc97d483fd update of the Array module doc
deb6254702 some ICC fixes
7954f7709a add ei_predux_mul for AltiVec
cbbc6d940b * add ei_predux_mul internal function * apply Ricard Marxer's prod() patch with fixes for the vectorized path
a0cc5fba0a fix ICC internal compilation error
40ad661183 added an experimental IterativeSolvers module (currently in unsupported) with a constrained conjugate gradient algorithm adapted from GMM++/ITL. This algorithm is needed for Step.
e75bef9523 various minor fixes in Sparse module
169696a078 fix doxygen \ingroup for the array module
9c14d20656 add select snippet
a9688f0b71 - add diagonal * sparse product as an expression - split sparse_basic unit test - various fixes in sparse module
e0be020622 add DiagonalMatrix setZero and resize functions
666ade0c93 add "remap" snippet using placement new
5b4c3b21f3 documentation about inheriting from Eigen::Matrix
15e40b1099 fixed preserve_mask definition for AltiVec (needed __vector keyword)
505bdbb9ef should be __powerpc__ instead of __ppc__
d8b7283a98 remove remaining debug stuff in Reverse.h
a385de080d fix build
6c4b6c2da8 forgot to commit the deletion of StdVector directory
17fd619430 more fixes in StdVector, sorry for the noise
365ec0744c disable vector::resize() workaround for gcc < 4.1 (they already use a const reference)
671398372b arf... s/_MSVC_VER/_MSC_VER
4dd2efa113 little fix in new StdVector
3009d79a1f * allow Matrix to be resized to 0 (solve a lot of troubles with   some containers) * new workaround for std::vector which is supposed to work for any   classes having EIGEN_MAKE_ALIGNED_OPERATOR_NEW as discussed on ML
24808dc090 force the use of debug version of QtCore unless it is not available
1c24f5bbc5 eventually MSVC does not like my /O2 flags (incompatibility with other option set by default)
19b035ee11  s/cholesky/llt in precompiled lib and BTL
cc90495e30 add bench_reverse, draft of a reverse vectorization for AltiVec, make global Scaling function static
f5d96df800 Add vectorization of Reverse (was more tricky than I thought) and simplify the index based functions
4dc4ab3abb Reverse::coeff*(int) functions are for vector only
6fbca94803 apply Ricard patch for Reverse with minor modifications
dc97079905 add optimization flag for MSVC and heavy tests remove unsupported namespace
a4487ef198 add snippet for sub/super diagonal fix a few doc issues
e80f0b6c4e update doc of DiagonalCoeffs
910b387438 Add sub/super-diagonal expression (read/write) as a trivial extension of DiagonalCoeffs. The current API is simply:   m.diagonal<1>() => 1st super diagonal   m.diagonal<-2>() => the 2nd sub diagonal I'll add a code snippet once we agree on this API.
9637af5ecf undo an unecessary change in cache-friendly product made for MSVC
7c374394ee remove explicit fortran dependency in FindCholmod
8a6f38c638 forgot to commit changes in  main CMakeLists.txt (add unsupported folder)
da45184635 add custom FindBLAS FindLAPACK working for c++ compiler fix issues in Cholmod/Taucs supports
1119f846cf fix various Taucs and Cholmod issues (they have not been tested for a while)
41f80b26cb bugfix in LDLt for size==1
5e6707d7f7 forgot to add EigenTesting.cmake file
5d69c5102b oops, #ifdef instead of #if ---> bug
f81479d392 forgot to update this unit test...
93a089adc8 disable alignment altogether outside of the platforms which potentially have SSE or AltiVec This should remove most portability issues to other platforms where data alignment issues (including overloading operator new and new[]) can be tricky, and where data alignment is not needed in the first place.
c26dc9ab1b nothing interesting to see
82e0cbbac5 extend unsupported/README.txt file
95db32fcdc setup the unsupported directory structure. The unsupported module documentation is automatically generated in:   build/doc/unsupported/ with bidirectional cross references. I leave a class Foo in AdolcForward module to illustrate the cross-reference behavior. I will remove it in the next commit.
44a527dfa5 * classify and sort the doxygen "related pages"   by tweaking the filename and adding 2 categories:    Troubleshooting and Advanced * use the EXCLUDE_SYMBOLS to clean the class list   (insteaded of a homemade bash script) * remove the broken "exemple list" * re-structure the unsupported directory as mentionned in the ML and   integrate the doc as follow:   - snippets of the unsupported directory are directly imported from the     main snippets/CMakefile.txt (no need to duplicate code)   - add a top level "Unsupported modules" group   - unsupported modules have to defined their own sub group and nest it     using \ingroup Unsupported_modules   - then a pair of //@{ //@} will put everything in the submodule   - this is just a proposal !
b0dd22cc72 update cholesky benchmark
b9a82be727 Add full pivoting to LDLT decomposition.
6c5868cc99 add a short unsupported/readme file
42fa03948c add unsupported/ directory with a first contribution from myself: a header file providing support for adolc's adouble type in forward mode. (adolc is an automatic differentiation library)
b4777379d4 Add Matrix::resizeLike(other) convenience function and test.
bc9a276b78 call it "Eigen 2.0.50-unstable" to make things clear, and update EIGEN_MINOR_VERSION to 50
61e45ed500 * label Cholesky and solveTriangular.* as experimental * improve Experimental.dox * update urls from /api/ to /dox/
f3d5ba0c1f the BSD's don't have aligned malloc after all
42c4bc0ecf fix tutorial abs/abs2 (thanks to Keir)
4111316104 forgot to commit QR_solve snippet
37cceeeaca add missing inline keywords
82e70fbcae fix duplicated geometry module in the doc
13d0a310fd fix MSVC internal compilation error
8e0ec3c62b reduce epsilon in QR
cf0857c44d fix MSVC stupid warnings
1752a3a677 more MSVC fixes, and more code factorization in Geometry module
36c8a64923 add MatrixBase::stableNorm() avoiding over/under-flow using it in QR reduced the error of Keir test from 1e-12 to 1e-24 but that's much more expensive !
42b237b83a * make sum and redux honor EvalBeforeNestingBit too * fix MSVC issues (hopefully)
cc6159743d make dot() honor EvalBeforeNestingBit
dde729379a various updates in the (still messy) sparse benchmarks
9b594ab0fb fix overflow in sparse product
9bc44094c5 add EIGEN_NO_AUTOMATIC_RESIZING if defined, already initialized matrices won't be automatically resized in assignments uninitialized matrices may still be initialized
1b194193ef Big change in DiagonalMatrix and Geometry/Scaling: * previous DiagonalMatrix expression is now DiagonalMatrixWrapper * DiagonalMatrix class is now for storage * add the DiagonalMatrixBase class to factorize code of the   two previous classes * remove Scaling class (it is now a global function) * add UniformScaling helper class   (don't use it directly, use the Scaling function) * add the Scaling global function to simplify the creation   of scaling objects There is still a lot to do, in particular about DiagonalProduct for which the goal is to get rid of the "if()" in the coeff() function. At least it is not worse than before ! Also need to uptade the tutorial and add more doc.
da555585e2 Patch from Frank fixing stupid MSVC internal crash
22bfc77124 move EIGEN_DEPRECATED to the begining of the function (pb with MSVC)
0f15a8d829 QR: add isInjective(), isSurjective(),     mark isFullRank() deprecated,     add solve() (mix of Keir's patch and LU::solve()) => there is big problem with complex which are not working
cf89d9371a LLT: makes the non positive definite test less strict, but we still need something better.
8ce4503494 add support for read/write sub sets of inner vectors (sparse module)
d384671793 now these tests succeed with 10,000 repeats
4ac8cabf8a fix my previous commit with EIGEN_EMPTY macro bug
9b06e072a5 fix type mismatch caught by new static assert
d700343632 fix "empty macro arguments are undefined in ISO C90 and ISO C++98" warning found by gcc-svn
bea1737a5a FindUmfPack: add AMD and COLAMD libraries only if they are found
4b09865b8f check GSL version in cmake files
f6aa60bcf3 centralize those static asserts more upstream, reduces duplication and ensures they can't be bypassed (e.g. until now it was possible to bypass the static assert on sizes)
8d236e74a1 add a missing static assertion on the scalar types
046a84c0ef fix doc for norm() and squaredNorm(): these are not only for vectors
d7f60257dd small fix related to GSL cmake stuff
874ff5a0b4 fix msvc warnings (useful ones again) reported by gael on CDash
062d6bd47a documentation update/improvement
b05c5dd1be compute the rank on the fly rather than at the end, and stop early in the case of non-full rank (so big optimization in case the rank is low)
9ea1050281 fix MatrixNase::fillrand bug
2776a3197b make these functions inline, thanks to Mek
670de11dca forgot to backport an update to Mainpage.dox
a79deafc6d * mark Geometry as experimental * install QtAlignedMalloc * finish the renaming Regression->LeastSquares * install LeastSquares directory (!!!) * misc dox fixes
65e4ae4ff4 disable unordered_map for ICC
00d7f8e567 * solveTriangularInPlace(): take a const ref and const_cast it, to allow passing temporary xprs. * improvements, simplifications in LU::solve() * remove remnant of old norm2()
414ee1db4b Optimization in LU::solve: when rows<=cols, no need to compute the L matrix Remove matrixL() and matrixU() methods: they were tricky, returning a Part, and matrixL() was useless for non-square LU. Also they were untested. This is the occasion to simplify the docs (class_LU.cpp) removing the most confusing part. I think that it's better to let the user do his own cooking with Part's.
56c7e164f0 add partial count redux (adapted patch from Ricard Marxer)
81b0ab53cf add fill() function as an alias for setConstant
9849931500 eventually it turns out that our current EIGEN_WORK_AROUND_QT_BUG_CALLING_WRONG_OPERATOR_NEW_FIXED_IN_QT_4_5 is the right way to go for allowing placement new on a class having overloaded operator new. Qt 4.5 won't add the :: prefix. (I still do not understand how you can distinghish a placement new from an overloaded operator new taking an allocator as argument...)
e7c48fac9b sparse module: makes -= and += operator working Question 1: why are *=scalar and /=scalar working right away ? Same weirdness in DynamicSparseMatrix where operators += and -= work wihout   having to redefine them ???
899e2ada15 very minor update in test/CMakeLists.txt
6a722602e6 fix a few remaining warnings and fix commainitializer unit test with MSVC
d3dcb04f2d * fix compilation with gcc 3.4 * add an option to disable Qt testing
291ee89684 add computeRotationScaling and computeScalingRotation in SVD add convenience functions in Transform reimplement Transform::rotation() to use that add unit-test
876b1fb842 add polar decomposition on both sides, in SVD, with test
32754d806d I hope this one fix the issue with MSVC and sparse module
9e3c73110a fix a bunch of warnings (actual issues) reported by Frank
4225b7bf57 perhaps fix a compilation issue in the sparse module with MSVC
7ccea9222c fix warnings
52cf07d266 sparse module: * add row(i), col(i) functions * add prune() function to remove small coefficients
25f1658fce update sparse matrix tutorial (far to be satisfactory yet)
5f43a42ee7 * remove set(), revert to old behavior where = resizes * try to be clever in matrix ctors and operator=: be lazy when we can, always allow   to copy rowvector into columnvector, check the template parameters,   try to factor the code better * add missing copy ctor in UnalignedType * fix bug in the traits of DiagonalProduct * renaming: EIGEN_TUNE_FOR_CPU_CACHE_SIZE * update the dox a little
a5fbf27843 don't claim googlehash is there when only qt4 has been found :)
294682a25a lu test:don't fail
f645d1f911 * complete the support of QVector via a QtAlignedMalloc header * add a unit test for QVector which shows the issue with QVector::fill
8973d12cda * QR: add a rank() method and improve the accuracy of the rank * computation * Array: add a count() method and rename AllAndAny.h file to   BooleanRedux.h
81cb887baf fix bug in the computation of rank very difficult to catch in unit-tests because this is very noisy
3134d5290b forgot to include the update of the qr test
3e5b3a33fa quick bugfix in QR::isFullRank() (not 100% sure about the reference value for the comparison to 0)
8690ba923c I assume these files where supposed to be installed
36c478cd6e optimize A * v product for A sparse and row major
178858f1bd add a flexible sparse matrix class designed for fast matrix assembly
385fd3d918 * clarify the situation with experimental parts * remove all what was marked deprecated
dcaa58744e #error if min or max is defined
9ae03f4589 add a compilation test in FindGoogleHash.cmake to catch configuration issues when multiple compilers are used on the same system.
708fa36750 revert bad commit
d58bb54e7f add a smart realloc algorithm when filling a sparse matrix
0c7974dd4d bugfix in Map by Keir Mierle
22792c696f add ublas vector of vector in sparse setter bench
61b85b1436 update documentation (thanks Kenneth)
cc6c4d807b add a sparse setter bench
c5020c6e8e patch from Ricard Marxer: add doc example for select()
1eec38dc36 Rewrite the vectorized meta unroller of sum to reduce instruction dependency => significant speed up
e556e647f4 typo found by Ben Axelrod CCMAIL:baxelrod@coroware.com
86a192681e * Started a tutorial page for sparse matrix. * Updated Mainpage.dox's directives used by kde's scripts
48df9ed715 Add a data() function in Map and Block
ccdcebcf03 Sparse module: add support for sparse selfadjoint * dense
9a4b7998cf Sparse module: add row/col methods to the iterators
87241089e1 Sparse module: bugfix in SparseMatrix::resize(), now the indices are correctly initialized to 0.
96e1e582ff Sparse module: * add a MappedSparseMatrix class (like Eigen::Map but for sparse   matrices) * rename SparseArray to CompressedStorage
4f33fbfc07 two compilation fixes
2d53466fa9 Sparse module: * improved performance of mat*=scalar * bug fix in cwise*
f5741d4277 add a sparse * dense_vector bench
0b606dcccd Add support for sparse * dense and dense * sparse matrix/vector products
c4c70669d1 Big rewrite in the Sparse module: SparseMatrixBase no longer inherits MatrixBase. That means a lot of features which were available for sparse matrices via the dense (and super slow) implemention are no longer available. All features which make sense for sparse matrices (aka can be implemented efficiently) will be implemented soon, but don't expect to see an API as rich as for the dense path. Other changes: * no block(), row(), col() anymore. * instead use .innerVector() to get a col or row vector of a matrix. * .segment(), start(), end() will be back soon, not sure for block() * faster cwise product
ee87f5ee49 s/EIGEN_WORK_DIRECTORY/EIGEN_WORK_DIR in testsuite script
a5632fe1db add EIGEN_FUNCTORS_PLUGIN
e8e1084267 add EIGEN_CWISE_PLUGIN support for extending class Cwise
ec0b2f900c fix a couple of doxygen issues
b179f8e1a4 add NetBSD to the list of OSes on which malloc is guaranteed to be 16 byte aligned, after discussion with Mark Davies.
62d01d3cf4 hm it seems cmake does not understand CYGWIN (=> UNIX)
534dc60672 improved a bit the testsuite script
38d916d50f just a stub for the householder stuff we did with keir yesterday...
24fd14dab6 * minor dox tweaks * pretext to bump to beta6
4d44ca226e * make std::vector specializations also for Transform and for Quaternion * update test_stdvector * Quaternion() does nothing (instead of bug) * update test_geometry * some renaming
b26e12abcf make ei_traist<Select> honors nested types
a7554023a4 bugfix in ei_unaligned_type copy ctor
9d97c06d9d fix a warning in test/alignedbox
1fc17c4792 remove stupid output in test/meta
6efaece8ce disable/enable msvc headers are allowed to be included multiple times
294f5f16dd muuuch improved documentation for the unaligned array assert. also split into several pages for better reusability (more generally useful than just for this assert)
f86818b5a6 bug fix in ei_stack_free
336ad58213 * move cwise *= and /= to Core (like * and /) * tidy the StdVector module * fix warnings (especially a | instead of ||) in stdvector test
af5034b3c0 add a clean configuration summary for the unit tests (useful to analyze the dashboards)
7f881e814f another warning fix
a4252584ed bugfix in ei_handmade_aligned_free for null pointers
b365f443a2 make the testsuite works on windows with nmake
484ed3bbe2 fix a warning in test/sparse.h
92959aa5f3 add the possiblity to disable Fortran (workaround cmake's bug
2db5888253 update testsuite script
f268e79709 simplify some ei_traits<> using inheritance (less loc and slight compilation speed up)
9e8f437a6f extend stdvector test with more push_back...
824b75f182 forgot to commit updated test
a30b498ab4 add cwise operator *= and /=. Keir says hi!!
28e15574df updating FindEigen2.cmake for proper search order
6c84b03d77 add missing newline at EOF
4361cb8913 EIGEN_NO_MALLOC must also block traditional unaligned malloc
50ad8b9010 fix potential compilation issue on MSVC + no vectorization
0c1ef2f4c6 make the std::vector fix work also with dynamic size Eigen objects, e.g. std::vector<VectorXd> update unit test
3efe6e4176 remove ei_new_allocator remove corresponding part of test_dynalloc
335d3bcf05 Based on code + help from Alex Stapleton: *Add Eigen/StdVector header. Including it #includes<vector> and "Core" and generates a partial specialization of std::vector<T> for T=Eigen::Matrix<...> that will work even with vectorizable fixed-size Eigen types (working around a design issue in the c++ STL) *Add unit-test
5052d3659b oops, fix compilation (sorry for all that noise!)
5bef59e371 (previous commit was bad)
265ab86005 overloaded operator delete should call ei_conditinal_aligned_free, not ei_aligned_free
b3d580dec7 ei_aligned_delete was running through the various paths in the wrong order
fd831d5a12 * implement handmade aligned malloc, fast but always wastes 16 bytes of memory.   only used as fallback for now, needs benchmarking.   also notice that some malloc() impls do waste memory to keep track of alignment   and other stuff (check msdn's page on malloc). * expand test_dynalloc to cover low level aligned alloc funcs. Remove the old   #ifdef EIGEN_VECTORIZE... * rewrite the logic choosing an aligned alloc, some new stuff:   * malloc() already aligned on freebsd and windows x64 (plus apple already)   * _mm_malloc() used only if EIGEN_VECTORIZE   * posix_memalign: correct detection according to man page (not necessarily     linux specific), don't attempt to declare it if the platform didn't declare it     (there had to be a reason why it didn't declare it, right?)
f52a9e5315 * Added aligned_allocator for using 16-byte aligned types with STL containers.  There is still a compile-time problem with STL containers that have a standard-conformant resize() method, but this should resolve the original user issue which was storing aligned objects in a std::map.
003d0ce03e add missing inline keywords (compilation error) spotted by timvdm
208b273106 change the day switch time to 5:00 UTC
b315f4c359 add a ctest testsuite.cmake script to simplify the generation of nightly builds
51aa62a5d4 add EIGEN_WORK_AROUND_QT_BUG_CALLING_WRONG_OPERATOR_NEW_FIXED_IN_QT_4_5 an ugly hack that allows people to do QVector<Vector4f> with Qt <= 4.4 the Qt bug this is working around is fixed by Gael in Qt 4.5
eb7dcbbfce EIGEN_MAKE_ALIGNED_OPERATOR_NEW didn't actually need to get the class name as parameter
1d52bd4cad the big memory changes. the most important changes are: ei_aligned_malloc now really behaves like a malloc  (untyped, doesn't call ctor) ei_aligned_new is the typed variant calling ctor EIGEN_MAKE_ALIGNED_OPERATOR_NEW now takes the class name as parameter
e2d2a7d222 fix a bug -- bad read found by valgrind
af27fb7590 Add cdash.org support: * the dashboard is there: http://my.cdash.org/index.php?project=Eigen * now you can run the tests from the top build dir   and submit report like that (from the top build dir):   ctest -D Experimental * todo:  - add some nighlty builds (I'll add a few on my computer)  - add valgrind memory checks, performances tests, compilation time tests, etc.
8d3469ca44 add BLAS dependency in FindSuperLU.cmake
4432cf8ca3 bugfix in sum
cb71dc4bbf Add a vectorization_logic unit test for assign and sum. Need to add dot and more tests, but it seems I've already found some room for improvement in sum.
709e903335 Sparse module: * extend unit tests * add support for generic sum reduction and dot product * optimize the cwise()* : this is a special case of CwiseBinaryOp where   we only have to process the coeffs which are not null for *both* matrices.   Perhaps there exist some other binary operations like that ?
7078cfaeaa * re-enabled deprecation warning on msvc now that eigen isn't using functions microsoft deems deprecated
336f0a8486 fine tuning in dot() and sum(), and prepare for the sparse versions...
6b9d647fc2 add custom implementation of hypot
3e90940189 * disabled deprecation warning under msvc that was being triggered due to microsoft deprecating portable functions in favor of non-portable ones ( ex: hypot() deprecated in favor of _hypot() )
8cea5f6b31 remove non standard hypotf function call
94efa16187 more Scalar conversions fixes
ac9d805c2f two scalar conversion fixes
2db434265b remove the Matrix_ prefix
8e888a45d0 call methods from the eigen namespace with prepended Eigen:: in define
6736e52d25 * suppressed some minor warnings
1c29d70312 * introduce macros to replace inheritance for operator new overloading   (former solution still available and tested)   This plays much better with classes that already have base classes --   don't force the user to mess with multiple inheritance, which gave   much trouble with MSVC. * Expand the unaligned assert dox page * Minor fixes in the lazy evaluation dox page
e71de20f16 ...so the placement new is really trivial:)
1eec8488a2 oops, placement new should take a void*
9dcde48980 we also had to overload the placement new... issue uncovered by Tim when doing QVector<Vector3d>...
215ce5bdc1 forgot to install the LeastSquares header
10f9478f35 release beta5, fix a doc typo
9c8a653c0b gaaaaaaaaaaaaaaaaaah can't believe that 3 people wasted so much time because of a missing & !!!!! and this time MSVC didn't catch it so it was really copying the vector on the stack at an unaligned location!
8551505436 problem solved, we really want public inheritance and it is only automatic when the _child_ class is a struct.
1b88042880 the empty base class optimization is not standard. Most compilers implement a basic form of it; however MSVC won't implement it if there is more than one empty base class. For that reason, we shouldn't give Matrix two empty base classes, since sizeof(Matrix) must be optimal. So we overload operator new and delete manually rather than inheriting an empty struct for doing that.
7db3f2f72a *fix compilation with MSVC 2005 in the Transform::construct_from_matrix *fix warnings with MSVC 2005: converting M_PI to float gives loss-of-precision warnings
dae7f065d4 didn't meant to commit the fortran check. but anyway, unfortunately it doesn't work the way iot should. the test fails and cmake will terminate if it doesn't find a fortran compiler
ab660a4d29 inherit from ei_with_aligned_operator_new even with disabled vectorization
986f301233 *add PartialRedux::cross() with unit test *add transform-from-matrices test *undo an unwanted change in Matrix
d316d4f393 fix compilation on apple: _mm_malloc was undefined. the fix is to just use malloc since on apple it already returns aligned ptrs
e1ee876daa fix segfault due to non-aligned packets
3de311f497 oops forgot important parentheses
06fd84cdb1 Fix bug in Matrix, in determining whether to overload operator new with an aligned one, introduced in r905543
0e5c640563 * fix a unused variable warning * if svnversion returns prose such as "exported" then discard that
be64619ab6 * require CMake 2.6.2 everywhere, Alexander Neundorf says it'd make it easier to have a uniform requirement in kdesupport for when he makes fixes. * add eigen versioning macros
269bf67796 rename Regression --> LeastSquares
15ca6659ac * the 4th template param of Matrix is now Options. One bit for storage order, one bit for enabling/disabling auto-alignment. If you want to disable, do: Matrix<float,4,1,Matrix_DontAlign> The Matrix_ prefix is the only way I can see to avoid ambiguity/pollution. The old RowMajor, ColMajor constants are deprecated, remain for now. * this prompted several improvements in matrix_storage. ei_aligned_array renamed to ei_matrix_array and moved there. The %16==0 tests are now much more centralized in 1 place there. * unalignedassert test: updated * update FindEigen2.cmake from KDElibs * determinant test: use VERIFY_IS_APPROX to fix false positives; add testing of 1 big matrix
d9e5fd393a * In LU solvers: no need anymore to use row-major matrices * Matrix: always inherit WithAlignedOperatorNew, regardless of vectorization or not * rename ei_alloc_stack to ei_aligned_stack_alloc * mixingtypes test: disable vectorization as SSE intrinsics don't allow mixing types and we just get compile errors there.
fd7eba3394 Added a SparseVector class (not tested yet)
d671205755 fix the nomalloc test: it didn't catch the ei_stack_alloc in cachefriendlyproduct, that should be banned as well as depending on the platform they can give a malloc, and they could happen even with (large enough) fixed size matrices. Corresponding fix in Product.h: cachefriendly is now only used for dynamic matrices -- fixedsize, no matter how large, doesn't use the cachefriendly product. We don't need to care (in my opinion) about performance for large fixed size, as large fixed size is a bad idea in the first place and it is more important to be able to guarantee clearly that fixed size never causes a malloc.
3958e7f751 add unit-test checking the assertion on unaligned arrays -- checking that it's triggered when and only when it should.
164f410bb5 * make WithAlignedOperatorNew always align even when vectorization is disabled * make ei_aligned_malloc and ei_aligned_free honor custom operator new and delete
a2782964c1 Sparse module, add an assertion and make the use of CHOLMOD's solve method the default.
ce3984844d Sparse module:  * enable complex support for the CHOLMOD LLT backend    using CHOLMOD's triangular solver  * quick fix for complex support in SparseLLT::solve
361225068d fix bug discovered by Frank: ei_alloc_stack must really return aligned pointers
6f158fb7fc one last compilation fix ...
789ea9d676 unless i find more failures in the tests, this will be beta3... * fixes for mistakes (especially in the cast() methods in Geometry) revealed by the new "mixing types" test * dox love, including a section on coeff access in core and an overview in geometry
4336cf3833 * add unit-tests to check allowed and forbiddent mixing of different scalar types * fix issues in Product revealed by this test * in Dot.h forbid mixing of different types (at least for now, might allow real.dot(complex) in the future).
f5a05e7ed1 unfuck v.cwise()*w where v is real and w is complex
9e00d94543 * the Upper->UpperTriangular change * finally get ei_add_test right
21ab65e4b3 fix nasty little bug in ei_add_test
ebf906a23a add matrix * transform product
df4bd5e46f * fix a test giving some false positives * add coverage for various operator*=
a3fad2e3c3 Transform*Transform should return Transform unit test compiles again
5f6fbaa0e7 * fix a vectorization issue in Product * use _mm_malloc/_mm_free on other platforms than linux of MSVC (eg., cygwin, OSX) * replace a lot of inline keywords by EIGEN_STRONG_INLINE to compensate for   poor MSVC inlining
8679d895d3 various MSVC fixes in BTL
22875683b9 * extractRotation ---> rotation * expand the geometry/Transform tests, after Mek's reports * fix my own stupidity in eigensolver test
e4980616fd SelfAdjointEigenSolver: add operatorSqrt() and operatorInverseSqrt()
84bb868f07 * more MSVC warning fixes from Kenneth Riddile * actually GCC 4.3.0 has a bug, "deprecated" placed at the end   of a function prototype doesn't have any effect, moving them to   the start of the function prototype makes it actually work! * finish porting the cholesky unit-test to the new LLT/LDLT,   after the above fix revealed a deprecated warning
f34a4fa335 * forgot to svn add 2 files * idea of Keir Mierle: make the static assert error msgs UPPERCASE
8106d35408 Patch by Kenneth Riddile: disable MSVC warnings, reenable them outside of Eigen, and add a MSVC-friendly path in StaticAssert.
fabaa6915b * fix in IO.h, a useless copy was made because of assignment from   Derived to MatrixBase. * the optimization of eval() for Matrix now consists in a partial   specialization of ei_eval, which returns a reference type for Matrix.   No overriding of eval() in Matrix anymore. Consequence: careful,   ei_eval is no longer guaranteed to give a plain matrix type!   For that, use ei_plain_matrix_type, or the PlainMatrixType typedef. * so lots of changes to adapt to that everywhere. Hope this doesn't   break (too much) MSVC compilation. * add code examples for the new image() stuff. * lower a bit the precision for floats in the unit tests as   we were already doing some workarounds in inverse.cpp and we got some   failed tests.
b27a3644a2 Macros: add MSVC paths, add an important comment on EIGEN_ALIGN_128
93f8d56789 improved MSVC support in cmake files (SSE)
15d72d3f9a somehow we had forgotten this very important static assertion...
9084e2a216 oops I commited bad stuff in the previous commit
6e138d0069 more MSVC cmake fixes
4cb63808d4 some cmake fixes for windows and GSL
c98fe0185e fix non standard non-const std::complex::real/imag issue
5f582aa4e8 fix bad typos, thanks to Kenneth Riddile
c22d10f94c LU class: * add image() and computeImage() methods, with unit test * fix a mistake in the definition of KernelResultType * fix and improve comments
e3a8431a4a found one bug in the previous ++ changes
89f468671d * replace postfix ++ by prefix ++ wherever that makes sense in Eigen/ * fix some "unused variable" warnings in the tests; there remains a libstdc++ "deprecated" warning which I haven't looked much into
2110cca431 actually honor EIGEN_STACK_ALLOCATION. Can set it to 0 to disable stack alloc which guarantees that bad alloc throws exceptions if they are enabled.
38b83b4157 * throw bad_alloc if exceptions are enabled, after patch by Kenneth Riddile * disable vectorization on MSVC 2005, as it doesn't have all the required intrinsics. require 2008.
50105c3ed6 Hopefully fix compilation of SSE Packetmath with MSVC.
0a220721d1 Finally work around enough of MSVC preprocessor dumbness so that it actually detects SSE2
1ad751b991 only enable the "unaligned array" assert if vectorization is enabled. if vectorization is disabled, WithAlignedOperatorNew is empty!
55b603e457 * fix a bug I introduced in WithAlignedOperatorNew * add an important comment
763f0a2434 use ei_aligned_malloc and ei_aligned_free also in WithAlignedOperatorNew, so this too should now work with MSVC.
9b1a3d6e19 small optimization (for MSVC) and simplification of ei_alligned_malloc
dd139b92b4 work around the braindead msvc preprocessor
11c8a6bf63 Fix detection of SSE2 with MSVC.
703951d5cd Fix memory alignment (hence vectorization) on MSVC thanks to help from Armin Berres.
d11c8704e0 oops, forget to remove a line
a164646c77 more warning fixes by Armin Berres
936eaf600a compilation fix thanks to Dennis Schridde
ef0cd3a289 one more warning fix, thanks to Armin Berres
1ed17b037d * fix a couple of warnings (patch from Armin Berres) * allow Map to map null data
5015e48361 Sparse module: add a more flexible SparseMatrix::fillrand() function which allows to fill a matrix with random inner coordinates (makes sense only when a very few coeffs are inserted per col/row)
beabf008b0 bugfix in DiagonalProduct: a "DiagonalProduct<SomeXpr>" expression is now evaluated as a "DiagonalProduct<Matrix<SomeXpr::Eval> >". Note that currently this only happens in DiagonalProduct.
ba9a53f9c6 fix compilation issue for 64bit systems (pointer <=> size_t)
52a30c1d54 fix minor mistake in the inside eigen example
cb409914e0 * call it beta2 * improvements in Matrix documentation * document copyCoeff and copyPacket even if it's hidden from doxygen
069ecbb4ab * complete the change norm2->squaredNorm in PartialRedux * somehow the NICE_RANDOM stuff wasn't being used anymore and   tests were sometimes failing again. Fixed by #including Eigen/Array   instead of cherry-picking just Random.h. * little fixes in the unaligned assert page
09fd69d734 * add Transform explicit constructors taking translation/scaling/rotation * add Transform::operator= taking rotation.   An old remnant was left commented out. Why was it disabled? * slight optimization in operator= taking translation * slight optimization (perhaps) in the new memory assertion
6700f07fb0 actually this message is probably more effective at making people read the web page...
08e6b7ad80 Make deluxe assertion with deluxe error message with link to deluxe web page for this very nasty bug (unaligned member in dynamically allocated struct) that our friends at Krita just encountered:
7e8ee5b527 hide internal stuff from doxygen by using #ifndef EIGEN_PARSED_BY_DOXYGEN.
93c1f62979 Use an aligned IOFormat in the docs
2b20da624a * improvements in the tutorial: triangular matrices, linear algebra * minor fixes in Part and StaticAssert * EulerAngles: remove the FIXME as I think the current version is fine
bb33ec4ef3 * fix compile error when C++0x is enabled: static_assert() needs ;   thanks to devurandom for reporting * remove redundant ; in ei_internal_assert * minor fixes in InsideEigenExample.dox
9c0deb55ca bugfix in matrix to Euler-angles function
faf942a947 Add a generic matrix to Euler-angles function. Perhaps the prototype of this function could be improved, see comments in the code
6d1439a52f add big "what happens inside eigen" tutorial for people interested in Eigen internals
2ff7961c10 split off the lazy evaluation part from the quickstartguide; actually by mistake i had already committed part of that change so i commit the rest even if it's not much, so building docs from trunk works again.
c1e2156d8a * Much better, consistent error msgs when mixing different scalar types: - in matrix-matrix product, static assert on the two scalar types to be the same. - Similarly in CwiseBinaryOp. POTENTIALLY CONTROVERSIAL: we don't allow anymore binary   ops to take two different scalar types. The functors that we defined take two args   of the same type anyway; also we still allow the return type to be different.   Again the reason is that different scalar types are incompatible with vectorization.   Better have the user realize explicitly what mixing different numeric types costs him   in terms of performance.   See comment in CwiseBinaryOp constructor. - This allowed to fix a little mistake in test/regression.cpp, mixing float and double - Remove redundant semicolon (;) after static asserts
84cc69f0f3 -add quotes around the configured directories so build dirs with spaces produce some errors less
20c11bc52c prefix all Eigen cmake variable with EIGEN_ and switched to lowercase for all cmake files
eb9dadf3b2 clean FindUmfpack.cmake wrt enable_language(Fortran)
6b3d0e68e2 -use the cmake-provided Eigen_(SOURCE|BINARY)_DIR variables instead of setting own versions (EIGEN_(SOURCE|BINARY)_DIR
aba378eb1a add internal documentation
00f89a8f37 Update e-mail address
582c1f92c8 doc: add a "non stable" warning for parts which are not part of the stable API yet and a couple of other minor doc updates...
a040b7f15d tutorial: extend casting section with set
cc6121b98d tutorial: add the cast function
a3b89e0ee6 tutorial: add array module warnings when needed
3614321401 * add Gael a (c) line in IO.h * let user change default format by defining EIGEN_DEFAULT_IO_FORMAT * improve docs a little
139529e97b * add .imag() function * fix a very old bug in EigenSolver that I had completely forgotten   (thanks to Timothy to refresh my mind) * fix doc of Matrix::Map
86ccd99d8d Several improvements in sparse module: * add a LDL^T factorization with solver using code from T. Davis's LDL   library (LPGL2.1+) * various bug fixes in trianfular solver, matrix product, etc. * improve cmake files for the supported libraries * split the sparse unit test * etc.
9aba671cfc Remove executable here too
2a4fdf31c8 Remove executable attribute
033ac82c9d refinements in Matrix doc
12f84acda6 Matrix documentation rework
e80099932a add lpNorm<p>() method to MatrixBase, implemented in Array module, with specializations for cases p=1,2,Eigen::Infinity.
a0ec0fca5a Add Matrix::Map() and Matrix::AlignedMap() static methods
3d90c13970 norm2() renamed to squaredNorm(), kept as deprecated for now.
3f580e240e add Eigen namespace in front of Transpose (I needed that to add a Transpose function, sorry for this little inconvenience)
ebe14aae7d add transposeInPlace (not optimized yet for rectangular matrix)
48137e28d8 add the possibility to extend Matrix outside Eigen, just like MatrixBase
3e502abfda add Eigen namespace in EIGEN_STATIC_ASSERT
b26e04f40b add Eigen namespace in EIGEN_INHERIT_ASSIGNMENT_OPERATOR
9f873a855f unit-tests: link to external libs only for the tests which require them
ca048aaf77 fix compilation with gcc 4.3
94f6f2a7de Add an axis aligned box in the geometry module. Some naming questions: - for "extend" we could also think of: "expand", "union", "add" - same for "clamp": "crop", "intersect" - same for "contains": "isInside", "intersect" => ah "intersect" is conflicting, so that eliminates this one !
ec0a423862 Add isApprox in Geometry module's classes. Complete unit tests wrt previous commits.
505ce85814 oops forgot the inline keyword (though for gcc it was implicit)
e5b8a59cfa Add smart cast functions and ctor with scalar conversion (explicit) to all classes of the Geometry module. By smart I mean that if current type == new type, then it returns a const reference to *this => zero overhead
568a7e8eba improve assertion checking in product
72f2c7eed5 bugfix in Quaternion found by Daniel Stonier
0c5a09d93f some cleaning and doc in ParametrizedLine and HyperPlane Just a thought: what about ParamLine instead of the verbose ParametrizedLine ?
8ea8b481de As discussed on ML:  * remove the automatic resizing feature of operator =  * add function Matrix::set() to be used when the previous    behavior is wanted  * the default constructor of dynamic-size matrices now    creates a "null" matrix (data=0, rows = cols = 0)    instead of a 1x1 matrix  * fix UnixX typos ;)
65abb4c52e compilation fix for ICC
cf0f82ecbe sparse module:  - remove some useless stuff => let's focus on a single sparse matrix format  - finalize the new RandomSetter
9e02e42ff6 add the bench file for the RandomSetter
3645d6c138 sparse module: add a RandomSetter based on a user defined map implementation as described on the wiki (one map per N column) Here's some bench results for the 4 currently supported map impl: std::map =>             18.3385 (581 MB) gnu::hash_map =>        6.52574 (555 MB) google::dense =>        2.87982 (315 MB) google::sparse =>       15.7441 (165 MB) This is the time is second (and memory consumption) to insert/lookup 10 million of coeffs with random coords inside a 10000^2 matrix, with one map per packet of 64 columns => google::dense really rocks ! Note I use for the key value the index of the column in the packet (between 0 and 63) times the number of rows and I used the default hash function.... so maybe there is room for improvement here....
96538b976d remove debug message in FindCholmod.cmake
5066fe8bbe * sparse LU: add extraction of L,U,P, and Q, as well as determinant              for both backends. * extended a bit the sparse unit tests
e1c50a3cb1 add unit tests for sparse LU and fix a couple of warnings
fa27cd1ed0 * add cmake files to find (optional) supported libraries * add unit tests for sparse cholesky
f44316e5f8 UmfPack support: add support for complex<double>
3a231c2349 sparse module: add support for umfpack, the sparse direct LU solver from suitesparse (as cholmod). It seems to be even faster than SuperLU and it was much simpler to interface ! Well, the factorization is faster, but for the solve part, SuperLU is quite faster. On the other hand the solve part represents only a fraction of the whole procedure. Moreover, I bench random matrices that does not represents real cases, and I'm not sure at all I use both libraries with their best settings !
64f7fbe3f2 sparse module: some trivial bugfixes
76fe2e1b34 add/update some benchmark files used to test/compare sparse module features
ecc6c43dba sparse module: add preliminary support for direct sparse LU solver using SuperLU. Calling SuperLU was very painful, but it was worth it, it seems to be damn fast !
6be0131774 sparse module: added some documentation for the LLT solver
cfca7f71fe sparse module: much much faster transposition code
727dfa1c43 fix some documentation issues
e747b338ee Started the third chapter of the tutorial on linear solvers. It is only a first draft and I think it should be reorganized a bit in 2 parts: 1 - a compact table summarizing the main API and its use     (this is what would expect an "expert" user) 2 - a discussion about the various algorithm in Eigen to guide the newbies in linear algebra Currently I mixed the discussion with the API, but it is still better than nothing !
28d32f9bd8 add my copyright in MatrixBase.h
765219aa51 Big API change in Cholesky module:  * rename Cholesky to LLT  * rename CholeskyWithoutSquareRoot to LDLT  * rename MatrixBase::cholesky() to llt()  * rename MatrixBase::choleskyNoSqrt() to ldlt()  * make {LLT,LDLT}::solve() API consistent with other modules
e2bd8623f8 Solve the issue found by Timothy in solveTriangular:   => row-major rhs are now evaluated to a column-major      temporary before the computations. Add solveInPlace in Cholesky*
537a0e0a52 fix typos
e80d6a95d9 note that norm2() is *not* an l2 norm as it is in other APIs
8466244faa SVN_SILENT pendantic
b46c327133 Clear up the docs some.  I'd also suggest making Dynamic the default template parameter for matrices.
4e502dd6b0 very little fixes: cast literals to Scalar, rephrase some doc, add some const (maybe completely useless but at least doesn't hurt)
22507fa645 Sparse module: refactoring of the cholesky factorization, now the backends are well separated from the default impl, etc.
b8fc1edb2c Sparse module: enable support for incomplete cholesky factorization in CHOLMOD backend.
3c155ab073 Sparse module: removed some extra copies using markAsRValue()
b730c6f57d Sparse module: add experimental support for TAUCS and CHOLMOD with:  * bidirectionnal mapping  * full cholesky factorization
a930dfb229 extend sparse unit tests with transpose and matrix product
98d3c0a413 Cleaned a bit the sparse cholesky code
068ff3370d Sparse module:  * several fixes (transpose, matrix product, etc...)  * Added a basic cholesky factorization  * Added a low level hybrid dense/sparse vector class    to help writing code involving intensive read/write    in a fixed vector. It is currently used to implement    the matrix product itself as well as in the Cholesky    factorization.
1fc503e3ce add EigenSolver::eigenvectors() method for non symmetric matrices. However, for matrices larger than 5, it seems there is constantly a quite large error for a very few coefficients. I don't what's going on, but that's certainely not due to numerical issues only. (also note that the test with the pseudo eigenvectors fails the same way)
d907cd4410 Fixes in Eigensolver:  * eigenvectors => pseudoEigenvectors  * added pseudoEigenvalueMatrix  * clear the documentation  * added respective unit test Still missing: a proper eigenvectors() function.
618de17bf7 block(int,int)->segment
373331e3bf remove apidox_preprocessing script which is not used anymore
42e88b1724 resurrected root/Mainpage.dox, the directives are needed by kde's scripts
fb5b62fbac block => segment in the tutorial
af991a6bdb small dox fixes
247f2b0ffa * block() for vectors ---> segment() * documentation improvements, especially in quickstart guide
0940ad7127 add normalization functions to Quaternion and fix compilation issue with custom types
db030d4e28 * fix issues with "long double" type (useful to enforce the use of x87 registers) * extend the documentation on "extending Eigen"
8473a77f2f move CommaInitializer out of MatrixBase and documment it (because of .finished())
a62bd110a2 fix doc compilation
e5c50afed6 * Quaternion: added dot product and angularDistance functions. The latter is               based on the former. * opengl_demo: makes IcoSphere better (vertices are instanciated only once) and                removed the generation of a big geometry for the fancy spheres...
5e9ee8863e opengl demo, now working:  - quaternion vs euler angles interpolation (though the Euler angle version looks a bit too bad)  - navigation using either a mapping from 2D screen coordinates to 3D points on a sphere    or the standard approach mapping mouse displacements as rotations around camera's axes.
146c9e4494 various stuff in opengl demos such as a better model, stable trackball for the fly navigation mode, and started to put some GUI elements...
d3a70b7fac fix a numerical instability in Quaternion::slerp
703539110b add the missing templated version of block for sub-vectors
c41ceee750 2 typos
31c33b9ed4 started a small OpenGL demo making use of Eigen's geometry features
12e9de4abb fix stupid numerical stability issue in SVD::solve (though it is not yet as stable as LU with full pivoting)
6add33e2c2 fix warning
52406aecad * Extend a bit ParametrizedLine and move it to a separate file,   add unit-tests for it. * remove "using namespace std" in test/main.h such that the compilation   bug found today in SVD won't happen again.
c29c7b0ea9 Fix bugs reported by Timothy Hunter:  * CholeskyWithoutSqrt with 1x1 matrices  * .part<Diagonal>() Updated unit tests to handle these cases
e14aa8c8aa Add coeff-wise comparisons to scalar operators. You can now write:    mat.cwise() < 2 instead of:    mat.cwise() < MatrixType::Constant(mat.rows(), mat.cols(), 2)
59dc1da5bf Add a Select expression in the Array module which mimics a coeff-wise ?: operator. Example:   mat = (mat.cwise().abs().cwise() < Ones()).select(0,mat); replaces all small values by 0. (the scalar version is "s = abs(s)<1 ? 0 : s")
622f2d5eae trivial compilation fix in SVD
3bbd1b3114 Bugfix regarding alignent in Assign.h (updated map unit test to detect this bug) Anyway: LinearVectorization+CompleteUnrolling actually uses the InnerVectorization unrollers, so these two cases could be merged to a single one...
75649551c2 compilation fixes with MSVC
2a2c305c4d not yet
f52d119b9c Solve a big issue with data alignment and dynamic allocation: * add a WithAlignedOperatorNew class with overloaded operator new * make Matrix (and Quaternion, Transform, Hyperplane, etc.) use it   if needed such that "*(new Vector4) = xpr" does not failed anymore. * Please: make sure your classes having fixed size Eigen's vector   or matrice attributes inherit WithAlignedOperatorNew * add a ei_new_allocator STL memory allocator to use with STL containers.   This allocator really calls operator new on your types (unlike GCC's   new_allocator). Example:   std::vector<Vector4f> data(10);   will segfault if the vectorization is enabled, instead use:   std::vector<Vector4f,ei_new_allocator<Vector4f> > data(10); NOTE: you only have to worry if you deal with fixed-size matrix types with "sizeof(matrix_type)%16==0"...
d8df318d77 resurrected sparse triangular solver
8fb1678f0f Extended sparse unit-test: nested blocks and InnerIterators. Block specialization for sparse matrices. InnerIterators for Blocks and fixes in CoreIterators.
46fe7a3d9e if EIGEN_NICE_RANDOM is defined, the random functions will return numbers with few bits left of the comma and for floating-point types will never return zero. This replaces the custom functions in test/main.h, so one does not anymore need to think about that when writing tests.
49ff9b204c remove the conceptualy broken "NoShear" transformation traits, and rename NonAfine => Projective, GenericAffine => Affine, NoScaling => Isometry
6825c8dd6b QTransform conversion and doc
994629721a update of the geometry tutorial
d74916e4fe same thing with EIGEN_BINARY_DIR. Now the doc generation works from kdesupport.
c931867909 also use EIGEN_SOURCE_DIR here. according to grep this was the last place to change.
ff60c9ccb1 fix cmakelists: wrong assumption on CMAKE_SOURCE_DIR. One can now use EIGEN_SOURCE_DIR for that use, guaranteed to point to eigen2/ directory.
7e8aa63bb7 * Add Hyperplane::transform(Matrix/Transform) * Fix compilations with gcc 3.4, ICC and doxygen * Fix krazy directives (hopefully)
5c34d8e20a The discussed changes to Hyperplane, the ParametrizedLine class, and the API update in Regression...
5c8c09e021 add uniform scale/prescale functions in Tranform
9c450a52a2 Split Rotation.h to Rotation2D.h and RotationBase.h, and more code factorization based on RotationBase. Added notes about the main aim of the Translation and Scaling classes.
6ba991aa3a * added a RotationBase class following the CRT pattern   This allow code factorization and generic template specialization   of functions * added any_rotation * {Translation,Scaling,Transform} products methods * rewrite of the actually broken ToRoationMatrix helper class to   a global ei_toRotationMatrix function.
027ee14f31 api.kde.org is still bugged, let's do another try...
f1e6c56b77 * rename TranformationKnowledge to TransformTraits * apply the same principle to extractRotation and fix it to   extract a rotation corresponding to a positive scaling
236b7a545d update Transform::inverse() to take an optional argument stating whether the transformation is:    NonAffine, Affine (default), contains NoShear, contains NoScaling that allows significant speed improvements. If you like it, this concept could be applied to Transform::extractRotation (or to a more advanced decomposition function) and to Hyperplane::transformed() and maybe to some other places... e.g., I think a Transform::normalMatrix() function would not harm and warn user that the transformation of normals is not that trivial (I saw this mistake much too often)
9e7a9cde14 Add Scaling and Translation class as discussed on ML, still missing: * handling Quaternion, AngleAxis and Rotation2D, 2 options here:  1- make all of them inheriting a common base class Rotation such that we can     have a single version of operator* for all the rotation type (they all get converted to a matrix)  2- write a version for all type (so 3 rotations types * 3 for Transform,Translation and Scaling) * real documentation
13a9d93bc0 minor doc fixes
582c1b6c3a in doc for kde: fix project name and number, add the amssymb latex package
063d1bb811 tweak root/Mainpage.dox to make it compatible with kde's doxygen.sh script plus some hacks to compile the examples from doxygen... Hopefully, api.kde.org/eigen2 will be beautiful by tomorrow....
68fbd6f531 typos in bench/
6d841512c7 some hyperplane changes: - the coefficients are stored in a single vector - added transformation methods - removed Line* typedef since in 2D this is really an hyperplane   and not really a line... - HyperPlane => Hyperplane
409e82be06 doc and use sed to clean the class hierarchy instead of preprocessor directives.
7ea821d18e spelling + some krazy directives
80be1ea515 remove CoreDeclaration from the documentation
9b4d46c82e * Add an HyperPlane class in the Geometry module   with its respective unit-test.   Feel free to discuss the API on the ML. * Some bugfix in unitOrthogonal found by the hyperplane unit test.
ee2df6026a CoreDeclarations was removed
3ced3f91c2 * temporarily remove doxygen customization, we'll see if that fix api.kde.org   but I no hope, that would be too simple ! * added Rotation2D typedefs * remove CoreDeclarations header file
70266b4d05 doc + quick bug fix in Matrix ctor
f7de12de69 Missing inline keywords in AltiVec/PacketMath were making Avogadro fail to compile (duplicate symbols).
252e0c45b2 * missing cmake make_directory command * show svn revision number if available * fix warnings about unused argc/argv
a0cfe6ebdc remove double ;
8e8019d289 improvements in geometry tutorial
083ffa8c41 #undef vector after including altivec.h
12c6b45ae5 replace vector by __vector to prevent conflict with std::vector
63d3ef8204 * remove debug code commited by mistake in Assign * keep going on the doc: added a short geometry tutorial
00a8d314c5 * move memory related stuff to util/Memory.h * clean ugly doxygen inheritence of expressions * keep improving the documentation... slowly !
3e526dcdbd BTL:added trisolve action file
8f9d30cb20 * patch from Konstantinos Margaritis: bugfix in Altivec version of ei_pdiv   and various cleaning in Altivec code. Altivec vectorization have been re-enabled   in CoreDeclaration * added copy constructors in non empty functors because I observed weird behavior with   std::complex<>
7ce70e1437 various updates in BTL
d2b345e6a9 bugfix in test/packetmath.h
9e25dfcb2c Various doc improvements... including a owl in the API doc header.
da674fa032 Shut up two bogus gcc 4.3 warnings
5ac883b10a Fix a bug discovered in Avogadro: the AngleAxis*Matrix and the newer AngleAxis*Vector products were wrong because they returned the product _expression_    toRotationMatrix()*other; and toRotationMatrix() died before that expression would be later evaluated. Here it would not have been practical to NestByValue as this is a whole matrix. So, let them simply evaluate and return the result by value.
aa54d6bef0 arf, of course a meta-selector was required here
124ec71c50 allow constructing Transform from small-matrix (like fromPosOrientScale but with trivial Pos and Scale)
bf31d81aac argh, gael you're more clever than i remembered. diagonal product is optimized. so, i almost revert, just reordering to reduce # of load/store.
d3529e9c40 optimization: spare the 3x3 matrix product in fromPositionOrientationScale
6a36b5a6e0 add AngleAxis::operator*(const Vector3&)
6b591d06c5 add data() methods to Transform
b815b23e09 forgot to install Regression public header
854d6e8458 Documentation: fill the placeholders, add a custom CSS file, add a reference to the tutorial in the main page.
251ecc0ab9 Rename someOrthogonal to unitOrthogonal. Fix a bug in it, with dyn-size vectors of size <=3. Update doc and test to reflect that it always returns a unit vector.
aeca7a63f4 nothing to see here
bf17467ce0 bugfix in Product and ei_L2_block_traits
440664cd5d temporary fix of the pèrevious commit
ba100998bf * split Meta.h to Meta.h (generic meta programming) and XprHelper.h (relates to eigen mechanism) * added a meta.cpp unit test * EIGEN_TUNE_FOR_L2_CACHE_SIZE now represents L2 block size in Bytes (whence the ei_meta_sqrt...) * added a CustomizeEigen.dox page * added a TOC to QuickStartGuide.dox
bfe86b8fc0 * add documentation of the cool (?) "print with format" feature * move the ioformat.cpp test to a documentation example * rename IoFormat => IOFormat
c3f46cf55b need to commit this file before changing its name
2f6815df8e cmake fix
da5e644567 forgot to commit a file
f2f48b6560 * remove LargeBit and related stuff * replaced the Flags template parameter of Matrix by StorageOrder   and move it back to the 4th position such that we don't have to   worry about the two Max* template parameters * extended EIGEN_USING_MATRIX_TYPEDEFS with the ei_* math functions
2120fed849 * bug fixes in:  Dot, generalized eigen problem, singular matrix detetection in Cholesky * fix all numerical instabilies in the unit tests, now all tests can be run 2000 times   with almost zero failures.
312013a089 compile fix for code like Vector3d::Random().x()
0e60e22151 extended cwise unit tests to cover all Cwise API
8509668466 bugfix from Timothy Hunter s/ei_div/ei_pdiv
e0f627a7db s/Affine/Linear, thanks to Thomas Vaughan
f0394edfa7 * bugfix in SolveTriangular found by Timothy Hunter (did not compiled for very small fixed size matrices) * bugfix in Dot unroller * added special random generator for the unit tests and reduced the tolerance threshold by an order of magnitude   this fixes issues with sum.cpp but other tests still failed sometimes, this have to be carefully checked...
a95c1e190b patch from Konstantinos Margaritis: Altivec vectorization is resurrected !
95db4e9841 added SparseSetter doc
a814ebe180 fix a number of compiler errors and warnings with gcc 4.3. There was a missing #include<algorithm> so I'm not sure how it compiled at all for you :)
db628c6ad7 Reimplement fitHyperplane such that the fit is done in a total LS sense (use eigen decomposition). Added optional feedback on the stability of the actual fit (think about fitting a 3D plane on data lying on a line...)
0998c51d1f - remove the ASM macro as in fact Gael had been removing all the remaining   asm("...") from the code while fixing MSVC compat (so your changes crossed   one another). - move the pragma warning to CoreDeclarations, it's the right place to do early   platform checks.
58061f5ffc extend sparse unit test and more bugfix, major todo: finilize the SparseSetter
60804c306d *patch by Daniel Gomez:  - bugfix in SparseMatrix  - add a sparse unit test * renamed Transform::affine => linear
082e309d2a patch by Patrick Spendrin: fix MSVC compatibility
67813e01bf disable the vectorization of div for AltiVec
f729fc1d70 * Add the possibility to customize the output of matrices, e.g.:    IoFormat OctaveFmt(4, AlignCols, ", ", ";\n", "", "", "[", "]");    cout << mat.format(OctaveFmt);   The first "4" is the precision.   Documentation missing. * Some compilation fixes
591d497b84 add resize() methods to Map, doing nothing but assertions. This is useful in Krita where I call lu().solve() with a Map object as result. As solve() resizes the result, this was needed.
84a39e04bf added Sub matrices section and a couple of cross ref to the API doc
fd681507dc Add a packetmath unit test, re-enable the comma-initializer unit test, and bug fix in PacketMath/SSE
ff8e98c974 Fix bugs in Sum.h, add unit-test
c501c7a4ef * Fix CMakeLists.txt issue with SVD * Fix on stack memory allocation issues
752ec27293 minor bugfix found using gcc-4.0
8afaeb4ad5 doc fixes, and extended Basic Linear Algebra and Reductions sections
db8fbf2b39 some updated of the quick start guide
c705c38a23 * it's \returns not \Returns * add some explanations in the typedefs page * expand a bit the new QuickStartGuide. Some placeholders (not a pb since it's not even yet linked to from other pages). The point I want to make is that it's super important to have fully compilable short programs (even with compile instructions for the first one) not just small snippets, at least at the beginning. Let's start with examples of compilable programs.
8551fe28ce fix a few typos
7aba51ce53 * Added .all() and .any() members to PartialRedux * Bug fixes in euler angle snippet, Assign and MapBase * Started a "quick start guide" (draft state)
c6674ab076 missing SVD header file
104f8fd36e Added a SVD module:  - the decompostion code has been adfapted from JAMA  - handles non square matrices of size MxN with M>=N  - does not work for complex matrices  - includes a solver where the parts corresponding to zero singular values are set to zero
54137f1ca7 * fix bug found by Boudewijn Rempt: no CMakeLists in arch/ subdir * fix warning in SolveTriangular
a6d387a359 Various compilation fixes for MSVC 9. All tests compile but some still fail at runtime in ei_aligned_free() (even without vectorization).
9466e5f94e * doc improvements in Cwise and PartialRedux:   - 33 new snippets   - unfuck doxygen output in Cwise (issues with function macros)   - more see-also links from outside, making Cwise more discoverable * rename matrixNorm() to operatorNorm(). There are many matrix norms   (the L2 is another one) but only one is called the operator norm.   Risk of confusion with keyword operator is not too scary after all.
95dd09bea6 * revert the previous interface change in solveTriangular (pointer vs reference) * remove the cast operators in the Geometry module: they are replaced by constructors   and new operator= in Matrix * extended the operations supported by Rotation2D * rewrite in solveTriangular:   - merge the Upper and Lower specializations   - big optimization of the path for row-major triangular matrices
e778ae2559 only use alloca on linux. Use malloc on other platforms. Needed for mingw compatibility.
baf0cffedd *add operator()(int) for vectors, synonymous to operator[](int).  I don't see any reason not to allow it, it doesn't add much code, and  it makes porting from eigen1 easier. *expand tests/basicstuff to first test coefficient access methods
95a1283bf6 fix compilation of unit-tests when cmake is run on kdesupport/ parent directory
239b47e033 *make Eigen2 install to prefix/include/eigen2/Eigen *Add FindEigen2.cmake module in kdelibs
5546e963c9 bugfix in CholeskyWithoutSquareRoot::solve found by Timothy Hunter
d9d69de382 updated tutorial
3bc2746928 Copy eigen2 into kdesupport, alongside eigen1 for now, co-installable, will remove eigen1 once no code uses it anymore (soon).
8a3e6b1ee2 change solveTriangularInPlace() to take a pointer as input (as discussed on IRC). extended the documentation of the triangular solver.
13ad88736e last small fixes, this is alpha6, eigen2 is now ready for eigen1 apps to port to.
f04c1cb774 Complete LU documentation
17ec407ccd * add Regression module, from eigen1, improved, with doc and unit-test. * fix .normalized() so that Random().normalized() works; since the return type became complicated to write down i just let it return an actual vector, perhaps not optimal. * add Sparse/CMakeLists.txt. I suppose that it was intentional that it didn't have CMakeLists, but in <=2.0 releases I'll just manually remove Sparse.
55e8d670ce Renamed allowAligned() => forceAligned() and added the constants ForceAligned and AsRequested for the PacketAccess parameter of MapBase. Updated respective documentation.
b13148c358 renamed inverseProduct => solveTriangular
d6e88f8155 * add LU unit-test. Seems like we have very good numerical stability! * some cleanup, and grant me a copyright line on the determinant test.
4fa40367e9 * Big change in Block and Map:   - added a MapBase base xpr on top of which Map and the specialization     of Block are implemented   - MapBase forces both aligned loads (and aligned stores, see below) in expressions     such as "x.block(...) += other_expr" * Significant vectorization improvement:  - added a AlignedBit flag meaning the first coeff/packet is aligned,    this allows to not generate extra code to deal with the first unaligned part  - removed all unaligned stores when no unrolling  - removed unaligned loads in Sum when the input as the DirectAccessBit flag * Some code simplification in CacheFriendly product * Some minor documentation improvements
becbeda50a * reimplement the general case of inverse() on top of LU. Advantages:   - removes much code   - 2.5x faster (even though LU uses complete pivoting contrary to what inverse used to do!)   - there _were_ numeric stability problems with the partial pivoting approach of inverse(), with 200x200 matrices inversion failed almost half of the times (overflow). Now these problems are solved thanks to complete pivoting.
681e944670 *implement LU solver (solves any rectangular system) *in test/CMakeLists : modify EI_ADD_TEST so that 2nd argument is additional compiler flags. used to add -O2 to test_product_large so it doesn't take forever.
a41f2b4216 * fix bug in SwapWrapper : store the wrapped expression by reference * optimize setIdentity: when the matrix is large enough it is better to   setZero() and overwrite the diagonal * start of LU solver, disabled for now
9bbe396939 forgot to remove that old code
5f350448e1 - add kernel computation using the triangular solver - take advantage of the fact that our LU dec sorts the eigenvalues of U in decreasing order - add meta selector in determinant
58ba9ca72f LU: remove partial-pivoting path (moderately useful since it's does not allow to easily get the rank), fix a bug (which could have been triggered by matrices having coefficients of very different magnitudes). Part: add an assert to prevent hard to find bugs Swap: update comments
88bb2087c1 New implementation of Swap as discussed, reusing Assign. Makes LU run 10% faster overall.
c94be35bc8 introduce copyCoeff and copyPacket methods in MatrixBase, used by Assign, in preparation for new Swap impl reusing Assign code. remove last remnant of old Inverse class in Transform.
09ef7db9d9 Add partial pivoting runtime option to LU.
e741b7beca further big perf improvement in Inverse
79a0feee68 big performance improvement in inverse and LU
a7a05382d1 Add a LU decomposition action in BTL and various cleaning in BTL. For instance all per plot settings have been moved to a single file, go_mean now takes an optional second argument "tiny" to generate plots for tiny matrices, and output of comparison information wrt to previous benchs (if any).
c2f8ecf466 * LU decomposition, supporting all rectangular matrices, with full pivoting for better numerical stability. For now the only application is determinant. * New determinant unit-test. * Disable most of Swap.h for now as it makes LU fail (mysterious). Anyway Swap needs a big overhaul as proposed on IRC. * Remnants of old class Inverse removed. * Some warnings fixed.
f81dfcf00b fix two perf issues in product. fix positive definite test in Cholesky. remove #include <cstring> in CoreDeclaration.
49ae3fca89 fix compile errors with gcc 4.3: unresolved func call to ei_cache_friendly_product, and undeclared memcpy
6d11a07e5e Added a ei_palign function align a packet from two others. This allows much faster code dealing with unligned as in the updated matrix-vector product functions.
55aeb1f83a Optimizations:  * faster matrix-matrix and matrix-vector products (especially for not aligned cases)  * faster tridiagonalization (make it using our matrix-vector impl.) Others:  * fix Flags of Map  * split the test_product to two smaller ones
b32b186c14 removed the packet specializations of some functors (GCC generates better code without those "optimizations")
842c4f8bfa Several compilation fixes for MSVC and NVCC, basically: - added explicit enum to int conversion where needed - if a function is not defined as declared and the return type is "tricky"   then the type must be typedefined somewhere. A "tricky return type" can be:   * a template class with a default parameter which depends on another template parameter   * a nested template class, or type of a nested template class
e0215ee510 BTL: - added tridiagonalization and hessenberg decomposition bench      - added GOTO library
44d95e0540 fix some internal asserts in CacheFrinedlyProduct
02a7efa910 forgot to include this file in previous commit
93115619c2 * updated benchmark files according to recent renamings * various improvements in BTL including trisolver and cholesky bench
e9e5261664 Fix a couple issues introduced in the previous commit: * removed DirectAccessBit from Part * use a template specialization in inverseProduct() to transform a Part xpr to a Flagged xpr
e77ccf2928 * Rewrite the triangular solver so that we can take advantage of our efficient matrix-vector products:     => up to 6 times faster ! * Added DirectAccessBit to Part * Added an exemple of a cwise operator * Renamed perpendicular() => someOrthogonal() (geometry module) * Fix a weired bug in ei_constant_functor: the default copy constructor did not copy   the imaginary part when the single member of the class is a complex...
2940617e6f bugfix in some internal asserts of CacheFriendlyProduct
f997a3e902 update the inverse test a little make use of static asserts in Map fix 2 warnings in CacheFriendlyProduct: unused var 'Vectorized'
b466c266a0 * Fix some complex alignment issues in the cache friendly matrix-vector products. * Minor update of the cores of the Cholesky algorithms to make them more friendly   wrt to matrix-vector products => speedup x5 !
172000aaeb Add .perpendicular() function in Geometry module (adapted from Eigen1) Documentation:  * add an overview for each module.  * add an example for .all() and Cwise::operator<
516db2c3b9 Fix compilation issues with icc and g++ < 4.1. Those include:  - conflicts with operator * overloads  - discard the use of ei_pdiv for interger    (g++ handles operators on __m128* types, this is why it worked)  - weird behavior of icc in fixed size Block() constructor complaining    the initializer of m_blockRows and m_blockCols were missing while    we are in fixed size (maybe this hide deeper problem since this is a    recent one, but icc gives only little feedback)
c10f069b6b * Merge Extract and Part to the Part expression.   Renamed "MatrixBase::extract() const" to "MatrixBase::part() const" * Renamed static functions identity, zero, ones, random with an upper case   first letter: Identity, Zero, Ones and Random.
ce425d92f1 Various documentation improvements, in particualr in Cholesky and Geometry module. Added doxygen groups for Matrix typedefs and the Geometry module
269f683902 Add cholesky's members to MatrixBase Various documentation improvements including new snippets (AngleAxis and Cholesky)
6e2c53e056 Added an automatically generated list of selected examples in the documentation. Added the custom gemetry_module tag, and use it.
05ad083467 Added MatrixBase::Unit*() static function to easily create unit/basis vectors. Removed EulerAngles, addes typdefs for Quaternion and AngleAxis, and added automatic conversions from Quaternion/AngleAxis to Matrix3 such that:  Matrix3f m = AngleAxisf(0.2,Vector3f::UnitX) * AngleAxisf(0.2,Vector3f::UnitY); just works.
7245c63067 Complete rewrite of partial reduction according to mailing list discussions.
8b4945a5a2 add some static asserts, use them, fix gcc 4.3 warning in Product.h.
22a816ade8 * Fix a couple of issues related to the recent cache friendly products * Improve the efficiency of matrix*vector in unaligned cases * Trivial fixes in the destructors of MatrixStorage * Removed the matrixNorm in test/product.cpp (twice faster and   that assumed the matrix product was ok while checking that !!)
62ec1dd616 * big rework of Inverse.h:   - remove all invertibility checking, will be redundant with LU   - general case: adapt to matrix storage order for better perf   - size 4 case: handle corner cases without falling back to gen case.   - rationalize with selectors instead of compile time if   - add C-style computeInverse() * update inverse test. * in snippets, default cout precision to 3 decimal places * add some cmake module from kdelibs to support btl with cmake 2.4
b970a9c8aa trivial fix in EulerAngles constructor
c8cbc1665e enhancements of the plot generator: - removed the ugly X11 and PNG gnuplots terminals - use enhanced postscript terminal - use imagemagick to generate the png files (with compression) - disable the fortran impl by default since it is as meaningless as a "C impl" - update line settings
99a625243f Optimization: added super efficient rowmajor * vector product (and vector * colmajor). It basically performs 4 dot products at once reducing loads of the vector and improving instructions scheduling. With 3 cache friendly algorithms, we now handle all product configurations with outstanding perf for large matrices.
51e6ee39f0 SVN_SILENT trivial fix
bd0183f850 fix a cmake issue in FindTvmet and FindMKL
e979e6485f another occurence of that little cmake fix
861d18d553 * Optimization: added a specialization of Block for xpr with DirectAccessBit * some simplifications and fixes in cache friendly products
1bbaea9885 little cmake fix
10c4e36b39 disable MKL check and fortran for cmake <2.6
ed6e07b2f6 various improvements of the plot generator in BTL
8233de8b69 various minor updates in the benchmark suite like non inlining of some functions as well as the experimental C code used to design efficient eigen's matrix vector products.
b7bd1b3446 Add a *very efficient* evaluation path for both col-major matrix * vector and vector * row-major products. Currently, it is enabled only is the matrix has DirectAccessBit flag and the product is "large enough". Added the respective unit tests in test/product/cpp.
6f71ef8277 resurrected tvmet, added mt4, intel's MKL and handcoded vectorized backends in the benchmark suite
2b53fd4d53 some performance fixes in Assign.h reported by Gael. Some doc update in Cwise.
7b4c6b8862 in BTL: a specific bench/action can be selected at runtime, e.g.:   BTL_CONFIG="-a ata" ctest -V -R eigen   run the all benchmarks having "ata" in their name for all   libraries matching the regexp "eigen"
c9b046d5d5 * added optimized paths for matrix-vector and vector-matrix products   (using either a cache friendly strategy or re-using dot-product   vectorized implementation) * add LinearAccessBit to Transpose
25904802bc raah, results were corrupted by overflow. Now slice vectorization is about a +25% speedup which is still nice as i expected zero or even negative benefit.
8f21a5e862 add benchmark for slice vectorization... expected it to be little or zero benefit... turns out to be 20x speedup. Something is wrong.
28539e7597 imported a reworked version of BTL (Benchmark for Templated Libraries). the modifications to initial code follow: * changed build system from plain makefiles to cmake * added eigen2 (4 versions: vec/novec and fixed/dynamic), GMM++, MTL4 interfaces * added "transposed matrix * vector" product action * updated blitz interface to use condensed products instead of hand coded loops * removed some deprecated interfaces * changed default storage order to column major for all libraries * new generic bench timer strategy which is supposed to be more accurate * various code clean-up
5f55ab524c * added a lazyAssign overload skipping .lazy() such that c = (<xpr>).lazy() such that   lazyAssign overloads of <xpr> are automatically called (this also reduces assign instansiations)
783eb6da9b I forgot that the previous commit needed minor changes outside the bench folder
77a622f2bb add Cholesky and eigensolver benchmark
6f09d3a67d - many updates after Cwise change - fix compilation in product.cpp with std::complex - fix bug in MatrixBase::operator!=
f5791eeb70 the big Array/Cwise rework as discussed on the mailing list. The new API can be seen in Eigen/src/Core/Cwise.h.
c910c517b3 fix issues in previously added additionnal product tests
a9d319d44f * do the ActualPacketAccesBit change as discussed on list * add comment in Product.h about CanVectorizeInner * fix typo in test/product.cpp
8463b7d3f4 * fix compilation issue in Product * added some tests for product and swap * overload .swap() for dynamic-sized matrix of same size
9433df83a7 * resurected Flagged::_expression used to optimize m+=(a*b).lazy()   (equivalent to the GEMM blas routine) * added a GEMM benchmark
95549007b3 * fix error in divergence test, now it is even faster * add comments in render() in case anyone ever reads that :P
a356ebd47d interleaved rendering balances the load better
56d03f181e * multi-threaded rendering * increased number of iterations, with more iterations done before testing divergence. results in x2 speedup from vectorization.
cacf986a7f - use double precision to store the position / zoom / other stuff - some temporary fix to get a +50% improvement from vectorization until   we have vectorisation for comparisons and redux
37a50fa526 * added an in-place version of inverseProduct which   might be twice faster fot small fixed size matrix * added a sparse triangular solver (sparse version   of inverseProduct) * various other improvements in the Sparse module
fbdecf09e1 fix little bug in computation of max_iter
97a1038653 improve greatly mandelbrot demo: - much better coloring - determine max number of iterations and choice between float and double   at runtime based on zoom level - do draft renderings with increasing resolution before final rendering
027818d739 * added innerSize / outerSize functions to MatrixBase * added complete implementation of sparse matrix product   (with a little glue in Eigen/Core) * added an exhaustive bench of sparse products including GMM++ and MTL4   => Eigen outperforms in all transposed/density configurations !
6917be9113 add mandelbrot demo
55e08f7102 fix breakage from my last commit
844f69e4a9 * update CMakeLists, only build instantiations if TEST_LIB is defined * allow default Matrix constructor in dynamic size, defaulting to (1, 1), this is convenient in mandelbrot example.
6de4871c8c fix a couple of issues in the new Map.h
e27b2b95cf * rework Map, allow vectorization * rework PacketMath and DummyPacketMath, make these actual template specializations instead of just overriding by non-template inline functions * introduce ei_ploadt and ei_pstoret, make use of them in Map and Matrix * remove Matrix::map() methods, use Map constructors instead.
e5d301dc96 various work on the Sparse module: * added some glue to Eigen/Core (SparseBit, ei_eval, Matrix) * add two new sparse matrix types:    HashMatrix: based on std::map (for random writes)    LinkedVectorMatrix: array of linked vectors    (for outer coherent writes, e.g. to transpose a matrix) * add a SparseSetter class to easily set/update any kind of matrices, e.g.:    { SparseSetter<MatrixType,RandomAccessPattern> wrapper(mymatrix);      for (...) wrapper->coeffRef(rand(),rand()) = rand(); } * automatic shallow copy for RValue * and a lot of mess ! plus: * remove the remaining ArrayBit related stuff * don't use alloca in product for very large memory allocation
c5bd1703cb change derived classes methods from "private:_method()" to "public:method()" i.e. reimplementing the generic method() from MatrixBase. improves compilation speed by 7%, reduces almost by half the call depth of trivial functions, making gcc errors and application backtraces nicer...
25ba9f377c * add bench/benchVecAdd.cpp by Gael, fix crash (ei_pload on non-aligned) * introduce packet(int), make use of it in linear vectorized paths   --> completely fixes the slowdown noticed in benchVecAdd. * generalize coeff(int) to linear-access xprs * clarify the access flag bits * rework api dox in Coeffs.h and util/Constants.h * improve certain expressions's flags, allowing more vectorization * fix bug in Block: start(int) and end(int) returned dyn*dyn size * fix bug in Block: just because the Eval type has packet access   doesn't imply the block xpr should have it too.
5b0da4b778 make use of ei_pmadd in dot-product: will further improve performance on architectures having a packed-mul-add assembly instruction.
3b94436d2f * vectorize dot product, copying code from sum. * make the conj functor vectorizable: it is just identity in real case,   and complex doesn't use the vectorized path anyway. * fix bug in Block: a 3x1 block in a 4x4 matrix (all fixed-size)   should not be vectorizable, since in fixed-size we are assuming   the size to be a multiple of packet size. (Or would you prefer   Vector3d to be flagged "packetaccess" even though no packet access   is possible on vectors of that type?) * rename:   isOrtho for vectors ---> isOrthogonal   isOrtho for matrices ---> isUnitary * add normalize() * reimplement normalized with quotient1 functor
c9560df4a0 * add ei_pdiv intrinsic, make quotient functor vectorizable * add vdw benchmark from Tim's real-world use case
ac9aa47bbc optimize linear vectorization both in Assign and Sum (optimal amortized perf)
ea1990ef3d add experimental code for sparse matrix:  - uses the common "Compressed Column Storage" scheme  - supports every unary and binary operators with xpr template    assuming binaryOp(0,0) == 0 and unaryOp(0) = 0 (otherwise a sparse    matrix doesnot make sense)  - this is the first commit, so of course, there are still several shorcommings !
03d19f3bae quick temporary fix for a perf issue we just identified with vectorization.... now the sum benchmark runs 3x faster with vectorization than without.
32596c5e9e add benchmark for sum
dc9206cec5 split sum away from redux and vectorize it. (could come back to redux after it has been vectorized, and could serve as a starting point for that) also make the abs2 functor vectorizable (for real types).
8a967fb17c * implement slice vectorization. Because it uses unaligned   packet access, it is not certain that it will bring a performance   improvement: benchmarking needed. * improve logic choosing slice vectorization. * fix typo in SSE packet math, causing crash in unaligned case. * fix bug in Product, causing crash in unaligned case. * add TEST_SSE3 CMake option.
8cef541b5a forgot to add the unit test array.cpp
32c5ea388e work on rotations in the Geometry module:  - convertions are done trough constructors and operator=  - added a EulerAngles class
574416b842 Override MatrixBase::eval() since matrices don't need to be evaluated, it is enough to just read them.
54238961d6 * added a pseudo expression Array giving access to:    - matrix-scalar addition/subtraction operators, e.g.:        m.array() += 0.5;    - matrix/matrix comparison operators, e.g.:       if (m1.array() < m2.array()) {} * fix compilation issues with Transform and gcc < 4.1
e735692e37 move "enum" back to "const int" int ei_assign_impl: in fact, casting enums to int is enough to get compile time constants with ICC.
fb4a151982 * more cleaning in Product * make Matrix2f (and similar) vectorized using linear path * fix a couple of warnings and compilation issues with ICC and gcc 3.3/3.4   (cannot get Transform compiles with gcc 3.3/3.4, see the FIXME)
82c3cea1d5 * refactoring of Product:   * use ProductReturnType<>::Type to get the correct Product xpr type   * Product is no longer instanciated for xpr types which are evaluated   * vectorization of "a.transpose() * b" for the normal product (small and fixed-size matrix)   * some cleanning * removed ArrayBase
5dbfed1902 fix two bugs dicovered by the previous commit.
bb1f4e44f1 * Block: row and column expressions in the inner direction   now have the Like1D flag.
9857764ae7 aaargh.
478bfaf228 fix bug in computation of unrolling limit: div instead of mul
c905b31b42 * Big rework of Assign.h: ** Much better organization ** Fix a few bugs ** Add the ability to unroll only the inner loop ** Add an unrolled path to the Like1D vectorization. Not well tested. ** Add placeholder for sliced vectorization. Unimplemented.
bc0c7c57ed Added an extensible mechanism to support any kind of rotation representation in Transform via the template static class ToRotationMatrix. Added a lightweight AngleAxis class (similar to Rotation2D).
0ee6b08128 * split Product to a DiagonalProduct template specialization   to optimize matrix-diag and diag-matrix products without   making Product over complicated. * compilation fixes in Tridiagonalization and HessenbergDecomposition   in the case of 2x2 matrices. * added an Orientation2D small class with similar interface than Quaternion   (used by Transform to handle 2D and 3D orientations seamlessly) * added a couple of features in Transform.
fbbd8afe30 Started a Transform class in the Geometry module to represent homography. Fix indentation in Quaternion.h
4af7089ab8 * Added a generalized eigen solver for the selfadjoint case.   (as new members to SelfAdjointEigenSolver)   The QR module now depends on Cholesky. * Fix Transpose to correctly preserve the *TriangularBit.
f07f907810 Add QR and Cholesky module instantiations in the lib. To try it with the unit tests set the cmake variable TEST_LIB to ON.
53289a8b64 * even though the _Flags default to the corrected value, still correct   them in the ei_traits, so that they're guaranteed even if the user   specified his own non-default flags (like before).
c90c77051f * make the _Flags template parameter of Matrix default to the corrected   flags. This ensures that unless explicitly messed up otherwise,   a Matrix type is equal to its own Eval type. This seriously reduces   the number of types instantiated. Measured +13% compile speed, -7%   binary size.
e3fac69f19 Added a Hessenberg decomposition class for both real and complex matrices. This is the first step towards a non-selfadjoint eigen solver. Notes:  - We might consider merging Tridiagonalization and Hessenberg toghether ?  - Or we could factorize some code into a Householder class (could also be shared with QR)
4dd57b585d * rewrite of the QR decomposition:   - works for complex   - allows direct access to the matrix R * removed the scale by the matrix dimensions in MatrixBase::isMuchSmallerThan(scalar)
eb7b7b2cfc * remove Cross product expression: MatrixBase::cross() now returns a temporary   which is even better optimized by the compiler. * Quaternion no longer inherits MatrixBase. Instead it stores the coefficients   using a Matrix<> and provides only relevant methods.
6998037930 * move some compile time "if" to their respective unroller (assign and dot) * fix a couple of compilation issues when unrolling is disabled * reduce default unrolling limit to a more reasonable value
a172385720 Updated fuzzy comparisons to use L2 norm as all my experiments tends to show L2 norm works very well here. (the legacy implementation is still available via a preprocessor token  to allow further experiments if needed...)
8769bfd9aa fix a compilation issue in non debug mode
869394ee8b fix some compile errors with gcc 4.3, some warnings, some documentation
2126baf9dc add an optimized path for the tridiagonalization of a 3x3 matrix. (useful for plane fitting, and covariance analysis of 3D data)
48262b9734 added a static assertion mechanism (see notes in Core/util/StaticAssert.h for details)
60726f91a9 hack to to make the nomalloc unit test compiles with -pedantic
42ad9c4352 update of the eigeinsolver unit test to check complex
a0cff1a295 fix eigenvectors computations :)
915587d03d * add CommaInitializer::finished to allow the use of (Matrix3() << v0, v1, v2).finished()   as an argument of a function. Other possibilities for the name could be "end" or "matrix" ?? * various update in Quaternion, in particular I added a lot of FIXME about the API options,   these have to be discussed and fixed.
196f38f5db improved Quaternion class:  - Euler angles and angle axis conversions,  - stable spherical interpolation  - documentation  - update the respective unit test
bcb32839c2 fix building of examples
a9cf229e15 add a geometry unit test and fix a couple of typo in Quaternion.h
8de4d92b70 - get the doc of the enums in MatrixBase right - get the doc of the flags in Constants right - finally give up with SEPARATE_MEMBER_PAGES: it triggers too big   Doxygen bugs, and produces too many small pages. So we have one   huge page for MatrixBase at currently 300kb and going up, so the   solution especially for users with low bandwidth will be to provide   an archive of the html documentation.
366971bea4 * start of the Geometry module with a cross product and quaternion expressions   (haven't tried them yet) * applied the meta selector rule to MatrixBase::swap()
75de41a00b big changes in Doxygen configuration; work around bug with doxygen parsing of initialized enum values showing the last word the initializer instead of the actual enum value's name; add some more docs.
ac88feebb7 work around Doxygen bug triggered by r814874, which caused many classes to disappear from the docs.
6209bbe286 doc improvements: fix linking in Mainpage.dox, improved Doxyfile.in
f2ebbee274 added unit tests for sizeof and dynamic memory allocation
54ae2ac7e8 Added the computation of eigen vectors in the symmetric eigen solver. However the eigen vectors are not correct yet, but I really cannot find the problem.
3b0523041a since m*m.adjoint() is positive, so are its eigenvalues, so no need for cwiseAbs()
0444e3601a - add MatrixBase::eigenvalues() convenience method - add MatrixBase::matrixNorm(); in the non-selfadjoint case, we reduce to the   selfadjoint case by using the "C*-identity" a.k.a. 	norm of x = sqrt(norm of x * x.adjoint())
92b7e2d6a1 fix a couple of issues making the eigensolver test compile and run without aborting on an assert. Had to fix a stupid bug in Block -- very strange we hadn't hit it before.
001b01a290 Rewrite from scratch of the eigen solver for symmetric matrices which now supports selfadjoint matrix. The implementation follows Golub's famous book.
06752b2b77 * added a Tridiagonalization class for selfadjoint matrices * added MatrixBase::real() * added the ability to extract a selfadjoint matrix from the   lower or upper part of a matrix, e.g.:     m.extract<Upper|SelfAdjoint>()   will ignore the strict lower part and return a selfadjoint.   This is compatible with ZeroDiag and UnitDiag.
dc5fd8dfff meagre outcome for so much time spent! * fix inverse() bug discovered by Gael's test * fix warnings introduced by the new Diagonal stuff * update Doxyfile to v1.5.6
d5cbb1d002 added a unit test for Inverse discovered that m1 == m1.inverse().inverse() fails though m1.inverse()*m1 == I
64169389ed added an *optional* Eigen2 dynamic library. it allows the possiblity to save some compilation time by linking to it *and* defining the token EIGEN_EXTERN_INSTANCIATIONS
fcf4457b78 added optimized matrix times diagonal matrix product via Diagonal flag shortcut.
310f7aa096 moved purely "array" related stuff to a new module Array. This include:  - cwise Pow,Sin,Cos,Exp...  - cwise Greater and other comparison operators  - .any(), .all() and partial reduction  - random
a2f71f9d7e updated EigenSolver to use .coeff / .coeffRef
c9fb248c36 simply a bit the basic product moving dynamic loops to the corresponding special case of the unrollers. the latter ones are therefore re-named *product_impl.
f5e599e489 * replace compile-time-if by meta-selector in Assign.h   as it speed up compilation. * fix minor typo introduced in the previous commit
e2ac5d244e Added ArrayBit to get the ability to manipulate a Matrix like a simple scalar. In particular this flag changes the behavior of operator* to a coeff wise product.
b501e08d81 now the unit-tests (hence all of Eigen) don't depend on Qt at all anymore.
486fdb26a1 many small fixes and documentation improvements, this should be alpha5.
c1559d3079 * updated the assignement operator macro so that overloads   in MatrixBase work * removed product_selector and cleaned Product.h a bit * cleaned Assign.h a bit
8711e26c8a * change Flagged to take into account NestByValue only * bugfix in Assign and cache friendly product (weird that worked before) * improved argument evaluation in Product
73084dc754 * added _*coeffRef members in NestedByValue * added ConjugateReturnType and AdjointReturnType that are type-defined to Derived&   and Transpose<Derived> if the scalar type is not complex: this avoids abusive copies in   the cache friendly Product
f54760c889 hehe, the complicated nesting scheme in Flagged in the previous commit was a sign that we were doing something wrong. In fact, having NestByValue as a special case of Flagged was wrong, and the previous commit, while not buggy, was inefficient because then when the resulting NestByValue xpr was nested -- hence copied -- the original xpr which was already nested by value was copied again; hence instead of 1 copy we got 3 copies. The solution was to ressuscitate the old Temporary.h (renamed NestByValue.h) as it was the right approach.
aebecae510 * find the proper way of nesting the expression in Flagged:   finally that's more subtle than just using ei_nested, because when   flagging with NestByValueBit we want to store the expression by value   already, regardless of whether it already had the NestByValueBit set. * rename temporary() ----> nestByValue() * move the old Product.h to disabled/, replace by what was ProductWIP.h * tweak -O and -g flags for tests and examples * reorder the tests -- basic things go first * simplifications, e.g. in many methoeds return derived() and count on   implicit casting to the actual return type. * strip some not-really-useful stuff from the heaviest tests
559233c73e * fix the QR module to use extract/part instead of the previous triangular stuff * added qr and eigensolver tests * fix a compilation warning in Matrix copy constructor
5aa00f6870 part 2 of big change: rename Triangular.h -> Extract.h (svn required to commit that separately)
953efdbfe7 - introduce Part and Extract classes, splitting and extending the former   Triangular class - full meta-unrolling in Part - move inverseProduct() to MatrixBase - compilation fix in ProductWIP: introduce a meta-selector to only do   direct access on types that support it. - phase out the old Product, remove the WIP_DIRTY stuff. - misc renaming and fixes
8f1fc80a77 some documentation fixes (Cwise* and Cholesky)
94e1629a1b * improved product performance:  - fallback to normal product for small dynamic matrices  - overloaded "c += (a * b).lazy()" to avoid the expensive and useless temporary and setZero()    in such very common cases. * fix a couple of issues with the flags
106a0c1bef restored the product test
9ab6e186eb remove Like1DArrayBit in Transpose
522e24f2d7 update of the testing framework: replaced the QTestLib framework my custom macros and a (optional) custom script to run the tests from ctest.
c6789a279c Fix compilation issues with MSVC and NVCC. Added a few typedef of complex return types in MatrixBase (Needed by MSVC)
5da60897ab Introduce generic Flagged xpr, remove already Lazy.h and Temporary.h Rename DefaultLostFlagMask --> HerediraryBits
fd2e9e5c3c * Clean a bit the eigenvalue solver: if the matrix is known to be   selfadjoint at compile time, then it returns real eigenvalues. * Fix a couple of bugs with the new product.
3eccfd1a78 -fix certain #includes -fix CMakeLists, public headers weren't getting installed
4317fad869 * Added several cast to int of the enums (needed for some compilers) * Fix a mistake in CwiseNullary. * Added a CoreDeclarions header that declares only the forward declarations   and related basic stuffs.
678f18fce4 put inline keywords everywhere appropriate. So we don't need anymore to pass -finline-limit=1000 to gcc to get good performance. By the way some cleanup.
f0eb3d2d3b updated product test to carefully test all scalar types and fix an issue in the triangular test
45cda6704a * Draft of a eigenvalues solver   (does not support complex and does not re-use the QR decomposition)
dca416cace move arch-specific code to arch/SSE and arch/AltiVec subdirs. rename the noarch PacketMath.h to DummyPacketMath.h
3562b01105 * Give Konstantinos a copyright line * Fix compilation of Inverse.h with vectorisation * Introduce EIGEN_GNUC_AT_LEAST(x,y) macro doing future-proof (e.g. gcc v5.0) check * Only use ProductWIP if vectorisation is enabled * rename EIGEN_ALWAYS_INLINE -> EIGEN_INLINE with fall-back to inline keyword * some cleanup/indentation
4f6d7abc87 only include SSE3 headers if compiling with SSE3 support
4754fa4868 removed "sort brief" in doxygen documentation
bf5326c3ca * Added ReferencableBit flag to known if coeffRef is available.   (needed by the new product implementation) * Make the packet* members template to support aligned and unaligned   access. This makes Block vectorizable. Combined with ReferencableBit,   we should be able to determine at runtime (in some specific cases) if   an aligned vectorization is possible or not. * Improved the new product implementation to robustly handle all cases,   it now passes all the tests. * Renamed the packet version ei_predux to ei_preduxp to avoid name collision.
64c49de7ba * split PacketMath.h to SSE and Altivec specific files * improved the flexibility of the new product implementation,   now all sizes seems to be properly handled.
46fa4c713f * Started support for unaligned vectorization. * Introduce a new highly optimized matrix-matrix product for large   matrices. The code is still highly experimental and it is activated   only if you define EIGEN_WIP_PRODUCT at compile time.   Currently the third dimension of the product must be a factor of   the packet size (x4 for floats) and the right handed side matrix   must be column major.   Moreover, currently c = a*b; actually computes c += a*b !!   Therefore, the code is provided for experimentation purpose only !   These limitations will be fixed soon or later to become the default   product implementation.
8c6007f80e * Patch by Konstantinos Margaritis: AltiVec vectorization. * Fix several warnings, temporarily disable determinant test.
0545df2149 slighly improved the cache friendly product to use mul-add only
a6655dd91a added packet mul-add function (ei_pmad) and updated Product to use it. this change nothing for current SSE architecture but might be helpful for altivec/cell and up comming AMD processors.
102e029dad Removed ei_pload1, use posix_memalign to allocate aligned memory, and make Product ok when only one side is vectorizable (and the product is still vectorized)
e19f9bc523 added a test for triangular matrices
890a8de962 Make products always eval into expressions. Improves performance in benchmark. Still not as fasts as explicit eval(), strangely.
ef5b20bc50 fix flag and cost computations for nested expressions
5588def0cf nullary xpr are now vectorized
02f1615d2a Enable vectorization of product with dynamic matrices, extended cache optimal product to work in any row/column major situations, and a few bugfixes (forgot to add the Cholesky header, vectorization of CwiseBinary)
6486991ac3 some cleaning in Cholesky and removed evil ei_sqrt of complex
64bacf1c3f * added ei_sqrt for complex * updated Cholesky to support complex * correct result_type for abs and abs2 functors
4ffffa670e added Cholesky module
1ec2d21ca5 Fixed a couple of issues introduced in previous commits. Added a test for Triangular.
b4c974d059 Added triangular assignement, e.g.:  m.upper() = a+b; only updates the upper triangular part of m. Note that:  m = (a+b).upper(); updates all coefficients of m (but half of the additions will be skiped)
4c92150676 Added Triangular expression to extract upper or lower (strictly or not) part of a matrix. Triangular also provide an optimised method for forward and backward substitution. Further optimizations regarding assignments and products might come later.
62bf0bbd59 fix a bug in determinant of 4x4 matrices and a small type issue in Inverse
173e582e3c added a tough test to check the determinant that currently fails
6f2c72fb53 Various fixes in:  - vector to vector assign  - PartialRedux  - Vectorization criteria of Product  - returned type of normalized  - SSE integer mul
a451835bce Make the explicit vectorization much more flexible:  - support dynamic sizes  - support arbitrary matrix size when the matrix can be seen as a 1D array    (except for fixed size matrices where the size in Bytes must be a factor of 16,     this is to allow compact storage of a vector of matrices) Note that the explict vectorization is still experimental and far to be completely tested.
30d47b5250 forgot to add a file in the previous commit
9385793f71 Fix a couple of issue with the vectorization. In particular, default ei_p* functions are provided to handle not suported types seemlessly.
6ae037dfb5 give up on OpenMP... for now
acfd6f3bda - add _packetCoeff() to Inverse, allowing vectorization. - let Inverse take template parameter MatrixType instead   of ExpressionType, in order to reduce executable code size   when taking inverses of xpr's. - introduce ei_corrected_matrix_flags : the flags template   parameter to the Matrix class is only a suggestion. This   is also useful in ei_eval.
43e2bc14fe +5% optimization in 4x4 inverse: -only evaluate block expressions for which that is beneficial -don't check for invertibility unless requested
6747b45ae7 for 4x4 matrices implement the special algorithm that Markos proposed, falling back to the general algorithm in the bad case.
2a86f052a5 - optimized determinant calculations for small matrices (size <= 4)   (only 30 muls for size 4) - rework the matrix inversion: now using cofactor technique for size<=3,   so the ugly unrolling is only used for size 4 anymore, and even there   I'm looking to get rid of it.
9789c04467 when evaluating an xpr, the result can now be vectorizable even if the xpr itself wasn't vectorizable.
ea3ccb1e8c * Start of the LU module, with matrix inversion already there and   fully optimized. * Even if LargeBit is set, only parallelize for large enough objects   (controlled by EIGEN_PARALLELIZATION_TRESHOLD).
ab4046970b * Add fixed-size template versions of corner(), start(), end(). * Use them to write an unrolled path in echelon.cpp, as an   experiment before I do this LU module. * For floating-point types, make ei_random() use an amplitude   of 1.
dcebc46cdc - cleaner use of OpenMP (no code duplication anymore)   using a macro and _Pragma. - use OpenMP also in cacheOptimalProduct and in the   vectorized paths as well - kill the vector assignment unroller. implement in   operator= the logic for assigning a row-vector in   a col-vector. - CMakeLists support for building tests/examples   with -fopenmp and/or -msse2 - updates in bench/, especially replace identity()   by ones() which prevents underflows from perturbing   bench results.
7bee90a62a Merge Gael's experimental OpenMP parallelization support into Assign.h.
187b1543ce added a vectorized version of Product::_cacheOptimalProduct, added the possibility to disable the vectorization using EIGEN_DONT_VECTORIZE (some architectures has SSE support by default)
613c49b475 * add typedefs for matrices/vectors with LargeBit * add -pedantic to CXXFLAGS * cleanup intricated expressions with && and ||   which gave warnings because of "missing" parentheses * fix compile error in NumTraits, apparently discovered   by -pedantic
ca448d2537 split those files in util/ some more renaming
9d8876ce82 * rename XprCopy -> Nested * rename OperatorEquals -> Assign * move Util.h and FwDecl.h to a util/ subdir
212da8ffe0 fix priority operator bugs in the computation of the VectorizableBit flag, now benchmark.cpp is properly vectorized
8f957564ec a better bugfix in ei_matrix_operator_equals_packet_unroller
d95d952e92 bugfix in ei_matrix_operator_equals_packet_unroller
1985fb0551 Added initial experimental support for explicit vectorization. Currently only the following platform/operations are supported:  - SSE2 compatible architecture  - compiler compatible with intel's SSE2 intrinsics  - float, double and int data types  - fixed size matrices with a storage major dimension multiple of 4 (or 2 for double)  - scalar-matrix product, component wise: +,-,*,min,max  - matrix-matrix product only if the left matrix is vectorizable and column major    or the right matrix is vectorizable and row major, e.g.:    a.transpose() * b is not vectorized with the default column major storage. To use it you must define EIGEN_VECTORIZE and EIGEN_INTEL_PLATFORM.
4920f2011e finish making use of CoeffReadCost and the new XprCopy everywhere seems appropriate to me.
371d302efb - merge ei_xpr_copy and ei_eval_if_needed_before_nesting - make use of CoeffReadCost to determine when to unroll the loops,   for now only in Product.h and in OperatorEquals.h performance remains the same: generally still not as good as before the big changes.
30ec34de36 fix compilation (finish removal of EIGEN_UNROLLED_LOOPS)
61e58cf602 fixes as discussed with Gael on IRC. Mainly, in Fuzzy.h, and Dot.h, use ei_xpr_copy to evaluate args when needed. Had to introduce an ugly trick with ei_unref as when the XprCopy type is a reference one can't directly access member typedefs such as Scalar.
b4a156671f  * make use of the EvalBeforeNestingBit and EvalBeforeAssigningBit    in ei_xpr_copy and operator=, respectively.  * added Matrix::lazyAssign() when EvalBeforeAssigningBit must be skipped    (mainly internal use only)  * all expressions are now stored by const reference  * added Temporary xpr: .temporary() must be called on any temporary expression    not directly returned by a function (mainly internal use only)  * moved all functors in the Functors.h header  * added some preliminaries stuff for the explicit vectorization
048910caae  * added cwise comparisons  * added "all" and "any" special redux operators  * added support bool matrices  * added support for cost model of STL functors via ei_functor_traits   (By default ei_functor_traits query the functor member Cost)
249dc4f482 current state of the mess. One line fails in the tests, and useless copies are made when evaluating nested expressions. Changes: - kill LazyBit, introduce EvalBeforeNestingBit and EvalBeforeAssigningBit - product and random don't evaluate immediately anymore - eval() always evaluates - change the value of Dynamic to some large positive value,   in preparation of future simplifications
b8900d0b80 More clever evaluation of arguments: now it occurs in earlier, in operator*, before the Product<> type is constructed. This resets template depth on each intermediate evaluation, and gives simpler code. Introducing ei_eval_if_expensive<Derived, n> which evaluates Derived if it's worth it given that each of its coeffs will be accessed n times. Operator* uses this with adequate values of n to evaluate args exactly when needed.
4448f2620d fix a compilation issue with gcc-3.3 and ei_result_of
d1a29d6319 -new: recursive costs system, useful to determine automatically  when to evaluate arguments and when to meta-unroll. -use it in Product to determine when to eval args. not yet used  to determine when to unroll. for now, not used anywhere else but  that'll follow. -fix badness of my last commit
e74fbfb2bc - remove Eval/EvalOMP (moving them to a disabled/ subdir in order   to preserve SVN history). They are made useless by the new   ei_eval_unless_lazy. - introduce a generic Eval member typedef so one can do e.g.   T t; U u; Product<T, U>::Eval m; m = t*u;
cff5e3ce9c Make use of the LazyBit, introduce .lazy(), remove lazyProduct.
f279162ec4 * introducte recursive Flags system for the expressions  -- currently 3 flags: RowMajor, Lazy and Large  -- only RowMajor actually used for now * many minor improvements
758b26551a * fix compilation with gcc-4.0 which doesn't like "using" too much * add Eigen:: in some macros to allow using them from outside   of namespace Eigen Problems and solutions communicated by Gael.
c9b0dcd733 look at that subtle difference in Product.h... the cacheOptimal is only good for large enough matrices. When taking a block in a fixed-size (hence small) matrix, the SizeAtCompileTime is Dynamic hence that's not a good indicator. This example shows that the good indicator is MaxSizeAtCompileTime. Result: +10% speed in echelon.cpp
a994e51c96 * add Gael copyright lines on 2 more files * macro renaming: EIGEN_NDEBUG becomes EIGEN_NO_DEBUG   as this is much better (and similar to Qt) and   EIGEN_CUSTOM_ASSERT becomes EIGEN_USE_CUSTOM_ASSERT * protect Core header by a EIGEN_CORE_H
729618c945 * #define EIGEN_NDEBUG now also disables asserts. Useful   to disable eigen's asserts without disabling one's own program's   asserts. Notice that Eigen code should now use ei_assert()   instead of assert(). * Remove findBiggestCoeff() as it's now almost redundant. * Improve echelon.cpp: inner for loop replaced by xprs. * remove useless "(*this)." here and there. I think they were   first introduced by automatic search&replace. * fix compilation in Visitor.h (issue triggered by echelon.cpp) * improve comment on swap().
4342f024d9  * support for matrix-scalar quotient with integer scalar types.  * added cache efficient matrix-matrix product.    - provides a huge speed-up for large matrices.    - currently it is enabled when an explicit unrolling is not possible.
0ef1efdbdb * cleanup: in public api docs, don't put \sa links to \internal things.   (the global funcs in MathFunctions.h and Fuzzy.h don't count as internal). * Mainpage.dox. Add a few prospective Eigen users; change the recommended   -finline-limit from 10000 to 1000. The reason is: it could be harmful to have   a too big value here, couldn't it? (e.g. exceedingly large executables, cache   misses). Looking at gcc, a value of 900 would exactly mean "determine the inlining   of all functions as if they were marked with 'inline' keyword". So a value of   1000 seems a reasonable round number. In the benchmark that motivated this   (TestEigenSolvers) a value of 400 is enough on my system.
af131fe770 update to fix compilation
612350e3f8  * Added a generic *redux* mini framework allowing custom redux operations    as well as partial redux (vertical or horizontal redux).    Includes shortcuts for: sum, minCoeff and maxCoeff.    There is no shortcut for the partial redux.
29184ad27d - introduce sum() returning the sum of the coeffs of a vector - reimplement trace() as just diagonal().sum() - apidoc fixes
fb3438e609 - expand MathFunctions.h to provide more functions, like exp, log... - add cwiseExp(), cwiseLog()...    --> for example, doing a gamma-correction on a bitmap image stored as        an array of floats is a simple matter of:          Eigen::Map<VectorXf> m = VectorXf::map(bitmap,size);          m = m.cwisePow(gamma); - apidoc improvements, reorganization of the \name's - remove obsolete examples - remove EIGEN_ALWAYS_INLINE on lazyProduct(), it seems useless.
fe569b060c get rid of MatrixRef, simplifications.
908a0fbab5 small fix of VERIFY_ASSERT in debug mode
afc64f3332 a lot of renaming internal classes: AaBb -> ei_aa_bb IntAtRunTimeIfDynamic -> ei_int_if_dynamic unify UNROLLING_LIMIT (there was no reason to have operator= use a higher limit) etc...
16257d44dd fixed an issue with VERIFY_ASSERT
35bce20954 Removed Column and Row in favor of Block
6da4d9d256 fix compilation (forgot to update that file after last big change)
2ee68a074e generalized ei_traits<>. Finally the importing macro is named EIGEN_BASIC_PUBLIC_INTERFACE because it does not only import the ei_traits, it also makes the base class a friend, etc.
01572b9f54 big change: MatrixBase only takes one template parameter "Derived", the template parameter "Scalar" is removed. This is achieved by introducting a template <typename Derived> struct Scalar to achieve a forward-declaration of the Scalar typedefs.
9d9d81ad71  * basic support for multicore CPU via a .evalOMP() which    internaly uses OpenMP if enabled at compile time.  * added a bench/ folder with a couple benchmarks and benchmark tools.
f64311e07d Extended the comma initializer to support xpr on the right side:   Matrix3i mat; Vector2i vec(33,66);   mat << vec.transpose(), 99,          vec, Matrix2i::random();
721626dfc5 * Added support for a comma initializer: mat.block(i,j,2,2) << 1, 2, 3, 4;   If the number of coefficients does not match the matrix size, then an assertion is raised.   No support for xpr on the right side for the moment.
138aad0ed0  * coefficient wise operators are more generic, with controllable result type.    - compatible with current STL's functors as well as with the extention proposal (TR1)  * thanks to the above, Cast and ScalarMultiple have been removed  * benchmark_suite is more flexible (compiler and matrix size)
8e0d548039  * Fix a compilation issue with large fixed-size matrices: the unrollers were always instanciated.  * the unrolling limits are configurable at compile time.
861c6f4c9b renaming: ref() --> asArg()
f65cca5d1d  * Eigen compiles with any GCC versions from, at least, 3.3 without the previous ugly hack :)  * Renamed the scalar functors with the "Scalar" prefix (instead of "Cwise")
46885d33bf Removed trailling spaces.
255689231d  * Added generic unary operators (replace Opposite and Conjugate)  * functor templates are not template template parameter anymore    (this allows to make templated functors !)  * Main page: extented compiler discussion  * A small hack to support gcc 3.4 and 4.0 (see the main page)  * Fix a cast type issue in Cast  * Various doxygen updates (mainly Cwise stuff and added doxygen groups    in MatrixBase to split the huge memeber list, still not perfect though)  * Updated Gael's email address
ed20f64d68 release alpha4, Gael edition
a2f8d4be6a Patch by Gael Guennebaud: coeff-wise binary operators. This unifies + and - and moreover this patch introduces coeff-wise * and / based on this. Also, corresponding test.
f12e9c53ac Patch by Gael Guennebaud: unify fixed-size and dynamic-size Block expressions, update documentation.
b3268a6e2f -merge patch from Gael Guennebaud adding NumTraits for long long  and long double. -define scalar-multiple operators only for the current Scalar type;  thanks to Gael for expaining how to make the compiler understand  when automatic casting is needed. -take ScalarMultiple take only 1 template param, again.  We lose some flexibility especially when dealing with complex numbers,  but we gain a lot of extensibility to new scalar types.
aa8e2bcbde Patch by Gael Guennebaud: Rework the matrix storage to ensure optimal sizeof in all cases, while keeping the decoupling of matrix sizes versus storage sizes. Also fixing (recently introduced) bugs caused by unwanted reallocations of the buffers.
3698d8cf33 Relicense --> dual-license LGPL3+/GPL2+
6907886a15 prefix global functions with ei_ as previous solution was rather fragile. also fix compilation with g++ 4.3.
c67e717404 alpha 3.1. in this commit: - finally get the Eval stuff right. get back to having Eval as   a subclass of Matrix with limited functionality, and then,   add a typedef MatrixType to get the actual matrix type. - add swap(), findBiggestCoeff() - bugfix by Ramon in Transpose - new demo: doc/echelon.cpp
9c9a42cc49 Eval is now implemented like the other expression types, it no longer inherits Matrix. Remove the typedefs I added in Matrix.
2ee7969f0a re-optimize Matrix::resize(), add some comments
e20aceb6eb cleanup in Eval; instead introduce convenient typedefs in Matrix for naming special related matrix types: RowType, ColumnType, BlockType
183bf54d27 final fixes and updates for alpha3
57d7b7d97b documentation update for alpha 3
6ce996f219 big improvement of the block-manipulation API - reduction of sizeof(Block) for vector types - variants of block() and fixedBlock() for vector blocks - convenience methods start() and end() for vectors - convenience method corner() for matrices
95dc68dc86 renaming: Block -> FixedBlock DynBlock -> Block indeed, previous commit solves the main issue with DynBlock so is should now be the more commonly used one.
89a134ba0b big architecture change dissociating "actual" dimensions from "maximum possible" dimension. The advantage is that evaluating a dynamic-sized block in a fixed-size matrix no longer causes a dynamic memory allocation. Other new thing: IntAtRunTimeIfDynamic allows storing an integer at zero cost if it is known at compile time.
e05a1aba1d one bugfix and one optimization
bcf7b29185 rework Identity API: no longer restricted to square matrices
e092cbc75c -add set...() methods and their documentation; remove Generic -use row-major traversal when the number of columns is fixed  and the number of rows is dynamic -other minor changes
aae0667e1e reorganization/cleanup
45a4b61b5f switch to enums everywhere
209cf7c91f TODO is now on techbase
47d354924b revert most of previous commit. It really is better to forbid default constructor for dynamic-size matrices. Now why do I feel like a beheaded chicken running around?
b036eca902 Revert to allowing default Matrix constructor even for dynamic size (which is then set to 1). Discussion with jonasp made me remember why we did so in Eigen1. Also add default constructor to Eval
8ba3055447 Ready for alpha2 release. - complete documentation - add TODO - update copyright years
5111ace0d6 move default parameter values from function definition to function declaration. doxygen likes it and this fixes compilation on ICC.
84934ea217 - move: DerivedTraits becomes MatrixBase::Traits - the static constants are private again in the Derived classes - more documentation and code snippets - new isDiagonal() method
aaf889e72b remove all the _Order mechanics, now we are always traversing matrices in column-major order, even if storage is row-major. Benchmark showed that adapting the traversal order to the storage order brought no benefit.
495eb7053a Patch by Gael Guennebaud, making Eigen compatible with the Intel compiler (icc).
d1d55e67e9 - make MatrixBase and all expressions aware of their preferred traversal order.   Honor this preference in operator=. - add several methods to the API - rework API for diagonal matrices - add benchmarking code
23ffede3d0 more documentation, 12 more code snippets
42f6590bb2 cleanup: remove copy contructors when the compiler is able to generate a satisfactory default copy constructor; remove useless static_cast's; some misc cleanup.
86220784b6 part 2 of the reorganization. Benefits/changes: 1) Eigen2 co-installable with Eigen1 without conflict, without affecting programs including either. 2) #include<Eigen/Core> without the .h without conflict with the Core/ directory 3) Uniformize coding style of the CMakeLists.
dfdad129a3 move Core/ to a src/ subdir, in preparation for following changes
e7bdbe2e6a matrix storage order can now also be row-dominant (choosable for each matrix separately) map() moves from MatrixBase to Matrix much more documentation/examples/snippets
6b9370e0f0 more changes in ScalarMultiple, reintroduce FloatingPoint in NumTraits, improve examples
05a49547e1 in ScalarMultiple, make the factor type independent from the matrix scalar type. This is an optimization for complex matrices, allowing to do only a real multiplication when a complex multiplication is not needed, e.g. in normalized().
dad245af56 - eigen2 now fully enforces constness! found a way to achieve that   with minimal code duplication. There now are only two (2)   const_cast remaining in the whole source code. - eigen2 now fully allows copying a row-vector into a column-vector.   added a unit-test for that. - split unit tests, improve docs, various improvements.
3cd2a125b2 - rework the coefficients API - make vectors use a separate loop unroller, so that copying a row-vector into a col-vector is now possible - add much more documentation - misc improvements
e937583655 everything works, make now runs doxygen once and only once, after all the required files have been generated.
c38156a217 now we also have a examples/ directory for self-contained examples, and this is already used to document DynBlock
eb6ee51fdf will svn finally let me remove this dir?
a316cd8a76 now cmake takes snippets of code, completes them into compilable sources, builds them, executes them and stores their output in files.
ee3410f79a renaming (commit in order to avoid svn breakage)
04e3512eb6 first version of CMakeLists auto-generating examples outputs
64f5d5d318 move the documentation to doc/, add dummy documentation to srcdir/ compiling to an explanation of how to generate the docs
a52c74095f rename src/ to Eigen/ so that we're able to #include<Eigen/Core.h> in the examples instead of ugly things like #include"../../src/Core.h"
647a817b2e more documentation and examples, add Doxyfile and Mainpage.dox and also the benchmark program
cddeeee17d - make RowsAtCompileTime and ColsAtCompileTime public in MatrixBase and private in derived types - initial documentation in MatrixBase
59be5c3124 enforce constness in map(), do only one const_cast, and improve API
8bb98a80b4 split the coeffs accessors/mutators into a separate Coeffs.h file
3380429e3a Improve the "map" API and corresponding Matrix constructors
a32690a222 Eval is read-only, don't generate any assignment operator
2c656c51e6 add matrix constructor taking an array. update unit-tests.
53040f53d9 add constructors and accessors/mutators specific to small vectors. Add corresponding unit-test.
f75a0c5179 some more cleanup and reorganisation
9314b8e024 Some cleanup and renaming.
7c38475291 -add Ones, DiagonalMatrix, DiagonalCoeffs -expand and improve unit-tests -various renaming and improvements
fc7b2b5c20 expand unit-tests and fix const-qualifaction bugs thus discovered
e9a458a7a5 Split the global math functions out of NumTraits.h
7ddc13b9fa use a more c++-ish way of preventing the compiler from generating default operator= when it's not wanted. Thanks to Christian Mayer for the tip.
fa8009c6b7 1) remove EIGEN_UNUSED, instead use non-named arguments. 2) use T instead of const T& when that makes more sense Thanks to Christian Mayer a.k.a Mekhzolan for the tips.
0cbdaf6bb8 revert most of my previous commit. forcing the compiler to inline only increased its memory usage.
936b0de9cc play with inlining to get better performance when the compiler is not asked to optimize
8117c9aa83 oops, forgot to commit that change
0a7086f1ec rename CopyHelper into OperatorEquals, get rid of the auxiliary _copy_helper() method, and make sure copies are always done in column-dominant order
2b20814ced Expand and improve unit-tests
d50ce24dd9 rework asserts system so as to minimize the impact of debugging code on performance
effaee9bc7 fix bugs in Block/DynBlock
fc924bc7d4 specialize for Size==0 in order to catch user bugs and not clutter the compiler output with an infinite recursion. Also add a #define switch for loop unrolling.
9d51572cbe rework the random numbers API
c58c892e25 had forgotten to 'svn add' that file...
68eba600b1 big reorganisation of asserts, so that: 0) asserts are only done in the public API, except for a few ones explicitly    named eigen_internal_assert. 1) internal asserts are disabled unless EIGEN_INTERNAL_DEBUGGING is defined.    This limits the impact of debugging on performance. 2) no 'unused argument' warnings anymore when compiling with -DNDEBUG
b569216dc3 remove useless default argument values
1a94c28bfe and here is the fixed-size Block class
04502cccd9 rename Block to DynBlock and rework API to make place for upcoming fixed-size Block matrix. Also some cleanup.
346c00f4c8 Rework the unit-tests to use lower precision, so as to eliminate false positives. Also some cleanup in the fuzzy compares.
5abaaf9688 Test application now takes 'seed' and 'repeat' command-line args
e05f29191e Much more convenient, less over-engineered NumTraits. Done during this KDE-Edu weekend.
2fdd067d9e add more unit-tests (covering transpose, conjugate, adjoint, dot product...)
39f1776bde rename Object -> MatrixBase
344623e872 Matrix(int) constructor is only for vectors.
a587346b47 Matrix(int,int) constructor no longer takes default arguments. Instead, introduce Matrix() and Matrix(int); however, dynamic dimensions are required to be specified in the constructor (we no longer default to 1)
5309ef5b5e - improve and comment the "BasicStuff" test. - adjust behavior of Matrix(int,int) constructor - s/EI_/EIGEN_/
f14712a1a3 Fix damage done by automatic search-and-replace
49c78643da add cast<newtype>() function to casts the scalars to another type.
d6f26dc8eb clarify the situation with EI_INHERIT_ASSIGNMENT_OPERATORS
884a718b0a make shameless use of const_cast to reduce code redundancy. This means Eigen2 gives up enforcing constness. I really tried to enforce it, but it really was much hassle because our expression templates can be lvalues (not only rvalues) and so much code had to be written twice.
f355ef2df0 Merge WrapArray into FromArray. Less code. The downside is that we're using one more const_cast. But I think that anyway trying to maintain const strictness in Eigen2 is not worth the hassle.
a94a8c68e8 add fromArray() and wrapArray().
3f97918760 restrict identity() to square matrices; small change helping g++ optimize.
6c8f159635 add zero() and identity() static methods, update unit-tests
0f2df4b202 remove support for type std::complex<int>. Simplify NumTraits accordingly.
5f0af72abc mark more methods as const. also rename, Numeric.h->NumTraits.h
e445f5085a implement the first _real_ unit-tests, testing the results for correctness instead of just checking compilation.
31061557a5 add unary operator-(), computing the opposite.
55e80e1599 split MatrixOps.h into 3 files; rename ScalarOps.h; remove useless #includes.
12bcafdc75 some renaming in the fuzzy compares, and in the multiplications
a4626cc808 rework the numeric traits now that we're using a namespace and no prefix
3654ee8b07 SVN_SILENT:
0d44c0906b simplify the new USING_EIGEN_DATA_TYPES macro
61de15f361 Democracy 1 - 0 Dictatorship
3c98677376 fix big bug in loop unrolling
06e1e0d83b fix dot product, add norm/norm2/normalized add fuzzy compares for matrices/vectors add random matrix/vector generation
7f0a546a81 add norm() and norm2(); some polishing
ac6ff5efd6 reverse certain inner loops. Now the benchmark runs in 3.5s instead of 5.5s before!
f0be175bdc add dot product, extend meta unrolling everywhere
95b3316701 reorganize meta loop unrolling, add Trace (meta-unrolled), fix compilation issues in the conjugation/adjunction stuff
4fe78b8e10 reorganization of headers, part 2/2...
be429ebf9c reorganisation of headers, commit47b935fc42cbf2ca992d8a270bc1b0fc97d1f6bc /2....
REVERT: cf794d3b74 bump to 3.3.7
REVERT: 58a60ab96c Bug 1643: fix compilation issue with gcc and no optimizaion (grafted from 88fc23324517f03c09256c89347ef08cbc23cd5f)
REVERT: 8547bb2ead enable spilling workaround on architectures with SSE/AVX (grafted from 71546f1a9f0c78cecc9800ab6c9c28b3aca1968c)
REVERT: 5436a36667 Added tag 3.3.6 for changeset b70bf4fad467
REVERT: 0726a6add1 bump to 3.3.6
REVERT: 4e12f69f79 workaround "may be used uninitialized" warning (grafted from b4749dc28da658a0459b0a51bb19281662ea81bf)
REVERT: f40ff0a08b fix EIGEN_GEBP_2PX4_SPILLING_WORKAROUND for non vectorized type, and non x86/64 target (grafted from b81188e099f349798c99f1dde35a31e93b21f05b)
REVERT: efc9ae33ed Fix noise in sparse_basic_3 (numerical cancellation) (grafted from 4c27cc5293d8fe540fb0ab26a2557c6ebdcbf5b3)
REVERT: 72ced00725 Fix noise in lu unit test
REVERT: babaf7e0eb Add default constructor to Bar to make test compile again with clang-3.8 (grafted from 8e5fa0e5e68c3c1027b16aa34f3686fafe00bd3c)
REVERT: df9b776121 Bug 1636: fix gemm performance issue with gcc>=6 and no FMA (grafted from 9f52fde03483a40fcfae71d8b54279e87e33066f)
REVERT: a944c0aa40 Bug 1637: workaround register spilling in gebp with clang>=6.0+AVX+FMA (grafted from 40e26d3f60fb3248f153e0bf49c26224f2675f7e)
REVERT: d9c39fbc61 Bug 1635: Use infinity from Numtraits instead of creating it manually. (grafted from 4d85392820dc88cfaa44e1d20d2eab00e1422cc1)
REVERT: a897800483 Bug 785: Make Cholesky decomposition work for empty matrices (grafted from ec89c48d5693c6f0d7eed7dfc3a06b44280bcfe7)
REVERT: b5556c1c2f Bug 1634: remove double copy in move-ctor of non movable Matrix/Array (grafted from 7cbcf2d8025241c5c0c35e0fcb03725e88eb3383)
REVERT: 42db6ee51c Workaround weird MSVC bug (grafted from 5d9717ffcb586c84409434457d1674f919c8bcf8)
REVERT: a66b5a59a6 Limit the size of the toc (grafted from 1d55fb67d263a0fa4ca1d3bd00c54389e3e4eaf5)
REVERT: b51f2c122c Update doxy hacks wrt doxygen 1.8.13/14 (grafted from 231a9cd018009addffddc4622771216c99673c97)
REVERT: a7a8d5285c fix market IO
REVERT: 2bb20745a9 Bug 1617: Fix SolveTriangular.solveInPlace crashing for empty matrix. This made FullPivLU.kernel() crash when used on the zero matrix. Add unit test for FullPivLU.kernel() on the zero matrix. (grafted from 359f78f1be47a820d55647a36c6c15b452e10b87)
REVERT: fad3f27d48 Fix most Doxygen warnings. Also add links to stable documentation from unsupported modules (by using the corresponding Doxytags file).
REVERT: bbbed5087b Bug 1606: Explicitly set the standard before find_package(StandardMathLibrary). Also replace EIGEN_COMPILER_SUPPORT_CXX11 in favor of EIGEN_COMPILER_SUPPORT_CPP11.
REVERT: aa446fafd5 fix a doxygen issue (grafted from 0a6bfe9193a0ba0736f9cff2727a13e39b1889fa)
REVERT: 2972f410ee Fix a lot of Doxygen warnings in Tensor module (grafted from d15cb7ed23397c56f00ef49ac058ce0d25a8555d)
REVERT: 153a33faee fix typo in doc (grafted from f36654affd2c4b27628e0ae43daa65871199480d)
REVERT: 9cc9abd1ae Explicitly convert 0 to Scalar for custom types (grafted from 7967c4e7ff58c7f82ae264388121ef101e6fa4a4)
REVERT: 3e68c97dda Workaround gcc bug making it trigger an invalid warning
REVERT: e0f70860e1 Bug 1605: workaround ABI issue with vector types (aka __m128) versus scalar types (aka float) (grafted from 57eb8da60e798c415c47661b57052c0115aca104)
REVERT: 2fa05452d9 #pragma GCC diagnostic push/pop is not supported prioro to gcc 4.6
REVERT: 4bad957431 Change include order to make SparsePlugin work
REVERT: bdd26264fc Add missing plugins to DynamicSparseMatrix -- fix sparse_extra_3 (grafted from 9826ecc89bf97d55bd8c5f3fbebcbd7e517408d2)
REVERT: 94ea226262 Fix conjugate-gradient for very small rhs (grafted from ee56041b1577041bf3b602b10a0c5df6e1a2e144)
REVERT: 240306fede Disable type-limits warnings for g++ < 4.8, and shadow warnings for all g++ versions
REVERT: 2878429ba5 EIGEN_UNUSED is not supported by g++4.7 (and not portable) (grafted from 131180bccc9dbf84633e6f696b99da142e30aeed)
REVERT: bd758692e2 Fix more shadowing typedefs
REVERT: 2fd9e74477 Fix shadowing typedefs
REVERT: 51d07747b4 Make param name and docs constistent for JacobiRotation::makeGivens (manually grafted from dbed8786ceed74e0b3d9bba4a4def50b7a6dd8c4)
REVERT: 729cd63e84 Fix build failures in matrix_power and matrix_exponential tests.
REVERT: 29e01c4dd1 Fix legitimate "declaration shadows a typedef" warning
REVERT: 40606feb14 Product of empty array must be 1 and not 0.
REVERT: 8563174517 Fix integer conversion warning
REVERT: d6fead7421 gcc thinks this may not be initialized
REVERT: 83a2812463 Bug 1590: fix collision with some system headers defining the macro FP32
REVERT: e0d03e7749 Fix bad merge in previous commit
REVERT: 50a1174ab4 Bug 1584: Improve random (avoid undefined behavior).
REVERT: d27497e225 Use Intel cast intrinsics, since MSVC does not allow direct casting. Reported by David Winkler.
REVERT: f5368f6c0c Assertion depended on a not yet initialized value
REVERT: 8586fd657b Silence double-promotion warning
REVERT: 813ca0ca19 Remove shadowing typedefs
REVERT: 91000330ec Silence logical-op-parentheses warning
REVERT: edf16cb6a0 Silence unused parameter warning
REVERT: 4e1c266751 Silence double-promotion warning (when converting double to complex<long double>)
REVERT: b5dabeab4a Fix fallback to BLAS for rankUptade
REVERT: 6ac1c08bfc Fix half_float unit test wrt previous changeset
REVERT: 42dcc28505 backport some nvcc 9 fixes
REVERT: b522e51e81 DIsable static assertions only when necessary and disable double-promotion warnings in that case as well
REVERT: 35e60f607c fix warnings for doc-eigen-prerequisites
REVERT: b826c46762 Allow to filter out build-error messages
REVERT: 7dcbd2fa5d Add the cmake option "EIGEN_DASHBOARD_BUILD_TARGET" to control the build target in dashboard mode (e.g., ctest -D Experimental)
REVERT: 92e45c68aa Added tag 3.3.5 for changeset b3f3d4950030
REVERT: a1b9c26c5e Bump to 3.3.5
REVERT: e0622ddced Oopps, EIGEN_COMP_MSVC is not available before including Eigen. (grafted from 634efb91dccce3e38f994c209cb79fe866121503)
REVERT: f208676c8e Disable optimization for sparse_product unit test with MSVC 2013, otherwise it takes several hours to build. (grafted from 926f1d112b8d9821f80b37c3b52fae70b718c04b)
REVERT: 12294c86ff Fix weird issue with MSVC 2013 (grafted from 669323b59b0a4704f473919f092e0ed368d04f52)
REVERT: d03b8c7f8c Fix GeneralizedEigenSolver when requesting for eigenvalues only. (grafted from 00321bf1e07d7d4aa3f62779fccec0d00ffdd180)
REVERT: 542d38496d Fix unit test (grafted from 5325d987dfef5021d170f302eeb506b33d3f27e2)
REVERT: 9f9043b045 Bug 1560 fix product with a 1x1 diagonal matrix (grafted from a80ebf43e130c41b4a577a33d3d4eeeebbe82622)
REVERT: 53308ebafe fix AVX512 plog (grafted from 5aad298c55611d0b647ca931210b957cf32278cb)
REVERT: 3d3d13d670 AVX512: _mm512_rsqrt28_ps is available for AVX512ER only (grafted from ab0959c7af0d25e3efd48a3b0a00fd0dbea4ebb7)
REVERT: 0ce19a6600 AVX512: fix psqrt and prsqrt (grafted from 54191412e6208979f2ec1460d321592d853079a2)
REVERT: 77eb100076 Fix typo in pbend for AltiVec. (grafted from c97c855bcc44531d2cbc44ac7b9696d5f9916c4b)
REVERT: dcc8270aea Fix oversharding bug in parallelFor. (grafted from cca6ac52063c3da2b608d0f43fa37f4008db952f)
REVERT: 3170a6196c fix md5sum of lapack_addons (grafted from aac73743446b9c825f523e11717e18c5fd7d2f0a)
REVERT: a7f22c1823 Bug 1555: compilation fix with XLC
REVERT: 859999cd5f Fiw some warnings in dox examples (grafted from dba22f773719d5a6ca2fb216989fd7aa623da731)
REVERT: 9f00b5258c Fix warning (grafted from 6fd8cb2927d56c4f4b0da501e9e29ee6c59f17f4)
REVERT: 330441e87e Fix int versus Index (grafted from 0c7ee56526ac2bdb3e9b9b061f21d89c88621f6d)
REVERT: 10631c45a5 Fix warning (grafted from c745049274ade179b64c1c83b7f8a54e13c5e473)
REVERT: 6fb3ae822e Fix MSVC warning C4290: C++ exception specification ignored except to indicate a function is not __declspec(nothrow) (grafted from f5c695d0cb87ee2837d43d3b14d69abe0cfe5f1f)
REVERT: 96d4a93d6e Fix short vs long
REVERT: 5fae89b8f8 Fix compilation with MSVC by reverting to char* for _mm_prefetch except for PGI (the later being the one that has the wrong prototype). (grafted from bbe6e0b773b389eba15d243606fbefffa4ff73c6)
REVERT: 06522190aa Don't run hg on non mercurial clone (grafted from 71941b4b3835c5594e3176da9e18d329f872081a)
REVERT: c3ed7d48fd Doc: add aliasing in common pitfaffs. (grafted from 1dc5c0c8c023daece12e4d77890cd96da8589dda)
REVERT: 7260e0c2b6 Define pcast<> for SSE types even when AVX is enabled. (otherwise float are silently reinterpreted as int instead of being converted) (grafted from e470fddf39a9461d17ecff0e377748dd0aecb272)
REVERT: 55b0abb781 Fix compilation and SSE support with PGI compiler (grafted from 836d2952e32e0720b6297e63aeb9fe6553f95358)
REVERT: 1c6d9a68cb Add tests for sparseQR results (value and size) covering bugs 1522 and 1544
REVERT: 205cd36932 Make sparse QR result sizes consistent with dense QR, with the following rules:
REVERT: 942092813e Bug 1544: Generate correct Q matrix in complex case. Original patch was by Jeff Trull in PR #386.
REVERT: 0b11213b6c Fix compilation with NEON+MSVC (grafted from 2af650906b5730b3837920ba7d1131a83565a912)
REVERT: d641e5598b Bug 1428: atempt to make NEON vectorization compilable by MSVC. The workaround is to wrap NEON packet types to make them different c++ types. (grafted from c576f16f3a59607e2648743585ed4d4b4373e7d5)
REVERT: 5624fc15a0 Fix "used uninitialized" warnings (grafted from bf7afdae0a5f39536457ca9236d496e0161befb1)
REVERT: 6205efb67c Workaround warning (grafted from 6304d5d429ce388561f1270172e4778d5f4b22ed)
REVERT: b0cbaf371e workaround MSVC 2013 compilation issue (ambiguous call) (grafted from 290bd5ff5c646a8757c4928434d24ce32d55e856)
REVERT: 39ab24a95f Bug 1543: fix linear indexing in generic block evaluation (this completes the fix in commit 4aa7f03ab605a) (grafted from 728dfff683d62a3597c62bf3dbd1069912faf63a)
REVERT: 426ea166ad Fix unit test (grafted from 5daadd6905e7826d3b65594cac432077e6e3e928)
REVERT: a3a3178c08 Fix enum-compare warning
REVERT: 8a81d153b8 Add parenthesis to fix compiler warnings
REVERT: 49f3cade31 fix const cast in NEON (grafted from 3215c06819b99ce52d5a8d6939d072024e1e3fa0)
REVERT: 49b9b92960 Cast zeros to Scalar in RealSchur
REVERT: b0dc687ba1 update cdash
REVERT: d0fea6b66d Another fix to make boost::multiprecision compile again
REVERT: 9565643997 Recent Adolc versions require C++11
REVERT: 96f86efe30 Make hypot_impl compile again for types with expression-templates (e.g., boost::multiprecision)
REVERT: a4ae0e1335 SelfAdjointView<...,Mode> causes a static assert since commit c73a77e47db8
REVERT: 78d4144d1e fix linking issue (grafted from 1f08827edccbe08648146cc584fcbd7f4bfb3e33)
REVERT: fc95628016 Bug 1520: workaround some -Wfloat-equal warnings by calling std::equal_to
REVERT: b0f6269e84 extend doxygen splitter for huge screens (grafted from 96de82982557fde23a5748f83cdca1019742fc4a)
REVERT: 98f47bf71a Update header/footer for doxygen 1.8.13 (grafted from 2d7affd096f7fc801da4747c31480203f1857a0b)
REVERT: e9f876db95 Fix javascript hacks for oxygen 1.8.13 (grafted from 28f2a3899928373938873cbdec550f0103450d6f)
REVERT: 3e38ffe75d Bug 1538: update manual pages regarding BDCSVD. (grafted from 7c1f43154983ca83e7dcc53c03a482421e1f8907)
REVERT: b2d134bb28 Fix MKL backend for symmetric eigenvalues on row-major matrices. (grafted from 3a08a093adac22f9a0b1be12b227ed8e41997773)
REVERT: f37c209d91 Fix cmake scripts with no fortran compiler (grafted from 607df2a0aa39feecb4334a1a7bd9d07d858598dc)
REVERT: baa9d3c035 Bug 1509: fix computeInverseWithCheck for complexes (grafted from 87636bcbdf125029046c4c7578ea3518180c23b7)
REVERT: a036c93956 Factories code between numext::hypot and scalar_hyot_op functor. (grafted from 2ffd0a74a6566defb5a356b0f07ce70f8b192a7f)
REVERT: 9547ee1359 Bug 1521: avoid signalling NaN in hypot and make it std::complex<> friendly. (grafted from cb8b7de2f7297baba923962ff6c7abd0c75a0804)
REVERT: a9b56e6fa3 Bug 1494: makes pmin/pmax behave on Altivec/VSX as on x86 regading NaNs (grafted from 52ff7dddccfaad5508befbd395baf35f922511a2)
REVERT: 45a7e57fc8 comment unreachable code (grafted from a9198af72a41d85bdea10633dcbd70b4c6c1eafd)
REVERT: f91e5fe224 Fix compilation of product with inverse transpositions (e.g., mat * Transpositions().inverse()) (grafted from 71e0a49a657990e96da336005ae97108f707cd49)
REVERT: f3a495f827 commit 45e9c9996da790b55ed9c4b0dfeae49492ac5c46 (HEAD -> memory_fix) Author: George Burgess IV <gbiv@google.com> Date:   Thu Mar 1 11:20:24 2018 -0800
REVERT: b490f11edc Bug 1527: fix support for MKL's VML (destination was not properly resized) (grafted from d144ceb83119af2ddc5b829727b5eee83b239a6a)
REVERT: ee77b2bef1 Bug 1528: better use numeric_limits::min() instead of 1/highest() that with underflow. (grafted from cfb5b1d08a68cfdf85c26d86f018294f7eb9ff1a)
REVERT: 17255bc95c Made the TensorStorage class compile with clang 3.9 (grafted from 8dd2d6552a872b778fe46aca4033e294ff82fb86)
REVERT: adce76e150 Bug 1516: add assertion for out-of-range diagonal index in MatrixBase::diagonal(i) (grafted from c6f36208dce2cd7f5b666775b9d655aeb1cf932f)
REVERT: d6580d618e Bug 1532: disable stl::*_negate in C++17 (they are deprecated) (grafted from 30f98cd7493fc12670099139de47376173653cbd)
REVERT: bf26e658b0 Fix uninitialized output argument. (grafted from 82cbfa1b1a3d924327fd8b8af238fd015a31a4ee)
REVERT: 0258fe9fc7 Merged in bfierz/eigen/3.3 (pull request #345)
REVERT: 056193722c Add static assertion for fixed sizes Ref<> (grafted from 306356e228ecbc70ddc0bcd5880bfa9acb9a16e7)
REVERT: a1490dd198 Implement better static assertion checking to make sure that the first assertion is a static one and not a runtime one. (grafted from e1b07262bb84f9566eab1027aa20a59eb7208986)
REVERT: 34c49a39c8 Add static assertion on selfadjoint-view's UpLo parameter. (grafted from c73a77e47db88490588e7bdc30056974567cb6e1)
REVERT: 87cb23dc0d Bug 1517: fix triangular product with unit diagonal and nested scaling factor: (s*A).triangularView<UpperUnit>()*B (grafted from 253cc1138131af650a59e547d6d5228b9eb6f0d0)
REVERT: 9dbae79892 Fix linear indexing in generic block evaluation. (grafted from 4aa7f03ab605a48e9af22fcbf5040ffd51d1f442)
REVERT: 445a85e038 Fix incorrect ldvt in LAPACKE call from JacobiSVD (grafted from 14e1418fcf12985861f17131e6de94adb4c7b630)
REVERT: 1581873176 fix compilation with old compiler
REVERT: 072a1e4a09 Fix compilation of stableNorm with some expressions as input (grafted from c2947c341c686c88e966836dcabfd26f0b77bd5b)
REVERT: bd3f049299 fix warning
REVERT: f32722b791 Fix cmake warning (grafted from 5c43a259f0b51963a00dd85e941a1fd044ac1cf4)
REVERT: 0edad6e549 Adds missing EIGEN_STRONG_INLINE to support MSVC properly inlining small vector calculations
REVERT: 8258d08895 Merged in henryiii/eigen/henryiii/device33 (pull request #344)
REVERT: a77e440557 Restore `__device__`
REVERT: 7c4685b591 Adding missing inlines for CUDA and ARCH 6
REVERT: 244460bc05 Bug 1468 (1/2) : add missing std:: to memcpy (grafted from 395fffe9efd813c05f483159e32273e017ade642)
REVERT: 038e80ce32 Update documentation for aligned_allocator (grafted from 7b5c15251dc847d022f9e3b67e9f9714d05d732f)
REVERT: f88d7f06ef Add C++11 max_digits10 for half. (grafted from da11a2b1da3f93a3f1e5328368731f0ee8cdbab2)
REVERT: 30e6ee610b Implement true compile-time "if" for apply_rotation_in_the_plane. This fixes a compilation issue for vectorized real type with missing vectorization for complexes, e.g. AVX512. (grafted from 66ac15c52b6cf6c5de64bccd372ce66623df18f3)
REVERT: 11aa3bce17 Fix mixing types in sparse matrix products. (grafted from bccf2d933699b6369f00dfcd8e1866a76a3a0342)
REVERT: 3e20136d5d Merged in dtrebbien/eigen/patch-1 (pull request #312)
REVERT: dc0ab437af Handle min/max/inf/etc issue in cuda_fp16.h directly in test/main.h (grafted from 51c95eb5952bb85a5b9de8d8bc041fa268a436c2)
REVERT: 6af73724d7 Bug 1462: remove all occurences of the deprecated __CUDACC_VER__ macro by introducing EIGEN_CUDACC_VER
REVERT: 68adf33c7c Bug 336: improve doc for PlainObjectBase::Map (grafted from 18be685e28cb85615f5404560cf11290c8ffdab5)
REVERT: d9b903051f Add missing scalar conversion (grafted from 9d16690a3458b5a188f6604d035e8fab1fa72b3c)
REVERT: fde1a243cb Bug 1449: fix redux_3 unit test (grafted from 4a0cb9e15fbdaf43a84984fe0fd67468542a6a11)
REVERT: 498b7555c0 Bug 1461: fix compilation of Map<const Quaternion>::x() (grafted from 36032105e83c69bcac9908b918b7f6542b4bdce3)
REVERT: ee2e82fc2c Doc: warn about constness in LLT::solveInPlace (grafted from c0cfea56bca688a9105723bd50e8b440f407301a)
REVERT: ca15a4bae2 LLT: const the arg to solveInPlace() to allow passing .transpose(), .block(), etc. (grafted from a7585e71876cdda72214afeb617c117069eee602)
REVERT: 6002848a71 LLT: avoid making a copy when decomposing in place (grafted from 9339d447b8a82a88f00224a7932935249fe8c93d)
REVERT: 1339d16591 Gub 1453: fix Map with non-default inner-stride but no outer-stride. (grafted from 9d757a9d16abb047fd05a8e0389346f1ed3d8646)
REVERT: 6182897d54 Re-enable hidden doc in LLT (grafted from a0ecbf6939633050a61d489d35d950df5c38eed7)
REVERT: ae7d32e27a Bug 1456: add perf recommendation for LLT and storage format (grafted from 3efa9819ef302365c2a061ab398095f39d29e0ad)
REVERT: 32009a0ee2 Bug 1455: Cholesky module depends on Jacobi for rank-updates. (grafted from efc40ce4441a1b124759fb3a449803e5632be49f)
REVERT: d40efd44a0 Bug 1458: fix documentation of LLT and LDLT info() method. (grafted from ecc350809cf12d0c20fbd7b7658ae3cf91ac255f)
REVERT: 421944be87 Clarify MKL_DIRECT_CALL doc. (grafted from 2cdab25060561b46650f9e6c183c060f8c868607)
REVERT: 276df3480c use MKL's lapacke.h header when using MKL (grafted from dda419b1a017299c7f76d7a2b610a0722789e7a9)
REVERT: 0667525b15 Clarify doc regarding the usage of MKL_DIRECT_CALL (grafted from 0b776efa9924ee5bff27bd920e24ca4d950b87c6)
REVERT: 6172ce6217 Fix support for MKL's BLAS when using MKL_DIRECT_CALL. (grafted from d70e459692ff597ae8c2e44b0d1adc92a727c6d0)
REVERT: d2e9897535 Disable BDCSVD preallocation check. (grafted from ea8c22ce6920e982d15245ee41d0531a46a28e5d)
REVERT: 746e1b7523 Fix lazyness of operator* with CUDA
REVERT: 91c8178d7d Fix gcc7 warning: Wint-in-bool-context
REVERT: 577872fd81 Fix a gcc7 warning: Wint-in-bool-context (grafted from c8d48daca9b9caed0499ba67bf7f8cec5dec60c7)
REVERT: 07fb10fb3d Make sure CMAKE_Fortran_COMPILER is set before checking for Fortran functions
REVERT: 946aaf2ce9 Bug 1436: fix compilation of Jacobi rotations with ARM NEON, some specializations of internal::conj_helper were missing. (grafted from d781c1de98342c5ca29c2fe719d8d3c96a35dcd4)
REVERT: ce41a63feb Added tag 3.3.4 for changeset 5a0156e40feb
REVERT: dde02fceed bump to 3.3.4
REVERT: 95a79d74f4 Enable Array(EigenBase<>) ctor for compatible scalar types only. This prevents nested arrays to look as being convertible from/to simple arrays. (grafted from 7cf81f7eb73f2d0643495083f84426f0a300e61a)
REVERT: 591a501207 Fix compilation of streaming nested Array, i.e., cout << Array<Array<>> (grafted from b27d432812bad681cedd844872ca2c85e169630c)
REVERT: 64ab65cf7b Fix 1x1 case in Solve expression with EIGEN_DEFAULT_MATRIX_STORAGE_ORDER_OPTION==RowMajor (grafted from d2971b6e905187579395ad12fb989a0d1fc499d8)
REVERT: c37bb75f0e Fix LeastSquareDiagonalPreconditioner for complexes (issue introduced in previous commit) (grafted from 903e0851b0b7ddf70b5c723caad7d17d677ade77)
REVERT: ebe09c14b9 fix compilation in C++98 (grafted from c63e230eb7a9e18c9d5ce7741ccc420dbf6d2e2e)
REVERT: 6e27b4fef0 Bug 1414: doxygen, add EigenBase to CoreModule (grafted from d20cc5f432722d22f94d9e68e6b997369a350fe8)
REVERT: 8d0bc52299 Fix compilation with some compilers (grafted from a0fb50bbc5d7f19def675ab4ef14720e579d0aab)
REVERT: e535f51497 fix tipo (grafted from 991d5378e71c364009ea8c18125e4562af5a6c8a)
REVERT: b2bcf83cb0 add cmake-option to enable/disable creation of tests * * * disable unsupportet/test when test are disabled * * * rename EIGEN_ENABLE_TESTS to BUILD_TESTING * * * consider BUILD_TESTING in blas (grafted from 60f8b0f18340337e036b566bc583c77deb52f965)
REVERT: 5ba953e0ba fix unit test (grafted from caa89a0f3adfe9a6944ea0cab9e8fc1f0d5c6be1)
REVERT: 35bef79560 Add possibility to overwrite EIGEN_STRONG_INLINE.
REVERT: 611aa89b7d Fix packet and alignment propagation logic of Block<Xpr> expressions. In particular, (A+B).col(j) lost vectorisation. (grafted from 67c385522ad35499a0de7d1bdba9360e46d51e3f)
REVERT: 5c121f817a ignore all *build* sub directories (grafted from 27634432ac608a3052286a2e3d114482761f06b0)
REVERT: b764767c21 Bug 1479: fix failure detection in LDLT (grafted from 2ff106034f40703d71f2173d14c25c317269a393)
REVERT: f4192512eb Bug 1485: fix linking issue of non template functions (grafted from 024cb6ca45133a0ed941507de543d86c1e371bb5)
REVERT: 2084756cae Use col method for column-major matrix (grafted from 77fd5eb92f0bb7dd7677a48c2ec4a9a07b6fa630)
REVERT: 0eaccf9cc5 Bug 1484: restore deleted line for 128 bits long doubles, and improve dispatching logic. (grafted from d53cb00f85f5f90a015810e2c37ee707d5a4c80c)
REVERT: cd3da9c5e9 Fix overflow issues in BDCSVD (grafted from f5052f20d61337b9a479a314c76ea889d08f4027)
REVERT: cfb1a9cd7a Fix compilation (grafted from 9ba936354ee8b73fb1966dcb2d3506387bb357f1)
REVERT: 2b3087d553 Bug 1403: more scalar conversions fixes in BDCSVD (grafted from 3e1cd2f29ed065837ed7d76a49dcdbd602d17063)
REVERT: 4806e73c94 Bug 1403: fix implicit scalar type conversion. (grafted from dadabdfa31e3c3d04ee834a5cf5952a4629344e7)
REVERT: 8aa72dd148 Bug 1405: enable StrictlyLower/StrictlyUpper triangularView as the destination of matrix*matrix products. (grafted from e3b19f71b35d27d6e600416721e3f196caade6f2)
REVERT: d8ef1ec028 fix compilation of Half in C++98 (issue introduced in previous commit) (grafted from 108b9993bca745b3c225460745915709bd817f1a)
REVERT: eb4eb42763 Fix compilation with gcc 4.3 and ARM NEON (grafted from 8815f0e05d86b36d5c71c665cc26733ee63c7063)
REVERT: 0cb5d8fff3 Bug 1410: fix lvalue propagation of Array/Matrix-Wrapper with a const nested expression. (grafted from d966ff7a913fd350fa71227c118e25641fd2da46)
REVERT: a931b70f56 it is now possible to change Umfpack control settings before factorizations; added access to the report functions of Umfpack (grafted from 8ceaff9f66b49c148ce39058946f335e4e865cc1)
REVERT: ad41110915 Bug 1424: add numext::abs specialization for unsigned integer types.
REVERT: 668929ed50 Add missing std::numeric_limits specialization for half, and complete NumTraits<half> (grafted from a9b7a79bf45462dd37df8fe173eeb2c7be594e03)
REVERT: 398d8b8e69 Bug 1423: fix LSCG\'s Jacobi preconditioner for row-major matrices. (grafted from 45a5c5dde931903f4333a45ff9d3be36623038a7)
REVERT: 36b73c38be Bug 1435: fix aliasing issue in exressions like: A = C - B*A; (grafted from e3f17da72a4005ea052d50b2761b90465b4a52e4)
REVERT: 523762fde0 Specializing numeric_limits For AutoDiffScalar (grafted from 043c847d2c3488d69f8ef101cc66c14d3ef69e19)
REVERT: 5570931c81 Fix compilation of matrix log with Map as input (grafted from f28f21fc65023e92d044ea2903553d9c60a725db)
REVERT: 6a2e8a5518 Bug 1411: fix usage of alignment information in vectorization of quaternion product and conjugate. (grafted from ecca45864eb6016ea23e194d12b95674721da05f)
REVERT: 9875b1dbb4 Bug 1417: make LinSpace compatible with std::complex (grafted from 84b9b23f18f63b9bfcdc4790e90867eed1db2a0f)
REVERT: bedc5e9b7e Fix dense * sparse-selfadjoint-view product. (grafted from 2b969e50885e26f0ca909ebb2b0263cd9c649bd6)
REVERT: d332f7975b Improve mixing of complex and real in the vectorized path of apply_rotation_in_the_plane (grafted from 8c3bb0011530bbc1682e2f423d7d7d81cd32cad2)
REVERT: e8196faac2 Fix unwanted Real to Scalar to Real conversions in column-pivoting QR. (grafted from 3c4462767e3637af79ce6297bb383abf895e6943)
REVERT: 1560eef716 Improve cmake scripts for Pastix and BLAS detection. (grafted from 970e62e70ebbe6c43042acda2f8610050bd83a19)
REVERT: 6cf02f1cbb better check array index before using it (grafted from e2e9c8ef3e7d8bb0ac6794ce3de4fecfab5328a9)
REVERT: 93545575f5 ARM prefetch fixes: Implement prefetch on ARM64. Do not clobber cc on ARM32.
REVERT: 6a136ee9d0 Bug 1401: fix compilation of "cond ? x : -x" with x an AutoDiffScalar (grafted from f59b477e4c4ef7746dbd084bfbaf988e43b28923)
REVERT: 86f3972e09 remove UTF8 symbol (grafted from 8f3205a1239c198b9e772d53a4d134749afe715e)
REVERT: 6c47ef47d5 remove UTF8 symbols (grafted from 54f26e677873161213620be9d5f4af22cab94c27)
REVERT: 1f05fdba19 Bug 1400: fix stableNorm with EIGEN_DONT_ALIGN_STATICALLY (grafted from 81edfa541315a8513ea20c3d397e8b3ed88d174d)
REVERT: a2f4e233ba Bug 1396: add some missing EIGEN_DEVICE_FUNC (grafted from f1d6ada7ee21a29962c5712ca1215df504ed3c6f)
REVERT: 97d0a81ce5 Fix typo. (grafted from 473da1c136fcb7128424ea19cabf54a262d0e5e3)
REVERT: fda46aeb69 Added missing EIGEN_DEVICE_FUNC to the SelfCwise binary ops (grafted from 3b11721afdaa8ead460ffeb947065692b6d73dd1)
REVERT: defaaf1eb2 Added missing EIGEN_DEVICE_FUNC qualifiers to several nullary op methods. (grafted from b635de7188e0957a6e659ddeb50157fa4d0e9c30)
REVERT: 5b5a525f33 Declared the plset, ploadt_ro, and ploaddup packet primitives as usable within a gpu kernel (grafted from 8f7c96d2317ecd435c0879e625a9b09aaa17daac)
REVERT: ea6f46ec1a Added missing EIGEN_DEVICE_FUNC qualifiers. (grafted from e95fa6423e16115051342dc475dfea67094f98e9)
REVERT: 74ecef72db Added EIGEN_DEVICE_FUNC to make the prototype of the EigenBase override match that of DenseBase (grafted from f0249229fcd6420122a799e149b7f30f4b80cdc0)
REVERT: 09a17a0521 Avoid unecessary float to double conversions. (grafted from edea424de091c54716ef1425f45a311eccf126cc)
REVERT: 82c9c744c2 Added tag 3.3.3 for changeset 67e894c6cd8f
REVERT: 9e97af7de7 bump to 3.3.3
REVERT: ef7b784b91 Use int32_t instead of int in NEON code. Some platforms with 16 bytes int supports ARM NEON. (grafted from 96e0f73a35de54f675d825bef5339b2f08e77eb4)
REVERT: 9f1c0f7b03 Bug 1394: fix compilation of SelfAdjointEigenSolver<Matrix>(sparse*sparse); (grafted from 9e6bc1d11517dde323e3739aac2fc01f228cffbb)
REVERT: 55bd417d74 Bug 1380: for Map<> as input of matrix exponential (grafted from cf029096b7b7f6e281146f6009dce721c3a70093)
REVERT: ccdef703ef Bug 1395: fix the use of compile-time vectors as inputs of JacobiSVD. (grafted from f1776fd209e5da4833042bd35447c183aec231f1)
REVERT: 3a64908de8 Silent warning. (grafted from bc985f1b8c55677cad085d5eecbb092f6f889dab)
REVERT: 02130eb98e Fix tracking of temporaries in unit tests (grafted from 6b3e139488a896d2fd4437ad685ae4d0c9fcdc77)
REVERT: 79bff6c507 Fix compilation. (grafted from 5682a6bb49a585264d7276246462abfbafee6414)
REVERT: 7cf8e78532 Bug 1393: enable Matrix/Array explicit ctor from types with conversion operators (was ok with 3.2) (grafted from e6ef61a3bd1283cc9dae37a920440594bb769186)
REVERT: 6bef134cfa Fix usage of CUDACC_VER
REVERT: 1c8857d4ef Bug 1391: include IO.h before DenseBase to enable its usage in DenseBase plugins.
REVERT: f5d18e7b3e Bug 1392: fix #include <Eigen/Sparse> with mpl2-only (grafted from 4ce22c540fc5f447883e683ad848c20830215428)
REVERT: dd0e5e2654 Suppress warning
REVERT: 9879480c05 Fix prunning in (sparse*sparse).pruned() when the result is nearly dense. (grafted from 3784049266ffdb95a97b9aa635d21b36d6d2cffd)
REVERT: 3b15a61312 Include clang in the list of non strict MSVC (just to be sure)
REVERT: b7b9b13a25 fixed inlining issue with clang-cl on visual studio
REVERT: 186406d8bf fixed compiling issue using clang-cl with visual studio
REVERT: 58516c738c Improve multi-threading heuristic for matrix products with a small number of columns. (grafted from 4d09e90f07c8ac4a3da31dc0f5a782db18904679)
REVERT: 48b5299c1a Bug 1389: MSVC's std containers do not properly align in 64 bits mode if the requested alignment is larger than 16 bytes (e.g., with AVX) (grafted from 5430cad5531274d51024d3950d2fa511aeec5055)
REVERT: 63f5f50a09 Fix compilation of JacobiSVD for vectors type (grafted from 099e5bdcd9f19b647c9c0dc03e22a0ceaba79171)
REVERT: bd60eb1cfd Bug 478: fix regression in the eigen decomposition of zero matrices. (grafted from db4fef573c20541faa7d1bfbb126eff65bfb4bb7)
REVERT: 84dbe22f52 Bug 1380: fix matrix exponential with Map<> (grafted from 9210b3d60b030339fac2690208808c83b648c6ee)
REVERT: 2aceb4c7b4 Bug 1384: fix evaluation of "sparse/scalar" that used the wrong evaluation path. (grafted from 9fa03a189815a59ede0e8a133e498fc530f9445d)
REVERT: 04ce2bb2b1 Bug 1383: fix regression in LinSpaced for integers and high<low (grafted from 0129ada50a1916f10045a86a9e5c2a207f3fe860)
REVERT: 2aed10f050 Bug 1381: fix sparse.diagonal() used as a rvalue. The problem was that is "sparse" is not const, then sparse.diagonal() must have the LValueBit flag meaning that sparse.diagonal().coeff(i) must returns a const reference, const Scalar&. However, sparse::coeff() cannot returns a reference for a non-existing zero coefficient. The trick is to return a reference to a local member of evaluator<SparseMatrix>. (grafted from f5b44011f514515c72819438f730e8697362b1ac)
REVERT: 7279cbe10f Bug 1383: Fix regression from 3.2 with LinSpaced(n,0,n-1) with n==0. (grafted from f9e15e6f77e862b9b2e9be0d252d37ea3b1e828f)
REVERT: 1a77c1000c Bug 1365: fix another type mismatch warning
REVERT: 4b7762b25e Bug 1369: fix type mismatch warning.
REVERT: 70db0eda75 Bug 1375: fix cmake installation with cmake 2.8 (grafted from 737f257bb23da9175bcef9102b702b4ab0671a2b)
REVERT: b10750fdf5 Bug 1376: add missing assertion on size mismatch with compound assignment operators (e.g., mat += mat.col(j)) (grafted from 6744e8670abc22798114f78ad63bade0c72af091)
REVERT: 580933e2c1 Bug 1382: move using std::size_t/ptrdiff_t to Eigen's namespace (still better than the global namespace!) (grafted from f84b7350a9e23412386c9ada1a25b69528e36c54)
REVERT: d8c537df4c Add std:: namespace prefix to all (hopefully) instances if size_t/ptrdfiff_t
REVERT: 82c70fc1c4 Use Index instead of size_t (grafted from 8af8c0cb40cecb39f8bb64dff6d81a6a60804dec)
REVERT: 7fd3b42863 Bug 1379: fix compilation in sparse*diagonal*dense with openmp (grafted from 8b1a2b5b0ec928979dbc7d4109bfbd8827ccef40)
REVERT: f7ebd56d9f Bug 1378: fix doc (DiagonalIndex vs Diagonal) (grafted from 2e21d89edd4abdb56c339d588afbd89c0d175ed4)
REVERT: b08b068f44 Added tag 3.3.2 for changeset da9b4e14c255
REVERT: ae9889a130 Bump to 3.3.2
REVERT: 793c7c64ae Defer set-to-zero in triangular = product so that no aliasing issue occur in the common:   A.triangularView() = B*A.sefladjointView()*B.adjoint() case that used to work in 3.2. (grafted from df279134beee3771e025160762e976680de90503)
REVERT: eb0763720b Fix typo
REVERT: 64ee328830 Add missing doc of SparseView (grafted from dd44029906a1aad662af3b733343f62cd921e93c)
REVERT: 275f9a582d MSVC 2015 has all we want about c++11 and MSVC 2017 fails on binder1st/binder2nd (grafted from 4ff0426846bb37194f63ab537d0ea090ab801ea5)
REVERT: 07e5db3c8d Convert integers to real numbers when computing relative L2 error (grafted from 8dc0c20fada6963cdc42e97d4468b067b24b1be2)
REVERT: 6ef50464bd Fix and workaround several doxygen issues/warnings (grafted from 7fd1ddec0ba00ca64e1eacbdc04bb187d34683c6)
REVERT: 6976b872b3 Add doc for sparse triangular solve functions (grafted from 852660641a039f042fa1ebbb1b76d3cbaea7a7b0)
REVERT: 339683edc4 Add missing snippet files. (grafted from 0bac400352d031bff30bd0e71119e2dcfc8efb9f)
REVERT: df9fe9aea7 Bug 1336: workaround doxygen failing to include numerous members of MatriBase in Matrix (grafted from 528638bce4940baee8d05c2b763c4d7621380bcd)
REVERT: edd3f4171c Document selfadjointView (grafted from b0d5a85790d2b71d825121118e192355a03ef5ab)
REVERT: b42c268373 Bug 1336: fix doxygen issue regarding EIGEN_CWISE_BINARY_RETURN_TYPE (grafted from 70009b588a058de2366954e5b25bc49215f790d8)
REVERT: a7733d080e Bug 1370: add doc for StorageIndex (grafted from 5fb2cc115cceec3f93aae03073b45d8efea9f09a)
REVERT: 29714740f2 Bug 1370: rename _Index to _StorageIndex in SparseMatrix, and add a warning in the doc regarding the 3.2 to 3.3 change of SparseMatrix::Index (grafted from aa7dbdf1cebeb4991d7ca233898bd3188a8a4a1b)
REVERT: 2f447aeae1 doc: Fix trivial typo in AsciiQuickReference.txt * * * fixup! (grafted from ec1dd76b1d4b4b2577a87260cb4f8e44cc83eda4)
REVERT: 5f22ba042b Make sure that traits<CwiseBinaryOp>::Flags reports the correct storage order so that methods like .outerSize()/.innerSize() work properly. (grafted from c6fb594da0be395c2e0c640c915ea1da748f374d)
REVERT: 0dcff33433 Add missing .outer() member to iterators of evaluators of cwise sparse binary expression (grafted from 043094f17aae2821ce9c674016288746d386212b)
REVERT: 32698ab21f Fix check of storage order mismatch for "sparse cwiseop sparse". (grafted from e16de06ca5006ff3b253e71b3a3cc995f2a307aa)
REVERT: a09740cd79 Merged in angelos_m/eigen/3.3 (pull request #269)
REVERT: 2c04e8c423 Fix bug 1367: compilation fix for gcc 4.1! (grafted from e5b9c7040bacf343b328ffcd9a9fc112f5b108e8)
REVERT: b2b60e0ab4 Add transpose, adjoint, conjugate methods to SelfAdjointView (useful to write generic code) (grafted from 4a73bcc26ca2e216f0f707bcd1ea5f1ca8d11b9d)
REVERT: 1f23ca8abe Make sure that HyperPlane::transform manitains a unit normal vector in the Affine case. (grafted from 5c5e095aad29af3aaf3f57984b0dc00fea58670b)
REVERT: 4b43c22cc0 Use 32 registers on ARM64
REVERT: 377960c1f0 Bug 1360: fix sign issue with  pmull on altivec (grafted from d7f257380d20f6c975e938677623d19fba8854d0)
REVERT: 4e5a542be6 Fix unused warning (grafted from b9c0a1466427846271e829e7f07ab2ff3c49b081)
REVERT: 3a2b85de6a Bug 1363: fix mingw's ABI issue (grafted from 2a7e61733f332e0649b9bd4a77a9e9b14b30ab15)
REVERT: d67196ebe4 Bug 1358: fix compilation for sparse += sparse.selfadjointView(); (grafted from 0a9b971803ae56a4d0a3483dd7147c28cfff12c9)
REVERT: 3ce4601fa6 Bug 1359: fix compilation of col_major_sparse.row() *= scalar (used to work in 3.2.9 though the expression is not really writable) (grafted from f6a4d21c07d6e106a22ef1c2fbfa38b0ca0d7748)
REVERT: 867df293a5 Bug 1359: fix sparse /=scalar and *=scalar implementation. InnerIterators must be obtained from an evaluator. (grafted from b2fecf173f2aa6bc6f0d6a2f49583044f7b2bd90)
REVERT: e14773f14f Bug 1361: fix compilation issue in mat=perm.inverse() (grafted from 0c1d20374b875cb129e9ff4c39bdce0cc0c6699c)
REVERT: 40789d12cd Merged eigen/eigen/3.3 into 3.3
REVERT: cc9f78743e merge
REVERT: 1999a5d1f9 Remove superfluous const's (can cause warnings on some Intel compilers)
REVERT: b445b46713 Added tag 3.3.1 for changeset f562a193118d
REVERT: 8506c3e6b3 Bump to 3.3.1
REVERT: 805aa7f791 Explain how to choose your favorite Eigen version (grafted from 8c9daf8c7924b60aac397dbeb26dc6a853d696ae)
REVERT: 20d1d12537 Added relocatable cmake support also for CMake before 3.0 and after 2.8.8 (grafted from 70c6659fbdaef294d59754dbcfd9a8ba9869020a)
REVERT: adeecb56ac Optimize SparseLU::solve for rhs vectors (grafted from d256bd3637e3c11c561750888e49d345c408bf6b)
REVERT: 52b348a9d3 remove temporary in SparseLU::solve (grafted from fe846c4bb4aa5f57169262ad66bf1e255a027ff5)
REVERT: 920ba431c1 Make CMake config file relocatable (grafted from ae95826558b7e3bc0891df9210e90c27b55cccb3)
REVERT: 28821e3b7a Merged in angelos_m/eigen/3.3 (pull request #264)
REVERT: 696f7315fe Fix memory leak in Ref<Sparse> (grafted from 629f87e8f249939e998cef9eed2f88edebee5815)
REVERT: 46ef39a39e Bug 1356: fix calls to evaluator::coeffRef(0,0) to get the address of the destination by adding a dstDataPtr() member to the kernel. This fixes undefined behavior if dst is empty (nullptr). (grafted from 2b0dd72c3777119fb5fd0d32472e750b4406bf76)
REVERT: 36ba5f51eb Ease compiler job to generate clean and efficient code in mat*vec. (grafted from 79bb9887afd450d4e0a03cbf110a373efbf666ae)
REVERT: 477d1438d3 Operators += and -= do not resize! (grafted from b1d3eba60130ee623f0186eb1a0f4285a64f3105)
REVERT: 774f7df5cd use numext::abs
REVERT: 9fec8125fe 1. Add explicit template to abs2 (resolves deduction for some arithmetic types) 2. Avoid signed-unsigned conversion in comparison (warning in case Scalar is unsigned)
REVERT: 533e4d2e27 Bug 1355: Fixed wrong line-endings on two files (grafted from f4ab5d5953d07233d5df71389fb6534de6b732f4)
REVERT: 7d5e41039b Merged in angelos_m/eigen/3.3 (pull request #263)
REVERT: 093fcf6139 Clean up SparseCore module regarding ReverseInnerIterator (grafted from 7a1a18c2eed1f2f4990ac8c1ec206b6dbd4d73d0)
REVERT: 12d4883a4a typo UIntPtr
REVERT: fed4408aa4 fix two warnings(unused typedef, unused variable) and a typo
REVERT: 46d27e5a5d fix member order (grafted from 59243d1aec47eba2f8cbf5bb14f70e6f1fa08d4e)
REVERT: a8645ace7f Merged in sergiu/eigen/cmake-imported-target (pull request #257)
REVERT: 4122963702 Fix misleading-indentation warnings. (grafted from 7a554637fb1afc2e1d14518afc205ce95eaa16a6)
REVERT: a69e8e61e6 Fix slection of product implementation for dynamic size matrices with fixed max size. (grafted from 8ac00012214856684eba06d6952096dea5edf2ef)
REVERT: cf53f24ce2 Fix a performance regression in (mat*mat)*vec for which mat*mat was evaluated multiple times. (grafted from 41260bdfc23b7d3041026e4b92af18d1ff3e7925)
REVERT: d2af5a6e37 Bug 1351: fix compilation of random with old compilers (grafted from dbd04c842b996500ae8c50b9e1b1f12328d8a8ca)
REVERT: 241d38321d cmake: remove architecture dependency from Eigen3ConfigVersion.cmake
REVERT: 5c89db795e doc: mention the NO_MODULE option and target availability
REVERT: 8cee417435 Bug 1348: Document EIGEN_MAX_ALIGN_BYTES and EIGEN_MAX_STATIC_ALIGN_BYTES, and reflect in the doc that EIGEN_DONT_ALIGN* are deprecated. (grafted from 243d240007fc901075ff0d037dc483a75bd94548)
REVERT: 1ed811814e update cdash project for 3.3
REVERT: 8cfa4dcc4f Fix compilation with gcc and old ABI version (grafted from 51a5367271d1569a6c7dbbfc9c6a943341954460)
REVERT: d2430e52a4 Fix compilation issue with MSVC: MSVC always messes up with shadowed template arguments, for instance in:   struct B { typedef float T; }   template<typename T> struct A : B {     T g;   }; The type of A<double>::g will be float and not double. (grafted from aa10ce4a83d57178f86ee895090adaff1356a3db)
REVERT: 04a16a7a73 Optimize predux<Packet8f> (AVX) (grafted from 7f9319d639467208f9875b893111e025314dd32c)
REVERT: ea086a3317 Disable usage of SSE3 _mm_hadd_ps that is extremely slow. (grafted from e4d055c2e7ce64021405c76f2d577bcc620069a4)
REVERT: e2f8ae9ad5 Optimize predux<Packet4d> (AVX) (grafted from 850e28fbe3d4ea23a342157bec444e05ac89bb2a)
REVERT: 670a6e761e Disable usage of SSE3 haddpd that is extremely slow. (grafted from 6632390e1e543276e4bf870346dc584b3de92da8)
REVERT: a177acafbb Revert vec/y to vec*(1/y) in row-major TRSM: - div is extremely costly - this is consistent with the column-major case - this is consistent with all other BLAS implementations (grafted from 2eeed9de710c35c8ed4a9d371b1f3e1ddc52f4f1)
REVERT: 2c12d86036 Fix BLAS backend for symmetric rank K updates. (grafted from c686560654072ba4bd26a69e424d00df37a438b0)
REVERT: 04f9b8f1a5 cmake: added Eigen3::Eigen imported target
REVERT: a8339a4be5 Fix regression in assigment of sparse block to spasre block. (grafted from 10a1de58614569c9250df88bdfc6402024687bc6)
REVERT: 313197ba9b Workaround for error in VS2012 with /clr (grafted from 202b9c137d8369b1fe983328407a2570740cbcc5)
REVERT: 295b78b167 Fix compilation issue in mat = permutation (regression introduced in 0e78c04fea69) (grafted from eb30762a5baef5f9e67c43aab64129726e079c35)
REVERT: d58cd2a954 Bug 1343: fix compilation regression in mat+=selfadjoint_view. Generic EigenBase2EigenBase assignment was incomplete. (grafted from 0e78c04fea691588a7c882826c6523447a3bd66a)
REVERT: ec618667d0 Bug 1343: fix compilation regression in array = matrix_product (grafted from 25c392fdbf64a98ebf9b7f446aa25f0e84563300)
REVERT: 59e594b2e7 replace sizeof(Packet) with PacketSize else it breaks for ZVector.Packet4f (grafted from d087e33ef49006d7a37b39f5902745e6ab69f018)
REVERT: 66f6e60c93 implement float/std::complex<float> for ZVector as well, minor fixes to ZVector (grafted from c00af1573982f1800e838b762159725e17b9713b)
REVERT: fa5f482d7f Optimize sparse<bool> && sparse<bool> to use the same path as for coeff-wise products. (grafted from 94a8d15e6986617354a332b76e083c4e18340925)
REVERT: 53090c6f6e Bug 426: move operator && and || to MatrixBase and SparseMatrixBase. (grafted from 6cc1f2a41be5921c5a2d4e1d4c1febb3495b5bb9)
REVERT: 3bb1f6354e Make sure not to call numext::maxi on expression templates (grafted from 5f1a3dcc6054289b269b8e38b2e09ee142d20a39)
REVERT: 6aa8c506bd Fix regression in SparseMatrix::ReverseInnerIterator (grafted from ea8710986e05190b1a4fdc11f0c2bb8f87ea4dfe)
REVERT: 7bd156c737 Added tag 3.3.0 for changeset 26667be4f70b
REVERT: e3e413ac46 bump to 3.3.0
REVERT: 57c8dda1b9 Fix printing of sparse expressions
REVERT: 837f26f9fd Merged in benoitsteiner/opencl (pull request #246)
REVERT: 0244995b34 Fixed the formatting of the code
REVERT: 6789cd9cd1 Fixed the indentation of the cmake file
REVERT: 6c1bdaa92f #if EIGEN_EXCEPTION -> #ifdef EIGEN_EXCEPTIONS.
REVERT: 313dfdbdc4 Fix for SYCL queue initialisation.
REVERT: 7dd23b3c76 Use try/catch only when exceptions are enabled.
REVERT: 2982525886 Converting all sycl buffers to uninitialised device only buffers; adding memcpyHostToDevice and memcpyDeviceToHost on syclDevice; modifying all examples to obey the new rules; moving sycl queue creating to the device based on Benoit suggestion; removing the sycl specefic condition for returning m_result in TensorReduction.h according to Benoit suggestion.
REVERT: b123640f04 Extend unit test to check sparse solvers with a SparseVector as the rhs and result.
REVERT: 230528bf68 Generalize Cholmod support to hanlde any sparse type as the rhs and result of the solve method
REVERT: a27049b4c3 Generalize IterativeSolverBase::solve to hanlde any sparse type as the results (instead of SparseMatrix only)
REVERT: 88d3e1c1f6 Generalize solve_sparse_through_dense_panels to handle SparseVector.
REVERT: 8885b701ff Add missing friend declaration
REVERT: f78ea9c80a Add a default ctor to evaluator<SparseVector>. Needed for evaluator<Solve>.
REVERT: 7aab2566e1 Enable swapping between SparseMatrix and SparseVector
REVERT: f5e28aa838 Removed unnecessary statement
REVERT: 10d7af3973 Added missing includes
REVERT: fda138ab28 Extend mpreal unit test to check LLT with complexes.
REVERT: 48718075ed Fix compilation of LLT with complex<mpreal>.
REVERT: b734a352c9 Merged eigen/eigen into default
REVERT: e6d244295a Removed the sycl include from Eigen/Core and moved it to Unsupported/Eigen/CXX11/Tensor; added TensorReduction for sycl (full reduction and partial reduction); added TensorReduction test case for sycl (full reduction and partial reduction); fixed the tile size on TensorSyclRun.h based on the device max work group size;
REVERT: 2a0c78fb7e Added tag 3.3-rc2 for changeset 04ab5fa4b241
REVERT: 9ec3e94b2b bump to 3.3-rc2
REVERT: b268a01c94 Improved AVX512 configuration
REVERT: e0d23582f6 Reenable the generation of dynamic blas libraries.
REVERT: 84fb1c5e17 Improved AVX512 support
REVERT: e2e316d309 Merged eigen/eigen into default
REVERT: a807d48c05 Bug 1337: improve doc of homogeneous() and hnormalized()
REVERT: c4f027ba3c Bug 1330: Cholmod supports double precision only, so let's trigger a static assertion if the scalar type does not match this requirement.
REVERT: 8049e4e3e1 Merged in benoitsteiner/opencl (pull request #244)
REVERT: 7e5e094fda Disable vectorization on device only when compiling for sycl
REVERT: f0d0b3391c Don't call lgamma_r when compiling for an Apple device, since the function isn't available on MacOS
REVERT: f1892e35ae Pulled latest updates from trunk
REVERT: 4334b3c7f4 Special functions require math.h: make sure it is included.
REVERT: 79ce7aa492 Bug 1004: improve accuracy of LinSpaced for abs(low) >> abs(high).
REVERT: 0db0942aef Add pinsertfirst function and implement pinsertlast for complex on SSE/AVX.
REVERT: 4bd6e4be49 Merged in benoitsteiner/opencl (pull request #243)
REVERT: b4a799d972 Merged eigen/eigen into default
REVERT: 5ec3c5223d Don't attempts to use lgamma_r for CUDA devices. Fix type in lgamma_impl<double>.
REVERT: 0ccca0f14b Gate the code that refers to cuda fp16 primitives more thoroughly
REVERT: 07c9b05327 Fixed the ambiguity in callig make_tuple for sycl backend.
REVERT: 20d9909aa2 Worked around Visual Studio compilation errors
REVERT: 1ce6950633 Sharded the tensor_image_patch test to help it run on low power devices
REVERT: 59b3478744 Fixed a few more compilation warnings
REVERT: 51d268eff4 Fixed a compilation warning
REVERT: 8bf4e8a2bc Fixed compilation warning
REVERT: d69a49ed33 Added missing template parameters
REVERT: fa7d1c2ef3 Use threadsafe versions of lgamma and lgammaf if possible.
REVERT: de199b3e74 Workaround MSVC issue.
REVERT: 3287184129 Merged in enricodetoma/eigen (pull request #241)
REVERT: 649a00259b Pulled latest updates from trunk
REVERT: dfca002659 Removed a template parameter for fixed sized tensors
REVERT: 941638963e Fix regression in X = (X*X.transpose())/s with X rectangular by deferring resizing of the destination after the creation of the evaluator of the source expression.
REVERT: 106b5aa9f0 Always enable /bigobj for tests to avoid a compile error in MSVC 2015
REVERT: 82a9eeaa74 add a generic EIGEN_HAS_CXX11
REVERT: 6ae315be65 Fix warning with ICC
REVERT: 5dbd508561 Replaced tabs with spaces
REVERT: 0ec89355e0 Code cleanup
REVERT: 63a30211f8 Fix ICC warnings
REVERT: 5e432f1639 Add missing inline keywords
REVERT: 68f472a946 Fixed a typo
REVERT: 72fd17794f Bug 1004: one more rewrite of LinSpaced for floating point numbers to guarantee both interpolation and monotonicity. This version simply does low+i*step plus a branch to return high if i==size-1. Vectorization is accomplished with a branch and the help of pinsertlast. Some quick benchmark revealed that the overhead is really marginal, even when filling small vectors.
REVERT: b78ce9aa92 Add a pinsertlast function replacing the last entry of a packet by a scalar. (useful to vectorize LinSpaced)
REVERT: 2ca35c0995 Bug 1333: fix bad usage of const_cast_derived. Better use .data() for that purpose.
REVERT: 01e2eb669a Cleanup ArrayWrapper and MatrixWrapper by removing redundant accessors.
REVERT: dedeb4cdd8 Bug 1004: remove the inaccurate "sequential" path for LinSpaced, mark respective function as deprecated, and enforce strict interpolation of the higher range using a correction term. Now, even with floating point precision, both the 'low' and 'high' bounds are exactly reproduced at i=0 and i=size-1 respectively.
REVERT: ba85c35f8e Merged in benoitsteiner/opencl (pull request #238)
REVERT: 29b2d89763 Bug 698: rewrite LinSpaced for integer scalar types to avoid overflow and guarantee an even spacing when possible. Otherwise, the "high" bound is implicitly lowered to the largest value allowing for an even distribution. This changeset also disable vectorization for this integer path.
REVERT: 2a8b841c32 Add unit test for overflow in LinSpaced
REVERT: 9752953da0 Bug 1328: workaround a compilation issue with gcc 4.2
REVERT: 7b27b6e907 Merge latest updates from trunk
REVERT: dec576632d Added SYCL include in Tensor.
REVERT: 652236d3e2 Fixed a few typos in the ternary tensor expressions types
REVERT: 2a5912d24f Fixing the typo regarding missing #if needed for proper handling of exceptions in Eigen/Core.
REVERT: 1d53d9b6f5 Fixing the code indentation in the TensorReduction.h file.
REVERT: ac934d82b9 Merged ComputeCpp to default.
REVERT: 2e221c1969 Applyiing Benoit's comment to return the missing line back in Eigen/Core
REVERT: 62e2940749 Fix previous merge.
REVERT: 1da0e6f4ad Merged in rmlarsen/eigen2 (pull request #232)
REVERT: 07de5f6b38 Merged ComputeCpp into default.
REVERT: ad326b4714 Reducing the code by generalising sycl backend functions/structs.
REVERT: cc723b9734 Merged in lukier/eigen (pull request #234)
REVERT: 41c1105632 Relaxed the resizing checks so that they don't fail with gcc >= 5.3
REVERT: 2b9ec22f4f Fixes for min and abs after Benoit's comments, switched to numext.
REVERT: 4fb44c7b04 Patch to allow VS2015 & CUDA 8.0 to compile with Eigen included. I'm not sure whether to limit the check to this compiler combination (` || (EIGEN_COMP_MSVC == 1900 &&  __CUDACC_VER__) `) or to leave it as it is. I also don't know if this will have any affect on including Eigen in device code (I'm not in my current project).
REVERT: 0f14015f0c Merged eigen/eigen into default
REVERT: 8764f0b182 Deleted redundant implementation of predux
REVERT: 33e7e1cd50 Remove double ;;
REVERT: 7f86e8e477 Merged eigen/eigen into default
REVERT: e2256f7ae5 Take advantage of AVX512 instructions whenever possible to speedup the processing of 16 bit floats.
REVERT: 0112280f69 Fix SPQR for rectangular matrices
REVERT: 03c045d404 Fix outer-stride.
REVERT: 52f81ad923 Fixes min() warnings.
REVERT: 78b034d4a5 Merged in rmlarsen/eigen (pull request #230)
REVERT: 3b8b18323c Adding EIGEN_DEVICE_FUNC in the Geometry module. Additional CUDA necessary fixes in the Core (mostly usage of EIGEN_USING_STD_MATH).
REVERT: 6e3b873408 Fix copy-paste error: Must use _mm256_cmp_ps for AVX.
REVERT: 2a30234eac Bug 1325: fix compilation on NEON with clang
REVERT: 9363345bea Manually define int16_t and uint16_t when compiling with Visual Studio
REVERT: 1918dc77f0 Reenabled the use of variadic templates on tegra x1 provides that the latest version (i.e. JetPack 2.3) is used.
REVERT: 8553877ee8 Cleaned up a regression test
REVERT: 44ba31799e Merge the content of the ComputeCpp branch into the default branch
REVERT: c77bfb9a5b Remove static qualifier of free-functions (inline is enough and this helps ICC to find the right overload)
REVERT: 42f4c9e8d0 Renamed predux_half into predux_downto4
REVERT: 39ca6b578d Fixed incorrect comment
REVERT: 10f1513a11 Revergted unecessary change
REVERT: ef65a3777f Fixed compilation error with gcc >= 5.3
REVERT: ef564920d4 Silenced a compilation warning
REVERT: 138544b3c1 Merged in rryan/eigen/tensorfunctors (pull request #233)
REVERT: bfcb5d77d9 Add a test that GPU complex product reductions match CPU reductions.
REVERT: e9c0a8f3a6 Fully support complex types in SumReducer and MeanReducer when building for CUDA by using scalar_sum_op and scalar_product_op instead of operator+ and operator*.
REVERT: 79b5f7d1f9 Added missing AVX intrinsics for fp16: in particular, implemented predux which is required by the matrix-vector code.
REVERT: 8cdc6e5e22 Add a simple cost model to prevent Eigen's parallel GEMM from using too many threads when the inner dimension is small.
REVERT: e0431cea5f Enabling AVX512 should also enable AVX2.
REVERT: 9e92172c02 Fix compilation of qr.inverse() for column and full pivoting variants.
REVERT: 77137d528f Deleted unecessary CMakeLists.txt file
REVERT: dc859aad8c Silenced a compilation warning.
REVERT: 796b897f6b Merged latest updates from trunk
REVERT: 42b61caf08 Silenced a few compilation warnings
REVERT: 46465fbe46 Pulled latest updates from trunk
REVERT: cc4ae24d2f Fixed a couple of compilation warnings
REVERT: b8cf4d5108 Pull the latest updates from trunk
REVERT: 9dd82f311b Fixed compilation warnings
REVERT: bf45c89916 Fixed compilation warning
REVERT: 30e133829b Increased the robustness of the reduction tests on fp16
REVERT: 4a996c24cb Increase the tolerance to numerical noise.
REVERT: 50242f8c99 ::rand() returns a signed integer on win32
REVERT: e04464dfda Fixed a typo that impacts windows builds
REVERT: dd032a9000 Silenced compilation warning
REVERT: 71647beba9 Properly characterize the CUDA packet primitives for fp16 as device only
REVERT: 2ed615f8d5 Update comment for fast sqrt.
REVERT: 15dc9e046e Update comment for fast sqrt.
REVERT: 2b9f843581 Fix a bug in the implementation of Carmack's fast sqrt algorithm in Eigen (enabled by EIGEN_FAST_MATH), which causes the vectorized parts of the computation to return -0.0 instead of NaN for negative arguments.
REVERT: e94fab2282 Cleanup the cuda executor code.
REVERT: 068ffd1645 Cleaned up the random number generation code.
REVERT: a8aff47ab1 Use explicit type casting to generate packets of zeros.
REVERT: 9284a96741 Improved support for compiling CUDA code with clang as the host compiler
REVERT: e65e3d4175 Added support for constand std::complex numbers on GPU
REVERT: 823c451d78 Bug 1317: fix performance regression with some Block expressions and clang by helping it to remove dead code. The trick is to get rid of the nested expression in the evaluator by copying only the required information (here, the strides).
REVERT: 6f5038e201 Bug 1310: workaround a compilation regression from 3.2 regarding triangular * homogeneous
REVERT: a7edbdf462 Renamed the SYCL tests to follow the standard naming convention.
REVERT: 6db09882f7 Fix angle range
REVERT: dc7b4a59c7 Remove std:: prefix
REVERT: 9dc9214042 Bug 1312: Quaternion to AxisAngle conversion now ensures the angle will be in the range [-pi,pi]. This also increases accuracy when q.w is negative.
REVERT: 44b07a0279 Bug 1308: fix compilation of some small products involving nullary-expressions.
REVERT: 8e40bd8df1 Updated the list of warnings to reflect the new message ids introduced in cuda 8.0
REVERT: d6a00c86e8 Updated the tensor sum and mean reducer to enable them to process complex numbers on cuda gpus.
REVERT: 8f99c56dc8 Converting alias template to nested struct in order to be compatible with CXX-03
REVERT: 77d418e696 Merged in sergiu/eigen (pull request #229)
REVERT: dad7707080 Add debug info.
REVERT: f6e6aef070 Bug 1311: fix alignment logic in some cases of (scalar*small).lazyProduct(small)
REVERT: b814b90ed0 Made the initialization of a CUDA device thread safe.
REVERT: 290e306577 Bug 1308: fix compilation of vector * rowvector::nullary.
REVERT: f1666c7089 disabled MSVC level 4 warning C4714
REVERT: 244b569dc9 Made TensorEvalTo compatible with c++0x again.
REVERT: 0a570561e3 Deleted unused TensorMap data member
REVERT: 4cc2867646 Bug 1304: fix Projective * scaling and Projective *= scaling
REVERT: 99a632d52c Add missing file.
REVERT: 7e38d5841c Made the gaussian generator usable on GPU
REVERT: d227df374a Added a specialization of Eigen::numext::real and Eigen::numext::imag for std::complex<T> to be used when compiling a cuda kernel. This is unfortunately necessary to be able to process complex numbers from a CUDA kernel on MacOS.
REVERT: dc501e6923 Added tag 3.3-rc1 for changeset bef509908b9d
REVERT: b4d1c7658c bump to 3.3-rc1
REVERT: 6d47a8fcc5 merge
REVERT: 31589b8e38 merge
REVERT: 4b88459a66 Backout changeset cc01b1eb81f23a41af481ff72e2dfc89853e1713
REVERT: a8eb3e507c Add a nullary-functor example performing index-based sub-matrices.
REVERT: 5c521653e9 Calls x.imag() instead of imag(x) when x is a complex number since the former is a constexpr while the later isn't. This fixes compilation errors triggered by nvcc on Mac.
REVERT: 066be355e1 Bypass identity reflectors.
REVERT: cb101b9384 fix documentation of LinSpaced
REVERT: 1c9fdc0ad2 Add a note regarding gcc bug #72867
REVERT: 1564acaf62 Do not manually add absolute path to boost-library. Also set C++ standard for blaze to C++14
REVERT: f68b3056ce fix typo
REVERT: a10e175b68 Disable a failure test if extended double precision is in use (x87)
REVERT: 09aca9a7a5 Fix alignement of statically allocated temporaries in symv, and trmv.
REVERT: 5f7ac3a6a1 Improve cost estimation of complex division
REVERT: 5eec8e58fa Fix compilation if ICC.
REVERT: aaa225888e Added missing typedefs
REVERT: e0386e2189 Don't use c++11 features and fix include.
REVERT: 52fd25e3c9 Add CUDA-specific std::complex<T> specializations for scalar_sum_op, scalar_difference_op, scalar_product_op, and scalar_quotient_op.
REVERT: b78e86df31 Pulled latest updates from trunk
REVERT: 0ea13fac89 Removed EIGEN_DEVICE_FUNC qualifers for the lu(), fullPivLu(), partialPivLu(), and inverse() functions since they aren't ready to run on GPU
REVERT: 1b7acef29a Merged hongkai-dai/eigen/tip into default (bug 1298)
REVERT: f0cd40fd15 Deleted some unecessary and confusing EIGEN_DEVICE_FUNC
REVERT: c2868da79e remove ternary operator in euler angles
REVERT: 34b314f282 Updated the owners of the file.
REVERT: f6c3caf566 Merged with default.
REVERT: 7565848fe5 Partial OpenCL support via SYCL compatible with ComputeCpp CE.
REVERT: 67db82e3e2 Silent warning.
REVERT: 51ed3294e3 fix compilation with boost::multiprec
REVERT: b9bfd2d86e Fix alignement of statically allocated temporaries in gemv.
REVERT: 8488b5e5c4 Make makeHouseholder more stable for cases where real(c0) is not very small (but the rest is).
REVERT: 0e844b5b70 Made AutoDiffJacobian more intuitive to use and updated for C++11
REVERT: b1bb76d22d Fix undeflow
REVERT: d3c4eceef0 Fix order of "static inline".
REVERT: 7d65e8fa4d Doc: add link from block methods to respective tutorial section.
REVERT: ea5caeae76 Bug 828: clarify documentation of SparseMatrixBase's methods returning a sub-matrix.
REVERT: df1b34826e Bug 828: clarify documentation of SparseMatrixBase's unary methods.
REVERT: 959a150a6c Let be consistent and consider any denormal number as zero.
REVERT: f74bd3d4c5 merge
REVERT: c259e6e405 Added several missing EIGEN_DEVICE_FUNC qualifiers
REVERT: 59d67ff0b1 Added missing EIGEN_DEVICE_FUNC qualifiers
REVERT: 3e83fc4d6a Fixed compilation warnings generated by nvcc 6.5 (and below) when compiling the EIGEN_THROW macro
REVERT: bdffff25d7 Fix product for custom complex type. (conjugation was ignored)
REVERT: a8adba6ee1 Suppress warning 2527 and 2529, which correspond to the "calling a __host__ function from a __host__ __device__ function is not allowed" message in nvcc 6.5.
REVERT: 93cf2e335f Suppress message 1222 when compiling with nvcc: this ensures that we don't warnings about unknown warning messages when compiling with older versions of nvcc
REVERT: 1b85aea2d6 Fix typo in doc.
REVERT: 83cba63bb4 Bug 1285: fix regression introduced in changeset 6c00c9378f16
REVERT: 1433fa5634 Register the cxx11_tensor_device only for recent cuda architectures (i.e. >= 3.0) since the test instantiate contractions that require a modern gpu.
REVERT: 194ca34371 CUDA contractions require arch >= 3.0: don't compile the cuda contraction tests on older architectures.
REVERT: 2361f9c486 Fixed a bug impacting some outer reductions on GPU
REVERT: 04ba7db76f Added the ability to compute the absolute value of a complex number on GPU, as well as a test to catch the problem.
REVERT: aa25008b26 Merged latest updates from trunk
REVERT: 238fba1a86 Properly size the list of waiters
REVERT: 265671a5df Added a resize method to MaxSizeVector
REVERT: eda6cef856 Fix compilation on 32 bits systems.
REVERT: 9c8fe179d7 Bug 1195: move NumTraits::Div<>::Cost to internal::scalar_div_cost (with some specializations in arch/SSE and arch/AVX)
REVERT: ca0331df47 Doc: explain minimal requirements on nullary functors
REVERT: f190395ef8 Generalize ScalarBinaryOpTraits to any complex-real combination as defined by NumTraits (instead of supporting std::complex only).
REVERT: 8c4101ebce Disable previous workaround.
REVERT: ad1571d6de Workaround MSVC instantiation faillure of has_*ary_operator at the level of triats<Ref>::match so that the has_*ary_operator are really properly instantiated throughout the compilation unit.
REVERT: 93ffb2b64d Bug 1266: remove CUDA guards on MatrixBase::<decomposition> definitions. (those used to break old nvcc versions that we propably don't care anymore)
REVERT: cdba414400 Bug 1288: fix memory leak in arpack wrapper.
REVERT: c4c4b14889 Fix shadowing wrt Eigen::Index
REVERT: cb4ac72f15 Fix compilation when cuda_fp16.h does not exist.
REVERT: a97e6e841c Workaround a weird msvc 2012 compilation error.
REVERT: 92e8ce2a40 Fix for msvc 2012 and older
REVERT: c82f816d99 Fixed a regression test
REVERT: 7a881c3917 Use MaxSizeVector instead of std::vector: xcode sometimes assumes that std::vector allocates aligned memory and therefore issues aligned instruction to initialize it. This can result in random crashes when compiling with AVX instructions enabled.
REVERT: 5c013e82d5 Fixed a typo
REVERT: 86478af663 Pulled latest update from trunk
REVERT: 7b5611a251 Made the index type an explicit template parameter to help some compilers compile the code.
REVERT: f3da32c21e Merged in rmlarsen/eigen (pull request #222)
REVERT: 7717d1ae97 Turned the Index type used by the nullary wrapper into a template parameter.
REVERT: 6e45c3df2a Fix CUDA build broken by changes to min and max reduction.
REVERT: 571b612905 Fix the cxx11_tensor_cuda.cu test on 32bit platforms.
REVERT: 791d268e4b merge
REVERT: 4e57f5738f Fix compilation with MSVC 2012
REVERT: 68ddb7f043 Added a test for nullary expressions on CUDA Also check that we can mix 64 and 32 bit indices in the same compilation unit
REVERT: e91d0639fa Updated the contraction code to support constant inputs.
REVERT: 0ec18f4955 One more msvc fix iteration, the previous one was over-simplified for visual
REVERT: 4e65d8360f Adjust Tensor module wrt recent change in nullary functor
REVERT: c6619f4875 Fix compilation with CUDA 8
REVERT: c383887f68 Fix compilation with nvcc
REVERT: 4dd9c9020b Fix compilation with visual studio
REVERT: 4bd296e583 Merged in rmlarsen/eigen (pull request #221)
REVERT: 9e3687bab6 Fix bugs to make min- and max reducers with correctly with IEEE infinities.
REVERT: 219c103bbd Make sure sizeof is truelly needed, thus improving SFINAE portability.
REVERT: 938bede3bf minor tweaks in has_* helpers
REVERT: e06db85347 Simplify CwiseNullaryOp example.
REVERT: 9f186061e2 Bug 1286: automatically detect the available prototypes of functors passed to CwiseNullaryExpr such that functors have only to implement the operators that matters among:  operator()()  operator()(i)  operator()(i,j) Linear access is also automatically detected based on the availability of operator()(i,j).
REVERT: 74ccaae327 Bug 1283: add regression unit test
REVERT: 7417f995f9 Bug 1283: quick fix for products involving uncommon general block access to vectors.
REVERT: d1c5ee7965 Fix 4x4 inverse with non-linear destination
REVERT: 1022df7246 Doc: add links and discourage user to write their own expression (better use CwiseNullaryOp)
REVERT: 64695ac253 Doc: add an exemple showing how custom expression can be advantageously implemented via CwiseNullaryOp.
REVERT: c91be04982 Doc: split customizing-eigen page into sub-pages and re-structure a bit the different topics
REVERT: a2395d6edb Doc: add link to example
REVERT: 4f476de4e9 Fix unit test for 1x1 matrices
REVERT: ee333fe836 merge EulerAngles module
REVERT: ab6e9f269e Fix warning
REVERT: ba30400b08 Include missing forward declaration of SparseMatrix
REVERT: ad909e2401 Revert part of changeset bcbe325 to keep accuracy of smallest eigenvalues.
REVERT: 0d92862158 Bug 1271: add SparseMatrix::coeffs() methods returning a 1D view of the non zero coefficients.
REVERT: b17e63c812 Add some pre-allocation unit tests (not working yet)
REVERT: 80dafd5ea8 Fix compilation with cuda 8
REVERT: b7a95e52a1 use ::hlog if available.
REVERT: f2affc2b19 Bug 1167: simplify installation of header files using cmake's install(DIRECTORY ...) command.
REVERT: 44091026a5 Add generic implementation of conj_helper for custom complex types.
REVERT: cd5e647c42 Bug 1282: fix implicit double to float conversion warning
REVERT: 561ca7ff56 Make sure that our log1p implementation is called as a last resort only.
REVERT: f8a19d1589 Add overload of numext::log1p for float/double in CUDA
REVERT: e6a2bda96f enable vectorization path when testing half on cuda, and add test for log1p
REVERT: bf19c87c6e Add missing log1p method
REVERT: 521c202f89 Fix compilation with boost::multiprec.
REVERT: e54d3097e9 Add support for non trivial scalar factor in sparse selfadjoint * dense products, and enable +=/-= assignement for such products. This changeset also improves the performance by working on column of the result at once.
REVERT: ae9cd10651 Bug 1268: detect faillure in LDLT and report them through info()
REVERT: 13b520e281 Typo
REVERT: 56950238b6 Fix compilation in non C++11 mode.
REVERT: 1939da0829 Address several implicit scalar conversions.
REVERT: 48c56a814c Cleanup eiegnvector extraction: leverage matrix products and compile-time sizes, remove numerous useless temporaries.
REVERT: af955e5e19 Bug 645: patch from Tobias Wood implementing the extraction of eigenvectors in GeneralizedEigenSolver
REVERT: 514245db5a Optimize expression matching "d?=a-b*c" as "d?=a; d?=b*c;"
REVERT: 1476437291 Fix compilation in check_for_aliasing due to ambiguous specializations
REVERT: 90cc56c64d Merged in traversaro/eigen-1/traversaro/modify-findeigen3cmake-to-find-eigen3con-1469782761059 (pull request #213)
REVERT: b247fa31be Cleanup cost of tanh
REVERT: ae9236ac76 Implement pmadd for float and double to make it consistent with the vectorized path when FMA is available.
REVERT: 90e3c38dd8 Factorize the 4 copies of tanh implementations, make numext::tanh consistent with array::tanh, enable fast tanh in fast-math mode only.
REVERT: ffc5b202ec Fix possible overflow and biais in integer random generator
REVERT: 342e13786b FindEigen3.cmake : search for package only if EIGEN3_INCLUDE_DIR is not already defined
REVERT: 70b829691c Bug 1265: remove outdated notes
REVERT: cf83e2ff8e Fix compilation on CUDA 8 by removing call to h2log1p
REVERT: 990be7d5ef Use array_prod instead of calling TotalSize since TotalSize is only available on DSize.
REVERT: cd6a3a96dd Merged in ibab/eigen/extend-log1p (pull request #218)
REVERT: 64821ca3db Close branch extend-log1p
REVERT: 452e2f8842 Fixed a bug in the documentation.
REVERT: 975db5d571 Bug 1273: Add parentheses when redefining eigen_assert
REVERT: 822a9da4ae Bug 1272: Disable assertion when total number of columns is zero. Also moved assertion to finished() method and adapted unit-test
REVERT: 69da6f5a72 std::erfcf doesn't exist: use numext::erfc instead
REVERT: 1c1fd67de5 Don't attempt to optimize partial reductions when the optimized implementation doesn't buy anything.
REVERT: 4244d475b8 Merged in ibab/eigen/extend-log1p (pull request #217)
REVERT: 5b255e4c85 Add log1p support for CUDA and half floats
REVERT: d65aa7b08a Merged in suiyuan2009/eigen/fix_tanh_inconsistent_for_tensorflow (pull request #215)
REVERT: 6f39bfe24e Bug 1272: Let CommaInitializer work for more border cases (enhances fix of Bug 1242). The unit test tests all combinations of 2x2 block-sizes from 0 to 3.
REVERT: cdbedc5b1b fix tanh inconsistent
REVERT: 9ed5b55dbc create fix_tanh_inconsistent branch
REVERT: ec7c715f5b Add aliases Eigen_*_DIR to Eigen3_*_DIR This is to make configuring work again after project was renamed from Eigen to Eigen3
REVERT: 8ba8754f30 Fixed the constructors of the new half_base class.
REVERT: 9381dc7f28 Fixed cut and paste bug in debud message
REVERT: ce77ff45d0 Fixed the isnan, isfinite and isinf operations on GPU
REVERT: 97e5d52324 Extended a regression test to validate that we basic fp16 support works with cuda 7.0
REVERT: 8e3560107e Deleted redundant regression test.
REVERT: b284164e4b Check that it's possible to forward declare the hlaf type.
REVERT: 15732f8772 Move Eigen::half_impl::half to Eigen::half while preserving the free functions to the Eigen::half_impl namespace together with ADL
REVERT: 5f450a5c3b Merged in ibab/eigen (pull request #206)
REVERT: f9bb377058 Cleaned up the new float16 test a bit
REVERT: fec63f68d5 Added a test for fp16
REVERT: d6dda864fe CUDA_ARCH isn't always defined, so avoid relying on it too much when figuring out which implementation to use for reductions. Instead rely on the device to tell us on which hardware version we're running.
REVERT: cc30220257 List PARDISO solver.
REVERT: 56aa94d54a Change project name to Eigen3, to be compatible with FindEigen3.cmake and Eigen3Config.cmake. This is related to pull-requests 214.
REVERT: ddeefd109a Use numext::conj instead of std::conj
REVERT: dbab783b29 Avoid unecessary object copies
REVERT: ab9c42c187 Fix vectorization logic for coeff-based product for some corner cases.
REVERT: 5658364d1a half implementation has been moved to half_impl namespace
REVERT: b0fbb4e0dd Bug 1266: half implementation has been moved to half_impl namespace
REVERT: 069937e267 Bug 1266: half implementation has been moved to half_impl namespace
REVERT: 0680d58e3f Modify FindEigen3.cmake to find Eigen3Config.cmake
REVERT: c2f3299d59 MSVC-2010 is making problems with SFINAE again. But restricting to the variant for very old compilers (enum, template<typename C> for both function definitions) fixes the problem.
REVERT: 428f95ec76 Enable slice-vectorization+inner-unrolling when unaligned vectorization is allowed. For instance, this permits to vectorize 5x5 matrices (including product)
REVERT: 79e0bb579a Update and fix Cholesky mini benchmark
REVERT: b8a89973ae Vectorize more small product expressions by letting the general assignement logic decides on the sizes that are OK for vectorization.
REVERT: 0ab2581032 Bug 1264: fix compilation
REVERT: 6f9e5bab2c Add instructions for LAPACKE+Accelerate
REVERT: 69681a01b4 Big 1261: add missing max(ADS,ADS) overload (same for min)
REVERT: c0d25acdcb Bug 1260: add regression test
REVERT: 29014bcf22 Bug 1260: remove doubtful specializations of ScalarBinaryOpTraits
REVERT: 2a8742a3fa Add brackets to block matrix and fixed some typos
REVERT: 7c26e7ee47 Added tag 3.3-beta2 for changeset 69d418c06999
REVERT: 484e93bcbc Bump to 3.3-beta2
REVERT: f86946a287 Formatting
REVERT: b37bd70514 Fix testing of nearly zero input matrices.
REVERT: e80c9302d0 Add more very small numbers in the list of nearly "zero" values when testing SVD and EVD algorithms
REVERT: 70141944d9 Improve robustness of 2x2 eigenvalue with shifting and scaling
REVERT: 9d3cac78a5 Fix compilation with MKL support
REVERT: 6201151a99 Typo.
REVERT: 1fea667880 Typos.
REVERT: d56b497e05 Fix with expession template scalar types.
REVERT: 3deab10011 Split BLAS/LAPACK versus MKL documentation
REVERT: 923170668c Bug 1258: fix compilation of Map<SparseMatrix>::coeffRef
REVERT: 9147b3e04a Update doc.
REVERT: 98a39ffc41 merge
REVERT: 24003e5054 Clean references to MKL in LAPACKe support.
REVERT: f4d1ddd2e6 Rename MKL files
REVERT: d146bd0059 Bug 173: remove dependency to MKL for LAPACKe backend.
REVERT: 097a4009a0 Deleted dead code.
REVERT: c2213cbd8d Bug 1249: enable use of __builtin_prefetch for GCC, clang, and ICC only.
REVERT: dac0d43c7c Bug 1255: comment out broken and unsused line.
REVERT: c7622c29a7 Bug 1250: fix pow() for AutoDiffScalar with custom nested scalar type.
REVERT: 79f305113f Implement digits10 for mpreal
REVERT: cc5b737ef0 Add minimal support for Array<string>, and fix Tensor<string>
REVERT: 8baa371a0b Extend boost.multiprec unit test with ET on, complexes, and general/generalized eigenvalue solvers.
REVERT: 45a36ff781 Enforce scalar types in calls to max/min (helps with expression template scalar types)
REVERT: ff090c7c41 Add digits10 overload for complex.
REVERT: c3ec73f4ff Remove custom complex division function cdiv.
REVERT: 52780b0fe3 Update doc.
REVERT: 0a0cf4aeb6 Add NumTraits::digits10() function based on numeric_limits::digits10 and make use of it for printing matrices.
REVERT: 9c281048cb merge
REVERT: 2a63ce345e Fix misuse of dummy_precesion in eigenvalues solvers
REVERT: fe4c3ecc22 Improved partial reductions in more cases
REVERT: 8a1293aa0c Allows the compiler to inline outer products (the change from default to dont-inline in changeset 0effa71 was not motivated)
REVERT: f8da1bd4ba merge
REVERT: 8a62a8971f add a note
REVERT: 180e761b42 Fix testing of log nearby 1
REVERT: 36df49de6b Truely split unit test.
REVERT: d0e141c330 Fix boostmultiprec for C++03
REVERT: bd45fbd9f0 Fix CUDA compilation
REVERT: 9ed040b677 Move half unit test from unsupported to main tests
REVERT: 6c67a551c9 More cleaning in half:  - put its definition and functions in its own half_impl namespace such that the free function does not polute the Eigen namespace while still making them visible for half through ADL.  - expose Eigen::half throguh a using statement  - move operator<< from std to half_float namespace
REVERT: 78fd7cfb78 Fix CUDA compilation
REVERT: eb5cfff123 Use ADL and log10 for printing matrices.
REVERT: aaf92a997b Extend unit testing of half with ADL and arrays.
REVERT: 09a3e9997b Add missing log10 and random generator for half.
REVERT: fb619c4f5d Some cleanup in Halh: standard functions should be defined in the namespace of the class half to make ADL work, and thus the global is* functions can be removed.
REVERT: 2defe97ea9 Add a doc page summarizing the true speed of Eigen's decompositions.
REVERT: 834c8dadcd Update benchmark for dense solver to stress least-squares pb, and to output a HTML table
REVERT: 189104444e enable testing of Boost.Multiprecision with expression templates
REVERT: efbb9ce12c Fixed a code comment error
REVERT: c1e58bf0b4 Add a unit test to stress our solvers with Boost.Multiprecision
REVERT: 775dc22dbd Enable custom scalar types in some unit tests.
REVERT: 526c47a6fa Make use of EIGEN_TEST_MAX_SIZE
REVERT: e7de7c9780 Fix ambiguous specialization with custom scalar type
REVERT: b733300b4d Complete the coeff-wise math function table.
REVERT: 46bf83ba1a Add missing Eigen::rsqrt global function
REVERT: ba6710f3a4 Simplify ScalarBinaryOpTraits by removing the Defined enum, and extend its documentation.
REVERT: 987bd66357 Workaround MSVC 2010 compilation issue.
REVERT: d421d5e708 Add a summary of possible values for EIGEN_COMP_MSVC
REVERT: c6ba73c8c9 Remove static constant declaration: this enforces compiler to generate costly code for thread safety.
REVERT: 4d20cf7765 Make scalar_product_op the default (instead of void)
REVERT: 7c36546d0f Permits call to explicit ctor.
REVERT: f5cfa9429f merge
REVERT: bf7bbbc3d7 Add missing non-const reverse method in VectorwiseOp.
REVERT: 7effebad54 Workaround VS2015 bug
REVERT: 91db0d0fa4 Fix regression in a previous commit: some diagonal entry might not be treated by the 2x2 real preconditioner.
REVERT: 0d7abbfc4e An evalTo expression is only aligned iff both the lhs and the rhs are aligned.
REVERT: 95c9db2eb7 Avoid division by very small entries when extracting singularvalues, and explicitly handle the 1x1 complex case.
REVERT: cbbc6f6883 Consider denormals as zero in makeJacobi and 2x2 SVD. This also fix serious issues with x387 for which values can be much smaller than the smallest denormal!
REVERT: 8d5efd5559 Fix test for nearly null input
REVERT: 73ae13da69 Fix compilation of doc
REVERT: 530f4cac88 Add some doxygen's images to support both old and recent doxygen versions (with some vague definitions of old and recent ;) )
REVERT: f7a0d073e3 Manually add -stdd=c++11 to nvcc for old cmake versions
REVERT: d29e04f611 Pulled latest updates from trunk
REVERT: caeacb7813 reverted unintended change.
REVERT: 23220820ff Made the packetmath test compile again. A better fix would be to move the special function tests to the unsupported directory where the code now resides.
REVERT: 21ddf3d767 Improved the contraction mapper to properly support tensor products
REVERT: 8bd4e9ce25 Improved the detection of packet size in the tensor scan evaluator.
REVERT: 5cc58748d3 Move CUDA's special functions to SpecialFunctions module.
REVERT: a07fd6921c Clarify that SpecialFunctions is unsupported
REVERT: 72e8ec1f07 merge
REVERT: b179734f20 Fix configuration of CUDA:  - preserve user defined CUDA_NVCC_FLAGS  - remove the -ansi flag that conflicts with -std=c++11  - do not add -std=c++11 if already there
REVERT: c42edef8a8 compile fix (SFINAE variant apparently didn't work for all compilers) for the following compiler/platform: gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46) Copyright (C) 2006 Free Software Foundation, Inc.
REVERT: 4ce1dbe5f9 Workaround MSVC bug
REVERT: 1a4bf7b4bc Split test_slice_in_expr which seems to be huge for visual
REVERT: 99c3aaa134 Fix assertion (it did not make sense for static_val types)
REVERT: f2ccec28db Emulate _BitScanReverse64 for 32 bits builds
REVERT: a11a2bd137 Merged kmargar/eigen/tip into default, Altivec/VSX port should be working ok now.
REVERT: d619a0b2c1 minor fixes for big endian altivec/vsx
REVERT: 7f7f059d2e Bug 1119: Adjust call to ?gssvx for SuperLU 5 Also improved corresponding cmake module to detect versions 5.x
REVERT: afda652de0 Relax strict equality
REVERT: b10b0745c1 Change runtime to compile-time conditional.
REVERT: 64ccb5899d Fix warnings
REVERT: fbf17f778e Fix warnings
REVERT: cf8b8caecd Bug 1232: refactor special functions as a new SpecialFunctions module, currently in unsupported/.
REVERT: af947223e2 fix compilation with c++11
REVERT: 62ed2bbac4 Split huge unit test
REVERT: 8727894d32 Prevent division by zero.
REVERT: 6cebc58ac3 Fix warning
REVERT: 51d66a1336 Fix warnings
REVERT: 46def0ba85 split huge unit test
REVERT: a3c97ffd30 Add debug output
REVERT: d785f8d3e4 Fix unit test.
REVERT: 682a9629d3 Relax is_equal to is_approx because scaling might modify last bit.
REVERT: 182ba12fbf Fix support of Intel's VML
REVERT: 7a9304deb4 Fix compilation with recent updates of icc 2016
REVERT: 8edb4210a4 Improve numerical robustness of RealSchur: add scaling and compare sub-diag entries to largest diagonal entry instead of the 2 neighbors.
REVERT: eb0dbb1e2d Fix warning.
REVERT: c807886097 Re-enable some specializations for Assignment<.,Product<>>
REVERT: 92c1faa682 Fix compilation with msvc
REVERT: c064ead1a0 Revert unwanted changes.
REVERT: 0b6996d6be Fix nesting of SolveWithGuess, and add unit test.
REVERT: ccc78a8c57 Fix template resolution.
REVERT: 4eddf66cd1 Add unit test for solveWithGuess, and fix template resolution.
REVERT: 840586a757 Add documentation and exemples for inplace decomposition.
REVERT: 135ca4e12c Bug 707: add inplace decomposition through Ref<> for Cholesky, LU and QR decompositions.
REVERT: 6dfb2d1656 Update relevent list of changesets.
REVERT: dad9902ec9 asm escape was not strong enough to prevent too aggressive compiler optimization let's fallback to no-inline.
REVERT: f11763e48d Few fixes in perf-monitoring.
REVERT: 53e721d4f1 fix clang compilation
REVERT: c062daa09d Workaround compilation issue with msvc
REVERT: 9cbc02eba4 Fix compilation of some unit tests with msvc
REVERT: fac953c9ba Change the semantic of the last template parameter of Assignment from "Scalar" to "SFINAE" only. The previous "Scalar" semantic was obsolete since we allow for different scalar types in the source and destination expressions. On can still specialize on scalar types through SFINAE and/or assignment functor.
REVERT: fe56c4d3f7 Fix performance regression in dgemm introduced by changeset 81d53c711775
REVERT: c3adb4f12a Fix performance regression introduced in changeset 8aad8f35c955. Register blocking sizes are better handled by the cache size heuristics. The current code introduced very small blocks, for instance for 9x9 matrix, thus killing performance.
REVERT: e6fdcd4867 Expose real and imag methods on Tensors
REVERT: 21bafb9e3f Merged in carpent/eigen (pull request #204)
REVERT: 9d81b49851 Made it possible to compile reductions for an old cuda architecture and run them on a recent gpu.
REVERT: c843b6fece Made the code compile when using CUDA architecture < 300
REVERT: 5418dd715b Merged in ibab/eigen/fix-tensor-scan-gpu (pull request #205)
REVERT: ef5d96dfea Add missing CUDA kernel to tensor scan op
REVERT: 76e2950ccf Use complete nested namespace Eigen::internal
REVERT: fffe2bf37d Undo changes in AltiVec --- I don't have any way to test there.
REVERT: 0a33a2bf51 Avoid global variables with static constructors in NEON/Complex.h
REVERT: adea938eda Added a test to validate the tensor scan evaluation on GPU. The test is currently disabled since the code segfaults.
REVERT: ca5c6b715b Don't store the scan axis in the evaluator of the tensor scan operation since it's only used in the constructor. Also avoid taking references to values that may becomes stale after a copy construction.
REVERT: 58d0c8b471 Disable pkgconfig only for native windows builds
REVERT: c77c2993df Fix compilation with MSVC by using our portable numext::log1p implementation.
REVERT: ec0be4bdd4 Bug 1270: bypass custom asm for pmadd and recent clang version
REVERT: a7ac9b0175 Define EIGEN_COMP_CLANG to clang version as major*100+minor (e.g., 307 corresponds to clang 3.7)
REVERT: 63e08100c4 Bug 1278: ease parsing
REVERT: d60e517953 Made the cost model cwiseMax and cwiseMin methods consts to help the PowerPC cuda compiler compile this code.
REVERT: 4efc154477 Force the inlining of a simple accessor.
REVERT: 62c7251088 Merged in ibab/eigen/double-tensor-reduction (pull request #216)
REVERT: c8ab5a8bcf Fix remaining CUDA >= 300 checks
REVERT: 8e79c153d7 Add the necessary CUDA >= 300 checks back
REVERT: 2a9836a2d0 Properly detect the type of the result of a contraction.
REVERT: 4ea64c712d Remove CUDA >= 300 checks and enable outer reductin for doubles
REVERT: 4a489010a1 Merge upstream changes
REVERT: 4efa226267 Make use of atomicExch for atomicExchCustom
REVERT: 8ae12a5f61 Enable efficient Tensor reduction for doubles
REVERT: abd37b2999 Bug 1247: fix regression in compilation of pow(integer,integer), and add respective unit tests.
REVERT: f71bedbcb2 Fix hyperbolic functions for autodiff.
REVERT: 3a12741c61 Fix missing specialization.
REVERT: 0768b909cc merge pull request 198
REVERT: f3f7f85df5 Fix some unused typedef warnings.
REVERT: 287b46213d Fix NumTraits<AutoDiff>
REVERT: 178555845e Fix instantiation of ScalarBinaryOpTraits for AutoDiff.
REVERT: b527fd0c84 Relax promote_scalar_arg logic to enable promotion to Expr::Scalar if conversion to Expr::Literal fails. This is useful to cancel expression template at the scalar level, e.g. with AutoDiff<AutoDiff<>>. This patch also defers calls to NumTraits in cases for which types are not directly compatible.
REVERT: 104806f7df Bug 1245: fix compilation with msvc
REVERT: 18afb440dd Return -1 from CurrentThreadId when called by thread outside the pool.
REVERT: bf6f3a6626 Resolve merge.
REVERT: 10bd711a79 Add unit test for printing empty tensors
REVERT: 02bdbf7ba0 Bug 1241: does not emmit anything for empty tensors
REVERT: 0cb7b3d57a Fix operator priority
REVERT: d11843dd18 Fix warning.
REVERT: 77bb9662ac merge PR 194
REVERT: 03f942e066 fix compilation with clang 3.9, fix performance with pset1, use vector operators instead of intrinsics in some cases
REVERT: c9246f43bc Introduce a NumTraits<T>::Literal type to be used for literals, and improve mixing type support in operations between arrays and scalars:  - 2 * ArrayXcf is now optimized in the sense that the integer 2 is properly promoted to a float instead of a complex<float> (fix a regression)  - 2.1 * ArrayXi is now forbiden (previously, 2.1 was converted to 2)  - This mechanism should be applicable to any custom scalar type, assuming NumTraits<T>::Literal is properly defined (it defaults to T)
REVERT: 50f1ae2be0 Biug 1242: fix comma init with empty matrices.
REVERT: 15fec393ae Silenced a couple of compilation warnings generated by xcode
REVERT: b028225258 Turned the constructor of the PerThread struct into what is effectively a constant expression to make the code compatible with a wider range of compilers
REVERT: 95a011f8f4 Handle empty tensors in the print functions
REVERT: 90589fb812 Fixed the printing of rank-0 tensors
REVERT: 6f76ba519a mostly cleanups and modernizing code
REVERT: c783045d8a mostly cleanups and modernizing code
REVERT: bec7b60934 fixed pexp<Packet2d>, was failing tests
REVERT: 4e9c85af64 Complete docs and add ostream operator for EulerAngles.
REVERT: 291c176377 Made log1p_impl usable inside a GPU kernel
REVERT: 25e7acc383 Add autodiff coverage for standard library hyperbolic functions, and tests. * * * Corrected tanh derivatived, moved test definitions. * * * Added more test cases, removed lingering lines
REVERT: c1121a9b29 Fix warnings with gcc
REVERT: 93989912d7 Move scalar/expr to ArrayBase and fix documentation
REVERT: b5f96fbef3 Propagate functor to ScalarBinaryOpTraits
REVERT: 3177d63402 Include the cost of stores in unrolling of triangular expressions.
REVERT: 5a82191d00 Merged in ibab/eigen (pull request #197)
REVERT: 7329b38554 Avoid generating pseudo random numbers that are multiple of 5: this helps spread the load over multiple cpus without havind to rely on work stealing.
REVERT: cdc9b0cc38 Cleanup useless helper: internal::product_result_scalar
REVERT: 51ce7490d7 Include the cost of stores in unrolling (also fix infinite unrolling with expression costing 0 like Constant)
REVERT: ca93c5bc98 Implement exclusive scan option
REVERT: 9a45818698 merge
REVERT: ffd81bb414 Cleanup unused functors.
REVERT: 79aa8b2c52 Generalize expr/expr and scalar/expr wrt scalar types.
REVERT: f7807821fd Update AutoDiffScalar wrt to scalar-multiple.
REVERT: ef9491b5ec Update Tensor module to use bind1st_op and bind2nd_op
REVERT: 75ce93cc82 Generalize expr.pow(scalar), pow(expr,scalar) and pow(scalar,expr). Internal: scalar_pow_op (unary) is removed, and scalar_binary_pow_op is renamed scalar_pow_op.
REVERT: 6a0042ea1b Update doc (scalar_add_op is now deprecated)
REVERT: 1ca271ca8a Implement expr+scalar, scalar+expr, expr-scalar, and scalar-expr as binary expressions, and generalize supported scalar types. The following functors are now deprecated: scalar_add_op, scalar_sub_op, and scalar_rsub_op.
REVERT: 72ba2df2e3 Fix doc.
REVERT: defc647dfc Fix compilation of BVH example
REVERT: b29aec2aa4 Add unit test for AlignedBox::center
REVERT: 73f3a52557 Add unittesting plugins to scalar_product_op and scalar_quotient_op to help chaking that types are properly propagated.
REVERT: d636fad488 Generalize coeff-wise sparse products to support different scalar types
REVERT: ed640d7793 Set cost of constant expression to 0 (the cost should be amortized through the expression)
REVERT: c6ba6cee07 Move MatrixBase::operaotr*(UniformScaling) as a free function in Scaling.h, and fix return type.
REVERT: da7734a453 Implement scalar multiples and division by a scalar as a binary-expression with a constant expression. This slightly complexifies the type of the expressions and implies that we now have to distinguish between scalar*expr and expr*scalar to catch scalar-multiple expression (e.g., see BlasUtil.h), but this brings several advantages: - it makes it clear on each side the scalar is applied, - it clearly reflects that we are dealing with a binary-expression, - the complexity of the type is hidden through macros defined at the end of Macros.h, - distinguishing between "scalar op expr" and "expr op scalar" is important to support non commutative fields (like quaternions) - "scalar op expr" is now fully equivalent to "ConstantExpr(scalar) op expr" - scalar_multiple_op, scalar_quotient1_op and scalar_quotient2_op are not used anymore in officially supported modules (still used in Tensor)
REVERT: d5a5b6d7c6 Fix compilation of evaluator unit test
REVERT: f78108a08c Little bit docs
REVERT: 77c6b4284d Add static assertion
REVERT: 7d11fd8434 Add bind1st_op and bind2nd_op helpers to turn binary functors into unary ones, and implement scalar_multiple2 and scalar_quotient2 on top of them.
REVERT: 894c2e2748 Add default template parameters for the second scalar type of binary functors. This enhences backward compatibility.
REVERT: 532a515042 check for mixing types in "array / scalar" expressions
REVERT: 6cd531e87f Add missing explicit scalar conversion
REVERT: 45966904d1 More docs, and minor code fixes
REVERT: 8130ac4c1a Add debug output.
REVERT: 49544d7bff Make sure T(i+1,i)==0 when diagonalizing T(i:i+1,i:i+1)
REVERT: dd608c7458 Merged in ibab/eigen (pull request #195)
REVERT: 2d3611384e Don't refer to the half2 type unless it's been defined
REVERT: 5f85d4edee Cleanup
REVERT: c394ae5157 Add real.pow(complex), complex.pow(real) unit tests.
REVERT: 49f4f6cb62 Enable mixing types in numext::pow
REVERT: ae326d0822 Big 279: enable mixing types for comparisons, min, and max.
REVERT: 72fa672666 Bug 1240: Remove any assumption on NEON vector types.
REVERT: 32c7156f5e Add small fixes to TensorScanOp
REVERT: 6c0c91c480 Fixed compilation of BVH_Example (required for make doc)
REVERT: 4b96eecdf9 Fixed compilation error with gcc 4.4
REVERT: f6cfd37126 Clean handling for void type in EIGEN_CHECK_BINARY_COMPATIBILIY
REVERT: 0efa8c336d Disable shortcuts for res ?= prod when the scalar types do not match exactly.
REVERT: 6b509ff956 Misc small improvements to the reduction code.
REVERT: a54ab3940c Added missing EIGEN_DEVICE_FUNC qualifiers to the unary array ops
REVERT: 84426473ae Implement result_of for the new ternary functors
REVERT: 4abfe4b17c Doc EulerAngles class, and minor fixes.
REVERT: b176c5e6fc Bug 1201: improve code generation of affine*vec with MSVC
REVERT: ea45f168a5 Moved assertions to the constructor to make the code more portable
REVERT: 4bde520f8c Relax mixing-type constraints for binary coefficient-wise operators: - Replace internal::scalar_product_traits<A,B> by Eigen::ScalarBinaryOpTraits<A,B,OP> - Remove the "functor_is_product_like" helper (was pretty ugly) - Currently, OP is not used, but it is available to the user for fine grained tuning - Currently, only the following operators have been generalized: *,/,+,-,=,*=,/=,+=,-= - TODO: generalize all other binray operators (comparisons,pow,etc.) - TODO: handle "scalar op array" operators (currently only * is handled) - TODO: move the handling of the "void" scalar type to ScalarBinaryOpTraits
REVERT: 983794ecc5 Silenced compilation warning
REVERT: 6ceaf254d5 Moved static assertions into the class constructor to make the code more portable
REVERT: fb873cc343 Removed executable bits from header files.
REVERT: 709c797220 Add randomized properties tests for betainc special function.
REVERT: 9c0cc28b9e size_t -> int
REVERT: 501137783c Add CurrentThreadId and NumThreads methods to Eigen threadpools and TensorDeviceThreadPool.
REVERT: bcf79df1ab Fix compile errors initializing packets on ARM DS-5 5.20
REVERT: 5d1b744d3b Make Arrays's ctor/assignment noexcept
REVERT: e0982d5114 Simplified the code that dispatches vectorized reductions on GPU
REVERT: 4777ff4d58 Fixed definition of some of the reducer_traits
REVERT: dc0f8ad8b8 Pulled latest updates from trunk
REVERT: c5c91f3bf0 Use signed integers more consistently to encode the number of threads to use to evaluate a tensor expression.
REVERT: f0cc728992 Improved code formatting
REVERT: 86c17065a2 Improved support for vectorization of 16-bit floats
REVERT: 2af8b1284b Include recent changesets that played with product's kernel
REVERT: f9b088b8d2 Take advantage that T is already diagonal in the extraction of generalized complex eigenvalues.
REVERT: 01f06e19aa Update RealQZ to reduce 2x2 diagonal block of T corresponding to non reduced diagonal block of S to positive diagonal form. This step involve a real 2x2 SVD problem. The respective routine is thus in src/misc/ to be shared by both EVD and AVD modules.
REVERT: 2ba7834604 Add unit test for non symmetric generalized eigenvalues
REVERT: 335691822d Fix shadow variable, and indexing.
REVERT: db4c5fa196 Fixed type conversion from int
REVERT: d1ccd18b16 Fixes for PARDISO: warnings, and defaults to metis+ in-core mode.
REVERT: fcf5399857 Fix extraction of complex eigenvalue pairs in real generalized eigenvalue problems.
REVERT: 01b7d061f4 Copied a regression test from 3.2 branch.
REVERT: c662ba0f7a Enable the vectorization of adds and mults of fp16
REVERT: 012d8268f6 Added missing EIGEN_DEVICE_FUNC
REVERT: 6ec31039bc Bug 725: make move ctor/assignment noexcept.
REVERT: 9aa1f4af81 Fix MatrixFunctions module.
REVERT: 54e0d77c7c Fix unit test.
REVERT: 83936dad07 Fix compilation.
REVERT: 7745820885 Fix compilation: Matrix does not indirectly live in the internal namespace anymore!
REVERT: 32e21e7e4f Fix function dependencies
REVERT: 84c23f7f20 Align the first element of the Waiter struct instead of padding it. This reduces its memory footprint a bit while achieving the goal of preventing false sharing
REVERT: 70ffec0836 Add TernaryFunctors and the betainc SpecialFunction. TernaryFunctors and their executors allow operations on 3-tuples of inputs. API fully implemented for Arrays and Tensors based on binary functors.
REVERT: dc9c36d220 Disable the tensor tests when using msvc since older versions of the compiler fail to handle this code
REVERT: 594f51adba Use array_prod to compute the number of elements contained in the input tensor expression
REVERT: cbd3028f8e Merged in ibab/eigen (pull request #192)
REVERT: 1756db6221 Improved the performance of full reductions.
REVERT: ae618d12c5 Add generic scan method
REVERT: b59a671506 merge
REVERT: 7c4bf4ebe8 Remove dead code.
REVERT: 46b820274d Implement generic scalar*expr and expr*scalar operator based on scalar_product_traits. This is especially useful for custom scalar types, e.g., to enable float*expr<multi_prec> without conversion.
REVERT: 68d8efdef8 Add syntactic sugar to Eigen tensors to allow more natural syntax. Specifically, this enables expressions involving:
REVERT: 8dcc006e93 Merged eigen/eigen into default
REVERT: ce3b43c5f1 Fix Gael reports (except documention)
REVERT: 2b2294f6b1 Merged in ibab/eigen (pull request #189)
REVERT: 8cb46f5f38 Bug 1193: fix lpNorm<Infinity> for empty input.
REVERT: a5a8cab897 Disable MSVC's "decorated name length exceeded, name was truncated" warning in unit tests.
REVERT: c215268c41 Fix pointer to long conversion warning.
REVERT: a1f990872d Add tensor scan op
REVERT: 421518535d Use a single PacketSize variable
REVERT: af7690e70a Fixed compilation warning
REVERT: 1e210ba2ae Speedup a test
REVERT: f0f9e1d243 Doc: add some cross references (also fix empty macro argument warning)
REVERT: f8c4ae5bbd Silenced compilation warning generated by nvcc.
REVERT: 01b7b1e1f4 Added support for mean reductions on fp16
REVERT: caf925f8ae Doc: start of a table summarizing coefficient-wise math functions.
REVERT: 11edef403b Add missing ArrayBase::log1p
REVERT: 413adc35c1 Expose log1p to Array.
REVERT: e5e6f81a53 Doc: makes the global unary math functions visible to doxygen (and docuement them)
REVERT: e10894db38 Doc: improve documentation of Map<SparseMatrix>
REVERT: f722b83022 Doc: disable inlining of inherited members, workaround Doxygen's limited C++ parsing abilities, and improve doc of MapBase.
REVERT: e026f06c9c Pulled latest updates from trunk
REVERT: 4abca0953f Only enable optimized reductions of fp16 if the reduction functor supports them
REVERT: 5ebd5818fd Improved support for CUDA 8.0
REVERT: 51e535dc66 Bug 1181: help MSVC inlining.
REVERT: 6059e80707 Fix compilation with old icc
REVERT: 7db76e84be Bug 1238: fix SparseMatrix::sum() overload for un-compressed mode.
REVERT: 2e63c5ea32 Silenced some compilation warnings triggered by nvcc 8.0
REVERT: 6ac1055127 Reimplement clamp as a static function.
REVERT: f9a400aa3b Use NULL instead of nullptr to preserve the compatibility with cxx03
REVERT: 1ff0df5c20 Added a new operation to enable more powerful tensorindexing.
REVERT: b555e46880 Fixed option '--relaxed-constexpr' has been deprecated and replaced by option '--expt-relaxed-constexpr' warning generated by nvcc 7.5
REVERT: d3bfb9fd8f Disable the use of MMX instructions since the code is broken on many platforms
REVERT: a64a008ecc Cleaner implementation of dont_over_optimize.
REVERT: 940400a9d2 Fix compilation when defaulting to row-major
REVERT: 51df32eb7c Fix compilation with old ICC version (use C99 types instead of C++11 ones)
REVERT: 7fc9d04719 Fixed some compilation warnings
REVERT: c7a329d88f Deleted extra namespace
REVERT: 1123e845c7 Preserve the ability to vectorize the evaluation of an expression even when it involves a cast that isn't vectorized (e.g fp16 to float)
REVERT: 552e009426 Resolved merge conflicts
REVERT: db6f8d72d2 Merged latest reduction improvements
REVERT: b1fc1e4230 Merged latest code improvements
REVERT: 9c5750783a Improved the performance of inner reductions.
REVERT: af6278ac07 Improved the coverage of the fp16 reduction tests
REVERT: 829ae8be44 Bug 1237: Redefine eigen_assert instead of disabling assertions for documentation snippets
REVERT: 6a2b807ac0 Code cleanup.
REVERT: 03d3dcde30 Disable usage of MMX with msvc.
REVERT: 76936d197d Bug 1236: fix possible integer overflow in density estimation.
REVERT: a0273cb07d Disabled GCC6's ignored-attributes warning in packetmath unit test.
REVERT: 5e4b452534 Fix some conversion warnings in unit tests.
REVERT: 092ceeb650 Fix numerous pointer-to-integer conversion warnings in unit tests.
REVERT: a74d179ea6 Defer the allocation of the working space: - it is not always needed, - and this fixes a long-to-float conversion warning
REVERT: 8ec993fa35 Fix copy ctor prototype.
REVERT: a0a2fa8750 linspaced's divisor for integer is better stored as the underlying scalar type.
REVERT: ac74366828 Fix/handle some int-to-long conversions.
REVERT: 0ee258d21b Store permutation's determinant as char. This also fixes some long to float conversion warnings
REVERT: f77756099b Fix a pointer to integer conversion warning
REVERT: 82dcf2de3d Handle some Index to int conversions in BLAS/LAPACK support.
REVERT: 135540a3d7 Disable some long to float conversion warnings
REVERT: 72b45accdf Temporary workaround for Bug 1237. The snippet (expectedly) failed with enabled assertions.
REVERT: 8b00ab5a8f Remove debuging code.
REVERT: 45e406680c Introduce internal's UIntPtr and IntPtr types for pointer to integer conversions. This fixes "conversion from pointer to same-sized integral type" warnings by ICC. Ideally, we would use the std::[u]intptr_t types all the time, but since they are C99/C++11 only, let's be safe.
REVERT: 336c977dce Turn off ICC's conversion warning in is_convertible implementation
REVERT: 04c6626ede Add missing inclusion of mmintrin.h
REVERT: f0fc3a2b28 Made the static storage class qualifier come first.
REVERT: 001acf35e3 Deleted unnecessary explicit qualifiers.
REVERT: 7d73de54d8 Don't mark inline functions as static since it confuses the ICC compiler
REVERT: 343641cae9 Silenced a compilation warning
REVERT: 196ae0af30 Marked unused variables as such
REVERT: 7a40c5a27f Specify the rounding mode in the correct location
REVERT: 5a139a74f6 Updated the README file for the tensor benchmarks
REVERT: 8e0a1d9a72 Explicitly specify the rounding mode when converting floats to fp16
REVERT: fc6d39821d Made the IndexPair code compile in non cxx11 mode
REVERT: cf23111e2e Made the index pair list code more portable accross various compilers
REVERT: 80bd64c40c Improved the performance of tensor padding
REVERT: 6346d08b88 Added support for statically known lists of pairs of indices
REVERT: bcf5f06291 Disable the use of MMX instructions on x86_64 since too many compilers only support them in 32bit mode
REVERT: 3617aefd6c Use numext:: instead of std:: functions.
REVERT: 2ec7b6cf06 Fix typo in dont_over_optimize
REVERT: cadacef315 Fix warning.
REVERT: 60a3d20909 Fix compilation with ICC.
REVERT: cefb74ff7f Fix static/inline order.
REVERT: 83b1b3b359 There is no need to make the fp16 full reduction kernel a static function.
REVERT: 08cfc9588d Fixed compilation warning
REVERT: 85ababe037 Cleaned up the fp16 code a little more
REVERT: 1a236ed26e Pulled latest updates from trunk
REVERT: 347475e2bf Cleaned up the fp16 code
REVERT: adc8227463 update doc wrt to unaligned vectorization
REVERT: c236fe22b5 Document EIGEN_UNALIGNED_VECTORIZE.
REVERT: 3394840b12 Workaround clang/llvm bug in code generation.
REVERT: c2fc7a864e Bug 256: enable vectorization with unaligned loads/stores. This concerns all architectures and all sizes. This new behavior can be disabled by defining EIGEN_UNALIGNED_VECTORIZE=0
REVERT: 60ea45331f Block<> should not disable vectorization based on inner-size, this is the responsibilty of the assignment logic.
REVERT: d2bb031619 Clean propagation of Dest/Src alignments.
REVERT: b9cfa1bfab Remove now-unused protate PacketMath func
REVERT: 5306241795 Remove the rotating kernel. It was only useful on some ARM CPUs (Qualcomm Krait) that are not as ubiquitous today as they were when I introduced it.
REVERT: c38e1fd6eb Don't attempt to use MMX instructions with visualstudio since they're only partially supported.
REVERT: 3e10614880 Worked around missing clang intrinsic
REVERT: a2aed1b5c3 Use the generic ploadquad intrinsics since it does the job
REVERT: 9d564b4f30 Worked around missing clang intrinsics
REVERT: 299a4f55b5 Added missing EIGEN_DEVICE_FUNC qualifier
REVERT: 38e93f8713 Include mmintrin.h to make it possible to use mmx instructions when needed. For example, this will enable the definition of a half packet for the Packet4f type.
REVERT: 8787fdd313 Use the Index type instead of integers to specify the strides in pgather/pscatter
REVERT: 33f7ea4670 Added missing alignment in the fp16 packet traits
REVERT: e00196f541 ptranspose is not a template.
REVERT: 758097ad32 Avoid unnecessary float to double conversions
REVERT: 0dd50da149 Avoid unnecessary float to double conversion.
REVERT: cd59405882 Started to vectorize the processing of 16bit floats on CPU.
REVERT: 087aaf64bc Don't optimize the processing of the last rows of a matrix matrix product in cases that violate the assumptions made by the optimized code path.
REVERT: 40b38d2f4f Fixed a typo in the array.cpp test
REVERT: 6de0286cd9 Merged in rmlarsen/eigen (pull request #188)
REVERT: db8c938406 Replace multiple constructors of half-type by a generic/templated constructor. This fixes an incompatibility with long double, exposed by the previous commit.
REVERT: 6fbf816453 Silenced several double-promotion warnings
REVERT: b911505270 fixed macro name
REVERT: 027d3c3a9a Fix some sign-compare warnings
REVERT: fc76759f72 Identify clang++ even if it is not named llvm-clang++
REVERT: 4f98b668d0 Document EIGEN_MAX_CPP_VER and user controllable compiler features.
REVERT: 6c777e46d0 Make EIGEN_HAS_CONSTEXPR user configurable
REVERT: f09a198186 Make EIGEN_HAS_VARIADIC_TEMPLATES user configurable
REVERT: ea385fbab8 Make EIGEN_HAS_STD_RESULT_OF user configurable
REVERT: 3913533892 Make EIGEN_HAS_C99_MATH user configurable
REVERT: c3eab99537 Make EIGEN_HAS_RVALUE_REFERENCES user configurable
REVERT: a44fa30990 Rename EIGEN_HAVE_RVALUE_REFERENCES to EIGEN_HAS_RVALUE_REFERENCES
REVERT: bb6960bf8d polygamma is C99/C++11 only
REVERT: f87b143cb5 Add a EIGEN_MAX_CPP_VER option to limit the C++ version to be used.
REVERT: 6579033402 Improve doc of special math functions
REVERT: 04a67a761e Rename UniformRandom to UnitRandom.
REVERT: 8af97f56b0 Fix coding practice in Quaternion::UniformRandom
REVERT: d26731c655 Bug 823: add static method to Quaternion for uniform random rotations.
REVERT: eef6edba43 Remove std:: to enable custom scalar types.
REVERT: a8b14a2ef1 Merged eigen/eigen into default
REVERT: 19dc3dd598 Merge.
REVERT: c40390ba1a Minor cleanups: 1. Get rid of unused variables. 2. Get rid of last uses of EIGEN_USE_COST_MODEL.
REVERT: ebde24735f Advertize the packet api of the tensor reducers iff the corresponding packet primitives are available.
REVERT: 6f99f7b00b Bug 1231: fix compilation regression regarding complex_array/=real_array and add respective unit tests
REVERT: 468e60753f Use coeff(i,j) instead of operator().
REVERT: 7899054e42 Bug 1224: fix regression in (dense*dense).sparseView() by specializing evaluator<SparseView<Product>> for sparse products only.
REVERT: 73adb2dd10 Use default sorting strategy for square products.
REVERT: d9a56ad63f Extend sparse*sparse product unit test to check that the expected implementation is used (conservative vs auto pruning).
REVERT: 4749315af8 Bug 1229: bypass usage of Derived::Options which is available for plain matrix types only. Better use column-major storage anyway.
REVERT: 04e96629a3 Pass argument by const ref instead of by value in pow(AutoDiffScalar...)
REVERT: cbf40ffcfb Bug 1223: fix compilation of AutoDiffScalar's min/max operators, and add regression unit test.
REVERT: ba16ab3647 Bug 1222: fix compilation in AutoDiffScalar and add respective unit test
REVERT: a73a0fea38 Big 1213: add regression unit test.
REVERT: 74f44472c3 Bug 1213: rename some enums type for consistency.
REVERT: 7107aeb0c4 Reduce overhead for small tensors and cheap ops by short-circuiting the const computation and block size calculation in parallelFor.
REVERT: d64b53dfea #if defined(EIGEN_USE_NONBLOCKING_THREAD_POOL) is now #if !defined(EIGEN_USE_SIMPLE_THREAD_POOL): the non blocking thread pool is the default since it's more scalable, and one needs to request the old thread pool explicitly.
REVERT: aa3aecd812 Fixed compilation error
REVERT: 4429939640 Fixed compilation error in the tensor thread pool
REVERT: 221ae9f3c9 Merge upstream.
REVERT: c3da4857ee Roll back changes to core. Move include of TensorFunctors.h up to satisfy dependence in TensorCostModel.h.
REVERT: 850da7c341 Merged eigen/eigen into default
REVERT: 4ebb77065d Enable the use of the packet api to evaluate tensor broadcasts. This speed things up quite a bit:
REVERT: a18d6985f0 Allow vectorized padding on GPU. This helps speed things up a little
REVERT: d10ad89136 Merged latest updates from trunk
REVERT: 13a4bfea3d Allow vectorized padding on GPU. This helps speed things up a little.
REVERT: 2d8fa37fce Pulled latest updates from trunk.
REVERT: 246c40658b Don't rely on c++11 extension when we don't have to.
REVERT: f4a91dcaab Avoid float to double conversion
REVERT: 4e155ec933 made a fix to the GMRES solver so that it now correctly reports the error achieved in the solution process
REVERT: c44019f393 Fix unit test.
REVERT: 29e44ce453 Improve unit tests of zeta, polygamma, and digamma
REVERT: 13bb08650f zeta and polygamma are not unary functions, but binary ones.
REVERT: 30bf1b486a zeta and digamma do not require C++11/C99
REVERT: 0a027cf88c Add some c++11 flags in documentation
REVERT: 4a2a9145fa Bug 1201: optimize affine*vector products
REVERT: 49e68bee56 Bug 1221: disable gcc 6 warning: ignoring attributes on template argument
REVERT: f68970f103 Fix SelfAdjointEigenSolver for some input expression types, and add new regression unit tests for sparse and selfadjointview inputs.
REVERT: ccd509843c DiagonalWrapper is a vector, so it must expose the LinearAccessBit flag.
REVERT: 1414e396dc Add support for SelfAdjointView::diagonal()
REVERT: e4f27bd0de Fix SelfAdjointView::triangularView for complexes.
REVERT: 6efd6ff892 Bug 1230: add support for SelfadjointView::triangularView.
REVERT: e597dbb2f2 Added missing costPerCoeff method
REVERT: e4db2d673d Turn on the cost model by default. This results in some significant speedups for smaller tensors. For example, below are the results for the various tensor reductions.
REVERT: 0717363570 Fixed syntax error
REVERT: 6f6c464316 Turnon the new thread pool by default since it scales much better over multiple cores. It is still possible to revert to the old thread pool by compiling with the EIGEN_USE_SIMPLE_THREAD_POOL define.
REVERT: 1057d08c04 New multithreaded contraction that doesn't rely on the thread pool to run the closure in the order in which they are enqueued. This is needed in order to switch to the new non blocking thread pool since this new thread pool can execute the closure in any order.
REVERT: d6e2e6f2b4 Added benchmarks for contraction on CPU.
REVERT: d9936a0f9f Removed unnecessary thread synchronization
REVERT: 4f7207daff Fixed compilation errors triggered by old versions of gcc
REVERT: 810f675fee Diasbled cost model by accident. Revert.
REVERT: a0aeffa040 Address comments by bsteiner.
REVERT: 3700770a9f Improvements to parallelFor.
REVERT: d36bde2b5c Worked around a compilation error triggered by nvcc when compiling a tensor concatenation kernel.
REVERT: 6dfbc17e56 Fixed potential race condition in the non blocking thread pool
REVERT: 6524433257 Replace implicit cast with an explicit one
REVERT: 8a80df4cb3 Worked around compilation errors with older versions of gcc
REVERT: 15b6936b4f Improved the portability of the tensor code
REVERT: cec703c08e Fixed a couple of bugs related to the Pascalfamily of GPUs
REVERT: 3792e84a32 Avoid unnecessary conversions between floats and doubles
REVERT: a5f9583a4f Added more tests for half floats
REVERT: 49ed6b8ab5 Added the ability to load fp16 using the texture path. Improved the performance of some reductions on fp16
REVERT: 3a48f5fef1 Misc fixes for fp16
REVERT: ee796c123a Made predux_min and predux_max on fp16 less noisy
REVERT: 8819e5cab1 __ldg is only available with cuda architectures >= 3.5
REVERT: 832536b17e Fixed a typo
REVERT: 7394dce6ce Do not copy for trivial 1x1 case. This also avoids a "maybe-uninitialized" warning in some situations.
REVERT: 5364d3c86e Added missing EIGEN_DEVICE_FUNC
REVERT: c405a8306a Added missing EIGEN_DEVICE_FUNC qualifiers
REVERT: 1bb99de823 Removed deprecated flag (which apparently was ignored anyway)
REVERT: 2e27688c5d fixed some double-promotion and sign-compare warnings
REVERT: 6b120d608b Split unit test
REVERT: 58341d2d8e Don't flood test output with successful VERIFY_IS_NOT_EQUAL tests.
REVERT: 7ce71cd690 Fix help output of buildtests and check scripts
REVERT: f89cd9f12d Bug 1207: Add and fix logical-op warnings
REVERT: d1a35e1167 Fixed a typo in my previous commit
REVERT: feef65041d Fix potential race condition in the CUDA reduction code.
REVERT: f7e08eedfb Added a few tests to validate the generation of random tensors on GPU.
REVERT: c989601ce6 Explicitely initialize all the atomic variables.
REVERT: 816d9d6dcb Workaround maybe-uninitialized warning
REVERT: 93bc55cd74 Workaround "misleading-indentation" warnings
REVERT: 3e1430ffd3 Properly gate the use of half2.
REVERT: 819d8bd0cd Extended the tests for ptanh
REVERT: 7d975b3e11 Added support for fp16 to the sigmoid functor.
REVERT: 300c87df6f Small improvement to the full reduction of fp16
REVERT: d39b62c37e Added packet primitives to compute exp, log, sqrt and rsqrt on fp16. This improves the performance by 10 to 30%.
REVERT: a6193c8e31 Added a test to validate the new non blocking thread pool
REVERT: 8166edc641 Simplified the reduction code a little.
REVERT: 764238e401 Fixed compilation warning
REVERT: 1ad686636b Improved the performance of full reductions on GPU:
REVERT: 047aa15064 Added the ability to use a scratch buffer in cuda kernels
REVERT: 477e3f4ac2 Added a new parallelFor api to the thread pool device.
REVERT: e53b01bc9a Optimized the non blocking thread pool:  * Use a pseudo-random permutation of queue indices during random stealing. This ensures that all the queues are considered.  * Directly pop from a non-empty queue when we are waiting for work, instead of first noticing that there is a non-empty queue and then doing another round of random stealing to re-discover the non-empty queue.  * Steal only 1 task from a remote queue instead of half of tasks.
REVERT: 942d47f9a9 Pulled latest updates from trunk
REVERT: 3d49f1aae2 Worked around a bug in nvcc on tegra x1
REVERT: 850a81de0c Merged latest updates from trunk
REVERT: ba753a3f0a Added support for packet processing of fp16 on kepler and maxwell gpus
REVERT: c3c6ca3dbb Avoid double promotion
REVERT: 78ec8230d9 Bug 1213: Give names to anonymous enums
REVERT: 2d9e326e42 Marked a few tensor operations as read only
REVERT: 24abb54b5b Added a test to validate full reduction on tensor of half floats
REVERT: 1061ca2f47 Made the testing of contractions on fp16 more robust
REVERT: a1dd9d3648 Refined the testing of log and exp on fp16
REVERT: a80e610818 Further improved the testing of fp16
REVERT: 30837e3ff7 Relaxed the dummy precision for fp16
REVERT: 0f9daac96b Relaxed an assertion that was tighter that necessary.
REVERT: 3e03b121de Added a benchmark to measure the performance of full reductions of 16 bit floats
REVERT: 4f7782a721 Fixed some incorrect assertions
REVERT: de8cf37c29 Avoid unecessary type promotion
REVERT: c881eeb5f6 Strongly hint but don't force the compiler to unroll a some loops in the tensor executor. This results in up to 27% faster code.
REVERT: be7796b820 Avoided unecessary type promotion
REVERT: bb068c1e65 Added tests for full contractions using thread pools and gpu devices. Fixed a couple of issues in the corresponding code.
REVERT: 2cf6e64004 Updated the contraction code to ensure that full contraction return a tensor of rank 0
REVERT: f6aab633a4 Fixed some singed/unsigned comparison warnings
REVERT: e2c4ddef0c Enable and fix -Wdouble-conversion warnings
REVERT: da80a57cd2 Reduced the memory footprint of the cxx11_tensor_image_patch test
REVERT: 1e60977cca Removed extraneous 'explicit' keywords
REVERT: b3dc3b89fe fix double-promotion/float-conversion in Core/SpecialFunctions.h
REVERT: 335a4b305a Improve documentation of BDCSVD
REVERT: 3c116f8634 Use numext::isfinite instead of std::isfinite
REVERT: 5cb09b4ae8 Bug 1214: consider denormals as zero in D&C SVD. This also workaround infinite binary search when compiling with ICC's unsafe optimizations.
REVERT: cf15859478 Enabled a number of tests previously disabled by mistake
REVERT: 2946b41f5b Merged eigen/eigen into default
REVERT: 6ccf2ba699 Re-enabled the product_small test now that everything compiles correctly.
REVERT: 6d2a3bb56e Added a test to validate the computation of exp and log on 16bit floats
REVERT: d6c1ca94be Fixed compilation error with cuda >= 7.5
REVERT: 20546e717c Deleted superfluous explicit keyword.
REVERT: d3856dd1ed Made a cast explicit
REVERT: 1dcf8ed3a6 Pulled latest updates from trunk
REVERT: 1c5531e146 Fixed compilation error
REVERT: 73826ce640 Fix performance regression: with AVX, unaligned stores were emitted instead of aligned ones for fixed size assignement.
REVERT: 66f9c42577 Added missing accessors to fixed sized tensors
REVERT: df6b430d2c Deleted trailing commas
REVERT: 1e65257cdb Deleted useless trailing commas
REVERT: 78d95c1bd8 Deleted unnecessary trailing commas.
REVERT: 8cdf8d9938 Fixed compilation errors generated by clang
REVERT: ffac2281d7 Added a few tests to ensure that the dimensions of rank 0 tensors are correctly computed
REVERT: 59910c2088 Return the proper size (ie 1) for tensors of rank 0
REVERT: 978d1c176a Made several tensor tests compatible with cxx03
REVERT: c2d2f2872d Moved a number of tensor tests that don't require cxx11 to work properly outside the EIGEN_TEST_CXX11 test section
REVERT: 83cff09729 Fixed teh cxx11_tensor_empty test to compile without requiring cxx11 support
REVERT: a4ca29ddf0 Deleted unused default values for template parameters
REVERT: fdbed704bf Made a coupe of tensor tests compile without requiring c++11 support.
REVERT: 936cd9e6ad Made the cxx11_tensor_forced_eval compile without c++11.
REVERT: 2f1465ab79 Don't turn on const expressions when compiling with gcc >= 4.8 unless the -std=c++11 option has been used
REVERT: a48776ccad Restore Tensor support for non c++11 compilers
REVERT: 5547696ca1 Fixed include path
REVERT: 783a010fa2 Extended the packetmath test to cover all the alignments made possible by avx512 instructions.
REVERT: 4ed792bef5 Update the makefile to make the tests compile with gcc 4.9
REVERT: e2cc5ed07b Resolved merge conflict
REVERT: 4e56bcd8a1 Pulled latest updates from upstream
REVERT: 05f29dd2a9 Implemented palign_impl for AVX512
REVERT: ada50c6e58 Fixed the AVX512 packet traits
REVERT: c09a94d824 Added  pdiv packet primitives for avx512
REVERT: cbdd1ef7ca Implemented preduxp for AVX512
REVERT: 240e62ef39 Implemented the pabs and preverse primitives for avx512.
REVERT: 76939307fc Disabled some of the AVX512 primitives on compilers that don't support them
REVERT: 04eb3831d4 Fix compilation of sparse.cast<>().transpose().
REVERT: d2361f1609 Fixed a few memory leaks
REVERT: 2488caa0b3 Fixed the igamma and igammac implementations to make them callable from a gpu kernel.
REVERT: ea2b2bb734 Deleted unused variable
REVERT: 7f35bb3bf1 Eliminate mutual recursion in igamma{,c}_impl::Run.
REVERT: 2177ead1f3 define Packet2d constants with VSX only
REVERT: e0ee4d8878 remove accidentally pasted code
REVERT: c20f6df1d8 improve state of MathFunctions as well
REVERT: ca2868205d bring Altivec/VSX to a better state, implement some of the missing functions
REVERT: 81a7682283 add name to copyrights
REVERT: 5631fbcffa minor fix, add to copyright
REVERT: 42373c3339 Fixed compilation error with clang.
REVERT: 5347f1bf7d Merged in rmlarsen/eigen2 (pull request #183)
REVERT: 61f3839351 Depend on the more extensive support for constexpr in clang:
REVERT: 945f49db67 Detect cxx_constexpr support when compiling with clang.
REVERT: 6c049311b1 Merged latest update from trunk
REVERT: edbdd4851f fpclassify isn't portable enough. In particular, the return values of the function are not available on all the platforms Eigen supportes: remove it from Eigen.
REVERT: a2c13a0205 Fix missing inclusion of Eigen/Core
REVERT: e8aa8e165d Made the index type a template parameter to evaluateProductBlockingSizes Use numext::mini and numext::maxi instead of std::min/std::max to compute blocking sizes.
REVERT: b166d2290f Merged latest updates from trunk
REVERT: 248f0671a6 Improved support for min and max on 16 bit floats when running on recent cuda gpus
REVERT: d64a2fc3be Merged eigen/eigen into default
REVERT: c8ae994d3a Use computeProductBlockingSizes to compute blocking for both ShardByCol and ShardByRow cases.
REVERT: 1c6950db60 Added support for fpclassify in Eigen::Numext
REVERT: 02e502b082 Implement stricter argument checking for SYRK and SY2K and real matrices. To implement the BLAS API they should return info=2 if op='C' is passed for a complex matrix. Without this change, the Eigen BLAS fails the strict zblat3 and cblat3 tests in LAPACK 3.5.
REVERT: db6a8ede8f Refactor the unsupported CXX11/Core module to internal headers only.
REVERT: 0b497762f0 Fixed the partial evaluation of non vectorizable tensor subexpressions
REVERT: 3343535997 Refined the cost of the striding operation.
REVERT: d0e1f1210c Merged eigen/eigen into default
REVERT: 544d158ccd Merged in rmlarsen/eigen (pull request #179)
REVERT: 5205111fa8 Provide access to the base threadpool classes
REVERT: a4af1f755d Prevent crash in CompleteOrthogonalDecomposition if object was default constructed.
REVERT: 96a8b3ff68 Added the ability to switch to the new thread pool with a #define
REVERT: 67481b3782 Use index list for the striding benchmarks
REVERT: 2ffc0dcbc8 Fixed several compilation warnings
REVERT: fe7fe255b5 Added an option to enable the use of the F16C instruction set
REVERT: 0fdc3bd161 Use EIGEN_THREAD_YIELD instead of std::this_thread::yield to make the code more portable.
REVERT: f023e62835 Merged eigen/eigen into default
REVERT: 5f980f7762 Don't crash when attempting to reduce empty tensors.
REVERT: 8c443e4a0f Added more tests
REVERT: 37f54e0759 Don't attempt to leverage the _cvtss_sh and _cvtsh_ss instructions when compiling with clang since it's unclear which versions of clang actually support these instruction.
REVERT: 1cbed7cf16 Started to implement a portable way to yield.
REVERT: e18a15b781 Made sure all the required header files are included when trying to use fp16
REVERT: 60b0487d12 Implemented a more portable version of thread local variables
REVERT: 60f1ad7a22 Fixed a few typos
REVERT: fd1c8f7f1b Fixed a compilation error with nvcc 7.
REVERT: 1fa35bdd9b Simplified the code that launches cuda kernels.
REVERT: ef8c49d7ee Don't take the address of a kernel on CUDA devices that don't support this feature.
REVERT: 30901e5643 Use numext::ceil instead of std::ceil
REVERT: 0b7903817e Avoid an unnecessary copy of the evaluator.
REVERT: 21313896fe Fixed 2 recent regression tests
REVERT: 8431d79b91 Use DenseIndex in the MeanReducer to avoid overflows when processing very large tensors.
REVERT: 57dd3070f1 Worked around the lack of a rand_r function on windows systems
REVERT: 9e877c3700 Worked around the lack of a rand_r function on windows systems
REVERT: 5858255ab8 Enable lazy-coeff-based-product for vector*(1x1) products
REVERT: 6f731a12a2 Move the evalGemm method into the TensorContractionEvaluatorBase class to make it accessible from both the single and multithreaded contraction evaluators.
REVERT: 1db2e018d5 Deleted extraneous comma.
REVERT: eebda8369e Deleted unnecessary variable
REVERT: 8f344df627 Fixed a few compilation warnings
REVERT: 6af297a48d Merged in rmlarsen/eigen (pull request #178)
REVERT: f8252f69e7 Bug 1203: by-pass large stack-allocation in stableNorm if EIGEN_STACK_ALLOCATION_LIMIT is too small
REVERT: 80edbbdcef Get rid of void* casting when calling EvalRange::run.
REVERT: 3a5611cca9 Fixed compilation errors with msvc
REVERT: 8601e25102 Improved the matrix multiplication blocking in the case where mr is not a power of 2 (e.g on Haswell CPUs).
REVERT: 03c41b5525 Fix trmv for mixing types.
REVERT: 7e2b802182 remove pgather/pscatter for std::complex<double> for s390x
REVERT: 91994312c6 Added ability to access the cache sizes from the tensor devices
REVERT: 98e08448bb Added support for exclusive or
REVERT: 9dec1ab62c Eigen Tensor cost model part 2: Thread scheduling for standard evaluators and reductions. The cost model is turned off by default.
REVERT: 223baa55b8 Added missing definition of PacketSize in the gpu evaluator of convolution
REVERT: e97ea07f91 Merged in rmlarsen/eigen (pull request #177)
REVERT: 900dc2137f Enabled the new threadpool tests
REVERT: e84dbfbb61 Cleanup
REVERT: 135e53fc43 Prepared the migration to the new non blocking thread pool
REVERT: 6977534c22 Improvements to cost model.
REVERT: c65d35f25a Merged latest updates from trunk
REVERT: 421f11420a Added tests for the non blocking thread pool
REVERT: 352b49e4f4 Added a more scalable non blocking thread pool
REVERT: a23f672096 Merge upstream updates.
REVERT: d7bd44cc16 Eigen cost model part 1. This implements a basic recursive framework to estimate the cost of evaluating tensor expressions.
REVERT: c9c46e5a25 Add extreme values to the imaginary part for SVD unit tests.
REVERT: 0809f30ce7 Improve numerical robustness of JacoviSVD:  - avoid noise amplification in complex to real conversion  - compare off-diagonal entries to the current biggest diagonal entry: no need to bother about a 2x2 block containing ridiculously small entries compared to the rest of the matrix.
REVERT: ff94f4487b Force the inlining of the << operator on half floats
REVERT: c16726a85e Inline the << operator on half floats
REVERT: 8ceb042fa7 Silenced a compilation warning
REVERT: 5348235ae9 Added tests to validate flooring and ceiling of fp16
REVERT: 66671fa6e9 Added simple test for numext::sqrt and numext::pow on fp16
REVERT: cd900cadd6 Added basic test for trigonometric functions on fp16
REVERT: d981084537 Added support for fp16 to test_isApprox, test_isMuchSmallerThan, and test_isApproxOrLessThan
REVERT: bff483f8f3 Added ability to printf fp16
REVERT: 93bfddeb33 Added support for fp16 to the sigmoid function
REVERT: 6c0a48547d Made the test msvc friendly
REVERT: 32540e1c63 Cleaning pass on rcond estimator.
REVERT: a4a25781f8 remove useless include
REVERT: a2c5bd38e5 Better use .data() than &coeffRef(0)
REVERT: 445afbf219 Merged in rmlarsen/eigen (pull request #174)
REVERT: eb17be6bb3 Properly gate the definition of the error and gamma functions for fp16
REVERT: a7f3014c70 Improved support for trigonometric functions on GPU
REVERT: 4139b2b040 Added basic implementation of the lgamma, digamma, igamma, igammac, polygamma, and zeta function for fp16
REVERT: 3f438a304e merge
REVERT: 5956422d35 Fix JacobiSVD for complex when the complex-to-real update already gives a diagonal 2x2 block.
REVERT: 322463d33a Cleaned up the implementation of digamma
REVERT: 54a9d6ec18 Pulled latest updates from trunk
REVERT: 8b9882a7e7 Added support for sin, cos, tan, and tanh on fp16
REVERT: 9db21114d7 Add debug output for random unit test
REVERT: 736087e480 Turn a converge check to a warning
REVERT: b7fe3e9ab5 Fix underflow in JacoviSVD's complex to real preconditioner
REVERT: 31c8078071 Fix corner case in unit test.
REVERT: b4f118c8a7 Fix warning in unit tests
REVERT: 2d616ec575 Added support for computing cos, sin, tan, and tanh on GPU.
REVERT: e333d09e7d Added constructors to convert unsigned integers into fp16
REVERT: 3242975a70 Workaround a division by zero when outerstride==0
REVERT: 3168185045 Make use of is_same_dense helper instead of extract_data to detect input/outputs are the same.
REVERT: 7613a8eaba Fix incomplete previous patch on matrix comparision.
REVERT: bf17117959 Fix detection of same matrices when both matrices are not handled by extract_data.
REVERT: 57da6fbe9a Add regression unit tests for half-packet vectorization
REVERT: 9c4d2e7b7a Improve half-packet vectorization logic to distinguish linear versus inner traversal modes.
REVERT: 14cdc5bd59 Enable half-packet in reduxions.
REVERT: 02f52e1039 Fixed compilation warnings generated by clang
REVERT: 22ba1991eb Enable the benchmarks for algebraic and transcendental fnctions on fp16.
REVERT: bb61c2e166 Don't put a command at the end of an enumerator list
REVERT: eb0d8b67b6 Pulled latest update from trunk
REVERT: 3ac57e1315 Fixed the vectorization logic test
REVERT: 13dc6e3161 Turned on the contraction benchmarks for fp16
REVERT: 12b0e4c52f Enable the use of half-packet in coeff-based product. For instance, Matrix4f*Vector4f is now vectorized again when using AVX.
REVERT: d731edb330 Fixed the zeta test
REVERT: ec1fd0540e Defer the decision to vectorize tensor CUDA code to the meta kernel. This makes it possible to decide to vectorize or not depending on the capability of the target cuda architecture. In particular, this enables us to vectorize the processing of fp16 when running on device of capability >= 5.3
REVERT: 4cd560a02b Updated the AVX512 PacketMath to properly leverage the AVX512DQ instructions
REVERT: 18e013b7c5 Merged eigen/eigen into default
REVERT: bb40c3743b Pull latest updates from upstream
REVERT: caef0c8f28 More accurate cost estimates for exp, log, tanh, and sqrt.
REVERT: c95dacfe8d Added epsilon, dummy_precision, infinity and quiet_NaN NumTraits for fp16
REVERT: 9662b5b208 Pulled latest update from trunk
REVERT: bd7ef8a058 Update doc regarding the genericity of EIGEN_USE_BLAS
REVERT: f983189100 Improve constness of level2 blas API.
REVERT: b21cbb18bd Move LAPACK declarations from blas.h to lapack.h and fix compatibility with EIGEN_USE_MKL
REVERT: 70fa24f492 Cleanup obsolete assign_scalar_eig2mkl helper.
REVERT: 451e950fa2 Remove all references to MKL in BLAS wrappers.
REVERT: 6dc311ce22 Fix long to int conversion in BLAS API.
REVERT: 4dbb419867 Silent unused warning.
REVERT: 4b149f18c9 Relax dependency on MKL for EIGEN_USE_BLAS
REVERT: f7975eba3a Improve constness of blas level-3 interface.
REVERT: fb6aefd0ef Fix static/inline keywords order.
REVERT: c91da75e2e Typos in doc.
REVERT: 36e90f9873 Proper handling of domain errors.
REVERT: abaf32b313 Merge.
REVERT: 721355a9fd Add short-circuit to avoid calling matrix norm for empty matrix.
REVERT: f12be74226 Merged default (96e9f55af9e2) into default
REVERT: 28a55bc6b1 Merged eigen/eigen into default
REVERT: 2ea2e85519 Merge.
REVERT: c97f06b0c3 A few tiny adjustments to short-circuit logic.
REVERT: 8b105fa623 Merge upstream
REVERT: 3c0f24c949 Added nans to zeta function.
REVERT: b40c315c06 Bug 1197: fix/relax some LM unit tests
REVERT: 04b0215429 Bug 1160: fix and relax some lm unit tests by turning faillures to warnings
REVERT: 4d1f7a71df Use numext::abs instead of std::abs in scalar_fuzzy_default_impl to make it usable inside GPU kernels.
REVERT: 512db2a12a Fixed the implementation of Eigen::numext::isfinite, Eigen::numext::isnan, andEigen::numext::isinf on CUDA devices
REVERT: 7e0809330e Fixed isfinite_impl: NumTraits<T>::highest() and NumTraits<T>::lowest() are finite numbers.
REVERT: 35bd525a02 Disabled the use of half2 on cuda devices of compute capability < 5.3
REVERT: b3babb87f6 Initial support for taking the power of fp16
REVERT: 2ed5e3d7be Fixed the packet_traits for half floats.
REVERT: c10d691642 Created the new EIGEN_TEST_CUDA_CLANG option to compile the CUDA tests using clang instead of nvcc
REVERT: f5ed4c4308 Merged eigen/eigen into default
REVERT: 8193ed5461 Don't test the division by 0 on float16 when compiling with msvc since msvc detects and errors out on divisions by 0.
REVERT: 6cbbe555e5 Add references to filed LLVM bugs
REVERT: b53278bb0b Properly handle complex numbers.
REVERT: f0ec548eb3 Turn on the coeffWise benchmarks on fp16
REVERT: 87b661862d Fixed the type casting benchmarks for fp16
REVERT: f8098f3f02 Fixed the type casting benchmark for float16
REVERT: 416626be4e Merged in parthaEth/eigen (pull request #175)
REVERT: ff5c6ba81e Renamed float16 into cxx11_float16 since the test relies on c++11 features
REVERT: d2414367a8 Merged eigen/eigen into default
REVERT: 08a33c5796 Added missing EIGEN_DEVICE_FUNC to the tensor conversion code.
REVERT: 7e454aabe6 Fixed the benchmarking of fp16 coefficient wise operations
REVERT: aad9e09259 Widen short-circuiting ReciprocalConditionNumberEstimate so we don't call InverseMatrixL1NormEstimate for dec.rows() <= 1.
REVERT: df131ab1c7 Use Index instead of int for indexing and sizes.
REVERT: 7f293e6160 Remove transpose() method from LLT and LDLT classes as it would imply conjugation. Explicitly cast constants to RealScalar in ConditionEstimator.h.
REVERT: 646fb8419d Use lpNorm<1>() to compute l1 norms in LLT and LDLT.
REVERT: 00192f9b9a Static casting scalar types so as to let chlesky module of eigen work with ceres
REVERT: 392360e4a7 Worked around numerical noise in the test for the zeta function.
REVERT: de8cee591d Fixed a typo in the polygamma test.
REVERT: 8bf94d4f25 Updated the unary functors to use the numext implementation of typicall functions instead of the one provided in the standard library. The standard library functions aren't supported officially by cuda, so we're better off using the numext implementations.
REVERT: 60c77100a7 Move the functions operating on fp16 out of the std namespace and into the Eigen::numext namespace
REVERT: f91085129d Added tests for float16
REVERT: fdb80282da Fixed a typo in a test
REVERT: 617ec24c56 Updated the isnan, isinf and isfinite functions to make compatible with cuda devices.
REVERT: 6fb3a1cdbc Added support for isinf, isnan, and isfinite checks to the tensor api
REVERT: 3722be6bfc Fixed a possible integer overflow.
REVERT: cae0cba7ce Fixed compilation warning triggered by msvc
REVERT: ceeee53b9d Fixed packet_traits<half>
REVERT: 69b87c38fb Added support for hardware conversion between fp16 and full floats whenever possible.
REVERT: d08cee2a55 Fixed the tests for the zeta and polygamma functions
REVERT: f77e219389 Fixed typos in the implementation of the zeta and polygamma ops.
REVERT: 189beae396 Made the fp16 code more portable.
REVERT: 2d1731f4b0 Added some missing conversions to the Half class, and fixed the implementation of the < operator on cuda devices.
REVERT: 1ed6f909c2 Merged in tillahoffmann/eigen (pull request #173)
REVERT: b4f802ff09 Renamed the EIGEN_TEST_NVCC cmake option into EIGEN_TEST_CUDA per the discussion in bug 1173.
REVERT: 2d6535b6f6 Added support for isfinite on fp16
REVERT: f186c10a69 Fix bug in alternate lower bound calculation due to missing parentheses. Make a few expressions more concise.
REVERT: 0e2ee5b35c Merged kmargar/eigen/tip into default
REVERT: f4901e6010 complete the port, remove float support
REVERT: 6a1127f2ed Merged eigen/eigen into default
REVERT: 0b58b9985f Added accuracy comments.
REVERT: 5770c611ef Bug 1189: fix pow/atan2 compilation for AutoDiffScalar
REVERT: b02ef25c23 add remaining includes
REVERT: 764f64b93b complete int/double specialized traits for ZVector
REVERT: 87094ad5ab enable all tests again
REVERT: c6e40dd6b8 enable the other includes as well
REVERT: 85f8623548 Merged eigen/eigen into default
REVERT: ebc00cd17a Fix docstrings to list all supported decompositions.
REVERT: 21523ac5e5 Addresses comments on Eigen pull request #174.
REVERT: 0a8ef41948 Bug 1190 - Don't trust __ARM_FEATURE_FMA on Clang/ARM
REVERT: ce940a913b Bug 1191 - Prevent Clang/ARM from rewriting VMLA into VMUL+VADD
REVERT: 80f70fc0fa Merge upstream.
REVERT: bd21405cb9 Refactored code into type-specific helper functions.
REVERT: 9569833d71 Updated the scalar_abs_op struct to make it compatible with cuda devices.
REVERT: 50df804d57 Fixed the signature of numext::abs to make it compatible with complex numbers
REVERT: 1b27064767 Merged eigen/eigen into default
REVERT: 11de591260 Fix cross-compiling windows version detection
REVERT: 4d00ea858a Merged eigen/eigen into default
REVERT: 44a118e30c Add rcond method to LDLT.
REVERT: a05632c66f Add condition estimation to Cholesky (LLT) factorization.
REVERT: 2c7e01b177 Replace "inline static" with "static inline" for consistency.
REVERT: 0ad542b484 Fix comments in ConditionEstimator and minor cleanup.
REVERT: f4ac8fea96 Add matrix condition estimator module that implements the Higham/Hager algorithm from http://www.maths.manchester.ac.uk/~higham/narep/narep135.pdf used in LPACK. Add rcond() methods to FullPivLU and PartialPivLU.
REVERT: a628d80ce5 Merge upstream.
REVERT: 656409fdca Added CUDA tests.
REVERT: 46ea4df2a3 Fixed CUDA signature.
REVERT: 76bed76b85 Fixed suggestions by Eugene Brevdo.
REVERT: 9a589f9219 Merged eigen/eigen into default
REVERT: 16dc7fb327 Added polygamma function.
REVERT: 7c2b4bf10a Added zeta function.
REVERT: 81618d6e96 Relaxed the condition used to gate the fft code.
REVERT: dadb65a9b9 Hashing was only officially introduced in c++11. Therefore only define an implementation of the hash function for float16 if c++11 is enabled.
REVERT: 606156949c Improved code formating
REVERT: 2bdfb071e7 Added the ability to hash a fp16
REVERT: bc0254ef62 Properly gate the fft code
REVERT: 59fbd9c048 Made it possible to use the NumTraits for complex and Array in a cuda kernel.
REVERT: 6e0f747f86 Added __ldg primitive for fp16.
REVERT: 55075d1b73 Added NumTraits for half floats
REVERT: 7402b5d4c9 Fixed a typo
REVERT: 8fa08fed3f Fixed a off-by-one bug in a debug assertion
REVERT: 06b20f73cc Added NumTraits for type2index.
REVERT: b54541c228 Pull math functions from the global namespace only when compiling cuda code with nvcc. When compiling with clang, we want to use the std namespace.
REVERT: a22582fc71 Enable constant expressions when compiling cuda code with clang.
REVERT: 39a531af6f Fixed compilation warning
REVERT: 31d5c157af Added missing assignment operator to the TensorUInt128 class, and made misc small improvements
REVERT: c1892f4756 Bug 1186 - vreinterpretq_u64_f64 fails to build on Android/Aarch64/Clang toolchain
REVERT: 4cf23250c2 Fixed the formatting of the README.
REVERT: 2adaee80ff Attempt to fix the formatting of the README
REVERT: 9e450bb494 Pulled latest updates from trunk
REVERT: 931d411552 Add regression test for nesting type handling in blas_traits
REVERT: 7d3c361b75 Added missing cuda template specializations for numext::ceil
REVERT: 11c640d3f1 Use false instead of 0 as the expected value of a boolean
REVERT: 13218e6735 Added support for  standard mathematical functions and trancendentals(such as exp, log, abs, ...) on fp16
REVERT: 1221ef8081 Added support for fmod
REVERT: cc10d568bb Made it possible to customize the threadpool
REVERT: a0b03e0b22 Fixed compilation warnings on arm
REVERT: aa44a67a16 Prevent potential overflow.
REVERT: 8041fcb642 actually include ZVector files, passes most basic tests (float still fails)
REVERT: 28766b187e Merged eigen/eigen into default
REVERT: dce4a51242 some primitives ported, but missing intrinsics and crash with asm() are a problem
REVERT: 59731d7ac8 Improved support for integer modulo
REVERT: 59b6a14f5a Improved the cost estimate of the quotient op
REVERT: 781a36e8fa Started to model the cost of divisions more accurately.
REVERT: 4d9cbae5fa Fixed compilation error on windows
REVERT: 6e1da51b23 Updated the benchmarking code to use Eigen::half instead of half
REVERT: 1e34966216 Made sure that the cxx11_tensor_cuda test can be compiled even without support for cxx11.
REVERT: 45ad1cbb90 Use numext::abs instead of abs to avoid incorrect conversion to integer of the argument
REVERT: 372a21f6d9 Avoid unnecessary conversions
REVERT: dcabf91055 Fixed compilation warning
REVERT: 4ee7c2b3fc Use portable includes
REVERT: d052a41f88 Added comment
REVERT: 400dd1753d Removed executable bit from header files
REVERT: a92ed2b81e Removed executable bit from header files
REVERT: 5ea676d8a0 Fixed contractions of fp16
REVERT: 4418d756af Made the tensor benchmarks compile on MacOS
REVERT: bb9e0f7033 Added a test to verify that notifications are working properly
REVERT: 331420f84a Made type conversion explicit
REVERT: b037dda967 Added the ability to divide a half float by an index
REVERT: 70a851fb64 Added more conversion operators for half floats
REVERT: eb248229c9 Replace all M_PI by EIGEN_PI and add a check to the testsuite.
REVERT: 170194c1a3 Merged patch 672 from Justin Lebar: Don't use long doubles with cuda
REVERT: e39a090740 Fixed compilation error
REVERT: eecb8d1417 Pulled latest updates from trunk
REVERT: 4abff5080d Use a single Barrier instead of a collection of Notifications to reduce the thread synchronization overhead
REVERT: 480ed536dd Fixed a couple of typos
REVERT: 4e02f2f847 Filter some compilation flags that nvcc warns about.
REVERT: 5d13a18ee6 Avoid using std::vector whenever possible
REVERT: c267534cf6 Use an enum instead of a static const int to prevent possible link error
REVERT: 1125d99a6f Fixed contractions of 16 bit floats
REVERT: 573a87ea1c Worked around a constness related issue
REVERT: e592066016 Small cleanup
REVERT: 0118e6ee47 add initial s390x(zEC13) ZVECTOR support
REVERT: e537f56d17 Marked variables that's only used in debug mode as such
REVERT: cbacc90046 Explicitly cast the default value into the proper scalar type.
REVERT: e1620130f2 Bug 1178: Simplified modification of the SSE control register for better portability
REVERT: 7cf344e093 Renamed some class members to make the code more readable.
REVERT: 6c9457303f Fixed a bug in the padding of extracted image patches.
REVERT: 6226daae7b Completed the implementation of vectorized type casting of half floats.
REVERT: 2e3830ab88 Make all the conversions explicit
REVERT: ad1ded9d86 Gate all the CUDA tests under the EIGEN_TEST_NVCC option
REVERT: 99b756b9b6 Fixed a typo
REVERT: 260470308e Added a test to validate the fallback path for half floats
REVERT: c789fe02b7 Worked around constness issue
REVERT: b2b0dd00d6 Fixed compilation warning
REVERT: bc52b43ecc Fixed compilation warnings in the cuda tests
REVERT: 462bf611cd pulled latest updates from trunk
REVERT: 27da65eccb Avoid mutable class members when possible
REVERT: 92f549ad18 Implemented some of the missing type casting for half floats
REVERT: 71af19033e Made sure to use the hard abi when compiling with NEON instructions to avoid the "gnu/stubs-soft.h: No such file or directory" error
REVERT: eda353473b Allocate the mersenne twister used by the random number generators on the heap instead of on the stack since they tend to keep a lot of state (i.e. about 5k) around.
REVERT: 5680e1847f Fix bug in tensor contraction. The code assumes that contraction axis indices for the LHS (after possibly swapping to ColMajor!) is increasing. Explicitly sort the contraction axis pairs to make it so.
REVERT: 28c50be1de Merged in ebrevdo/eigen (pull request #169)
REVERT: 54d831964f Merge default branch.
REVERT: 659d3a0972 Change the header guard around certain numext functions to be CUDA specific.
REVERT: 9069ab6724 Improved a test
REVERT: 1fbd2cd0aa Fixed a typo.
REVERT: b2448a53ed Properly gate the use of cuda intrinsics in the code
REVERT: 7ca18f1959 Make sure we only use the half float intrinsic when compiling with a version of CUDA that is recent enough to provide them
REVERT: 40c4b87312 Merge specfun branch.
REVERT: dd910e0bd1 Add tests in array.cpp that check igamma/igammac properties.
REVERT: 571c690689 Don't mark the cast operator as explicit, since this is a c++11 feature that's not supported by older compilers.
REVERT: f386357f3c Also replaced uint32_t with unsigned int to make the code more portable
REVERT: af37c5213d Replaced a couple more uint16_t with unsigned short
REVERT: 4dc238ffc1 Use unsigned short instead of uint16_t since they're more portable
REVERT: 7a1408b02a Made half floats usable on hardware that doesn't support them natively.
REVERT: ad3d77f173 Made the comparison of Eigen::array GPU friendly
REVERT: d97c1053eb Added a comparison operator for Eigen::array Alias Eigen::array to std::array when compiling with Visual Studio 2015
REVERT: 447dba059a Updated the cxx11_meta test to work on the Eigen::array class when std::array isn't available.
REVERT: 1f65e18a38 Fixed the +=, -=, *= and /= operators to return a reference
REVERT: b3bff236f3 Worked around visual studio compilation warnings.
REVERT: f9b18012b7 Fixed a typo.
REVERT: b7763dbe4a Made the list reductions less ambiguous.
REVERT: 83d3924526 Avoid implicit cast
REVERT: dd4d02dfac Made sure to include the <random> header file when compiling with visual studio
REVERT: f060d87c1a Avoid unnecessary conversion from 32bit int to 64bit unsigned int
REVERT: f974a5c203 Enable the random number generators when compiling with visual studio
REVERT: 0a1626d2a2 Update MathFunctions/SpecialFunctions with intelligent header guards.
REVERT: 37baa7b6ea Fixed the integer division code on windows
REVERT: f6c6bf632c Fixed static assertion
REVERT: 1b066537de Properly fix merge issues.
REVERT: 1365b56fa3 Resolve bad merge.
REVERT: b308df943e Merge changes.
REVERT: 623948297f Add certain functions to numext (log, exp, tan) because CUDA doesn't support std::
REVERT: eed0529aa8 Replace std::vector with our own implementation, as using the stl when compiling with nvcc and avx enabled leads to many issues.
REVERT: 32da55ec09 Simplified the full reduction code
REVERT: cde5fc4b97 Fixed the tensor generator code
REVERT: 235127cf34 Fixed the tensor concatenation code
REVERT: 83860b05e2 Fixed the tensor layout swapping code
REVERT: f654018f75 Fixed the tensor chipping code.
REVERT: d868180b45 Decoupled the packet type definition from the definition of the tensor ops. All the vectorization is now defined in the tensor evaluators. This will make it possible to relialably support devices with different packet types in the same compilation unit.
REVERT: 2a62ff3f40 Use NumTraits::highest() and NumTraits::lowest() instead of the std::numeric_limits to make the tensor min and max functors more CUDA friendly.
REVERT: 5dbc04175f Merge branch specfun.
REVERT: 1333bdcb0e Finishing touches on igamma/igammac for GPU.  Tests now pass.
REVERT: 06d360f4a6 Added the ability to pad a tensor using a non-zero value
REVERT: f097930dcb Fix a couple of typos in the code.
REVERT: 2f20d0225f Fix Eigen's building of sharded tests that use CUDA & more igamma/igammac bugfixes.
REVERT: 1ef6db8744 Added a test to validate the behavior of some of the tensor syntactic sugar.
REVERT: 833c0e0055 Added missing include
REVERT: 136e1a7752 Don't try to compile the uint128 test with compilers that don't support uint127
REVERT: 926e08e6f8 Don't warn that msvc 2015 isn't c++11 compliant just because it doesn't claim to be.
REVERT: 9b6dbc7193 Turn on some of the cxx11 features when compiling with visual studio 2015
REVERT: 30f91c2084 Don't test our 128bit emulation code when compiling with msvc
REVERT: 5dfa523ce4 Avoid using initializer lists in test since not all version of msvc support them
REVERT: 63a74ded24 Use EIGEN_PI instead of redefining our own constant PI
REVERT: 836af59786 Make igamma and igammac work correctly.
REVERT: f73d0b80a6 Use the CMAKE_CXX_STANDARD variable to turn on cxx11
REVERT: c8cd32bbd6 Don't rely on the M_PI constant since not all compilers provide it.
REVERT: 79dbfb0ed6 Fixed the computation of leading zeros when compiling with msvc.
REVERT: 82cf21a024 MSVC uses __uint128 while other compilers use __uint128_t to encode 128bit unsigned integers. Make the cxx11_tensor_uint128.cpp test work in both cases.
REVERT: 6f3b65c3df Fixed syntax error
REVERT: ce5b36089d Added missing include
REVERT: 072aaab729 Don't use implicit type conversions in initializer lists since not all compilers support them.
REVERT: 3cf3ca0bdd Made the contraction test more portable
REVERT: f132f115af Fixed a typo
REVERT: e51dbe2899 Initial implementation of igamma and igammac.
REVERT: e590cf2488 Added tests to cover the new rounding, flooring and ceiling tensor operations.
REVERT: 426e1ac497 Added support for rounding, flooring, and ceiling to the tensor api
REVERT: 1687c89453 Added a test to validate the conversion of half floats into floats on Kepler GPUs. Restricted the testing of the random number generation code to GPU architecture greater than or equal to 3.5.
REVERT: 4a2aa4dccd Enable partial support for half floats on Kepler GPUs.
REVERT: 1c638528e6 Enable the conversion between floats and half floats on older GPUs that support it.
REVERT: f69e0b27e8 Merged in ebrevdo/eigen (pull request #167)
REVERT: c2a1f1f85e Small bugfix to numeric_limits for CUDA.
REVERT: 460ac6b1d4 Add infinity() support to numext::numeric_limits, use it in lgamma.
REVERT: 22aee63c1d Bug 537: fix compilation with Apples's compiler
REVERT: 5a3a74cc8f Pulled latest updates from trunk
REVERT: fea14800c6 Compilation fix
REVERT: c66b771feb Compilation fix
REVERT: 33ac7a26c7 Improved the performance of large outer reductions on cuda
REVERT: a843386459 Added benchmarks for full reduction
REVERT: 702dab4de7 Made the signature of the inner and outer reducers consistent
REVERT: 0f2a467e9f Optimized the performance of narrow reductions on CUDA devices
REVERT: 24e1f17664 Fix shortcoming in fixed-value deduction of startRow/startCol
REVERT: 8f102d7867 Print some information to stderr when a CUDA kernel fails
REVERT: a5beca2bf5 Improved the README
REVERT: 317dc3d26b Bug 1172: make valuePtr and innderIndexPtr properly return null for empty matrices.
REVERT: 2961186b16 Properly vectorized the random number generators
REVERT: 8cb5509242 Made the TensorIndexList usable on GPU without having to use the -relaxed-constexpr compilation flag
REVERT: 4293ac53a9 Added benchmarks for type casting of float16
REVERT: f41b799d92 Added benchmarks for fp16
REVERT: ab780d6c75 Reverted previous commit since it caused more problems than it solved
REVERT: 69296fd0a0 Fixed handling of long doubles on aarch64
REVERT: acfb44a698 Made the CUDA architecture level a build setting.
REVERT: 00be38a0cb Fixed a typo in the reduction code that could prevent large full reductionsx from running properly on old cuda devices.
REVERT: d7b2cc9d64 Marked the And and Or reducers as stateless.
REVERT: 5e103239c4 merge
REVERT: f734a3efef Fix startRow()/startCol() for dense Block with direct access: the initial implementation failed for empty rows/columns for which are ambiguous.
REVERT: 1f90f5b8d8 Updated the padding code to work with half floats
REVERT: bab3fac806 Extended the tensor benchmark suite to support types other than floats
REVERT: 44584e0c04 Updated the tensor benchmarking code to work with compilers that don't support cxx11.
REVERT: ff695d112f Deleted the coordinate based evaluation of tensor expressions, since it's hardly ever used and started to cause some issues with some versions of xcode.
REVERT: 92a074c565 Declare the half float type as arithmetic.
REVERT: cf4ca0ffd9 include <iostream> in the tensor header since we now use it to better report cuda initialization errors
REVERT: fe3888e92b Fixed compilation warning generated by clang
REVERT: c9bdfa0c47 Implemented the ptranspose function on half floats
REVERT: c7389f3165 Pulled latest updates from trunk
REVERT: e65b11cd59 Added the ability to compute the absolute value of a half float
REVERT: 7aa2f2b2e2 Added some debugging information to the test to figure out why it fails sometimes
REVERT: db4f9afe5e Optimized casting of tensors in the case where the casting happens to be a no-op
REVERT: 515b4ac88e Prevent unecessary Index to int conversions
REVERT: 30652f1440 Moved some of the fp16 operators outside the Eigen namespace to workaround some nvcc limitations.
REVERT: b9be296c05 Fixed the float16 tensor test.
REVERT: c5d358a167 Get rid of duplicate code.
REVERT: 6b0912322c Speed up tensor FFT by up ~25-50%.
REVERT: b475d7896c merge
REVERT: 8b68313aae Add COD and BDCSVD in list of benched solvers.
REVERT: 75e8e4b6cc Extend unit test to stress smart_copy with empty input/output.
REVERT: a11c3f2872 Bug 1170: skip calls to memcpy/memmove for empty imput.
REVERT: 2c6c906b82 Print an error message to stderr when the initialization of the CUDA runtime fails. This helps debugging setup issues.
REVERT: b5861d5247 Fix nesting type and complete reflection methods of Block expressions.
REVERT: 6085c3ee82 Add typedefs for the return type of all block methods.
REVERT: d1e8d1ca8e Updated the contraction code to make it compatible with half floats.
REVERT: ce59a909e5 Added support for tensor reductions on half floats
REVERT: db8cf33675 Implemented the scalar division of 2 half floats
REVERT: 4ab5d9bedb Added the ability to query the minor version of a cuda device
REVERT: 30dd21bbd9 Started to work on contractions and reductions using half floats
REVERT: f178749b13 Don't make the array constructors explicit
REVERT: 9109150dd7 Added support for operators +=, -=, *= and /= on CUDA half floats
REVERT: 24ecf60c0e Implemented protate() for CUDA
REVERT: ae442ae00e Fixed a bug in the tensor type converter
REVERT: a197f282d7 Added support for simple coefficient wise tensor expression using half floats on CUDA devices
REVERT: 2350c30f45 FP16 on CUDA are only available starting with cuda 7.5. Disable them when using an older version of CUDA
REVERT: 2337cb61b2 Added regression test for float16
REVERT: cf937ad108 Reverted unintended changes introduced by a bad merge
REVERT: c9c9c1ca61 Pulled latest updates from trunk
REVERT: e7a5968240 Added preliminary support for half floats on CUDA GPU. For now we can simply convert floats into half floats and vice versa
REVERT: ee4cd25a5b Improved implementation of ptanh for SSE and AVX
REVERT: 8a0420e2b1 Merged eigen/eigen into default
REVERT: d153b4c558 Tiny bugfix in SpecialFunctions: some compilers don't like doubles implicitly downcast to floats in an array constructor.
REVERT: 8179d4c753 Bug 1166: fix shortcomming in gemv when the destination is not a vector at compile-time.
REVERT: d795277373 Import wiki's paragraph: "I disabled vectorization, but I'm still getting annoyed about alignment issues"
REVERT: e5f5122232 Bug 795: mention allocate_shared as a condidate for aligned_allocator.
REVERT: 34c96072c6 Fix triangularView versus triangularPart.
REVERT: 23ae1b9d2b Remove dead code.
REVERT: 01ce02087e Fix usage of evaluator in sparse * permutation products.
REVERT: c39c8bfffd Bug 901: fix triangular-view with unit diagonal of sparse rectangular matrices.
REVERT: 032c384735 Fix unit test: accessing elements in a deque by offsetting a pointer to another element causes undefined behavior.
REVERT: 9a62246cef Deleted outdated comment
REVERT: 1e6702f046 Added a method to conjugate the content of a tensor or the result of a tensor expression.
REVERT: 97b7481a2f Pulled latest updates from trunk
REVERT: 3c203840c4 Made it possible to run the scalar_binary_pow_op functor on GPU
REVERT: d821f0b9ac Bug 774: re-added comment referencing equations in the original paper
REVERT: 2d1bca8ff0 Inline the +=, -=, *= and /= operators consistently between DenseBase.h and SelfCwiseBinaryOp.h
REVERT: a3a403cc70 Bug 774: fix a numerical issue producing unwanted reflections.
REVERT: b3f840d3e5 Merged in rmlarsen/eigen (pull request #163)
REVERT: 86b7e68722 Merged in nnyby/eigen/nnyby/doc-grammar-fix-linearly-space-linearly-1443742971203 (pull request #138)
REVERT: c4d4b05222 Avoid implicit cast from double to float.
REVERT: 0b0d1baa66 Added a regression test for tanh
REVERT: fb654926c7 Rename inverse -> pseudoInverse.
REVERT: e8ac48595c I'm told to use __EMSCRIPTEN__ by an Emscripten dev.
REVERT: 781d99ec49 Optimized implementation of the tanh function for SSE
REVERT: 480eacc564 Optimized implementation of the hyperbolic tangent function for AVX
REVERT: 5fd36cf04e Make the GCC workaround for sqrt GCC-only; detect Emscripten as non-GCC
REVERT: c6b6bb4228 Pulled latest updates from trunk
REVERT: b8eb643a21 Worked around a few clang compilation warnings
REVERT: 2f31b056ba Work around Emscripten bug - https://github.com/kripken/emscripten/issues/4088
REVERT: 06e435bf9a Fixed clang comilation warnings
REVERT: f8afca64af Fixed some clang compilation warnings
REVERT: 6cd493e7ee Disabling the nvcc warnings in addition to the clang warnings when clang is used as a frontend for nvcc
REVERT: a86f4f56a6 Fixed compilation warning
REVERT: 0bb22d5cb1 Enable inverse() method for computing pseudo-inverse.
REVERT: 9a8d7e4d37 Fixed the code that disables the use of variadic templates when compiling with nvcc on ARM devices.
REVERT: dd8fb392de Fixed compilation warning in the splines test
REVERT: 0e82b85da2 Updated the TensorIntDivisor code to work properly on LLP64 systems
REVERT: ec31e47a5e Worked around nvcc crash when compiling Eigen on Tegra X1
REVERT: 2bd7eb6b71 Make applyZAdjointOnTheLeftInPlace protected.
REVERT: 00fb954af7 Add missing calls to tests of COD. Fix a few mistakes in 3.2 -> 3.3 port.
REVERT: 0773366dd4 Remove custom unaligned loads for SSE. They were only useful for core2 CPU.
REVERT: 5ef74335e2 Improve inlining
REVERT: ad094b9385 Nevermind.
REVERT: 7dbd7df4a0 Add my name to copyright notice in ColPivHouseholder.h, mostly for previous work on stable norm downdate formula.
REVERT: 0ca00b9415 Merge.
REVERT: 610154d2ed Implement complete orthogonal decomposition in Eigen.
REVERT: 26d75078cd Add exemples for reshaping/slicing with Map.
REVERT: c133ef3745 Fix warning in unit test
REVERT: 8f7673f4f7 Fix warning with gcc < 4.8
REVERT: 40e8cdc497 Avoid unecessary type conversions
REVERT: 33a4c9cf44 Only enable the cxx11_tensor_uint128 test on 64 bit machines since 32 bit systems don't support the __uin128_t type
REVERT: f7349e628c Made the tensor fft test compile on tegra x1
REVERT: e388bef47c Bug 779: allow non aligned buffers for buffers smaller than the requested alignment.
REVERT: 122ee3f99d Add an explicit assersion on the alignment of the pointer returned by std::malloc
REVERT: 7605d181c8 Remove posix_memalign, _mm_malloc, and _aligned_malloc special paths.
REVERT: 14bbaaa841 Merge.
REVERT: b1147051c9 Commented out the version of pexp<Packet8d> since it fails to compile with gcc 5.3
REVERT: d079d4c97b Fix condition that made the unit test spam stdout with bogus error messages.
REVERT: d2bd9c03e2 Added implementations of pexp, plog, psqrt, and prsqrt optimized for AVX512
REVERT: b7964dab1f Fixed indentation
REVERT: 77826b4e35 Pulled latest updates from trunk
REVERT: 6105ee01d3 Remove dead code
REVERT: 9c92b41c92 Improve heuritics for switching between coeff-based and general matrix product implementation.
REVERT: a088b8cc73 Added support for vectorized type casting of int to char.
REVERT: 2f3266df1b Fixed the initialization of the dummy member of the array class to make it compatible with pairs of element.
REVERT: 967d630457 Disable 2 more nvcc warning messages
REVERT: 7904c39722 Made sure the dummy element of size 0 array is always intialized to silence some compiler warnings
REVERT: b46628ee36 Made sure the code compiles when EIGEN_HAS_C99_MATH isn't defined
REVERT: 4216c36498 Added a few comments
REVERT: 19bdc7856b Properly disable nvcc warning messages in user code.
REVERT: 8c1a420516 Silenced the "calling a __host__ function from a __host__ __device__ function is not allowed" messages
REVERT: 432db2cd6d Revert the nvcc messages to their default severity instead of the forcing them to be warnings
REVERT: 929110fe5d Pulled latest updates from trunk
REVERT: 376b7de330 Silenced some unhelpful warnings generated by nvcc.
REVERT: cc051ee11b Merged in rmlarsen/eigen (pull request #161)
REVERT: 604343ecb0 Fix bad line break. Don't repeat Kahan matrix test since it is deterministic.
REVERT: ac6a8af478 Make the array of directly compute column norms a member to avoid allocation in computeInPlace.
REVERT: d28a23409f Bug 1161: fix division by zero for huge scalar types
REVERT: fc4371482a Bug 1164: fix list and deque specializations such that our aligned allocator is automatically activatived only when the user did not specified an allocator (or specified the default std::allocator).
REVERT: 7618f2af57 Clarify error message when writing to a read-only sparse-sub-matrix.
REVERT: e2568274fe merge
REVERT: 0adb703c4f Clarify documentation on the restrictions of writable sparse block expressions.
REVERT: 95506cdc43 Merged in ville-k/eigen/explicit_long_constructors (pull request #158)
REVERT: 5cf98f759b Use EIGEN_STATIC_ASSERT for backward compatibility.
REVERT: 5a41b93e13 Don't try to use direct offsets when computing a tensor product, since the required stride isn't available.
REVERT: e2f217d8c9 Use single template constructor to avoid overload resolution issues.
REVERT: afc2c04bb2 Replace separate low word constructors with a single templated constructor.
REVERT: 5164f55cfb Rebase to latest.
REVERT: 75f1cb0bd5 Updated the packetmath test to call predux_half instead of predux4
REVERT: 7783af9e15 Updated the matrix multiplication code to make it compile with AVX512 enabled.
REVERT: d7557c5ce7 Generalized predux4 to support AVX512 packets, and renamed it predux_half. Disabled the implementation of pabs for avx512 since the corresponding intrinsics are not shipped with gcc
REVERT: 37efb1e1a1 Cleaned up a tensor contraction test
REVERT: 8afa50554b Sharded the cxx11_tensor_contract_cuda test
REVERT: 84272068ea Silenced a few compilation warnings
REVERT: 994a95a28e Made it possible to limit the number of blocks that will be used to evaluate a tensor expression on a CUDA device. This makesit possible to set aside streaming multiprocessors for other computations.
REVERT: f28c1a8e92 merging.
REVERT: 49b675de54 Shared the tensor reduction test
REVERT: 406fb8dee4 Sharded the tensor device test
REVERT: 1cc6a3f42c Bug 694: document that SparseQR::matrixR is not sorted.
REVERT: 76849d539b Bug 557: make InnerIterator of sparse storage types more versatile by adding default-ctor, copy-ctor/assignment
REVERT: e1e66222b0 Fix integer path for num_steps==1
REVERT: 52cde48a5f Bug 698: fix linspaced for integer types.
REVERT: 1914980b6b Fix warning and replace min/max macros by calls to mini/maxi
REVERT: 5b7b3f6f53 Fixed a number of compilation warnings generated by the cuda tests
REVERT: 1751ee4c8d Fixed a few compilation warnings
REVERT: fb61a0de94 Fixed compilation errors triggered by duplicate inline declaration
REVERT: b6fd06b142 Pulled latest changes from trunk
REVERT: 7fd584ecb5 Sharded the CUDA argmax tensor test
REVERT: 558698b0ff Bug 667: declare several critical functions as FORECE_INLINE to make ICC happier.
REVERT: af7045cd0b Avoid overflow in unit test.
REVERT: 6f4a0489af Disable underflow unit test on the i387 FPU.
REVERT: 3cc1c8bd6f Fixed a few memory leaks in the cuda tests
REVERT: 4a810ff651 Sharded the cxx11_tensor_cuda test and fixed a memory leak
REVERT: 11c2ce63f7 Added a test to cover threaded tensor shuffling
REVERT: 4eb5c4d9e7 Made the comparison between single and multithreaded contraction results more resistant to numerical noise to prevent spurious test failures.
REVERT: ee0dec0c90 Made sure to use a tensor of rank 0 to store the result of a full reduction in the tensor thread pool test
REVERT: 7a8f439ac4 Sharded the tensor thread pool test
REVERT: cfc03f62ef Made the CUDA contract test more robust to numerical noise.
REVERT: f6e02a4265 Added 2 benchmarks to the suite of tensor benchmarks running on GPU
REVERT: f9f039bc87 Extend doc on dense+sparse
REVERT: 9a8c796db7 backout changeset ca4ff2a689f4: the extended SparseView is not needed anymore
REVERT: 5280f71cc2 Bug 632: implement general coefficient-wise "dense op sparse" operations through specialized evaluators instead of using SparseView. This permits to deal with arbitrary storage order, and to by-pass the more complex iterator of the sparse-sparse case.
REVERT: 8dd4e6c5d5 Bug 946: generalize Cholmod::solve to handle any rhs expression
REVERT: 0f47811190 Bug 632: add support for "dense +/- sparse" operations. The current implementation is based on SparseView to make the dense subexpression compatible with the sparse one.
REVERT: 882fddc823 Extend SparseView to allow keeping explicit zeros. This is equivalent to sparseView(1,-1) but faster because the test is removed at compile-time.
REVERT: d4078b2dea Bug 696: enable zero-sized block at compile-time by relaxing the respective assertion
REVERT: b1e98b2899 merge
REVERT: 03c4c697cc Marked several methods EIGEN_DEVICE_FUNC
REVERT: 190e394545 Fixed a couple of compilation warnings.
REVERT: 0e3f3d71a1 Fixed the tensor benchmarks on apple devices
REVERT: 22619f7471 Fixed clang related compilation error
REVERT: 7083f6f959 Fixed compilation warning
REVERT: e21245616a Making ceil() functor generic w.r.t packet type
REVERT: f2b2a0f9a1 Fixed a typo
REVERT: 6afd872b41 Made sure the number of floating point operations done by a benchmark is computed using 64 bit integers to avoid overflows.
REVERT: 3f200cc0e9 Added a readme to explain how to compile the tensor benchmarks.
REVERT: b99bb06298 Updated the benchmarking code to print the number of flops processed instead of the number of bytes.
REVERT: 7e0f2fce89 Merge latest updates from trunk
REVERT: fda28e6291 Added extra tensor benchmarks
REVERT: ec1227cd8a Made sure to call nvcc with the relaxed-constexpr flag.
REVERT: a381bf332b Change Eigen's ColPivHouseholderQR to use the numerically stable norm downdate formula from http://www.netlib.org/lapack/lawnspdf/lawn176.pdf, which has been used in LAPACK's xGEQPF and xGEQP3 since 2006. With the old formula, the code chooses the wrong pivots and fails to correctly determine rank on graded matrices.
REVERT: 011ed3195f Bug 178: get rid of  some const_cast in SparseCore
REVERT: 7624c44243 Bug 178: remove additional const on nested expression, and remove several const_cast.
REVERT: 3c353cf0a3 Merged in jiayq/eigen (pull request #159)
REVERT: e0ae555520 bugfix
REVERT: 324e9e4079 benchmark modifications to make it compilable in a standalone fashion.
REVERT: acef0b7ccb Fix compilation with gcc
REVERT: 852f6c8c2b merge
REVERT: 062e72ee84 Bug 1158: PartialReduxExpr is a vector expression, and it thus must expose the LinearAccessBit flag
REVERT: a11702276c Disable stupid MSVC warning
REVERT: 239b2145a0 Fix MSVC warning.
REVERT: 66637d4add Bug 96, Bug 1006: fix by value argument in result_of.
REVERT: 48b63b0419 Fix unit test filename.
REVERT: b50a747f95 Deleted an invalid assertion that prevented the assignment of empty tensors.
REVERT: f66ee78825 Fixed some compilation problems with nvcc + clang
REVERT: de5e00ff0c Fixed the tensor_cuda test
REVERT: bd5f27c41c Fixed the flags passed to nvcc to compile the tensor code.
REVERT: a905974678 Update link to suitesparse.
REVERT: fa2fcea2c1 Made the cuda tests compile using make check
REVERT: 68094c5da5 Properly specify the namespace when calling cout/endl
REVERT: ae80902de3 digamma special function: merge shared code.
REVERT: 11412f2076 Bug 1156: fix several function declarations whose arguments were passed by value instead of being passed by reference
REVERT: 5443da6446 Bug 1154: move to dynamic scheduling for spmv products.
REVERT: 22b482edae Extend mixing type unit test with trmv, and the following not yet supported products: trmm, symv, symm
REVERT: 8243ef8bcd add nomalloc unit test for rank2 updates
REVERT: 40e6ad6052 Fix tri = complex * real product, and add respective unit test.
REVERT: ec5c60d09e Add meta_least_common_multiple helper.
REVERT: 387b5ac7d1 Extend doc on shifting strategy
REVERT: f8b1721668 Add constructor for long types.
REVERT: 160e2814f6 Remove redundant test.
REVERT: 3c7cab58b0 Doc: add flip* and arrayfun MatLab equivalent.
REVERT: 5b5fc37ba4 Remove dead code.
REVERT: 2658b44f67 Re-enable blocking on rows in non-l3 blocking mode.
REVERT: b6bb0aabfc Make sure that micro-panel-size is smaller than blocking sizes (otherwise we might get a buffer overflow)
REVERT: 44e90c1497 Make sure that block sizes are smaller than input matrix sizes.
REVERT: 88c94e0170 Bug 1152: Fix data race in static initialization of blas
REVERT: 9d788a848e Bug 1153: Don't rely on __GXX_EXPERIMENTAL_CXX0X__ to detect C++11 support
REVERT: 9c6fc96052 Fixed minor typo in SplineFitting.
REVERT: 9268a07418 Bug 51: add block preallocation mechanism to selfadjoit*matrix product.
REVERT: 2a15d3c52a update BLAS interface to general_matrix_matrix_triangular_product
REVERT: 79b9e79ad2 Bug 51: make general_matrix_matrix_triangular_product use L3-blocking helper so that general symmetric rank-updates and general-matrix-to-triangular products do not trigger dynamic memory allocation for fixed size matrices.
REVERT: 08c3ee99b6 Bug 1144: clarify the doc about aliasing in case of resizing and matrix product.
REVERT: afd2204ced Improve documentation.
REVERT: 96a1e9e781 Add SparseVector::conservativeResize() method.
REVERT: f43c988036 Don't explicitely evaluate the subexpression from TensorForcedEval::evalSubExprIfNeeded, as it will be done when executing the EvalTo subexpression
REVERT: 339a5184fd Added missing EIGEN_DEVICE_FUNC qualifier
REVERT: d3ddcd1b4e Merged in larsmans/eigen (pull request #156)
REVERT: 3f6ae0b063 Method is called visit, not visitor
REVERT: d71855c2ae Copyedit documentation: typos, spelling
REVERT: 1593593f72 Bug 977: add stableNormalize[d] methods: they are analogues to normalize[d] but with carefull handling of under/over-flow
REVERT: ab1ae23b95 Add link to reference paper.
REVERT: 701fa5cae8 Bug 1150: make IncompleteCholesky more robust by iteratively increase the shift until the factorization succeed (with at most 10 attempts).
REVERT: 97ebb48488 Merged in ville-k/eigen/tensorflow_fix (pull request #153)
REVERT: 55ed5c622e Re-add executable flags to minimize changeset.
REVERT: 0350024950 Leverage the new blocking code in the tensor contraction code.
REVERT: bbd29d7fd9 Created a mechanism to enable contraction mappers to determine the best blocking strategy.
REVERT: 3c86a0c26f Bug 1095: add Cholmod*::logDeterminant/determinant (from patch of Joshua Pritikin)
REVERT: bfab9adf67 Backout changeset 0bcfce9ec1c0
REVERT: b239a4f11e Unify std::numeric_limits and device::numeric_limits within numext namespace
REVERT: a508fc1228 Update to latest default branch
REVERT: 0f0830e530 Make use of 32 bit ints explicit and remove executable bit from headers.
REVERT: 08a2a764f6 Pulled latest updates from trunk
REVERT: 9a56cc2aa5 Fixed a constness bug
REVERT: 590b8a322c Bug 977: avoid division by 0 in normalize() and normalized().
REVERT: 0d280272b6 Fix compilation on old gcc+AVX
REVERT: 6202adc7c7 Add numext::sqrt function to enable custom optimized implementation.
REVERT: a305b91c1c Bug 1151: remove useless critical section
REVERT: fff93a0689 fix clang warnings
REVERT: a41d9ea76e Pulled latest updates from the trunk
REVERT: ebab58e90f Small cleanup and small fix to the contraction of row major tensors
REVERT: 2a8d1a7acb add upper|lower case in incomplete_cholesky unit test
REVERT: ed48c089ba Reduce the register pressure exerted by the tensor mappers whenever possible. This improves the performance of the contraction of a matrix with a vector by about 35%.
REVERT: 5fc337cadc Pulled latest updates from trunk
REVERT: 474484099a Bug 1149: fix Pastix*::*parm()
REVERT: 1260f44fa8 Bug 1148: silent Pastix by default
REVERT: f79610e11e Bug 1145: fix PastixSupport LLT/LDLT wrappers (missing resize prior to calls to selfAdjointView)
REVERT: 0c3377a080 Bug 1147: fix compilation of PastixSupport
REVERT: df3e1c40d0 Add static assertion to y(), z(), w() accessors
REVERT: 58f4a3f0e2 Remove executable bit from header files
REVERT: 5c4897e2fd Use explicitly 32 bit integer types in constructors.
REVERT: c57a4a0458 Improved the formatting of the code
REVERT: 5cee046269 Moved the contraction mapping code to its own file to make the code more manageable.
REVERT: 855f6e2a71 Improved code indentation
REVERT: 241c2c4acc Record whether the underlying tensor storage can be accessed directly during the evaluation of an expression.
REVERT: 5f136c7a7d Add ctor for long
REVERT: 2356a49cb0 Digamma cleanup
REVERT: 6a04baa411 Fixed a race condition that could affect some reductions on CUDA devices.
REVERT: da0ea4bc36 Made it possible to compare tensor dimensions inside a CUDA kernel.
REVERT: f88cb5c126 Use warp shuffles instead of shared memory access to speedup the inner reduction kernel.
REVERT: 0d080789d1 Don't disable the AVX implementations of plset when compiling with AVX512 enabled
REVERT: 4a81edff35 Added alignment requirement to the AVX512 packet traits.
REVERT: 8102f4b062 Fixed the signature of the plset primitives for AVX512
REVERT: 40ff092018 Fixed the AVX512 signature of the ptranspose primitives
REVERT: 4cbe2f664b pscatter/pgather use Index instead of int to specify the stride
REVERT: dd89f4f560 Deleted unnecessary commas and semicolons
REVERT: 99420ba6c0 Fixed a boundary condition bug in the outer reduction kernel
REVERT: 94b07af1a7 Properly record the rank of reduced tensors in the tensor traits.
REVERT: b0c9e09025 Trigger the optimized matrix vector path more conservatively.
REVERT: eab5a975a1 Improved the performance of the contraction of a 2d tensor with a 1d tensor by a factor of 3 or more. This helps speedup LSTM neural networks.
REVERT: e691b8f3ef Reverted a previous change that tripped nvcc when compiling in debug mode.
REVERT: 6d229150a4 Made the blas utils usable from within a cuda kernel
REVERT: a80dde3862 Silenced a few compilation warnings.
REVERT: bd67cc8bf7 Updated the tensor traits: the alignment is not part of the Flags enum anymore
REVERT: 837930aadf Enabled the use of fixed dimensions from within a cuda kernel.
REVERT: 0442863e38 Deleted unused variable.
REVERT: 9fe0150935 Silenced a nvcc compilation warning
REVERT: ca8829d502 Silenced several compilation warnings triggered by nvcc.
REVERT: 2edb330b4c Merged in jeremy_barnes/eigen/shader-model-3.0 (pull request #152)
REVERT: 8dd52e2349 Fixed a bug in the dispatch of optimized reduction kernels.
REVERT: cba298b332 Re-enabled the optimized reduction CUDA code.
REVERT: 15c41c66f5 Cleaned up double-defined macro from last commit
REVERT: 3d77dbd5ff Alternative way of forcing instantiation of device kernels without causing warnings or requiring device to device kernel invocations.
REVERT: 228c6cbd5a merge
REVERT: 1b46211abe Bug 1144: fix regression in x=y+A*x (aliasing), and move evaluator_traits::AssumeAliasing to evaluator_assume_aliasing.
REVERT: 3e0e8fe4db Simplified the dispatch code.
REVERT: 2a8d4e9cb1 Made it possible to use array of size 0 on CUDA devices
REVERT: 410090f00f Reworked the dispatch of optimized cuda reduction kernels to workaround a nvcc bug that prevented the code from compiling in optimized mode in some cases
REVERT: ea33288994 Prevent nvcc from miscompiling the cuda metakernel. Unfortunately this reintroduces some compulation warnings but it's much better than having to deal with random assertion failures.
REVERT: a08018983a extend matlab conversion table
REVERT: e329a44ce7 Removed a couple of partial specialization that confuse nvcc and result in errors such as this: error: more than one partial specialization matches the template argument list of class "Eigen::internal::get<3, Eigen::internal::numeric_list<std::size_t, 1UL, 1UL, 1UL, 1UL>>"             "Eigen::internal::get<n, Eigen::internal::numeric_list<T, a, as...>>"             "Eigen::internal::get<n, Eigen::internal::numeric_list<T, as...>>"
REVERT: 2f0efcd014 Fixed a typo.
REVERT: 2d1ac2f34d Optimized the performance of broadcasting of scalars.
REVERT: 5e73cea196 rm remaining debug code
REVERT: 494dd7b681 Bug 1143: Work-around gcc bug
REVERT: cb93837f0c Added support for AVX512 to the build files
REVERT: 5a14515ed6 Improved the performance of reductions on CUDA devices
REVERT: aec2204f3b Added a 'divup' util to compute the floor of the quotient of two integers
REVERT: d2e9bb442c Improve inline documentation of SparseCompressedBase and its derived classes
REVERT: e534226901 Fix numerous doxygen shortcomings, and workaround some clang -Wdocumentation warnings
REVERT: 9fd9db98e2 Mark AlignedBit and EvalBeforeNestingBit with deprecated attribute, and remove the remaining usages of EvalBeforeNestingBit.
REVERT: 7e01a3b48e Workaround clang -Wdocumentation warning about "/*<"
REVERT: dc8566ab84 Workaround "empty paragraph" warning with clang -Wdocumentation
REVERT: 7c938f9641 Add missing doc of Derived template parameter
REVERT: 4c81c74447 Fix numerous doxygen issues in auto-link generation
REVERT: 595f51d61c Fix links to Eigen2-to-Eigen3 porting helpers
REVERT: 2823094dbf Recent versions of doxygen miss-parsed Eigen/* headers
REVERT: 4658e96cc3 Add missing snippets for erf/erfc/lgamma functions.
REVERT: 773cbdf2ae Add missing snippet for sign/cwiseSign functions.
REVERT: 37f3c05193 Add missing ctor from uint
REVERT: 93b2ec5bdf Bug 1141: add missing initialization of CholmodBase::m_*IsOk
REVERT: aa6196c5a4 Modify constants in SpecialFunctions to lowercase (avoid name conflicts).
REVERT: 9c36d21f9d Change PI* to M_PI* in SpecialFunctions to avoid possible breakage with external DEFINEs.
REVERT: 0623085891 Protect digamma tests behind a EIGEN_HAS_C99_MATH check.
REVERT: b6922fc99b Merged eigen/eigen into default
REVERT: 429a5ed512 Add digamma for CPU + CUDA.  Includes tests.
REVERT: 172877fff3 Workaround compilers that do not even define _mm256_set_m128.
REVERT: 014cc30a28 Don't attempt to vectorize mean reductions of integers since we can't use SSE or AVX instructions to divide 2 integers.
REVERT: 083c227a51 Optimized the configuration of the outer reduction cuda kernel
REVERT: 3413d997f3 Added missing define
REVERT: a916e1731a Made sure the optimized gpu reduction code is actually compiled.
REVERT: f1e0435a9a Optimized outer reduction on GPUs.
REVERT: 9979887ba2 Made it possible to run the lgamma, erf, and erfc functors on a CUDA gpu.
REVERT: acf1d343ae Added missing const
REVERT: a3cb1cf0dd Disabled part of the matrix matrix peeling code that's incompatible with 512 bit registers
REVERT: 790a1d56df Implemented most of the packet primitives for AVX512
REVERT: ba0d5bddc0 Make sure EIGEN_HAS_MM_MALLOC is set to 1 when using the avx512 instruction set.
REVERT: 2a886f8e95 Free memory allocated using posix_memalign() with free() instead of std::free()
REVERT: fda5b1fde8 Merged in connor-k/eigen (pull request #149)
REVERT: 3cd65807af Fixed a typo in previous change.
REVERT: 42c9d1ff6f Added support for CUDA architectures that don's support for 3.5 capabilities
REVERT: 3d54946a4d [doc] Remove extra ';' in Tutorial_AdvancedInitialization_Join.cpp
REVERT: be177436df Fix comments
REVERT: dd426d294f Use RotationBase, test quaternions and support ranges.
REVERT: 0dd1829f42 Remove unneccesary comment.
REVERT: 59d5f57186 Merged eigen/eigen into default
REVERT: 3daca9bef6 Much better tests, and a little bit more functionality.
REVERT: 64c37d99c1 Fixed a typo.
REVERT: f6c76b169b Add alignment requirement for local buffer used by the slicing op.
REVERT: bcfe34cc02 Doubled the speed of full reductions on GPUs.
REVERT: 9e2e25bc46 Bug 1140: remove custom definition and use of _mm256_setr_m128
REVERT: 6cccf487cb Fixed a clang compilation warning triggered by the use of arrays of size 0.
REVERT: a04f63a3de Silenced some compilation warnings triggered by nvcc
REVERT: e263e33432 Made it possible to run tensor chipping operations on CUDA devices
REVERT: 372c7e774f Fixed some compilation error triggered by the tensor code with msvc 2008
REVERT: fefcd065a0 Added tag 3.3-beta1 for changeset ce5a455b34c0
REVERT: 82716476aa bump to 3.3-beta1
REVERT: 7e6736e123 Bug 1120: Make sure that SuperLU version is checked
REVERT: 9ba1087ac7 Update doc to make it clear that only SuperLU 4.x is supported
REVERT: c404662d1b Disable AutoDiffScalar generic copy ctor for non compatible scalar types (fix ambiguous template instantiation)
REVERT: 7ab4099342 Bug 1136: Protect isinf for Intel compilers. Also don't distinguish GCC from ICC and don't rely on EIGEN_NOT_A_MACRO, which might not be defined when including this.
REVERT: eef14a3328 Made the entire TensorFixedSize api callable from a CUDA kernel.
REVERT: b15ce09df0 Marked the tensor constructors as EIGEN_DEVICE_FUNC: This makes it possible to call them from a CUDA kernel.
REVERT: 4da72c7480 Fix MKL wrapper for ComplexSchur
REVERT: 43d4388b90 Fix unused variable warning.
REVERT: d023b1be74 merge
REVERT: 41ab3eb9a5 merge
REVERT: af4e0209fa Increase axpy vector size
REVERT: 12faf46a3f Make sure the data is aligned on a 64 byte boundary when using avx512 instructions.
REVERT: 682045c54d Bug 1134: fix JacobiSVD pre-allocation (grafted from 4f8c1d263017e2859daf1dc2cbc38c0b02942969)
REVERT: 2d5242a0df Merged in ebrevdo/eigen (pull request #148)
REVERT: 58c4fc5310 Bug 1132: add EIGEN_MAPBASE_PLUGIN
REVERT: cdfcfee4d1 Fix MKL compilation issue
REVERT: 2e70f8c1d0 Remove useless explicit
REVERT: 3b819152c2 Fix compilation of PardisoSupport
REVERT: 898ccbdbf9 Remove useless "explicit", and fix inline/static order.
REVERT: 103f161808 Fix compilation of MKL support.
REVERT: 52eb8c8ab8 merge
REVERT: 3f79bbd3c9 Fix unit tests wrt EIGEN_DEFAULT_TO_ROW_MAJOR
REVERT: d2aa34e0e5 Fixed a typo in the constructor of tensors of rank 5.
REVERT: a1b0c3950c Made 2 tests compile without cxx11.
REVERT: cb4de07470 Use the proper accessor to refer to the value of a scalar tensor
REVERT: 074b222ec0 Fixed the coefficient accessors use for the 2d and 3d case when compiling without cxx11 support.
REVERT: 569088819b Updated the cxx11_tensor_custom_op to not require cxx11.
REVERT: b91ab45503 Updated the cxx11_tensor_assign test to make it compile without support for cxx11
REVERT: 843abd1f63 Fixed compilation error triggered by MSVC 2008
REVERT: 467225b722 Preliminary support for AVX512
REVERT: 575702e1af Created EIGEN_HAS_C99_MATH define as Gael suggested.
REVERT: da1b39ec40 Fix storage order of PartialRedux
REVERT: af1f990969 Make sure ADOLC is recent enough by searching for adtl.h
REVERT: 28ba95277e sign(complex) compiles for GPU
REVERT: ee8f91d90f Only test the lgamma, erf and erfc function when using a C99 compliant compiler
REVERT: 5728f2cf6d Silence a compilation warning
REVERT: b2668a9f19 Only implement the lgamma, erf, and erfc functions when using a compiler compliant with the C99 specification.
REVERT: f4ef9a079d Workaround gcc issue with -O3 and the i387 FPU.
REVERT: bdad4c0a38 Bug 1103: fix neon vectorization of pmul(Packet1cd,Packet1cd)
REVERT: fb2870d271 Improve handling of deprecated EIGEN_INCLUDE_INSTALL_DIR variable
REVERT: 015ae048a3 Simplified the implementation of lgamma, erf, and erfc
REVERT: d8525a992e Cleanup
REVERT: b6a1c5a9f4 Only disable the erf, erfc, and lgamma tests for older versions of c++.
REVERT: e02ed43d79 Simplified the code a bit
REVERT: 7cb4e03853 Fixed a couple of typos Cleaned up the code a bit.
REVERT: 4d6b841ff0 Add special functions to Eigen: lgamma, erf, erfc.
REVERT: 99620821de Fixed compilation warnings
REVERT: 4196ef1f68 Add matrix-free solver example
REVERT: 1042c3a8d5 Implement wrapper for matrix-free iterative solvers
REVERT: 35d249f51b Use signed integers instead of unsigned ones more consistently in the codebase.
REVERT: a4e7e010ab Use integers instead of std::size_t to encode the number of dimensions in the Tensor class since most of the code currently already use integers.
REVERT: 141e6bb344 Made it possible to use the sigmoid functor within a CUDA kernel.
REVERT: 0580c040b2 Added rsqrt() method to the Array class: this method computes the coefficient-wise inverse square root much more efficiently than calling sqrt().inverse().
REVERT: 4e18a33a61 Deleted redundant code
REVERT: 23c968d0c3 Merged in Unril/eigen-1/Unril/fixes-internal-compiler-error-while-comp-1449156092576 (pull request #147)
REVERT: 0a8b929593 Add missing Rotation2D::operator=(Matrix2x2)
REVERT: 32a50e87f6 Fixes internal compiler error while compiling with VC2015 Update1 x64.
REVERT: 1898575e55 Made it possible to leverage several binary functor in a CUDA kernel Explicitely specified the return type of the various scalar_cmp_op functors.
REVERT: 6d05a58fe7 Bug 1123: add missing documentation of angle() and axis()
REVERT: 89412331be Add LU::transpose().solve() and LU::adjoint().solve() API.
REVERT: 59f2d0f3dd Add internal method _solve_impl_transposed() to LU decomposition classes that solves A^T x = b or A^* x = b.
REVERT: 96ba4c99d2 Make bench_gemm compatible with 3.2
REVERT: a6fd40638c Fix matrix to quaternion (and angleaxis) conversion for matrix expression.
REVERT: bedabc921b Do not check NeedsToAlign if no static alignment
REVERT: a7bf6643a3 Fix degenerate cases in syrk and trsm
REVERT: 6be5515ef6 Update BLAS API unit tests
REVERT: db73854466 Clean hardcoded compilation options
REVERT: 57fdf616b8 Update ADOL-C support.
REVERT: 5bf0378617 Extend superlu cmake script to check version
REVERT: 7982545854 Fix UmfPackLU ctor for exppressions
REVERT: 8146855c23 Bug 918, umfpack: add access to umfpack return code and parameters
REVERT: b5050a2616 ArrayBase::sign: add unit test and fix doc
REVERT: d4f43b4e7d Bug 1112: fix compilation on exotic architectures
REVERT: fa0833a1f0 Bug 1120, superlu: mem_usage_t is now uniquely defined, so let's use it.
REVERT: dd2e33201b Preserve CMAKE_CXX_FLAGS in BTL
REVERT: 17189bb71f Big 1009, part 2/2: add static assertion on LinearAccessBit in coeff(index)-like methods.
REVERT: 585e9b9278 Bug 1009, part 1/2: make sure vector expressions expose LinearAccessBit flag.
REVERT: 78c792b9bb added scalar_sign_op (both real,complex)
REVERT: 76e683f4cd Fixed a bug in TensorArgMax.h
REVERT: 6160307884 Fixed the implementation of Eigen::internal::count_leading_zeros for MSVC. Also updated the code to silence bogux warnings generated by nvcc when compilining this function.
REVERT: 2dc82a3435 Don't create more cuda blocks than necessary
REVERT: 5a50697787 Made it possible to refer t oa GPUDevice from code compile with a regular C++ compiler
REVERT: 218c6fa19b Deleted unused variable.
REVERT: 2aa694cfbd Pulled latest updates from trunk
REVERT: 73bcde6b6d Disable "decorated name length exceeded, name was truncated" MSVC warning.
REVERT: 452ce3cdf7 Bug 1117: workaround unused-local-typedefs warning when EIGEN_NO_STATIC_ASSERT and NDEBUG are both defined.
REVERT: 992fd17b6d Add a note on initParallel being optional in C++11.
REVERT: 374d1fc899 Improve numerical robustness of some unit tests
REVERT: e61b9ef5c7 Merged in dr15jones/eigen (pull request #146)
REVERT: 1c85337ed8 Use overload instead of template full specialization to please old MSVC
REVERT: bcf35a907a Make FullPivLU::solve use rank() instead of nonzeroPivots().
REVERT: 9317b7b426 Split TensorDeviceType.h in 3 files to make it more manageable
REVERT: 5ec764f202 Added option to force the usage of the Eigen array class instead of the std::array class.
REVERT: a32b9d348d Pulled latest updates from trunk
REVERT: 2e0dc40a1f Added proper support for fast 64bit integer division on CUDA
REVERT: 895f8ac48f Use a class constructor to initialize CPU cache sizes
REVERT: fc33ce1b52 Use .data() instead of &coeffRef(0).
REVERT: 3f59ae6347 Add regression using test for array<complex>/real
REVERT: 2a817803a8 Fix overload instantiation for clang
REVERT: 6edfcec2eb Workaround msvc broken complex/complex division in unit test
REVERT: 6e6bfe1f31 Add missing using statement to enable fast Array<complex> / real operations. (was ok for Matrix only)
REVERT: 65a2fdbecb Workaround MSVC missing overloads of std::fpclassify for integral types
REVERT: 63daae1bd5 Add is_integral<> type traits
REVERT: c43c8e6bd8 Fixed another clang compilation warning
REVERT: 8ca3ece793 Fixed compilation warning generated by clang
REVERT: a344caa586 Fixed compilation error triggered by nvcc
REVERT: ec440e68ec Shard the uint128 test
REVERT: 1c5ae8254d Cleanup the integer division test
REVERT: 6e248eb41d Added support for 128bit integers on CUDA devices.
REVERT: e2cd933a9d Added numeric limits for unsigned integers
REVERT: 3a5e0584cc Add regression unit test for prod.maxCoeff(i)
REVERT: d4f4e9e139 Avoid using the version of TensorIntDiv optimized for 32-bit integers when the divisor can be equal to one since it isn't supported.
REVERT: 1683f91941 Bug 1115: enable static alignment on ARM outside of old-GCC
REVERT: 60cdae6d4b Workaround i387 issue in unit test
REVERT: 505f3991d4 Only enable the use of constexpr with nvcc if we're using version 7.5 or above
REVERT: a56fda2a0e Added sanity check
REVERT: 5603ac8a16 Made it possible to compute atan, tanh, sinh and cosh on GPU
REVERT: 644059d89f Fixed a compilation warning
REVERT: e212c15883 Fixed a compilation warning triggered by nvcc
REVERT: 1efee2fbc6 Fixed a few compilation warnings
REVERT: e1218ebf56 Added a couple of missing EIGEN_DEVICE_FUNC
REVERT: 472732b918 Silenced some compilation warnings triggered by nvcc
REVERT: d522a805cc Fixed a few more typos
REVERT: 2f19d851c0 Fixed typos
REVERT: 8a30fa1147 Only enable the use of const expression when nvcc is called with the -std=c++11 option
REVERT: d8961ca59b Completed the IndexList rewrite
REVERT: 5bdcb8cb7e Simplified more of the IndexList code.
REVERT: 5ff9bcea22 Started to make the IndexList code compile by more compilers
REVERT: ed95365dec Fixed compilation error with xcode.
REVERT: 92e519d850 Made it possible to run some of the CXXMeta functions on a CUDA device.
REVERT: a893e8ddf7 Moved the array code into it's own file.
REVERT: b91944b0f0 gen_numeric_list takes a size_t, not a int
REVERT: 6d163e7c83 Fix missing Dynamic versus HugeCost changes
REVERT: 2d7a037e28 Update EIGEN_FAST_MATH doc
REVERT: 7dabd0682f Don't use std::array when compiling with nvcc since nvidia doesn't support the use of STL containers on GPU.
REVERT: 4d6d7d2ff2 Fixed a compilation warning
REVERT: 5328abfd66 Make it possible for a vectorized tensor expression to be executed in a CUDA kernel.
REVERT: a56f5c8ea0 Allow the vectorized version of the Binary and the Nullary functors to run on GPU
REVERT: 99ec046dea Disable SFINAE when compiling with nvcc
REVERT: 4e2ee1e727 Fixed CUDA compilation errors
REVERT: 7a8e8c115e Use Eigen::NumTraits instead of std::numeric_limits
REVERT: 0b94167929 Further fixes for CMAKE_INSTALL_PREFIX correctness
REVERT: 9a32e3f952 Bug 1109: use noexcept instead of throw for C++11 compilers
REVERT: ae1dfb1713 Use more explicit names.
REVERT: 57113e1d52 Fix usage of "Index" as a compile time integral.
REVERT: 5f379b0946 Bug 1113: fix name conflict with C99's "I".
REVERT: 69a50ec040 Disable complex scalar types because the compiler might aggressively vectorize the initialization of complex coeffs to 0 before we can check for alignedness
REVERT: 3cd1b1af3f Forbid the creation of SparseCompressedBase object
REVERT: d60198e2af Bug 1074: forbid the creation of PlainObjectBase object by making its ctor protected
REVERT: fcc9b8be57 Fix sign-unsigned issue in enum
REVERT: a84e2dc2af Fix and clarify documentation of Transform wrt operator*(MatrixBase)
REVERT: 362d9bde40 Fix Alignment in coeff-based product, and enable unaligned vectorization
REVERT: 554c523a79 Extend unit test of coeff-based product to check many more combinations
REVERT: f1f0ea621c Fixed another compilation warning
REVERT: a64a5f4492 Code cleanup
REVERT: b94977b4d7 Silenced a compilation warning
REVERT: ab2e6fbbbf Added static assertions to avoid misuses of padding, broadcasting and concatenation ops.
REVERT: 23a61b6f00 Fixed typos
REVERT: 1366964337 Added more missing EIGEN_DEVICE_FUNC
REVERT: faf1cbfd24 Added missing EIGEN_DEVICE_FUNC statements
REVERT: 142f0ab3e0 Reimplement the tensor comparison operators by using the scalar_cmp_op functors. This makes them more cuda friendly.
REVERT: ca0131c691 Bug 1105: fix default preallocation when moving from compressed to uncompressed mode
REVERT: cb9b1e817a Added support for modulo operation
REVERT: 49d43fe501 Pulled latest updates from trunk
REVERT: 70f56328ed Updated the regressions tests that cover full reductions
REVERT: b71c302bd1 Misc fixes to full reductions
REVERT: 3941c4a300 Fixed a bug in the extraction of sizes of fixed sized tensors of rank 0
REVERT: 14bc7e60ef Add unit test for Hessian via AutoDiffScalar
REVERT: 3c5c42a436 Bug 1063: nest AutoDiffScalar by value to avoid dead references
REVERT: b58000b9ed Fix "," in non SSE4 mode
REVERT: 3d1f008409 SPQR and UmfPack need to link to cholmod. (grafted from 300895f6e15c3a63e0bca39a824b7d26ac606760)
REVERT: 4708a31f2d prevent stack overflow in unit test
REVERT: 473f60c528 Updated the reduction code so that full reductions now return a tensor of rank 0.
REVERT: c30bf85364 Fix AVX round/ceil/floor, and fix respective unit test
REVERT: 0824e44060 Merged in aavenel/eigen (pull request #142)
REVERT: bd21219486 Add support for dense.cwiseProduct(sparse) This also fixes a regression regarding (dense*sparse).diagonal()
REVERT: 2d9f356358 Fix compilation of sparse-triangular to dense assignment
REVERT: 26b1aa1090 Made the CUDA implementation of ploadt_ro compatible with cuda implementations older than 3.5
REVERT: d9e8f6fb9f compilation issue
REVERT: 1c564644b8 Merge
REVERT: 7b04ce3906 Add round, ceil and floor for SSE4.1/AVX (Bug #70)
REVERT: cf219d4d7a Bug 1099: add missing incude for CUDA
REVERT: 9e58921590 Bug 1102: fix multiple definition linking issue
REVERT: 1e8c3d54eb typo
REVERT: 20d26fa88e Limit matrix size for other eigen and schur decompositions
REVERT: 2fbf167ea8 Limit matrix sizes for trmm unit test and complexes.
REVERT: 44e756a530 Limit matrix size when testing for NaN: they can become prohibitively expensive when running on x87 fp unit
REVERT: 90029b58ba Bug 1101: typo
REVERT: e85c9ee34b Biug 1100: remove explicit CMAKE_INSTALL_PREFIX prefix to please cmake install's DESTINATION argument
REVERT: ecde8d0305 Fix shadow warning
REVERT: 98ac65d399 Workaround compilation issue with MSVC<=2013
REVERT: e3c6944d2f Fix gcc 4.4 compilation issue
REVERT: 62d3a5366e Fixed a compilation warning
REVERT: 78fdb97559 Pulled latest updates from trunk
REVERT: 01ec4acb20 Added a few tests to cover rank-0 tensors
REVERT: 1d5c452ff3 Added support for tensor maps of rank 0.
REVERT: d44f945bab Added support for fixed sized tensors of rank 0
REVERT: 672a386ded Extended the reduction code so that reducing an empty set returns the neural element for the operation
REVERT: 31b4248f1b Added support for rank-0 tensors
REVERT: 357d0c9eb4 Consistently use the same index type in the fft codebase.
REVERT: 5fe221bce5 Silenced a few more compilation warnings
REVERT: f7f0c37e0d Silenced compiler warning
REVERT: 8f7bcb2f95 Don't call internal::check_rows_cols_for_overflow twice in PlainObjectBase::resize since this is extremely expensive for small arrays
REVERT: edc8cf3fe8 Fix warning.
REVERT: 800d1caa18 Fix duplicated declaration
REVERT: fbbd6524b4 Fusion the two similar specialization of Sparse2Dense Assignment. This change also fixes a compilation issue with MSVC<=2013.
REVERT: 0e2349e919 Add overloads for real times sparse<complex> operations. This avoids real to complex conversions, and also fixes a compilation issue with MSVC.
REVERT: f24a479251 fix copy/paste typo
REVERT: 2eb3b07a6f fix typo
REVERT: 33af1ec9b1 CUDA support: define more accurate min/max values for device::numeric_limits of float and double using values from cfloat header
REVERT: 8dc9e9eeb7 Enable std::isfinite/nan/inf on MSVC 2013 and newer and clang. Fix isinf for gcc4.4 and older msvc with fast-math.
REVERT: b0a491ced5 Fix typo in TutorialSparse: laplace equation contains gradient symbol (\nabla) instead of laplacian (\Delta).
REVERT: 34a60c6baf Simplify cost computations based on HugeCost being smaller that unrolling limit
REVERT: 09390b1ceb Add a unit test for large chains of products
REVERT: 0753fd8389 Extend vectorwiseop unit test with column/row vectors as input.
REVERT: 91be046785 Refactoring of the cost model:  - Dynamic is now an invalid value  - introduce a HugeCost constant to be used for runtime-cost values or arbitrarily huge cost  - add sanity checks for cost values: must be >=0 and not too large This change provides several benefits:  - it fixes shortcoming is some cost computation where the Dynamic case was not properly handled.  - it simplifies cost computation logic, and should avoid future similar shortcomings.  - it allows to distinguish between different level of dynamic/huge/infinite cost  - it should enable further simplifications in the computation of costs (save compilation time)
REVERT: e3009ce70a Fix false negative in redux test
REVERT: 1cc78b11f5 Enable mpreal unit test for C++11 compiler only
REVERT: f504550dee Bug 1008: add a unit test for fast-math mode and isinf/isnan/isfinite/etc. functions.
REVERT: 0f9fd88a5a Bug 1008: improve handling of fast-math mode for older gcc versions.
REVERT: db80c1e999 Bug 1008: stabilize isfinite/isinf/isnan/hasNaN/allFinite functions for fast-math mode.
REVERT: d91a8f024b merge
REVERT: cb57c06dc7 Simplify evaluator::Flags for Map<>
REVERT: 138da9e1be Fix assign vectorization logic with respect to fixed outer-stride
REVERT: b6e79b145e merge
REVERT: 3b468796f6 Fix ambiguous instantiation
REVERT: a4822d0543 Improve readibility of EIGEN_DEBUG_ASSIGN mode.
REVERT: b61734e760 Started to add support for tensors of rank 0
REVERT: ddd10ac35f Fixed compilation warning
REVERT: 7da115ef33 Fixed compilation warning
REVERT: 31d134c41a Added support for empty dimensions
REVERT: 2210ab29a7 Pulled latest updates from trunk
REVERT: 08eb86ac8d Fixed compilation warning
REVERT: 74a4c02a5a Fixed compilation error triggered by gcc 4.7
REVERT: d2f4dc7df8 Add support to directly evaluate the product of two sparse matrices within a dense matrix.
REVERT: f62972bf88 Bug 1092: fix iterative solver ctors for expressions as input
REVERT: 23b7dd3eea Bug 1098: fix regression introduced when generalizing some compute() methods in changeset bd2219a74c96.
REVERT: 7395265a87 Merged in infinitei/eigen (pull request #140)
REVERT: c17d51622d Make the IterativeLinearSolvers module compatible with MPL2-only mode by defaulting to COLAMDOrdering and NaturalOrdering for ILUT and ILLT respectively.
REVERT: 96b5136bc1 Add missing licence header to some top header files
REVERT: 11e5798f01 Bug 1088: fix setIdenity for non-compressed sparse-matrix
REVERT: d2e91240ee Fix SparseMatrix::insert/coeffRef for non-empty compressed matrix
REVERT: 9df3c19c4c ArpackSupport was missing here also.
REVERT: e415c71e35 Added ArpackSupport to cmake install target
REVERT: 38761e9caf merge
REVERT: fc51c871f9 Updated the custom indexing code: we can now use any container that provides the [] operator to index a tensor. Added unit tests to validate the use of std::map and a few more types as valid custom index containers
REVERT: 89df352b09 Tightened the definition of isOfNormalIndex to take into account integer types in addition to arrays of indices Only compile the custom index code  when EIGEN_HAS_SFINAE is defined. For the time beeing, EIGEN_HAS_SFINAE is a synonym for EIGEN_HAS_VARIADIC_TEMPLATES, but this might evolve in the future. Moved some code around.
REVERT: e2eb7e7a0c Fix perm*sparse return type and nesting, and add several sanity checks for perm*sparse
REVERT: 3f5c86b159 Fix ambiguous instantiation issues of product_evaluator.
REVERT: a8de87623d Add a plain_object_eval<> helper returning a plain object type based on evaluator's Flags, and base nested_eval on it.
REVERT: ad89fa5343 Update custom setFromTripplets API to allow passing a functor object, and add a collapseDuplicates method to cleanup the API. Also add respective unit test
REVERT: 7bd2727d6d name changes 2 user: Gabriel Nützi <gnuetzi@gmx.ch> branch 'default' changed unsupported/Eigen/CXX11/src/Tensor/Tensor.h changed unsupported/Eigen/CXX11/src/Tensor/TensorMeta.h
REVERT: b4ed5571fd name changes
REVERT: dd09f4796b added CustomIndex capability only to Tensor and not yet to TensorBase.  using Sfinae and is_base_of to select correct template which converts to array<Index,NumIndices>
REVERT: 05b033257d Add a functor to setFromTriplets to handle duplicated entries
REVERT: 8d37b90062 remove reference to internal method
REVERT: e2059d9b3b extend unit test for SparseMatrix::prune
REVERT: 786f6e526d Fix macro issues
REVERT: 37962ee118 update mpreal.h
REVERT: dbbe683781 Fix packetmath unit test for pdiv not being always defined
REVERT: d38cd25b4f Bug 1086: replace deprecated UF_long by SuiteSparse_long
REVERT: 7f6ca2d9d9 Add missing epxlicit keyword, and fix regression in DynamicSparseMatrix
REVERT: f2d840de27 Workaround ICC issue with first_aligned
REVERT: fe61d80ff5 Bug 1085: workaround gcc default ABI issue
REVERT: bd422320b5 Implement temporary-free path for "D.nolias() ?= C + A*B". (I thought it was already implemented)
REVERT: 1732a9b24a Clarify note in nested_eval for evaluator creating temporaries.
REVERT: bb02cdb8bd The evalautor of Solve was missing the EvalBeforeNestingBit flag.
REVERT: 1adad38c7b Add unit test for nested_eval
REVERT: 72afd0895f Add unit test for CoeffReadCost
REVERT: d6c92fad22 Add unit test to check nesting of complex expressions in redux()
REVERT: 4ee781d5f9 Improve documentation of TriangularView.
REVERT: 6662e850c9 Add lvalue check for TriangularView::swap, and fix deprecated TriangularView::lazyAssign
REVERT: 6747802594 Cleaning in Redux.h
REVERT: 25cf2f5df7 Remove auto references and referenced-by relation in doc.
REVERT: 88705a14c5 Remove dead code in selfadjoint_matrix_vector_product
REVERT: b466182490 Optimize a bit complex selfadjoint * vector product.
REVERT: e35ba85aaa Simplify EIGEN_DENSE_PUBLIC_INTERFACE
REVERT: 27042fa999 Cleanup EIGEN_SPARSE_PUBLIC_INTERFACE, it is now a simple alias to EIGEN_GENERIC_PUBLIC_INTERFACE
REVERT: 48f9ea4c7a Fix nesting sub-expression in outer-products
REVERT: 06944ae895 Fix propagation of AssumeAliasing for expression as: "scalar * (A*B)"
REVERT: 3cbc4a5ad1 Clean a bit the implementation of inverse permutations
REVERT: a5497a0772 Fix a nesting issue in some matrix-vector cases.
REVERT: e0d79b20e5 Re-enable vectorization of LinSpaced, plus some cleaning
REVERT: fb40f7dbd5 Clean evaluator<EvalToTemp>
REVERT: d2373e524e Fix some CUDA issues
REVERT: bcd50320e1 Fix a warning
REVERT: 205bb5da8d Properly implement PartialReduxExpr on top of evaluators, and fix multiple evaluation of nested expression
REVERT: c9699e904c Some cleaning in evaluators
REVERT: 1f4a31b1ed Add missing include of std vector
REVERT: e19db959dc Update sparse solver list to make it more complete
REVERT: 92c71f1875 Move IncompleteCholesky to official modules
REVERT: cedd5d2ac1 Improve doc of IncompleteCholesky
REVERT: 7d7d44807e Doc: add link to doc of sparse solver concept
REVERT: bdcdba2b38 Fix return by value versus ref typo in IncompleteCholesky
REVERT: a7b3b6aaf8 Unify gemm and lazy_gemm benchmarks
REVERT: fb4e51b002 Add a perfromance regression benchmark for lazyProduct
REVERT: 4a9b56a489 Add helper routines to help bypassing some compiler otpimization when benchmarking
REVERT: 55b907fb7c _mm_hadd_epi32 is for SSSE3 only (and not SSE3)
REVERT: 6d47342af0 Help clang to inline some functions, thus fixing some regressions
REVERT: 25d30ec19d Remove debuging prod() and lazyprod() function, plus some cleaning in noalias assignment
REVERT: 6a3a50eb33 Fix implicit cast in unit test
REVERT: 55967ed445 Re-enable some invalid scalar type conversion checks by disabling explicit vectorization
REVERT: eaa8f8b9e1 Add sparse vector to Ref<SparseMatrix> conversion unit tests, and improve output of sparse_ref unit test in case of failure.
REVERT: 793ef5a922 Fix wrong casting syntax
REVERT: 30146f8545 Fix storage index type in empty permutations
REVERT: ad785b6828 Define Permutation*<>::Scalar to 'void', re-enable scalar type compatibility check in assignment while relaxing this test for void types.
REVERT: f5bee82f08 Some cleaning
REVERT: cf0f2f204c Handle various TODOs in SSE vectorization (remove splitted storeu, enable SSE3 integer vectorization, plus minor tweaks)
REVERT: 19d372e5c9 Fix Ref<SparseMatrix> for Transpose<SparseVector>
REVERT: 5cac569d3e Bug 1076: fix scaling in IncompleteCholesky, improve doc, add read-only access to the different factors, remove debugging code.
REVERT: 67d94c0db9 Optimise assignment into a Block<SparseMatrix> by using Ref and avoiding useless updates in non-compressed mode. This make row-by-row filling of a row-major sparse matrix very efficient.
REVERT: b7c5f8c242 Optimize Ref<SparseMatrix> by removing useless default initialisation of SparseMapBase and SparseMatrix
REVERT: 334104d859 Enable to view a SparseVector as a Ref<SparseMatrix>
REVERT: 0079f23099 Make SparseVector derive from SparseCompressedBase, thus improving compatibility between sparse vectors and matrices
REVERT: e3415c2256 Improve counting of sparse temporaries
REVERT: 8e83830d3f Propagate cmake generator
REVERT: 890741e1c1 Make abs2 compatible with custom complex types
REVERT: 7ef7874684 [doc] grammar fix: "linearly space" -> "linearly spaced"
REVERT: 9d1f35d3b3 Bug 1075: fix AlignedBox::sample for runtime dimension
REVERT: a3c4cbc420 Merged in doug_kwan/eigen (pull request #137)
REVERT: 18fa4157b1 merge
REVERT: 7c35488e6f Fix performance regression in sparse * dense product where "sparse" is an expression
REVERT: 645d5b5a93 Specified signedness of char type in test so that test passes consistently on different targets.
REVERT: 972bc71a38 Call numext::mini instead of std::min in several places.
REVERT: b3422ba7f1 Add support for permutation * homogenous
REVERT: 10fcc5fcef Bug 1070: propagate last three Matrix template arguments for NumTraits<AutoDiffScalar<>>::Real
REVERT: e0a53d03a0 Bug 1071: improve doc on lpNorm and add example for some operator norms
REVERT: f9a1fbf18d Add support for row/col-wise lpNorm()
REVERT: 12346dcb8b Bug 1069: fix AVX support on MSVC (use of non portable C-style cast)
REVERT: cd893eaca8 Initial fork of unsupported module EulerAngles.
REVERT: 8f99023ab3 Fix bug 1067: naming conflict
REVERT: a108db50e6 Cleaned up a test
REVERT: 86ed923b05 Fixed compilation warning
REVERT: d43a92c609 Fix return type for TensorEvaluator<TensorSlicingOp>::data
REVERT: c48dcd757c Fix typo in Vectowise::any()
REVERT: ea6825421d Merged in daalpa/eigen/daalpa/removed-documentation-that-did-not-match-1442148941751 (pull request #136)
REVERT: 687bc5b158 Removed documentation that did not match the member function DenseBase::outerSize()
REVERT: 2e9dd6a068 Fixed cuda code: EIGEN_DEVICE_FUNC must come after template<...>
REVERT: 0a2526cffa Add unit tests for bug 981: valid and invalid usage of ternary operator
REVERT: 5da9d90337 Fixed a compilation warning
REVERT: f378821263 Fixed a compilation warning
REVERT: 9ba61e4fcf Added support for predux_mul for CUDA devices
REVERT: 8013a6b825 Fixed minor regression caused by bd2219a
REVERT: 46bbb51ca3 MKL is now free of charge for opensource
REVERT: 7f62b9da28 Add EIGEN_QUATERNION_PLUGIN
REVERT: b6c4293b30 Fix link and code formating
REVERT: f8a3153916 Generalize matrix ctor and compute() method of dense decomposition to 1) limit temporaries, 2) forward expressions to nested decompositions, 3) fix ambiguous ctor instanciation for square decomposition
REVERT: bb1f4878c1 Added tag 3.3-alpha1 for changeset 09a8e2186610
REVERT: eacc060165 bump to 3.3-alpha1
REVERT: 0379becb92 Workaround wrong instanciation made by VS2010
REVERT: 7bce787b0c Fix returned index type of inner iterators of sparse blocks.
REVERT: c244e76fe4 InnerIterator::index() should really return a StorageIndex
REVERT: 7f3237825f Add a few missing EIGEN_DEVICE_FUNC declarations
REVERT: 2de232b346 Fix documentation example
REVERT: 0224b495e2 Use inline versus static free functions.
REVERT: d4766ae86e use explicit Scalar types for AngleAxis initialization (grafted from c60b58edddc954a2a712373393a669ac7ef349cf)
REVERT: 63d51e8a8b Fixed compilation warning
REVERT: c7c60bfaee Added support for arrays of size 0
REVERT: 5d3add07d7 Reordered the code of fft constructor to prevent compilation warnings
REVERT: b4b4325bc4 Reworked the tensor contraction mapper code to make it compile on Android
REVERT: 744892ff01 Pulled latest updates from trunk
REVERT: 980a75a0bc Refined the #ifdef __CUDACC__ guard to ensure that when trying to compile gpu code with a non cuda compiler results in a linking error instead of bogus code.
REVERT: e83804c46c disable usage of INTMAX_T
REVERT: f6e1f1b889 remove useless cstdint header
REVERT: 20cad9be9c Switch to MPL2
REVERT: ed083f2d51 Added missing glue logic
REVERT: 222ec48618 Added mapping between a specific device and the corresponding packet type
REVERT: 71fd0b01cd Added tests for the fft code
REVERT: c9a4a2dc94 Added support for fourier transforms (code courtesy of thucjw@gmail.com)
REVERT: 2f1b118ea1 Remove invalid typename keyword
REVERT: ec5b04e553 merge
REVERT: c027d78d46 Fixed incorrect expected value
REVERT: f163736655 Added a constructor to simplify the construction of tensormap from tensor
REVERT: 3ecc84388b Avoid any openmp calls if multi-threading is explicitely disabled at runtime.
REVERT: 95dfaf2536 Bug 1089: add a warning when using a MatrixBase method which is implemented within another module by declaring them inline.
REVERT: b3f985189b Bug 1090: fix a shortcoming in redux logic for which slice-vectorization plus unrolling might happen.
REVERT: 0484c9d3da Added some syntactic sugar to make it simpler to compare a tensor to a scalar.
REVERT: dc5d3a4206 merge
REVERT: 515348e54f add FIXME
REVERT: 67bc3dd5dc Bug 1064: add support for Ref<SparseVector>
REVERT: 4b9c57307f Disable SFINAE for versions of gcc older than 4.8
REVERT: 579af8c640 Removed bogus assertion
REVERT: 72482bb504 Added support for boolean reductions (ie 'and' & 'or' reductions)
REVERT: eb904cb027 Fixed a bug in the tensor conversion op
REVERT: 963a6bf92f Improve numerical accuracy in LLT and triangular solve by using true scalar divisions (instead of x * (1/y))
REVERT: 455fdc37b7 Implement plog and pexp for AltiVec.
REVERT: fbbf5ac1b8 Bug 1053: fix SuplerLU::solve with EIGEN_DEFAULT_TO_ROW_MAJOR
REVERT: 8139366feb Fix Index vs StorageIndex naming convention
REVERT: f62fc62889 Fix AMD ordering when a column has only one off-diagonal non-zero (also fix bug 1045)
REVERT: 937b7fd7d8 Use full packet size for Dynamic-sized objects (otherwise, the unalignedcount unit test fails with AVX enabled)
REVERT: 2604a903a1 Since there is no reason for evaluators to be nested by reference, let's remove the evaluator<>::nestedType indirection.
REVERT: e47d47904a Fix AlignedVector3 wrt previous change
REVERT: 06a9ef3c14 Make evaluators non-copyable. This guarantee that evaluators storing temporaries do not introduce unwanted copy overhead.
REVERT: c1b0defb8e Cleaning pass on evaluators: remove the useless and error prone evaluator<>::type indirection.
REVERT: b1e9ab9e31 Fix compilation of cuda unit test
REVERT: 4721a9d306 Fix packetmath unit test for exp and log
REVERT: 058aad96fa Fix LSCG::solve with a sparse destination.
REVERT: 9421f3aa93 Remove deprecated Flagged expression.
REVERT: 905942993b Add regression test for bug 817
REVERT: ca4e2b5f7e Bug 505: add more examples of bad and correct usages of auto and eval().
REVERT: faceeebebc Add a documentation page for common pitfalls
REVERT: 7be68b07bd Bug 1057: fix a declaration missmatch with MSVC
REVERT: 882080ba6c Fix FullPivLU::image documentation
REVERT: 51c4e0cdad Simplify implementation of the evaluation's iterator of Sparse*Diagonal products to help the compiler to generate better code.
REVERT: e7f1663a78 Remove duplicated temporary in Sparse to Sparse assignment
REVERT: a001db8278 Add missing specialization of evaluator of sub-sparse-matrices that can be seen as a SparseCompressedBase. This changeset enable faster iterator for such expressions.
REVERT: 70adaae941 Added support for argmax/argmin
REVERT: 6d0dac63ee Use numext::mini/numext::maxi instead of std::min/std::max in the tensor code
REVERT: 61be99d192 nvcc doesn't support std::min or std::max on GPU. Use our own custom implementation instead
REVERT: 4e50843df7 fixed Quaternion identity initialization for non-implicitly convertible types
REVERT: 575928f081 Fixed broken commit 4349538. Missing } and unprotected min/max calls and definitions.
REVERT: 8a8ec75ba5 std::numeric_limits doesn't work reliably on CUDA devices. Use our own definition of numeric_limit<T>::max() and numeric_limit<T>::min() instead of the stl ones.
REVERT: 240599e148 Bug 1043: Avoid integer conversion sign warning
REVERT: dc4238323e Fix some trivial warnings
REVERT: 2aec176514 Use standard include syntax in Tensor module (<> for include-path and "" for relative path)
REVERT: d3535fa593 surpress some warnings
REVERT: 7478de7db8 Define EIGEN_MAX_STATIC_ALIGN_BYTES to 0 for architectures that don't require stack alignment
REVERT: c80b77e695 merge
REVERT: 21034dc199 Protect further isnan/isfinite/isinf calls
REVERT: 9e748951e2 Merged in ITimer/eigen (pull request #133)
REVERT: 8eb241b1a2 Protect all calls to isnan, isinf and isfinite with parentheses.
REVERT: 6c3207daa3 Bug 829: Introduce macro EIGEN_HAS_CXX11_CONTAINERS and do not specialize std-containers if it is enabled.
REVERT: f2ac6f095e Bug 1054: Use set(EIGEN_CXX_FLAG_VERSION "/version") only for Intel compilers on Windows. Also removed code calling `head -n1` and always use integrated REGEX functionality.
REVERT: aa5305cb91 Fixed a spelling error
REVERT: 68fe0bc3f1 merge
REVERT: 62d51426e5 Fix Tensor module wrt nullary functor recent change
REVERT: 789a2db1fe Bug 1053: SparseLU failed with EIGEN_DEFAULT_TO_ROW_MAJOR
REVERT: 9b6fb80402 Enable vectorization with half-packets
REVERT: eaf52272e5 Fix prototype of plset and generalize linspace functor.
REVERT: dbc7848592 Some functors were not generic wrt packet-type.
REVERT: a95a00f679 Include SSE packetmath when AVX is enabled, and enable AVX's sine function only in fast-math mode (as SSE)
REVERT: 9ad85bc66c Allow to use arbitrary packet-types during evaluation. This is implemented by adding a PacketType template parameter to packet and writePacket members of evaluator<>.
REVERT: d0743bd4c7 Mark ALignedBit as deprecated.
REVERT: 74556fdc97 Let unpacket_traits<> exposes the required alignment and make use of it everywhere
REVERT: 39f7069003 Generalize first_aligned to take the requested alignment as a template parameter, and add a first_default_aligned variante calling first_aligned with the requirement of the largest packet for the given scalar type.
REVERT: c68d061340 First part of a big refactoring of alignment control to enable the handling of arbitrarily aligned buffers. It includes:  - AlignedBit flag is deprecated. Alignment is now specified by the evaluator through the 'Alignment' enum, e.g., evaluator<Xpr>::Alignment. Its value is in Bytes.  - Add several enums to specify alignment: Aligned8, Aligned16, Aligned32, Aligned64, Aligned128. AlignedMax corresponds to EIGEN_MAX_ALIGN_BYTES. Such enums are used to define the above Alignment value, and as the 'Options' template parameter of Map<> and Ref<>.  - The Aligned enum is now deprecated. It is now an alias for Aligned16.  - Currently, traits<Matrix<>>, traits<Array<>>, traits<Ref<>>, traits<Map<>>, and traits<Block<>> also expose the Alignment enum.
REVERT: 316992a6f5 Fix logic in compute_default_alignment, extend it to Dynamic size, and move it to XprHelper.h file.
REVERT: b8c1e025cc Enable runtime stack alignment in gemm_blocking_space.
REVERT: 8c14a4cb67 Add a EIGEN_DEFAULT_ALIGN_BYTES macro defining default alignment for alloca and aligned_malloc. It is defined as the max of EIGEN_IDEAL_MAX_ALIGN_BYTES and EIGEN_MAX_ALIGN_BYTES
REVERT: 61625a5f7a Remove dense nested loops in IncompleteCholesky
REVERT: 93276d2baf Numerous fixes for IncompleteCholesky. Still have to make it fully exploit the sparse structure of the L factor, and improve robustness to illconditionned problems.
REVERT: d6ddfd0c5d Add a unit test for IncompleteCholesky
REVERT: 9a2cc18495 Propagate precondition info to the iterative solver.
REVERT: 0d8dc701bc Fix conversion warning
REVERT: 18d7600f9a Fix ForceNonZeroDiag for complexes
REVERT: 3231c54fa4 Fixed compilation warning
REVERT: da37757720 Fixed 2 compilation warnings generated by llvm
REVERT: 1a8e712871 Added a test for shuffling
REVERT: 2388da3b98 Fixed a few compilation warnings triggered by clang
REVERT: f5393d0b5c Simplified and generalized the DividerTraits code
REVERT: 2fa3ca7933 Add missing specialization of struct DividerTraits<long>
REVERT: c71f17919d Many files were missing in previous changeset.
REVERT: c1ce5c9b97 typo
REVERT: 308d38901a Bug 973: update macro-level control of alignement by introducing user-controllable EIGEN_MAX_ALIGN_BYTES and EIGEN_MAX_STATIC_ALIGN_BYTES macros. This changeset also removes EIGEN_ALIGN (replaced by EIGEN_MAX_ALIGN_BYTES>0), EIGEN_ALIGN_STATICALLY (replaced by EIGEN_MAX_STATIC_ALIGN_BYTES>0), EIGEN_USER_ALIGN*, EIGEN_ALIGN_DEFAULT (replaced by EIGEN_ALIGN_MAX).
REVERT: 3e048451fd Bug 1047: document the structure layout of class Matrix
REVERT: 1f6efcd964 Bug 1048: fix unused variable warning
REVERT: 80f995b6ec Pulled latest updates from trunk.
REVERT: 8e673e36e4 Removed an incorrect assertion.
REVERT: f68d9b34a4 Merged in godeffroy/eigen_tensor_generalized_contraction (pull request #130)
REVERT: 9161eb1203 Bug 792: SparseLU::factorize failed for structurally rank deficient matrices
REVERT: aa61f91b03 Allowed tensor contraction operation with an empty array of dimension pairs, which performs a tensor product.
REVERT: fce6af7143 Fixed a typo in an assertion.
REVERT: 97b2e33a4c Pulled latest update from trunk
REVERT: f454807957 Reenable 2 tests previously disabled by mistake
REVERT: a9d1cdbee7 Re-enabled unit tests which were disabled in commit 2fbf463.
REVERT: bf0bba43de Define EIGEN_VECTORIZE_AVX2 and EIGEN_VECTORIZE_FMA when the corresponding instructions can be used by the compiler
REVERT: 2da5139034 Pulled latest updates from trunk
REVERT: c94e48a73b Extended the range of value inputs for TensorIntDiv to support tensors with more than 4 billion elements.
REVERT: b093299773 Remove wrongly pushed debugging statements
REVERT: 7acee5c490 Fixed some compiler bugs in NVCC, now compiles with CUDA. (chtz: Manually joined sevaral commits to keep the history clean)
REVERT: 1e351a6174 Made sure that the use const expressions are not enabled when compiling with nvcc even when gcc 4.9 is used as the host compiler.
REVERT: a26cdd96b7 The eigen_check macro doesn't exist anymore: use assert instead
REVERT: 26452d1d61 Fix compilation of tri(sparse) * dense with OpenMP
REVERT: d4319f2e37 add regression unit test for previous changeset
REVERT: 29a152aecc AlignedVector3 accepts implicit conversions from more operators.
REVERT: cf0d79d1fa Fix output of relative error, and add more support for long double
REVERT: 5e6d844e32 Bug 1036: implement verify_is_approx_upto_permutation through a combinatorial search. The previous implementation was subject to numerical cancellation issues.
REVERT: 6185bc81e8 Add pow(scalar,array) in quick ref
REVERT: df19975114 Generalize pow(x,e) such that x and e can be a different expression type or a scalar for either x or e. Add x.pow(e) with e an array expression.
REVERT: 47b6b71ca1 Fix trivial warnings.
REVERT: aea60f453a Fix compilation of isnan(complex)
REVERT: a6c21a2e41 Add support for replicate in CUDA
REVERT: 8582a44066 Fixed a typo in a test and a compilation warning
REVERT: 6a074c25d6 Rewrote Eigen::dimensions_match to prevent a static assertion when the rank of the tensors is different.
REVERT: dc7691ee80 Fixed a const correctness issue in TensorLayoutSwap
REVERT: 318ca4d8da Added support for prefetching on cuda devices
REVERT: 7757583663 Pulled latest updates from trunk
REVERT: c3f46ce4d1 Added support for sigmoid function to the tensor module
REVERT: f9f8529487 Add const getters for LM parameters
REVERT: 362cc60e58 Fixed a typo in Macro.h
REVERT: 74a238a9d8 Use the new EIGEN_HAS_INDEX_LIST define to enable the cxx11_tensor_index_list tests
REVERT: e57b3c38ca Define EIGEN_HAS_INDEX_LIST whenever the class is defined. This makes it easier to support compilers that are cxx11 compliant and compilers that aren't.
REVERT: 7a9ebeb6e5 Added missing APIs to the Eigen::Sizes class
REVERT: 98813e5c35 Added support for tensor inflation.
REVERT: 71ee4c8196 Avoid relying on a default value for the Vectorizable template parameter of the EvalRange functor
REVERT: ad5951f879 Fixed compilation error in a cuda test
REVERT: 79df08e06d Updated the cuda tests to use the new GpuDevice constructor
REVERT: 114b90c690 Added support for multi gpu configuration to the GpuDevice class
REVERT: 46edbfd578 Clean some previous changes and more cuda fixes
REVERT: f82d664f60 Merged eigen/eigen into default
REVERT: fb42a634ea Add missing EIGEN_DEVICE_FUNC
REVERT: 9b6cfb755e Merged in emartin/eigen (pull request #123)
REVERT: 498891f031 Enabled the construction of a fixed sized tensor directly from an expression.
REVERT: ae64f80d8f Fixed a bug in the integer division code that caused some large numerators to be incorrectly handled
REVERT: dbe691bbbb Bug 1039: Redefining EIGEN_DEFAULT_DENSE_INDEX_TYPE may lead to errors
REVERT: 3b044db9a0 Fix operator<<(ostream,AlignedVector3)
REVERT: 6a5a308c8d Modify GEMM to handle m=0, n=0, and k=0 cases.
REVERT: 72c162c17b Cleaning
REVERT: 5f43e602a5 Revert files to remove EIGEN_USING_NUMEXT_MATH
REVERT: 19ecf84b64 Replace double constants by Scalar constants
REVERT: 0c69cb2a19 Cuda compatibility: remove explicit call to std math functions
REVERT: 808b92a00a Merged eigen/eigen into default
REVERT: 1bad939e13 Added support for generation of random complex numbers on CUDA devices
REVERT: 02c73d922b Use NumTraits<T>::RequireInitialization instead of internal::is_arithmetic<T>::value to check whether it's possible to bypass the type constructor in the tensor code.
REVERT: b1da39bd79 Updated internal::is_arithmetic::value to be true for complex numbers
REVERT: fda2c01678 Pulled latest changes from trunk
REVERT: b00e16ded0 Improved and cleaned up the 2d patch extraction code
REVERT: 7e2c9d6595 typo
REVERT: 8d49e76096 Rotation2D: fix slerp to take the shortest path, and add convenient method to get the angle in [-pi,pi] or [0,pi]
REVERT: fd3129b245 Use numext::swap instead of std::swap
REVERT: cf8202130e use Eigen smart_copy instead of std::copy
REVERT: 4e93d2c66c Fixed a compilation warning generated by clang
REVERT: 413776a49c Only attempt to use the texture path on GPUs when it's supported by CUDA
REVERT: 9e6ccdafb2 Merged eigen/eigen into default
REVERT: 789172eb49 Protect against compilation errors with nvcc and numext/complex. Disable functions explicitely involving std::complex when compiling with nvcc. Improve code compatilibity using the new macro EIGEN_USING_NUMEXT_MATH (same spirit than EIGEN_USING_STD_MATH but for numext functions)
REVERT: 48fc49e80c Misc small fixes to the tensor slicing code.
REVERT: c4a1f74fe4 Merged in Emie/eigen (pull request #121)
REVERT: b71d5f8624  typo correction in mathFunction
REVERT: 9d97a5cf0f Merged eigen/eigen into default
REVERT: f386e54ffc Fixed a typo in the patch
REVERT: b6bc382e00 Added a default value for the cuda stream in the GpuDevice constructor
REVERT: cdd0fd975e Misc improvements and optimizations
REVERT: 9cf4ccce27 Improved a previous fix
REVERT: 0c1d2fad59 Fixed a couple of mistakes in the previous commit.
REVERT: 42554a888c Enabled the vectorized evaluation of several tensor expressions that was previously disabled by mistake
REVERT: 92ac7a217a Marked the cast functions as EIGEN_DEVICE_FUNC to ensure that we can run casting on GPUs
REVERT: 6ac531a36f Silenced a compilation warning
REVERT: ffef05aba9 Added support for user defined custom tensor op.
REVERT: eaaf06cfa3 Added support for 3D patch extraction
REVERT: b64f4ddbe7 Made ThreadPoolDevice inherit from a new pure abstract ThreadPoolInterface class: this enables users to leverage their existing threadpool when using eigen tensors.
REVERT: f194423130 Turned Eigen::array::size into a function to make the code compatible with std::array
REVERT: 9e1cbe20a5 Added a test for multithreaded full reductions
REVERT: 62150877d9 Fixed a few compilation warnings
REVERT: 63fb164a44 Silenced a number of compilation warnings
REVERT: a519769cab Added a test for full reductions on GPU
REVERT: 8634334377 Improved performance of full reduction by 2 order of magnitude on CPU and 3 orders of magnitude on GPU
REVERT: 7f97098b53 Improved support for fixed size tensors
REVERT: 23ac4660cd Express the full reduction operations (such as sum, max, min) using TensorDimensionList
REVERT: 748d86def2 Added support for tanh function to the tensor code
REVERT: ae8338c7c9 Moved some utilities to TensorMeta.h to make it easier to reuse them accross several tensor operations. Created the TensorDimensionList class to encode the list of all the dimensions of a tensor of rank n. This could be done using TensorIndexList, however TensorIndexList require cxx11 which isn't yet supported as widely as we'd like.
REVERT: 2036c7370e Use VERIFY_IS_EQUAL instead of VERIFY(a==b) to get more feedback in case of failure
REVERT: 943d4b5e54 split compiler intensive bdcsvd_1 unit test
REVERT: 88557b5e10 Add special path for matrix<complex>/real. This also fixes underflow issues when scaling complex matrices through complex/complex operator.
REVERT: 4284519e29 Bug 1026: fix infinite loop for an empty input
REVERT: ee1fb33245 Doc: explain perf and multithreading issues in sparse iterative solvers
REVERT: 380ed9c420 Enable OpenMP parallelization of row-major-sparse * dense products. I observed significant speed-up of the CG solver.
REVERT: f62a4a2517 More msvc 2013/2015 workarounds
REVERT: 4a49fb0e4f Optimize CG to enable faster spare row-major * dense vector products when the input matrix is complete (Upper|Lower) but column major.
REVERT: ca3b1c2d03 Fix assignement to selfadjoint-view when testing real-world problems
REVERT: 6f896889dd Remove redundant accessors in Reverse
REVERT: 99dec80fbd Avoid division by a zero complex
REVERT: 2cde752217 Clarify documentation of the tolerance and error returned in iterative solvers
REVERT: da1c447e1a workaround msvc 2013/2015 wrong instanciation of isnan, isfinite, isinf
REVERT: 16357ff233 Bug 1000: MSVC 2013 does need the operator= workaround
REVERT: 1a1740778d Workaround MSVC ambiguous instanciation
REVERT: 69ee5b2bd0 Add explicit ctor for diagonal to sparse conversion
REVERT: f8d5ad23b4 Document how cross behaves on complex numbers
REVERT: de76db8809 Add unit test for dense = SparseQR::matrixQ
REVERT: 7ebc980370 Add support for sparse = diagonal
REVERT: e738e7eebd Make SparseSelfAdjointView, twists, and SparseQR more evaluator friendly
REVERT: e7efd6ec26 Add a call_assignment_no_alias_no_transpose shortcut
REVERT: 2b489881c0 Inherit operator+= and -= with 'using' kkeyword
REVERT: 6e2d250a22 Fallback to CMAKE_CXX_COMPILER_VERSION if VS version unknown
REVERT: b292f7c4dd Fix compilation of MKL Pardiso support
REVERT: 2073ae7495 std::isnan is c++11 only
REVERT: f909b36ab6 Add unit-test for Visual2013 ambiguous call to operator=
REVERT: 53c80cf86e Added more checks to test the correctness of the pexp implementation
REVERT: 8ce596dd63 Fix overflow when checking SVD accuracy
REVERT: 227923e165 Fix underflow in 3x3 tridiagonalization
REVERT: 4de563dfa3 Fix the fact that float(int) != float(int(float(int)))
REVERT: 27e54791a2 Fix a warning with icc
REVERT: e50559058a Enable VML's pow wrapper on windows (the previous wrapper used the Fortran interface)
REVERT: 7c674a0572 Bug 923: update support for Intel's VML wrt new evaluation mechanisms
REVERT: 0974cf16bc Bug 923: fix EIGEN_USE_BLAS mode
REVERT: ed6edd7899 Workaround missalignment produced by first_aligned for PacketSize==1 and size==1
REVERT: 9763e8de5d Use Ref<> to bypass forceAlignmentIf
REVERT: b88620e465 Bug 1017: apply Christoph's patch preventing underflows in makeHouseholder
REVERT: 1f15d7f787 Fix isinf unit tests
REVERT: d48ca4657a Update list of main modules
REVERT: 0efe2b9188 Update coeff-wise quick-reference doc.
REVERT: 745ba3b789 Fix return nullary return types: it must be based on the PlainObject type instead of the expression type.
REVERT: 0a2f9f9758 Reduce compiler memory consumption for SVD unit tests
REVERT: d0deaec05c Fix double to Scalar unwanted promotions
REVERT: 2163ff866d Fix regression on CompressedStorage::operator=
REVERT: 3312a6aa82 Use GCC flags in mingw
REVERT: ae4b3a3cfc Merged in vanhoucke/eigen_vanhoucke (pull request #118)
REVERT: 9e92e72803 Get rid of must_nest_by_value
REVERT: f8dc2bbc8d Get rid of class internal::nested<> (still have to updated Tensor module)
REVERT: 8b964f2d52 Fix undefined behavior. When resizing a default-constructed SparseArray, we end up calling memcpy(ptr, 0, 0), which is technically UB and gets caught by static analysis.
REVERT: 3606dfdbee Fix undefined behavior.
REVERT: 70911c3e55 Fix usage of nested versus nested_eval
REVERT: 281a382dbc Fix ambiguous instanciation using clean class-level SFINAE in product_evaluator
REVERT: 05394626a9 Remove a few deprecated internal expressions
REVERT: 40c7fb5243 Check number of temporaries when applying permutations
REVERT: a0645645ed Factorize VERIFY_EVALUATION_COUNT in unit tests
REVERT: eb9b853c13 Fix permutation/transposiitons products wrt nested_eval
REVERT: d1e5e9c2e3 Introduce a AliasFreeProduct option for Permutations and Transpositions
REVERT: 96d9e78d87 Remove useless specializations of evaluator_traits
REVERT: dcdb0cb740 Improbe compatibility of Transpositions and evaluators
REVERT: 31cdcdda99 Make Transpositions use evaluators
REVERT: 053db4b6b7 Enforce eigenvectors to be column-major (for performance reasons)
REVERT: f11a5f456a Clean implementation of permutation * matrix products.
REVERT: b5d05dbd73 Fix compilation of BDCSVD with DEFAULT_TO_ROWMAJOR
REVERT: fa06069e87 Fix storage order computation in traits<Product>
REVERT: 0d7a2f00d4 Fixed a compilation warning
REVERT: 5dd0640c94 Workaround broken complex*real product on old clang versions
REVERT: fdf44e632b workaround clang's broken complex division
REVERT: e5f650d8df Fixed merge conflict
REVERT: 5cd2856f0b Pulled latest updates from trunk
REVERT: 78cddf79f0 Fixed compilation warnings triggered by clang
REVERT: 9a125b44c1 Add unit test for bug 879
REVERT: 83fb183c1f Fix compilation in TensorImagePatch
REVERT: e786a9b6ed Fix shadow warnings in Tensor module
REVERT: 119128b1ad Fix compilation of alignedvector3 unit test
REVERT: 588101250f Remove the usage of result_of for DenseBase::redux as discussed in bug 1006
REVERT: 554db0275a Remove support of std::binder* in C++11
REVERT: eca78d0d92 Remove aligned-on-scalar assert and fallback to non vectorized path at runtime (first_aligned already had this runtime guard)
REVERT: fd063a52b2 Fix isfinite/isinf/isnan code snippets
REVERT: 6137db6828 typo
REVERT: 8fc5100d56 Relax tolerance when testing LDLT on singular problems
REVERT: 8bd4f9c7c2 Extend VERIFY_IS_APPROX to report the magnitude of the relative difference in case of failure. This will ease identifying strongest failing tests
REVERT: 786b4d8424 Add missing forward declaration of AlignedBox
REVERT: 6b9f9823df Fix use of unitialized buffers.
REVERT: 96921f7e6e Relax aligned-on-scalar assert as in the 3.2 branch
REVERT: 969e02ac9d Enable C++11 math function in a more conservative manner.
REVERT: feca970f31 merge
REVERT: ae61e0bfd5 Introduce EIGEN_PI, get rid of M_PI and acos(-1.0)
REVERT: 3e0ddb79c2 Make more use of EIGEN_HAS_C99_MATH
REVERT: d406e76247 fix isinf(complex(inf,NaN)) to return false.
REVERT: c4dc1b3ef1 Rename free functions isFinite, isInf, isNaN to be compatible with c++11
REVERT: 593316fead Bug 80: merge with d_hood branch on adding more coefficient-wise unary array functors
REVERT: 13cfd56f62 Bug 890, add a more general routine to check that two dense object reference to the same data
REVERT: e629bdaabd Add regression test for bug 890
REVERT: 47a7a3f4de Bug 897: make umfpack support use Ref<>
REVERT: 6ebe0ff8c5 Bug 910: add a StandardCompressedFormat option to Ref<SparseMatrix> to enforce standard compressed storage format. If the input is not compressed, then this trigger a copy for a const Ref, and a runtime assert for non-const Ref.
REVERT: e23cc9384c Bug 650: fix sparse * dense wrt noalias and compound assignment
REVERT: ecc460bd99 Bug 1003: assert in MapBase if the provided pointer is not aligned on scalar while it is expected to be. Also add a EIGEN_ALIGN8 macro.
REVERT: 7e1c3fb16a Enable -Wshadow with clang
REVERT: 46693f1d15 code simplification
REVERT: 6e538d3f56 formatting
REVERT: 7a6757aaae remove redundant dynamic allocations in GMRES
REVERT: 3a3ae1923a fix some legitimate shadow warnings
REVERT: 4c2ced05f3 fix unused variable warning
REVERT: 58cc5ed4d4 Clean argument names of some functions
REVERT: 7a8649a792 Add missing documentation for TriangularViewImpl<MatrixType,Mode,Sparse>
REVERT: 3e3533687b Bug 872: remove usage of deprecated bind1st.
REVERT: 8383723439 Skip too large real-world problems for solvers that do not scale (e.g., SimplicialLLT without reordering)
REVERT: ccf7e41dc8 Fix shadow warnings triggered by clang
REVERT: a49f5a7d7e Extend unit test and documentation of SelfAdjointEigenSolver::computeDirect
REVERT: ffa9192d81 Update utility for experimenting with 3x3 eigenvalues
REVERT: 4569bd95a6 Bug 997: add missing evaluators for m.lazyProduct(v.homogeneous())
REVERT: 3bc516d25d Add unit test for m.replicate(...)(index).
REVERT: 1236be82ed Fix homogeneous() for 1x1 matrix: in this case, homogeneous follows the storage order guaranteeing that v.transpose().homogeneous() == v.homogeneous().transpose()
REVERT: 55d5fabc5d Add missing accessors for 1D index based access to Replicate<> expressions.
REVERT: 9cc4192af8 Bug 1005: fix regression regarding sparse coeff-wise binary operator that did not trigger a static assertion for mismatched storage
REVERT: 3203286d0b Bug 705: fix handling of Lapack potrf return code
REVERT: 40b37df49f minor documentation fixes
REVERT: 8b0eab6f70 BiCGSTAB: set default guess to 0, and improve restart mechanism by recomputing the accurate residual.
REVERT: b3d172b384 Improve unit testing of real-word sparse problem (fix some shortcommings, use VERIFY, etc.)
REVERT: 731f96c973 Do go to full accuracy when testing BiCGSTAB.
REVERT: a995d3570f Do not abort if the folder cannot be openned!
REVERT: 87b75c4b01 Improve loading of symmetric sparse matrices in MatrixMarketIterator
REVERT: 4cb42a3842 Merged in FlorianGeorge/eigen_blaze_fork_2 (pull request #60)
REVERT: 8316f196e2 Fixed a compilation error triggered by nvcc 7
REVERT: 683511390c Worked around some constexpr related bugs in nvcc 7
REVERT: bb466a281c Added missing include files
REVERT: 5d9fc79bb1 Fixed potential compilation error
REVERT: 649db376f8 Added a few more missing EIGEN_DEVICE_FUNC statements
REVERT: f408a50d16 Added a few missing EIGEN_DEVICE_FUNC statements
REVERT: 9a31fc43c3 Avoid calling smart_copy with null pointers.
REVERT: c4c27f387e Moved away from std::async and std::future as the underlying mechnism for the thread pool device. On several platforms, the functions passed to std::async are not scheduled in the order in which they are given to std::async, which leads to massive performance issues in the contraction code. Instead we now have a custom thread pool that ensures that the functions are picked up by the threads in the pool in the order in which they are enqueued in the pool.
REVERT: 3998de17ac Fixed compilation error triggered by gcc 4.7
REVERT: 4c4b42c7af Avoid using the cuda memcpy for small tensor slices since the memcpy kernel is very expensive to launch
REVERT: a20669568d Added new version of the TensorIntDiv class optimized for 32 bit signed integers. It saves 1 register on CPU and 2 on GPU.
REVERT: e73fe2a76f Abandon blocking size lookup table approach. Not performing as well in real world as in microbenchmark.
REVERT: 789f240920 Bug 1014: More stable direct computation of eigenvalues and -vectors for 3x3 matrices
REVERT: bf0c3d1fca also uninitialized here, see previous cset
REVERT: 399798a29e Fix uninitialized var warning. The compiler was clearing the register anyway, so this does not change resulting code
REVERT: 49fa105d74 Check for the macro __ARM_NEON__ (with two underscores at the end) as well as __ARM_NEON. The second macro is correct according to the ARM language extensions specification, but historically the first one has been more common. Some older compilers (e.g. gcc v4.6 on a Beaglebone Black) only define the first, so without this patch NEON isn't enabled.
REVERT: 6914b8dfdd Add regression test for bugs 854 and 1014, and check that the eigenvector matrix is unitary.
REVERT: af19fada39 Make test matrices for eigensolver/selfadjoint even more tricky
REVERT: 985fa3e45c Ignore denormal numbers in selfadjoint eigensolver.
REVERT: b290358e7c Merged in MattPD/eigen/MattPD/doc-fix-wording-typos-in-templatekeywor-1431363009359 (pull request #116)
REVERT: 5eb18176f0 [Doc] Fix wording / typos in TemplateKeyword.dox
REVERT: ef45743a02 Bug 872: Avoid deprecated binder1st/binder2nd usage by providing custom functors for comparison operators
REVERT: 89f14af26e Bug 1013: fix 2x2 direct eigensolver for identical eiegnvalues
REVERT: bd25bd68ec Extend unit tests of sefladjoint-eigensolver
REVERT: d8e8a10593 Fix bug 1010: m_isInitialized was improperly updated
REVERT: f700e52600 Merged in doug_kwan/eigen (pull request #103)
REVERT: 73df061cdb Added a double-precision implementation of the exp() function for AVX.
REVERT: 400844a2dc small typo
REVERT: 8f8be2abc5 Merged in mvdyck/eigen-3/mvdyck/doc-multithreading-fix-old-n-eigennbthr-1430750928880 (pull request #114)
REVERT: 52b5824a66 [Doc] Multi-threading fix OLD: n = Eigen::nbThreads( n ); NEW: n = Eigen::nbThreads( );
REVERT: 2415442d39 Bug 998: Started fixing doxygen warnings
REVERT: 26db0e18f8 Bug 999: clarify that behavior of empty AlignedBoxes is undefined, and further improvements in documentation
REVERT: 58401c00ce Regression test for Bug 302 (transplanted from aaee8de5ad6b57260d50c6b365a3a18835bd9606) Changed DenseIndex to Index
REVERT: 1481fbc06f Fix trivial warnings in LevenbergMarquardt module and test
REVERT: c7c1264a0b Disable posix_memalign on Solaris and SunOS, and allows to by-pass built-in posix_memalign detection rules.
REVERT: bb8478cff1 Extend unit test of Map<,,Stride<>> with stack allocated buffers and less trivial operations.
REVERT: e4849abebc Extend unit test of Map<> with stack allocated buffers and less trivial operations.
REVERT: 5c2b0c277d Bug 360: add value_type typedef to DenseBase/SparseMatrixBase
REVERT: e07091a7c2 Fix Bug 1000: Manually inherit assignment operators for MSVC 2013 and later (as required by the standard).
REVERT: c3d5326ec7 Silenced a few compilation warnings
REVERT: bb7f4272fb Added the ability to generate a tensor from a custom user defined 'generator'. This simplifies the creation of constant tensors initialized using specific regular patterns. Created a gaussian window generator as a first use case.
REVERT: 8979086659 Added support for non-deterministic random number generation on GPU
REVERT: c579d54ea2 Merge with cb6a61b4c34e10dadacc0b0a84eb0116b8a1b315
REVERT: 6b6d1edd22 Make sure that the copy constructor of the evaluator is always called before launching the evaluation of a tensor expression on a cuda device.
REVERT: cc1e3f91cc Make sure that BlockImpl<const SparseMatrix> ctor is called with the right type
REVERT: 369aaaebe2 Fix typo in the definition of EIGEN_COMP_GNUC_STRICT
REVERT: f0a5c3efb7 Silenced a few compilation warnings
REVERT: 6d59f2abfd Sped up the assignment of a tensor to a tensor slice, as well as the assigment of a constant slice to a tensor
REVERT: 32c3c18998 Use std::isfinite when available
REVERT: 6831f16b54 Incorporate C++11 check into EIGEN_HAS_C99_MATH macro
REVERT: 68fd3a9df3 Merged default into unary-array-cwise-functors
REVERT: df0658e805 Only use std::isnan and std::isinf if they are available
REVERT: d2b923d3ed Improved the tensor random number generators:  * Use a mersenne twister whenebver possible instead of the default entropy source since the default one isn't very good at all.  * Added the ability to seed the generators with a time based seed to make them non-deterministic.
REVERT: fbdf064775 Merge with 07575e005dd2384a3f23d5eae3b1546dce004e85
REVERT: d8222359b5 Silenced a warning in the tensor code
REVERT: 23c0682c38 Fixed some compilation warnings
REVERT: ad2e4aa933 simplify previous changeset: sub-expressions are nested by value
REVERT: c69d221432 Bug 942: fix dangling references in evaluator of diagonal * sparse products.
REVERT: 2378dd8caa Fixed compilation warning triggered by gcc 4.7
REVERT: 44d9170229 Use ptrdiff_t instead of size_t to encode fixed sizes. This silences several clang compilation warnings (transplanted from 4400e4436ac7c5bbd305a03c21aa4bce24ae199b)
REVERT: 152d1b9828 Add internal assertions to purely fixed-size DenseStorage, mark optional variables always as unused
REVERT: 296c3974c9 Updated the cxx11_tensor_convolution test to avoid using cxx11 features. This should enable the test to compile with gcc 4.7 and older
REVERT: 0cf49a7b43 Updated a regression test to avoid compilation errors when compiling with gcc 4.7
REVERT: 083facd6c4 Add internal assertions to DenseStorage constructor
REVERT: 78983dbfcb Constructing a Matrix/Array with implicit transpose could lead to memory leaks. Also reduced code duplication for Matrix/Array constructors
REVERT: f24d2b25a1 Fix bug 996: fix comparisons to 0 instead of Scalar(0)
REVERT: 93b8a3a199 Backed out changeset c0c8ff965d01
REVERT: 58b9c71e96 Fix bug 996: fix comparisons to 0 instead of Scalar(0)
REVERT: aefa5fc93f Pulled latest changes from trunk
REVERT: ca466c0e03 Make conversion from 0 to Scalar explicit (issue reported by Brad Bell)
REVERT: c34856f7f8 Improved the blocking strategy to speedup multithreaded tensor contractions.
REVERT: 95cccb8990 Don't use M_PI since it's only guaranteed to be defined in Eigen/Geometry
REVERT: d9374dfd4e add a note on bug 992
REVERT: 4a33d0ccef Bug 992: don't select a 3p GEMM path with non-vectorizable scalar types, this hits unsupported paths in symm/triangular products code
REVERT: c28aa40c7e Fix compiler flags on Android/ARM:  - generate position-independent code (PIE), a requirement to run binaries on Android 5.0+ devices;  - correctly handle EIGEN_TEST_FMA + EIGEN_TEST_NEON to pass -mfpu=neon-vfpv4.
REVERT: 05a3ab1863 Fixed a bug when chipping tensors laid out in row major order.
REVERT: 36690c012d Fixed the order of 2 #includes
REVERT: 61d25687d1 Pulled latest updates from trunk
REVERT: d4825e4694 Fix regression in DynamicSparseMatrix and SuperLUSupport wrt recent change on nonZeros/nonZerosEstimate
REVERT: 136db0a853 Pulled latest updates from trunk
REVERT: 9b9be58529 Fixed some compilation warnings triggered by pre-cxx11 comoilers
REVERT: 37c68c1646 Fixed some compilation warning triggered by the cxx11 emulation code
REVERT: 15fd5a096e Fixed 2 typos
REVERT: 76b00ce47e Remove unused GenericSparseBlockInnerIteratorImpl code.
REVERT: d9663cd4ef Bug 875: remove broken SparseMatrixBase::nonZeros and introduce a nonZerosEstimate() method to sparse evaluators for internal uses. Factorize some code in SparseCompressedBase.
REVERT: 4bee9b9de9 Bug 973: enable alignment of multiples of half-packet size (e.g., Vector6d with AVX)
REVERT: 0dfe9a84b4 Bug 986: add support for coefficient-based product with 0 depth.
REVERT: 233188e01c Fix bug 987: wrong alignement guess in diagonal product.
REVERT: a012bc8d22 Remove most of the dynamic memory allocations that occured in D&C SVD. Still remains the calls to JacobiSVD and UpperBidiagonalization.
REVERT: 780fc06c38 Add row/column-wise reverseInPlace feature.
REVERT: cdfef4bc71 Make reverseInPlace really work in-place.
REVERT: 56f28f262b Fix vectorization of swap for non trivial expressions
REVERT: 9e7ceb9cc9 Added regression tests for tensor convolutions
REVERT: fc5b797a58 Added support for convolution of tensors laid out in RowMajor mode
REVERT: 198a9a46ca Added documentation for the convolution operation
REVERT: b80d07b250 Only use blocking sizes LUTs for single-thread products for now
REVERT: cbbda21e3e Correctly detect Android with ndk_build
REVERT: 6257d7ec88 Fix computeProductBlockingSizes with m==0, and add respective unit test.
REVERT: ded41cf512 Fix sign of SuperLU::determinant
REVERT: c4bcb2a2a3 Fix regression introduced in e9a0c8c
REVERT: 8c5ec6ea6b Sharded a large test
REVERT: 24f83faca4 Change CMake warning to simple message for old Metis versions
REVERT: 60c96966e0 Suppress unused variable warning
REVERT: 9d794aab9b Addendum to last patch: k is Index and not int
REVERT: 004080905c Bug 985: RealQZ failed when either matrix had zero rows or columns (report and patch by Ben Goodrich) Also added a regression test
REVERT: 91d7e30562 Made the index type a template parameter of the tensor class instead of encoding it in the options.
REVERT: 860bff96a8 Deleted unnecessary semicolons
REVERT: 86b705b441 Bug 982: Make sure numext::maxi and numext::mini are called correctly, in case Scalar expressions return expression templates.
REVERT: 2c334e5b09 fix stupid warning with old GCC
REVERT: 194d4a40fe merge
REVERT: 2dda628f9a Bug 983: Pass Vector3 by const reference and not by value
REVERT: a0eebd8925 Optionally build the documentation when building unit tests.
REVERT: a1d3437009 Merged in d_hood/eigen/sparse-tutorial-doc-fix (pull request #107)
REVERT: 308ff0789e Pass Vector3 type by reference
REVERT: 676b2f90c5 Fix transpose versus adjoint.
REVERT: 71cd66fe83 merge
REVERT: fe050a3503 Suppress some false negatives in SVD unit test
REVERT: b3d639522a Slight numerical stability improvement in 2x2 svd
REVERT: 049d1ee121 Fix hypot(0,0).
REVERT: a901fbfa61 Avoid making an unecessary copy of the tensor expression when evaluating it on a GPU device
REVERT: 716018c386 Fixed the vectorized implementation of the Tensor select() method
REVERT: d33c439ace Cleaned up the TensorDevice code a little bit.
REVERT: 6b1dde0de0 Pulled latest update from the eigen main codebase
REVERT: 9f33442d73 Fixed the CUDA packet primitives
REVERT: 255409d77c Make MatrixBase::is* methods aware of nested_eval.
REVERT: 9edbd7ee9b Add the possibility to make VERIFY* checks to output a warning instead of abording.
REVERT: 697d3794e6 D&C SVD: directly falls back to JacobiSVD for very small problems (by-pass upper-bidiagonalization)
REVERT: 34cddb062e Avoid SVD: consider denormalized small numbers as zero when computing the rank of the matrix
REVERT: f8261b90ef Use M_PI instead of acos(-1) for pi
REVERT: 448135e7f1 Add \sa tags of isFinite/isInf for each other
REVERT: a60d428f37 Update approx. minimum ordering method to push and keep structural empty diagonal elements to the bottom-right part of the matrix
REVERT: 1ed2fb8920 fix loadMarket wrt Index versus int
REVERT: 427b6014f3 Added the -= operator to the device classes
REVERT: 3596707122 Fixed a bug in the handling of packets by the MeanReducer
REVERT: 8e0060eeb8 Fix random unit test for 32bits systems.
REVERT: 28d53180ac Fix MSVC compilation: aligned type must be passed by reference
REVERT: 5237e9218c Fix comparison warning
REVERT: f6f5474141 Split sparse_basic unit test
REVERT: ad37fd0485 Improve random number generation for integer and add unit test
REVERT: 9c41b4cdbb Make html directory before generating output image there
REVERT: 50226dbea1 More extensive unit tests for recent array-wise functors
REVERT: 441d64df75 Changed the way lvalue operations are declared in TensorBase: this fixes constness isses that prevented some expressions mixing lvalues and rvalues from compiling.
REVERT: 8a83612a4a use unsigned short instead of uint16_t which doesn't exist in c++98
REVERT: 511d591c2d Remove ambiguity with recent numext methods isNaN and isInf
REVERT: 687a8eb24d Use std::arg for real numbers when c++11 is used, custom implementation otherwise
REVERT: 8e934c69d2 Use std::round when c++11 is used, custom implementation otherwise
REVERT: 4ea369ae30 Update cost of arg call to depend on if the scalar is complex or not
REVERT: 4c13bfa424 Fix VML declarations to only be for real/complex as appropriate
REVERT: 4e9c610838 Remove packet isNaN, isInf, isFinite
REVERT: 35419b8cd7 Add boolean not operator (!) array support
REVERT: e941494d4f Remove test of now-missing floor, ceil, round complex implementations
REVERT: 78c763edef Similar to cset 9b27294a8186, also in 2px4 kernel: actual_panel_rows computation should always be resilient to parameters not consistent with the known L1 cache size, see comment
REVERT: 0db9ffb7de Pulled latest updates from trunk
REVERT: 47aa2654d3 Make cube, inverse and abs2 free-functions
REVERT: 51da42d8cf Include stdint.h. Not going for cstdint because it is a C++11 addition. Needed for uint16_t at least, in lookup-table code.
REVERT: 6a14d616c1 Fixed compilation warning
REVERT: 695b713cb0 Fixed compilation error with clang
REVERT: f1d5a86323 fix bug in maxsize calculation, which would cause products of size > 2048 to address the lookup table out of bounds
REVERT: f00a7e5934 Fixes the Lvalue computation by actually setting the LvalueBit properly when instantiating tensors of const T. Added a test to check the fix.
REVERT: 6d94debf2e Rename isinf to isInf
REVERT: 8c47f88796 Add isfinite array support as isFinite
REVERT: dc4755d920 Add code snippets for new methods
REVERT: 28562596a5 Remove floor, ceil, round for complex numbers
REVERT: 4c12f39a04 Update cost of coeff-wise arg call
REVERT: 03974a3a64 Rename isnan to isNaN
REVERT: d3717d0f9b Update Nexus 5 lookup table from combining now 2 runs of the benchmark, using the analyze-blocking-sizes partition tool. Gives better worst-case performance.
REVERT: 831d7b7f78 fix compilation with GCC 4.8
REVERT: df6ffc29de Fix bug in case where EIGEN_TEST_SPECIFIC_BLOCKING_SIZE is defined but false
REVERT: a38286b3eb Provide a empirical lookup table for blocking sizes measured on a Nexus 5. Only for float, only for Android on ARM 32bit for now.
REVERT: 013e3de42a actual_panel_rows computation should always be resilient to parameters not consistent with the known L1 cache size, see comment
REVERT: c948c471ed Fix a unused-var warning
REVERT: f02af8eef7 Polish lookup tables generation
REVERT: e12424c33c Refactor computeProductBlockingSizes to make room for the possibility of using lookup tables
REVERT: 95709b534d update perf_monitoring/gemm/changesets.txt
REVERT: eda70a3d75 organize a little our default cache sizes, and use a saner default L1 outside of x86 (10% faster on Nexus 5)
REVERT: 2b0ba9ad05 merge
REVERT: 87cd12badb Bug 973, improve AVX support by enabling vectorization of Vector4i-like types, and enforcing alignement of Vector4f/Vector2d-like types to preserve compatibility with SSE and future Eigen versions that will vectorize them with AVX enabled.
REVERT: d3939ba966 Fix internal::random(x,y) for integer types. The previous implementation could return y+1. The new implementation uses rejection sampling to get an unbiased behabior.
REVERT: db28d5c288 Bug 949: add static assertion for incompatible scalar types in dense end-user decompositions.
REVERT: 12fa324dae SparseMatrix::insert: switch to a fully uncompressed mode if sequential insertion is not possible (otherwise an arbitrary large amount of memory was preallocated in some cases)
REVERT: 19f0040e8a Bound pre-allocation to the maximal size representable by StorageIndex and throw bad_alloc if that's not possible.
REVERT: 88880bf75f Add support for dumping blocking sizes tables
REVERT: 508b3ea1b6 Add missing coeff/coeffRef members to Block<sparse>, and extend unit tests.
REVERT: 52c79b57fe Add --only-cubic-sizes option to analyze-blocking-sizes tool
REVERT: df39faca85 Fix bug in pdiv<Packet1cd> which swaps 32-bit halves of a pair of doubles instead of swapping the doubles.
REVERT: 14fee204b3 Add hyperbolic trigonometric functions from std array support
REVERT: b761ac0a30 Add log10 array support
REVERT: 77f13a0c95 Allow calling of square(array) in addition to array.square()
REVERT: 342ca96988 Additional unary coeff-wise functors (isnan, round, arg, e.g.)
REVERT: 73591e172d Fix compilation of iterative solvers with dense matrices
REVERT: 3ec45f98d5 Add typedefs for return types of SparseMatrixBase::selfadjointView
REVERT: 70f9ef5f9b Add unit tests for CG and sparse-LLT for long int as storage-index
REVERT: 0fb586071f Bug 963: make IncompleteLUT compatible with non-default storage index types.
REVERT: cef186d601 Make sparse unit-test helpers aware of StorageIndex
REVERT: 9e3f4f55b8 deserialization assumed benchmarks in same order, but we shuffle them.
REVERT: f89b1112ec merge
REVERT: 37867917b9 Automatically serialize partial results to disk, reboot, and resume, when timings are getting bad
REVERT: 9df45fa9d1 Avoid undeflow when blocking size are tuned manually.
REVERT: d0929ae5ad Bug 969: workaround abiguous calls to Ref using enable_if.
REVERT: bc67d0c87c Bug 978: add unit test for zero-sized products
REVERT: 842ad9a9d5 Bug 978: early return for vanishing products
REVERT: f42428537d update gemm changeset list
REVERT: 2839e9097d Improve blocking heuristic: if the lhs fit within L1, then block on the rhs in L1 (allows to keep packed rhs in L1)
REVERT: caa49a8379 Update gemm performance monitoring tool:  - permit to recompute a subset of changesets  - update changeset list  - add a few more cases
REVERT: 5c98137404 Improve product kernel: replace the previous dynamic loop swaping strategy by a more general one: It consists in increasing the actual number of rows of lhs's micro horizontal panel for small depth such that L1 cache is fully exploited.
REVERT: 040bf83fbf slightly increase tolerance to clock speed variation
REVERT: 61041fb981 Make benchmark-blocking-sizes detect changes to clock speed and be resilient to that.
REVERT: de328c2343 Rename LSCG to LeastSquaresConjugateGradient
REVERT: 226ccf845f Product optimization: implement a dynamic loop-swapping startegy to improve memory accesses to the destination matrix in the case of K-rank-update like products, i.e., for products of the kind: "large x small" * "small x large"
REVERT: c66b487682 Bug 824: improve accuracy of Quaternion::angularDistance using atan2 instead of acos.
REVERT: a0314ee4d8 output to cout, not cerr, the actual results
REVERT: 08c068bddf Complete the tool to analyze the efficiency of default sizes.
REVERT: ebfecea261 Fixed the optimized AVX implementation of the fast rsqrt function
REVERT: 1c7cdaea20 Updated the tensor type casting code as follow: in the case where TgtRatio < SrcRatio, disable the vectorization of the source expression unless is has direct-access.
REVERT: 2001ceda30 Disabled the use of aligned memory loads when converting a tensor from float to doubles since alignment can't always be guaranteed.
REVERT: aff7277781 Added an optimized version of rsqrt for SSE and AVX that is used when EIGEN_FAST_MATH is defined.
REVERT: 7abd27852d Fixed incorrect assertion
REVERT: f9a8f0467f Fixed clang compilation warning
REVERT: 89920cf605 Silenced some compilation warnings
REVERT: df4a8c241e Fixed another batch of compilation warnings
REVERT: 3ebcbb1ee8 Improved the default implementation of prsqrt
REVERT: bdaf017874 Silenced one more comilation warning
REVERT: a43743cb4d Silenced a few compilation warnings
REVERT: 88cd28c15f Fixed compilation warnings
REVERT: 2f305aa09a Fixed compilation warnings
REVERT: e222d8dc1b Fixed compilation warnings
REVERT: 6e4fde94ea Fixed compilation warnings
REVERT: b3b5746197 Reverted the README
REVERT: 455cf0812e Pulled latest updates from trunk
REVERT: 4367525e54 Pulled latest updates from trunk
REVERT: 2638af9b27 Added support for 32bit index on a per tensor/tensor expression. This enables us to use 32bit indices to evaluate expressions on GPU faster while keeping the ability to use 64 bit indices to manipulate large tensors on CPU in the same binary.
REVERT: 99f1533622 README.md edited online with Bitbucket
REVERT: 015f11e11b README.md edited online with Bitbucket
REVERT: 43bf2f3c1c README.md edited online with Bitbucket
REVERT: d140beb8dc README.md edited online with Bitbucket
REVERT: b9260fa4ed README.md edited online with Bitbucket
REVERT: 8bf477049a Reimplement the selection between rotating and non-rotating kernels using templates instead of macros and if()'s. That was needed to fix the build of unit tests on ARM, which I had broken. My bad for not testing earlier.
REVERT: b2e4576dd6 Switch to truncated casting when converting floating point types to integer. This ensures that vectorized casts are consistent with scalar casts
REVERT: d02388e426 Pulled latest updates from trunk
REVERT: b5595d63b4 Fixed off-by-one error that prevented the evaluation of small tensor expressions from being vectorized
REVERT: b611ab0eb7 Added support for vectorized type casting of tensors
REVERT: 670c24db8c remove trailing comma
REVERT: e1c0457539 Disable Packet2f/2i halfpacket support in NEON. I believe that it was erroneously turned on, since Packet2f/2i intrinsics are unimplemented, and code trying to use halfpackets just fails to compile on NEON, as it tries to use the default implementation of pload/pstore and the types don't match.
REVERT: f06de91413 Fix NEON build flags: in the current NDK, at least with the clang-3.5 toolchain, -mfpu=neon is not enough to activate NEON, since it's incompatible with the default float ABI, and I have to pass -mfloat-abi=softfp (which is what everyone does in practice). In fact, it would be a good idea to pass -mfloat-abi=softfp all the time, regardless of NEON. Also removing the -mcpu=cortex-a8, as 1) it's not needed and 2) if we really wanted to pass a specific -mcpu flag, that would presumably to tune performance for benchmarks, and it would then not really make sense to tune for the very old cortex-a8 (it reflects ARM CPUs from 5 years ago).
REVERT: ac86d28aa5 Replace a static assert by a runtime one, fixes the build of unit tests on ARM Also safely assert in the non-implemented path that should never be taken in practice, and would return wrong results.
REVERT: f0fee56d7d Fixed another compilation problem with TensorIntDiv.h
REVERT: f1ffb0b352 Can now use the tensor 'reverse' operation as a lvalue
REVERT: da3d21f81e Added support for fast reciprocal square root computation.
REVERT: 84a76dd4bd Added missing copy constructor
REVERT: 69d3c17120 Avoid packing rhs multiple-times when blocking on the lhs only.
REVERT: e32b424117 Make sure that the block size computation is tested by our unit test.
REVERT: befbecfc3a Update changeset list to be checked by perf_monitoring/gemm.
REVERT: 271dea2be4 Make perf_monitoring/gemm script more flexible:   - skip existing dataset   - add a "-up" option to recompute the dataset (see script header)   - allow to specify a filename prefix
REVERT: 640341fa9f Implement a more generic blocking-size selection algorithm. See explanations inlines. It performs extremely well on Haswell. The main issue is to reliably and quickly find the actual cache size to be used for our 2nd level of blocking, that is: max(l2,l3/nb_core_sharing_l3)
REVERT: 8470ec2eb8 Fix typos in block-size testing code, and set peeling on k to 8.
REVERT: 0a541eb4d1 Made TensorIntDiv.h compile with MSVC
REVERT: 566d868014 Fixed another clang warning
REVERT: 9626306076 Fixed several compilation warnings reported by clang
REVERT: 477444e9ce Silenced a few more compilation warnings generated by nvcc
REVERT: 1c1bf0f641 Added more tests to validate support for tensors laid out in RowMajor order.
REVERT: a2274a3593 Added support for RowMajor layout to the tensor patch extraction cofde.
REVERT: 8dbf23a3c6 Pulled latest changes from trunk
REVERT: e897e6e3c9 Added support for RowMajor layout to the image patch extraction code Speeded up the unsupported_cxx11_tensor_image_patch test and reduced its memory footprint
REVERT: 10af27521f So I extensively measured the impact of the offset in this prefetch. I tried offset values from 0 to 128 (on this float* pointer, so implicitly times 4 bytes).
REVERT: 1deac43fea Bug 970: Add EIGEN_DEVICE_FUNC to RValue functions, in case Cuda supports RValue-references.
REVERT: 0b1ca11386 Fix my recent prefetch changes:  - the first prefetch is actually harmful on Haswell with FMA,    but it is the most beneficial on ARM.  - the second prefetch... I was very stupid and multiplied by sizeof(scalar)    and offset of a scalar* pointer. The old offset was 64; pk = 8, so 64=pk*8.    So this effectively restores the older offset. Actually, there were    two prefetches here, one with offset 48 and one with offset 64. I could not    confirm any benefit from this strange 48 offset on either the haswell or    my ARM device.
REVERT: a22588775f Add analyze-blocking-sizes program under bench/ to analyze multiple logs generated by benchmark-blocking-sizes.
REVERT: 1428ad433e Fix two trivial warnings
REVERT: 82dcf721e9 log1p is defined only for real Scalars in C++11
REVERT: 46896c22a7 I can reproduce any problems that justified this hack. However it makes builds fail in C++11 mode.
REVERT: a30498dac6 Fix compilation of unit tests disabling assertion cheking
REVERT: f7d84eeb05 Add benchmark-blocking-sizes.cpp to bench/ per mailing list discussion.
REVERT: 7b57fe286b Initial version of a small script to help tracking performance regressions
REVERT: f04314df99 update bench_gemm
REVERT: 1772232323 Fix doc of Ref<>
REVERT: e3c3bb646c With C++11 Matrix<float> + Matrix<complex<float>> does not even compile
REVERT: d6f4c312fa Remove EIGEN_TEST_C++0x option and let EIGEN_TEST_CXX11 adds the -std=c++11 flag
REVERT: 4882ae76ad In C++11 destructors do not throw by default (fix CommaInitializer unit test)
REVERT: 2499c49b50 Pulled latest changes from trunk
REVERT: 397d667869 Marked the CUDA packet primitives as EIGEN_DEVICE_FUNC since they'll end up being executed on the GPU device.
REVERT: d9fa630118 Fix regression with C++11 support of lambda: now internal::result_of falls back to std::result_of in C++11.
REVERT: ec828f20e1 Fix a C++11 compilation issue in unit test
REVERT: 5ba1b65430 Fix some calls to result_of on binary functors as unary ones.
REVERT: 8c3601718b Declare const some const variables
REVERT: 7c89cef9d3 Pulle latest updates from trunk
REVERT: da2d3a5448 Improved the documentations
REVERT: 5b094f816b Add support for C++11 result_of/lambdas
REVERT: 8d01942aaa rotating kernel: avoid compiling anything outside of ARM
REVERT: ed4a4cc132 remove a newly introduced redundant typedef - sorry.
REVERT: 00e4161d02 Bug 955 - Implement a rotating kernel alternative in the 3px4 gebp path
REVERT: 4a0b96b50d Fixed template parameter.
REVERT: c0a3ba3c4a merge
REVERT: 6a48ad334c Clean a bit computeProductBlockingSizes (use Index type, remove CEIL macro)
REVERT: 4d43f5b2ce Fix bug 961: eigen-doc.tgz included part of itself.
REVERT: 467333d90f Bug 958 - Allow testing specific blocking sizes
REVERT: 9d0b28431d Fix a regression when using OpenMP, and fix bug 714: the number of threads might be lower than the number of requested ones
REVERT: 072f8e1feb Really use zero guess in ConjugateGradients::solve as documented and expected for consistency with other methods.
REVERT: dca898de79 merge
REVERT: e4663c5513 Check for no-reallocation in SparseMatrix::insert (bug 974)
REVERT: eb25066efd Improve efficiency of SparseMatrix::insert/coeffRef for sequential outer-index insertion strategies (bug 974)
REVERT: 46b1882e00 Update manual wrt new LSCG solver.
REVERT: 858d2bf57b Add a CG-based solver for rectangular least-square problems (bug 975).
REVERT: a0ca3c3057 Fix asm comments in 1px1 kernel
REVERT: 9a949bad52 Fixed compilation error when compiling with gcc4.7
REVERT: b7688b3359 Add missing copyright notices
REVERT: 9eb191bb6b Add a benchmark-default-sizes action to benchmark-blocking-sizes.cpp
REVERT: 848cce33c9 New scoring functor to select the pivot. This is can be useful for non-floating point scalars, where choosing the biggest element is generally not the best choice.
REVERT: fdf5a24eb2 must also disable complex<double> when disabling double vectorization
REVERT: 1bb66187ba Work around an ICE in Clang 3.5 in the iOS toolchain with double NEON intrinsics.
REVERT: 70f6f48558 Improve analyze-blocking-sizes, and in particular give it a evaluate-defaults tool that shows the efficiency of Eigen's default blocking sizes choices, using a previously computed table from benchmark-blocking-sizes.
REVERT: c0d70bbdb4 HalfPacket also needed to be disabled for double, on ARMv8.
REVERT: d924adefe3 Add SSE vectorization of Quaternion::conjugate. Significant speed-up when combined with products like q1*q2.conjugate()
REVERT: 89538200b5 Fix for TensorIO for Fixed sized Tensors.
REVERT: 8362fc06b3 Merged eigen/eigen into default
REVERT: 432b3f045e Replaced POSIX random() by internal::random
REVERT: 467bd53eb2 Use @CMAKE_MAKE_PROGRAM@ instead of make in buildtests.sh
REVERT: 3a118e4478 Fixed MPRealSupport
REVERT: e804a02a86 Cygwin does not like weak linking either.
REVERT: e6ee57adcb Bug 967: Automatically add cxx11 suffix when building in C++11 mode
REVERT: d354a2249c Increase unit-test L1 cache size to ensure we are doing at least 2 peeled loop within product kernel.
REVERT: 601a2966ae Re-enbale detection of min/max parentheses protection, and re-enable mpreal_support unit test.
REVERT: 92cae0f3c4 Added CMake support for Tensor module. CMake now installs CXX11 Tensor module like the rest of the unsupported modules
REVERT: cfcfc1cdcd Fix bug 945: workaround MSVC warning
REVERT: bf3e5cf717 Add missing install directives for arch/CUDA
REVERT: 218e471928 Workaround dead store warnings in unit tests.
REVERT: 0efc2fad27 Add an internal assertion in makeCompressed to catch a possible risk of null-pointer access.
REVERT: 2b10f8dfea Remove some dead stores.
REVERT: 83dd4eadf9 Fix possible usage of a null pointer in CholmodSupport
REVERT: 5bd6afdd15 Big 957, workaround MSVC/ICC compilation issue
REVERT: 1bcb1ebdc7 Removed redundant typedef which confused old gcc versions.
REVERT: bb81495776 Packet must be passed by const reference and not by value to avoid alignment issue.
REVERT: da75534a89 Pulled latest updates from trunk
REVERT: 2e9c6fa81f Silenced compilation warning
REVERT: 43b1606dd5 Added support for tensor concatenation as lvalue
REVERT: 570e2926c4 Added support for tensor concatenation as lvalue
REVERT: 6f1087411d Suppress some remaining Index conversion warnings
REVERT: ebe9dbe873 Disable __m128* wrappers when compiling with AVX and -fabi-version=4
REVERT: 972002abd6 Fix compilation with GCC/AVX (workaround __m128 and __m256 being the same type with default ABI)
REVERT: 405416bbe5 Fix compilation of Cholmod*(matrix) ctor
REVERT: f3f93803a5 Fix compilation of int*complex with gcc
REVERT: 11c43143e7 Extend sparse-determinant unitests
REVERT: f3f316f588 Fix SparseLU::signDeterminant() method, and add a SparseLU::determinant() method.
REVERT: bbc248bb1f Add PermutationMatrix::determinant method.
REVERT: 239a2bfed7 Bug 956: Fixed bug in move constructors of DenseStorage which caused "moved-from" objects to be in an invalid state.
REVERT: 4f1646b0be Fix unused variable warning.
REVERT: 384af8a92f Update circulant custom expression example
REVERT: 3a0af13e52 Bug 897: fix regression in BiCGSTAB(mat) ctor (an all other iterative solvers). Add respective regression unit test.
REVERT: 15b5912fd2 Remove some useless typedefs
REVERT: 7e6e610cc5 Bug 914: fix compiler detection on windows (grafted from d0828c602f7a055cbe51459e936741b5ff8e414c)
REVERT: 7559c21ef2 Doc: explain how to free allocated memory in SparseMAtrix
REVERT: ff8ed7553b Merged in chtz/eigen-indexconversion (pull request #92)
REVERT: cdcdf82b7a The usage of DenseIndex is deprecated, so let's replace DenseIndex by Index
REVERT: 5af6c53739 Remove deprecated usage of expr::Index.
REVERT: 2db69424ed Fix many long to int conversion warnings:  - fix usage of Index (API) versus StorageIndex (when multiple indexes are stored)  - use StorageIndex(val) when the input has already been check  - use internal::convert_index<StorageIndex>(val) when val is potentially unsafe (directly comes from user input)
REVERT: c49afb23f5 Bug 952: Missing \endcode made doxygen fail to build ColPivHouseholderQR
REVERT: 5967e0e290 Pulled latest updates from trunk
REVERT: 63b25fdc4f Optimized version of the sin(), exp(), log() and sqrt() function for AVX
REVERT: bd9766588b Bug 953 - Fix prefetches in 3px4 product kernel
REVERT: d986206db9 Index refactoring: StorageIndex must be used for storage only (and locally when it make sense). In all other cases use the global Index type.
REVERT: ccb5e370c2 Merge Index-refactoring branch with default, fix PastixSupport, remove some useless typedefs
REVERT: 3a0ef739fe merge Tensor module within Eigen/unsupported and update gemv BLAS wrapper
REVERT: 79be0a8253 update EIGEN_FAST_MATH documentation
REVERT: ed56ea7aad Added a test to validate tensor casting on cuda devices
REVERT: 242a9b8ccf Silenced a few compilation warnings generated by nvcc
REVERT: 55d237a564 Marked a few functions as EIGEN_DEVICE_FUNC to enable the use of tensors in cuda kernels.
REVERT: dd093d3ccf merge
REVERT: 43fae259f7 FMA has been wrongly disabled
REVERT: 4819970c7f Pulled latest changes from trunk
REVERT: c9c3ad05ea Added vectorized implementation of the exponential function for ARM/NEON
REVERT: 2055286748 remove useless include
REVERT: 238c30eb16 Fixed compilation error triggered when trying to vectorize a non vectorizable cuda kernel.
REVERT: 565ee7204f Silenced the last batch of compilation warnings triggered by gcc 4.8
REVERT: 64029cec3f Fixed a few more compilation warnings
REVERT: df24a68b77 Silenced more compilation warnings
REVERT: 630ae58986 Silcenced a few compilation warnings
REVERT: 6494d74199 Silenced several compilation warnings
REVERT: 06f9f384f0 Fixed compilation error
REVERT: 4976bed003 Removed a debug printf statement.
REVERT: cbcfd6b7c0 Fix bug 733: step by step solving is not a good example for solveWithGuess
REVERT: ac6c0424e2 typo
REVERT: fb31c14ea3 Allows Lower|Upper as a template argument of CG and MINRES: in this case the full matrix will be considered.
REVERT: 5f18b4ef2a Bug 897: Update unsupported iterative solvers based on IterativeSolverBased.
REVERT: 99d3e65de7 Bug 897: makes iterative sparse solvers use a Ref<SparseMatrix> instead of a SparseMatrix pointer. This fixes usage of iterative solvers with a Map<SparseMatrix>.
REVERT: 99a9dd87d8 merge
REVERT: 83a4b9abcd Make Block<SparseMatrix> inherit SparseCompressedBase in the case of an inner-panels and fix valuePtr() innerIndexPtr()
REVERT: 062723f8bc Add failtests for Ref<SparseMatrix>
REVERT: a32a6fe2ab Cleaning and add more unit tests for Ref<SparseMatrix> and Map<SparseMatrix>
REVERT: 541ec64ac8 Add a Ref<SparseMatrix> specialization.
REVERT: 26e3284ad8 Add a Map<SparseMatrix> specialization.
REVERT: ad912a5c7d Make SparseTranspose inherit SparseCompressBase when possible
REVERT: 1ec72f3e1b Add a SparseCompressedBase class providing (un)compressed accessors (like data()/*Stride() for dense matrices), and a CompressedAccessBit flag (similar to DirectAccessBit for dense matrices).
REVERT: 924869a016 Fixed the cxx11_meta test
REVERT: 2d7c15dacf Pulled latest fixes
REVERT: bc3744a7aa merge
REVERT: bead237d55 Fix symmetric product
REVERT: 02d16d1d68 Fix clang compilation
REVERT: 81583c50d3 Fix non initialized entries and comparison of very small numbers
REVERT: 2dca003f5a Pulled the latest changes from the trunk
REVERT: 902157b537 Fixed compilation error in the tensor broadcasting test
REVERT: 28a8beb60a Added the EIGEN_HAS_CONSTEXPR define Gate the tensor index list code based on the value of EIGEN_HAS_CONSTEXPR
REVERT: c25d19c157 Using numext::pow instead of std::pow in poly_eval function.
REVERT: 8de1b31a8b Use Ref<> to ensure that both x and b in Ax=b are compatible with Umfpack/SuperLU expectations
REVERT: 8351d2f613 SPQR: fix default threshold value
REVERT: af1588acac Silenced a few more compilation warnings
REVERT: 8f944bb7de Silenced some compilation warnings
REVERT: 5da30f17a7 Bug 936, patch 3/3: Properly detect FMA support on ARM (requires VFPv4) and use it instead of MLA when available, because it's both more accurate, and faster.
REVERT: 5e9626cd87 Bug 936, patch 2/3: Remove EIGEN_VECTORIZE_FMA, was redundant with EIGEN_HAS_SINGLE_INSTRUCTION_MADD
REVERT: 92c29d19ec Bug 936, patch 1.5/3: rename _FUSED_ macros to _SINGLE_INSTRUCTION_, because this is what they are about. "Fused" means "no intermediate rounding between the mul and the add, only one rounding at the end". Instead, what we are concerned about here is whether a temporary register is needed, i.e. whether the MUL and ADD are separate instructions. Concretely, on ARM NEON, a single-instruction mul-add is always available: VMLA. But a true fused mul-add is only available on VFPv4: VFMA.
REVERT: 8681927e03 Bug 936, patch 1/3: some cleanup and renaming for consistency.
REVERT: 2a2d9d8959 Bug 935: Add asm comments in GEBP kernels to work around a bug in both GCC and Clang on ARM/NEON, whereby they spill registers, severely harming performance. The reason why the asm comments make a difference is that they prevent the compiler from reordering code across these boundaries, which has the effect of extending the lifetime of local variables and increasing register pressure on this register-tight code.
REVERT: c3a20b9cfe Bug 941: fix accuracy issue in ColPivHouseholderQR, do not stop decomposition on a small pivot
REVERT: 1309d86daa Supernodes was disabled.
REVERT: 7f82d97ccb Marked the contraction operation as read only, since its result can't be assigned.
REVERT: c5e93d3825 Added more tests to cover tensor reductions
REVERT: 59b99c65dd Bug 933: RealSchur, do not consider the input matrix norm to check negligible sub-diag entries. This also makes this test consistent with the complex and self-adjoint cases.
REVERT: f5c04f8214 mproved the performance of tensor reductions that preserve the inner most dimension(s).
REVERT: fa7b2935d4 Added a few benchmarks for the tensor code
REVERT: 094e307c6f Enable vectorization of transposeInPlace for PacketSize x PacketSize matrices
REVERT: 23047c1dc7 Add support for dense ?= diagonal
REVERT: 3ff53a87ce Bug 329: fix typo
REVERT: e206e6d656 gcc doesn't consider that    template<typename OtherDerived> TensorStridingOp& operator = (const OtherDerived& other) provides a valid assignment operator for the striding operation, and therefore refuses to compile code like: result.stride(foo) = source.stride(bar);
REVERT: 8c5fb6db08 Added cube() operation
REVERT: 21e8a7b9a1 Created many additional tests
REVERT: c36d7f2a47 Updated the list of include files
REVERT: 63b265c384 Improved support for RowMajor tensors Misc fixes and API cleanups.
REVERT: 9893eeedcf Ensured that each thread has it's own copy of the TensorEvaluator: this avoid race conditions when the evaluator calls a non thread safe functor, eg when generating random numbers.
REVERT: e74b884b04 Improved the resizing of tensors
REVERT: 719eea07d3 Misc improvements
REVERT: 742ea4dfbd Misc fixes
REVERT: 1b44947184 Expanded the functionality of index lists
REVERT: 229f8216ca Fix doc: setConstant does not exist for SparseMatrix.
REVERT: ea70da565a Fixed the return type of coefficient wise operations. For example, the abs function returns a floating point value when called on a complex input.
REVERT: cff2606423 Added missing apis to the TensorMap class
REVERT: 866b7002d7 Added missing apis to the tensor class
REVERT: 48d2fb5d10 Fixed the printing of RowMajor tensors
REVERT: 69ad119d68 Added ability to initialize a tensor using an initializer list
REVERT: 1ae22121ea Misc improvements for fixed size tensors
REVERT: 4539f6c854 Added support for RowMajor inputs to the contraction code.
REVERT: 8a68cac151 Increased the functionality of the tensor devices
REVERT: a90d1f0d66 Improved the performance of the contraction code on CUDA
REVERT: d5fa78ad91 Improved the performance of tensor reductions Added the ability to generate random numbers following a normal distribution Created a test to validate the ability to generate random numbers.
REVERT: 54bbdd28ca Created a test for tensor type casting
REVERT: 88f138ebfc Added ability to reverse the order of the coefficients in a tensor
REVERT: 25eeb0c4b3 Added ability to swap the layout of a tensor
REVERT: af1d2b5c01 Improved tensor references
REVERT: 7c884e7fff Created some documentation
REVERT: c399184e41 Fix missing evaluator in outer-product
REVERT: 76a6cec9ac Bug 907, ARM64: workaround ICE in xcode/clang
REVERT: 04cd4a855f Bug 907, ARM64: workaround vreinterpretq_u64_* not defined in xcode/clang
REVERT: 8dad7bdc40 Big 907: workaround some missing intrinsics in current NDK's gcc version (ARM64)
REVERT: 72e11e8ff3 Bug 907: fix compilation with ARM64
REVERT: 71bdbe1fe5 Ensured that contractions that can be reduced to a matrix vector product work correctly even when the input coefficients aren't aligned.
REVERT: 258257be2a Fix bug 925: typo in MatLab versions of middleRows
REVERT: fb5eba30c4 Bug 921: fix utilization of bitwise operation on enums in first_aligned
REVERT: 04717484c9 Bug 920: fix MSVC 2015 compilation issues
REVERT: 06001daffd Use true compile time "if" for Transform::makeAffine
REVERT: 3bae786d8f Fix false negatives in geo_transformations unit tests
REVERT: ccb32c615d Fix wrong negative in nullary unit test when extended precision is used (FPU).
REVERT: 2540f4f7dd Bug 821: workaround MSVC 2013 issue with using Base::Base::operator=
REVERT: 06c70f4787 At least CMAKE 2.8.4 is required for WORKING_DIRECTORY option in add_test
REVERT: 37eae138d0 Free functions should only be declared as static in separate compilation units (grafted from d3369587fd1cc557dc120aaa309e260e8305758f)
REVERT: a48254649f Remove unused fortran files
REVERT: 9e4a03c9d6 Use f2c generated code instead of the original fortran code, except for dotc/dotu.
REVERT: c39e5d3f40 Bug 877, Bug 572: Introduce a global Index typedef. Rename Sparse*::Index to StorageIndex, make Dense*::StorageIndex an alias to DenseIndex. Overall this commit gets rid of all Index conversion warnings.
REVERT: 6392926255 Fix GL support wrt evaluators
REVERT: fe8d31c1f8 UmfPack support: fix redundant evaluation/copies when calling compute() and support generic expressions as input
REVERT: 9eb3ef02da Bug 697: make sure empty classes are at the end in case of multiple inheritence
REVERT: f6732ba47a Fix MSVC compilation issue
REVERT: d409278373 Bug 897: fix UmfPack usage with mapped sparse matrices
REVERT: 246382298c Fix bug 911: m_extractedDataAreDirty was not initialized in UmfPackLU
REVERT: 3820834137 Document non-const SparseMatrix::diagonal() method.
REVERT: f680ba1558 Make SparseMatrix::coeff() returns a const reference and add a non const version of SparseMatrix::diagonal()
REVERT: 65c12ed97e Simplify return type of diagonal(Index) (and ease compiler job)
REVERT: a4362b2733 Disable MatrixBase::bdcSvd with CUDA (just like MatrixBase::jacobiSvd
REVERT: c977ebed9c Fix Hyperplane::Through(a,b,c) when points are aligned or identical. We use the stratgey as in Quaternion::setFromTwoVectors.
REVERT: a420bb1326 Adds a modified f2c-generated C implmentation for BLAS.
REVERT: df766d5cd9 Fix out-of-bounds write
REVERT: 04d9a73fc3 In simplicial cholesky: avoid deep copy of the input matrix is this later can be used readily
REVERT: aad86f4398 Fix inner iterator type
REVERT: bbbc5b83f0 Remove useless and non standard numext::atanh2 function.
REVERT: 35582c6ab3 Bug 876: remove usage of atanh2 in matrix power
REVERT: bfe87c4edf Bug 876, matrix_log_compute_2x2: directly use logp1 instead of atanh2
REVERT: f716d1b98e Bug 876: implement a portable log1p function
REVERT: a89549e0a1 Optimize Simplicial Cholesky when NaturalOrdering is used.
REVERT: 3dc0983455 Fix dynamic allocation in JacobiSVD (regression)
REVERT: 0fc272b707 Merged in infinitei/eigen (pull request #91)
REVERT: b412107aff Merged in infinitei/eigen-opengl-fixes (pull request #90)
REVERT: 0f459fcade Workaround various "returning reference to temporary" warnings.
REVERT: 9e9cc91c26 Added cmake uninstall target. This adds a cmake command make uninstall Running make uninstall removes the files installed by running make install
REVERT: a2a6f685d2 Adding missing OPENGL_LIBRARIES for openglsupport test. Also adding OpenGL include directories as a better pratice even though these are system include directories in most systems.
REVERT: d837fb577d Fix memory pre-allocation when permuting inner vectors of a sparse matrix.
REVERT: aa94388cf2 Added reduction packet primitives for CUDA
REVERT: d503d41cf3 Fixed the evaluation of expressions involving tensors of 2 or 3 elements on CUDA devices.
REVERT: 3e8ea24f0c Fixed compilation errors with clang.
REVERT: f4480f8196 Added support for extraction of patches from images
REVERT: ab33b6b8f7 Optimized broadcasting
REVERT: 69baae2380 Added support for static list of indices
REVERT: 9403fe0b35 Bug 903: clean swap API regarding extra enable_if parameters, and add failtests for swap
REVERT: 032fe53286 Fixed a compilation error triggered by some operations on fixed sized tensors
REVERT: e42d9eb932 Fixed a test
REVERT: 825d2ea055 Big 853: replace enable_if in Ref<> ctor by static assertions and add failtests for Ref<>
REVERT: e192eef5e7 Introduce unified macros to identify compiler, OS, and architecture. They are all defined in util/Macros.h and prefixed with EIGEN_COMP_, EIGEN_OS_, and EIGEN_ARCH_ respectively.
REVERT: 67641fe55f Fixed the return type of the coefficient-wise tensor operations.
REVERT: fc8e93ee0f Improved handling of 1d tensors
REVERT: 382091b049 Generalized the matrix vector product code.
REVERT: 731c247a00 Fixed a compilation warning
REVERT: 83a81ef383 Regression test for (invalid) bug 900. We should make it possible somehow to increase the problem size depending on the available RAM.
REVERT: b79fd99056 Run sparse_basic unit tests also for rectangular matrices. TriangularView with UnitDiag does not work properly yet (Bug 901)
REVERT: 89575badfb Fixed a test
REVERT: d15c7dcc1e Merged from trunk
REVERT: adfd37e8b9 Fixed a compilation error with clang
REVERT: 64ce88159c Use the proper index type in the padding code
REVERT: 94670562c8 fixed some potential alignment issues.
REVERT: 0ffb8a6be0 Added missing packet primitives for CUDA.
REVERT: 3906cbefcf Use the proper index type
REVERT: 1fe01ccb89 Fixed bug in SparseBlock which caused a segfault in sparse_extra_3 test
REVERT: e3d7a09f94 Make select CUDA compatible (comparison operators aren't yet, so no test case yet)
REVERT: 787d7081c8 EIGEN_UNUSED_VARIABLE works better than casting to void. Make this also usable from CUDA code
REVERT: 060753a077 Removed deprecated header (unsupported/Eigen/BDCSVD is included in Eigen/SVD now)
REVERT: 6b4565b18d Split up some test cases
REVERT: 5e4d44a2f5 Fixed include in bdcsvd.cpp
REVERT: 7b1c494c32 Move D&C SVD to official SVD module.
REVERT: 36bfe399f3 Added support for tensor references
REVERT: b38c15e745 Bug 898: add inline hint to const_cast_ptr
REVERT: 8d72fa59ca Temporary workaround for bug 875: Let TriangularView<Sparse>::nonZeros() return nonZeros() of the nested expression
REVERT: f9e83e7086 Merged in kmargar/eigen (pull request #87)
REVERT: 85ebb0f794 BDCSVD: fix CMake install (missing separator).
REVERT: 7929415c93 Removed weird self assignment.
REVERT: 2a2764d31a Replace TEST_SET_BUT_UNUSED_VARIABLE by already defined EIGEN_UNUSED_VARIABLE
REVERT: 0dcdb78c4b Bug #896: Swap order of checking __VSX__/__ALTIVEC__
REVERT: 763169bdda Merged eigen/eigen into default
REVERT: 67e489cbdb Added ARMv8 support
REVERT: 234bf7144b Prevent CUDA `calling a __host__ function from a __host__ __device__ function is not allowed` error.
REVERT: 4d92219f91 working 64-bit support in PacketMath.h, Complex.h needed
REVERT: d28e78e4c1 add EIGEN_TEST_NEON64, but it's a dummy, AArch64 implies NEON support so extra CXXFLAGS are needed
REVERT: 7c92091d82 check for __ARM_NEON instead as it's defined in arm64 as well
REVERT: 9435262726 Bug 670: add unit test for mapped input in sparse solver.
REVERT: 6c9001427d Bug 701: workaround (min) and (max) blocking ADL by introducing numext::mini and numext::maxi internal functions and a EIGEN_NOT_A_MACRO macro.
REVERT: 3db308c957 Bug 766: Check minimum CUDA version
REVERT: 0f1bcffdb2 Bug 718: Introduce a compilation error when using the wrong InnerIterator type with a SparseVector
REVERT: 31da7a426e Addendum to bug 859: pexp(NaN) for double did not return NaN, also, plog(NaN) did not return NaN. psqrt(NaN) and psqrt(-1) shall return NaN if EIGEN_FAST_MATH==0
REVERT: da2e3ba4f4 Fix bug 859: pexp(NaN) returned Inf instead of NaN
REVERT: e121bc38d9 Add unit tests for Rotation2D's inverse(), operator*, slerp, and fix regression wrt explicit ctor change
REVERT: cf877abbcc Fix bug 894: the sign of LDLT was not re-initialized at each call of compute()
REVERT: bb7701b970 Fix SparseQR::rank for a completely empty matrix.
REVERT: 249855fe9f Added access to the unerlying raw data of a tnsor slice/chip whenever possible
REVERT: 8957e10d0c Created some benchmarks for the tensor code
REVERT: bfcee674ae merge
REVERT: 7dfa824db6 Fix SparseLU::absDeterminant and add respective unit test
REVERT: d9f09a259b Ignore automalically imported lapack source files
REVERT: f42b26a910 Fix D&C SVD wrt zero matrices
REVERT: cb08bf8be4 Fix JacobiSVD wrt undeR/overflow by doing scaling prior to QR preconditioning
REVERT: 419dbdb99a Add lapack interface to JacobiSVD and BDCSVD
REVERT: 186deea91c Silenced one last warning
REVERT: d3637549c8 Silenced a few compilation warnings Generalized a TensorMap constructor
REVERT: 2e9aaec6f0 Fixed the return types of unary and binary expressions to properly handle the case where it is different from the input type (e.g. abs(complex<float>))
REVERT: d74241ccd5 Avoid calling get_future() more than once on a given promise.
REVERT: 16da645e20 quieted more g++ warnings of the form: warning: typedef XXX locally defined but not used [-Wunused-local-typedefs]
REVERT: ad31e52bd2 Made the blocking computation aware of the l3 cache Also optimized the blocking parameters to take into account the number of threads used for a computation
REVERT: 8cb2338ee0 Make SVD unit test even more tough
REVERT: 86286098e8 Added support for promises Started to improve multithreaded contractions
REVERT: c90da0a0fc merge
REVERT: cd7f8a0b60 Extend svd unit tests to stress problems with duplicated singular values.
REVERT: 087427a7bb D&C SVD: fix some numerical issues by truly skipping deflated singular values when computing them
REVERT: bae3929d59 D&C SVD: fix deflation of repeated singular values, fix sorting of singular values, fix case of complete deflation
REVERT: 6a1b87a24c Bug 891: Determine sizeof(void*) via CMAKE variable instead of test program
REVERT: 177507093f Misc improvements and cleanups
REVERT: b9c6955751 Added support for patch extraction
REVERT: d5f99d2b9c Make cuda_basic test compile again by adding lots of EIGEN_DEVICE_FUNC. Although the test passes now, there might still be some missing.
REVERT: 8a4ceb4691 Added ability to print a tensor using an iostream.
REVERT: c518d4ea8f Added support for tensor chips
REVERT: fa50769806 Fixed the tensor shuffling test
REVERT: a0b4cfd4e8 Fixed the thread pool test
REVERT: 50288c6f53 Rewrote the TensorBase::random method to support the generation of random number on gpu.
REVERT: 8684fa358b Improved the functors defined for standard reductions Added a functor to encapsulate the generation of random numbers on cpu and gpu.
REVERT: 4157507b5f Remove unused and dangerous CompressedStorage::Map function
REVERT: 789a35a9a9 Bug 367: fix double copies in atWithInsertion, and add respective unit-test
REVERT: f277add1a9 Fix indentation
REVERT: 8f97d5681c Bug 887: fix CompressedStorage::reallocate wrt memory leaks
REVERT: 89f03df684 Add a scoped_array helper class to handle locally allocated/used arrays
REVERT: 83de1bbd1c Various numerical fixes in D&C SVD: I cannot make it fail with double, but still need to tune for single precision, and carefully test with duplicated singular values
REVERT: 564844ebf6 Removed dead code
REVERT: 4cc84d3d81 Added support for the *= and /* operators to TensorBase
REVERT: a48ee811c8 Fixed a comment
REVERT: 5e9a7d2518 Bug 889: fix protected typedef
REVERT: 94005434e2 Bug 882: fix various const-correctness issues with *View classes.
REVERT: a5cf5b067a Workaround MSVC issue.
REVERT: 65f998c9fb Fix missing outer() member in DynamicSparseMatrix
REVERT: 2c2715d820 D&C SVD: add scaling to avoid overflow, fix handling of fixed size matrices
REVERT: 2104d33537 Re-enable products with triangular views of sparse matrices: we simply have to treat them as a sparse matrix.
REVERT: 68e42606c4 Bug 887: use ei_declare_aligned_stack_constructed_variable instead of manual new[]/delete[] pairs in AMD and Paralellizer
REVERT: 9fa32fb7a8 Fix SparseLU regarding uncompressed inputs and avoid manual new/delete calls.
REVERT: 1654908a4e Extend unit tests to check uncompressed sparse inputs in sparse solvers
REVERT: e4dd4244e8 define EIGEN_VECTORIZE_CUDA when compiling with nvcc
REVERT: 5b7e8040eb Vector primitives for CUDA
REVERT: a156c1c196 Improved contraction test
REVERT: f0221a9be3 Improved support for CUDA devices. Improved contractions on GPU
REVERT: 32417b95ec Created the IndexPair type to store pair of tensor indices. CUDA doesn't support std::pair so we can't use them when targeting GPUs. Improved the performance on tensor contractions
REVERT: 1ef311b714 Generalized the gebp apis
REVERT: ee3e4bd777 Fixes for the forced evaluation of tensor expressions More tests
REVERT: 377e8ca413 More tests to validate the const-correctness of the tensor code.
REVERT: 578ca2ae59 Added support for tensor reductions and concatenations
REVERT: 6160bab186 Added tests for tensors of const values and tensors of stringswwq::
REVERT: beeecfb41a template keyword not allowed before non-template function call
REVERT: 5167bceb19 fixed to make big-endian VSX work as well
REVERT: 7f9a2a2f2b Add missing default ctor in Rotation2D
REVERT: 7a6fe6aaea Avoid `unneeded-internal-declaration' warning
REVERT: 35005e8aa0 Missing outerStride in AlignedVector3 resulted in infinite recursion
REVERT: 86f4cdd778 Missing explicit
REVERT: 3ac482ea35 Bug 884: Copy constructor of Ref shall never malloc, constructing from other RefBase shall only malloc if the memory layout is incompatible.
REVERT: ff670b2402 make sure that regex does not match cmake
REVERT: 3657424281 Related to bug 880: Accept make as well a gmake when searching the MakeCommand. And don't include \n in match expression
REVERT: 598ac1b81e Fix compilation with GCC
REVERT: 9dbf9f41a6 Let KroneckerProduct exploits the recently introduced generic InnerIterator class.
REVERT: d16f18192a Introduce a generic InnerIterator classes compatible with evaluators.
REVERT: 994842cb0c Re-enable -Wshorten-64-to-32 compilation flag.
REVERT: d628d23803 Using Index type instead of hard coded int type to prevent potential implicit integer conversion.
REVERT: b5f8c6cba6 Added implicit integer conversion by using explicit integer type conversion.  Adding assert to catch overflow.
REVERT: 2163432dfe Avoid comparisons between different index types.
REVERT: 9ab32ed3e1 Using StorageIndexType for loop assigning initial permutation. Adding assert for index overflow.
REVERT: af5b50cadf Using Index instead of hard coded int type to prevent potential implicit integer conversion
REVERT: 0661f0146e Using Index instead of hard coded int type to prevent potential implicit integer conversion
REVERT: cde8be92b2 Correcting the ReturnType in traits<KroneckerProduct<>> to include the correct Index type. Fixed mixup of types Rhs::Index and Lhs:Index in various loop variables. Added explicit type conversion for arithmetic expressions which may return a wider type.
REVERT: add43d508a Replaced hard coded int types with Index types preventing implicit integer conversions.
REVERT: 38d4aebb52 Changed Diagonal::index() to return an Index type instead of int to prevent possible implicit conversion from long to int. Added inline keyword to member methods.
REVERT: 2d0857d764 Using Kernel::Index type instead of int to prevent possible implicit conversion from long to int.
REVERT: e4331f16ed Fixed compiler warning on implicit integer conversion by separating index type for matrix and permutation matrix which may not be equal.
REVERT: b11c2006e5 Fixed warning on implicit integer conversion in test case code by using type VectorXd::Index instead of int.
REVERT: 0685be7086 Add missing return derived() in ArrayBase::operator=
REVERT: 96e76c3ab8 New doc page on implementing a new expression class.
REVERT: ff05a6dc6f add VSX identifier
REVERT: 04f3a37ed9 Fix Bug 884: No malloc for zero-sized matrices or for Ref without temporaries
REVERT: 3b878625ac Tridiagonalization::diagonal() and ::subDiagonal() did not work. Added unit-test
REVERT: 049cf95220 Fix nested_eval<Product<> > which wrongly returned a Product<> expression
REVERT: 73e1b28ea4 Bug 880: automatically preserves buildtool flags when modifying DartConfiguration.tcl file.
REVERT: 989973f091 member_redux constructor is explicit too. Renamed some typedefs for more consistency.
REVERT: db93069341 Removed FIXME, as it is actually necessary.
REVERT: ad38d44d30 Renamed CwiseInverseReturnType to InverseReturnType for ArrayBase::inverse()
REVERT: 58725301f8 Make constructors explicit if they could lead to unintended implicit conversion
REVERT: 9c40ecbf0c Suppress stupid gcc-4.4 warning
REVERT: 58d65b7492 Bug 882: add const-correctness failtests for CwiseUnaryView, TriangularView, and SelfAdjointView.
REVERT: abf25326ee Add a true ctest unit test for failtests
REVERT: 6b3b3186a3 Bug 881: make SparseMatrixBase::isApprox(SparseMatrixBase) exploits sparse computations instead of converting the operands to dense matrices.
REVERT: 9a6e83d77d Bug 880: manually edit the DartConfiguration.tcl file to get it working with cmake 3.0.x
REVERT: ce4329462b Bug 879: fix compilation of tri1=mat*tri2 by copying tri2 into a full temporary.
REVERT: 09b585d5f4 Many improvements in Divide&Conquer SVD: - Fix many numerical issues, in particular regarding deflation. - Add heavy debugging output to help track numerical issues (there are still fews) - Make use of Eiegn's apply-inplane-rotation feature.
REVERT: 192fe16e58 Merged in kmargar/eigen (pull request #84)
REVERT: d1ed784842 Fix typos in docs for IterativeLinearSolvers module
REVERT: b69d0bb472 Fix copy-and-paste typo in SolveWithGuess assignment This fixes compilation of code snippets in BiCGSTAB docs.
REVERT: c09c702cf9 prefetch are noops on VSX, actually disable the prefetch trait
REVERT: b45cd7958d Merged eigen/eigen into default
REVERT: cab0870765 fix compile error on big endian altivec
REVERT: a534c5fb46 prefetch are noops on VSX
REVERT: d79475278a VSX supports vec_div, implement where appropriate (float/doubles)
REVERT: 69f38af20e VSX port passes packetmath_[1-5] tests!
REVERT: ed8a7d9c8a Remove double return statement in PlainObjectBase::_set()
REVERT: f8b9bf1d1c 32-bit floats/ints, 64-bit doubles pass packetmath tests, complex 32/64-bit remaining
REVERT: e4b35fb08c Unify unit test for BDC and Jacobi SVD. This reveals some numerical issues in BDCSVD.
REVERT: 7774acd47c Bug 100: add support for explicit scalar to Array conversion (as enable implicit conversion is much more tricky)
REVERT: eaa131de80 Added tag before-evaluators for changeset a8e0d153fc5e
REVERT: 71d78246b2 Fix SparseQR for row-major inputs.
REVERT: a79e7da540 Introduce a compilation error when using the wrong InnerIterator type.
REVERT: 30be989bad Fix inner-stride of AlignedVector3
REVERT: 487673d980 Update KroneckerProduct wrt evaluator changes
REVERT: 4f61ca034d Make MatrixFunction use nested_eval instead of nested
REVERT: 4f5bf47f2c Add evaluator for the experimental AlignedVector3
REVERT: 7782ac3dcf Remove deprecated code not used by evaluators
REVERT: bb2c493ffa log2(int) must be inlined.
REVERT: 1b30422b70 workaround one more shadowing issue with MSVC
REVERT: b05b65e993 workaround ambiguous call
REVERT: 05c4f41058 workaround MSVC compilation issue (shadow issue)
REVERT: e190c80ef2 workaround weird MSVC compilation issue: a typdedef in a base class shadows a template parameter of a derived class
REVERT: 016c5edfcb avoid division by 0
REVERT: 6be7c7a7e1 Add a portable log2 function for integers
REVERT: 8eb1d27f28 Remove not needed template keyword.
REVERT: 8d8cfd4c25 Workaround MSVC ICE
REVERT: b00dc3b619 Merged latest updates from the Eigen trunk.
REVERT: 9cb7af6551 Avoid a potential risk of recursive definition using traits to get he scalar type
REVERT: 5d93896672 Fix traits<Quaternion>::IsAligned when using evaluators
REVERT: 5a9feabbcb Fix inverse unit test making sure we try to invert an invertible matrix
REVERT: 4ccaeed0dc Favor column major storage for inner products
REVERT: 32b38abd78 Re-enable aliasing checks when using evaluators
REVERT: 2ca63491a1 Adapt changeset cfef8b0e7294 to evaluators: (Fix bug 822: outer products needed linear access, and add respective unit tests)
REVERT: 28656ca13e Fix /= when using evaluator as in changeset 01a07c06c65e
REVERT: 0053e23a7d merge with default branch
REVERT: 234fc97136 Fix comparison to block size
REVERT: 549aa0fa62 Make UpperBidiagonalization accept row-major matrices (bug 769) * Give temporary workspace the same storage order as original matrix * Take storage order into account when determining inner stride   of rows and columns * Change one test to use a row-major matrix.
REVERT: 467b248017 First time it compiles, but fails to pass the tests.
REVERT: b31601c286 Fix compilation of coeff(Index) on sub-inner-panels
REVERT: c23a590430 Fixed a typo in the contraction code
REVERT: 32243c0ee6 Exploit sparse structure in naiveU and naiveV when updating them.
REVERT: 0036eccea1 Misc fixes.
REVERT: 871498317a Oops, a block size of 1 is not very useful, set it to 48 as in HouseholderQR
REVERT: bcaa4409de Created more regression tests
REVERT: 78e23e8945 Added support for evaluation of tensor shuffling operations as lvalues
REVERT: 15db66c351 Added missing tensor copy constructors. As a result it is now possible to declare and initialize a tensor on the same line, as in:   Tensor<bla> T = A + B;  or   Tensor<bla> T(A.reshape(new_shape));
REVERT: 902c2550dd Apply Householder U and V in-place.
REVERT: 0b9e14e45f Optimization: enable cache-efficient application of HouseholderSequence.
REVERT: 62c173b7fb Disable a test which had never worked without evalautors
REVERT: 44ee4bfd3b Improved the performance of the tensor convolution code by a factor of about 4.
REVERT: 6a2219a85b Cleaning in BDCSVD (formating, handling of transpose case, remove some for loops)
REVERT: 7d6f2b506d Clean bdcsvd
REVERT: 6b3d6014ca Disable solve_ret_val like mechanism with evaluator enabled
REVERT: 35bd9ae97f Factorize *SVD::solve to SVDBase
REVERT: 2e4143610e merge with default branch
REVERT: 7defdf99c2 Reafctoring in D&C SVD unsupported module: clean and merge the SVDBase class to Eigen/SVD, rm copy/pasted JacobiSVD.h file
REVERT: 0d09fcfa9b Disable a few unit tests in unsupported
REVERT: a27824b38a Fix regression is sparse-sparse product
REVERT: 8d47374a21 Fix remaining garbage during a merge.
REVERT: 80612de192 Fix Kronecker product in legacy mode.
REVERT: 1f471da885 Make unsupport sparse solvers use SparseSolverBase
REVERT: b4530d24a6 Add evaluator for DynamicSparseMatrix
REVERT: 51c72369a3 Factorize solveWithGuess in IterativeSolverBase
REVERT: 3df4dab713 Make IncompleteLUT use SparseSolverBase.
REVERT: 0320439b5d Fix usage of m_isInitialized in SparseLU and Pastix support.
REVERT: 936dd0b909 Fix regression in sparse-sparse product
REVERT: ca35a7c784 Fix Cholmod support without evaluators
REVERT: 6ae88e502e Fix sparse matrix times sparse vector.
REVERT: 6d924cbdee Refactoring of sparse solvers through a SparseSolverBase class and usage of the Solve<> expression. Introduce a SolveWithGuess expression on top of Solve.
REVERT: f6be1647ba Implement the missing bits to make Solve compatible with sparse rhs
REVERT: 50a32fff9f Fix compilation in legacy mode
REVERT: f4b955bec4 Bug 871: fix compilation on ARM/Neon regarding __has_builtin usage
REVERT: a11cc6d932 Initial VSX commit
REVERT: 8cc659c807 merge
REVERT: bc90c91560 Enable evaluators by default
REVERT: 44a9697476 merge default branch
REVERT: f21fa5be2b undef Unsable macro
REVERT: 7b4e089494 Merged in georg_drenkhahn/eigen/georg_d/fix_warn_minmax (pull request #81)
REVERT: ac8f44d05d Optimization in sparse-sparse matrix products for small ones
REVERT: 04f9d05717 Fix SparseVector::coeffRef(i,j) and add missing SparseVector::insert*Unordered
REVERT: 56e5d55dda In sparse matrix product, enable sorted insertion when doing two transposition is defenitely not optimal.
REVERT: 52fa5eeff4 Added missing STL include of <list> in main.h Removed duplicated include of <sstream> Added comments on the background of min/max macro definitions and STL header includes
REVERT: bdcb8bcf4c Allow LevenbergMarquardt to work with non-standard types.
REVERT: a85066b908 Optimized the tensor padding code.
REVERT: 7c02cabf56 Misc api improvements and cleanups
REVERT: 8e264975a9 Optimized and cleaned up the tensor morphing code
REVERT: 03687bf307 Fixed CMakeLists.txt files to prevent CMake 3.0.0 warnings about deprecated LOCATION target property. Small whitespace cleanup in CMakelLists.txt.
REVERT: 0aae2d452e In SparseQR, calling factorize() without analyzePattern() was broken.
REVERT: a43bc4dd62 Bug 857: workaround MSVC compilation issue.
REVERT: 8ac1103aa3 Bug 861: enable posix_memalign with PGI
REVERT: 2d2b38de44 Do not apply the preconditioner before starting the iterations as this might destroy a very good initial guess.
REVERT: f84238ea02 Bug 854: fix numerical issue in SelfAdjointEigenSolver::computeDirect for 3x3 matrices. The tolerance to detect stable cross products was too optimistic. Add respective unit tests.
REVERT: c91d47df6e Added support for broadcasting
REVERT: ccfa4fb270 EIGEN_EXCEPTIONS was not defined in test/main.h, therefore all VERIFY_RAISES_ASSERT tests were not enabled
REVERT: 24a20c2f05 Merged in vladimir_ch/eigen-1/vladimir_ch/fix-uninitialized-variable-warning-in-sp-1408513228472 (pull request #77)
REVERT: 79c03ea727 Merged in traversaro/eigen/traversaro/findeigen3cmake-add-reading-hints-of-eig-1407426517521 (pull request #76)
REVERT: 51f804bf2f Fix uninitialized variable warning in SparseQR
REVERT: 05ba51b292 Improved the speed of convolutions when running on cuda devices
REVERT: 3a1d99eefe Added support for fast integer divisions by a constant Sped up tensor slicing by a factor of 3 by using these fast integer divisions.
REVERT: 745cd8f438 Fixed compilation errors
REVERT: cf317d48f5 Added a few regression tests
REVERT: 3bf523531f Added support for padding, stridding, and shuffling
REVERT: 0791c68d23 Pulled in the latest changes from the Eigen trunk
REVERT: 5ec69bf35d Added ability to get the nth element from an abstract array type.
REVERT: 43cc330e26 Fixed misc typos.
REVERT: ec59ac589a Added missing apis.
REVERT: eb49d9e646 Updated the convolution and contraction evaluators to follow the new EvalSubExprsIfNeeded apu.
REVERT: c76089111e Fixed a typo.
REVERT: 6b864e2911 Support for in place evaluation of expressions containing slicing and reshaping operations
REVERT: 1fece0f238 Added suppor for in place evaluation to simple tensor expressions. Use mempy to speedup tensor copies whenever possible.
REVERT: 475ae31e64 Reworked the TensorExecutor code to support in place evaluation.
REVERT: 57df751802 Fix bug 852: define Traits type in general_matrix_matrix_product when EIGEN_USE_BLAS is defined
REVERT: 8003921ebb Update bench_norm utility
REVERT: da86fde040 Improve further the accuracy of JacobiSVD wrt under/overflow while improving speed for small matrices (hypot is very slow).
REVERT: 6eff8de9d7 mat/=scalar was transformed into mat*=(1/scalar) thus laking accuracy. This was also inconsistent with mat = mat/scalar.
REVERT: ac22cce82e Add one more regression test for bug 791.
REVERT: d1ce1a2afc Fix bug 791: infinite loop in JacobiSVD in the presence of NaN.
REVERT: 13e320b198 ArrayWrapper and MatrixWrapper classes should not be nested by reference.
REVERT: a07bbfc82e fix for MKL_BLAS not defined in MKL 11.2
REVERT: 7662aa4b1e Fix bug 822: outer products needed linear access, and add respective unit tests
REVERT: 24ead25fa2 Runtime alignement is not possible if AlignedOnScalar is not true (e.g., for complex<double>)
REVERT: db2fba0070 Bug 619: workaround MSVC 2008 implementing std::abs for int only on WINCE
REVERT: de422d6d6e Bug 804: copy group__TopicUnalignedArrayAssert.html to TopicUnalignedArrayAssert.html as the second is linked to by old Eigen versions.
REVERT: 6f040672fa Doc: difference between array and matrix cosine etc (bug 830)
REVERT: ba4bcee073 Replace asm by __asm__ (bug 873)
REVERT: 65d097fae0 Update reference value for testNistLanczos1 test
REVERT: 9efa67f627 Remove LM::sqrt_() member function in favor of a shortcut for sqrt(epsilon())
REVERT: 8cc0a1b39a relax some LM unit tests
REVERT: faeadcb69a Fix hypot() and hypotNorm() wrt NaN and INF values.
REVERT: e5ed32f1fe Fix blueNorm wrt NaN/INF.
REVERT: 5f94767c5c Fix stableNorm() with respect to NaN and inf, and add respective unit tests. blueNorm() and hypotNorm() are broken wrt to NaN/inf
REVERT: 0f0ac52140 Optimization: "matrix<complex> * real" did not call the special path and the real was converted to a complex. Add respective unit test to avoid future regression.
REVERT: 84b8b472e4 Add examples for hnormalized and homogenous (fix bug 846)
REVERT: 6e30ca3bdf FindEigen3.cmake: Add reading hints of Eigen directory location from environment variables EIGEN3_ROOT and EIGEN3_ROOT_DIR .
REVERT: 669bf4526f Memory allocated on the stack is freed at the function exit, so reduce iteration count to avoid stack overflow
REVERT: b8a9742869 Correct GMRES: * Fix error in calculation of residual at restart. * Use relative residual as stopping criterion. * Improve documentation.
REVERT: 2e38d9d9f4 Fix bug 850: workaround MSVC 2008 weird compilation bug
REVERT: eff7d5ba7b Optimize reduxions for Homogeneous
REVERT: acede7a82e Fix nesting of Homogenous evaluator
REVERT: 5f4ccbae4a Fix geo_orthomethods unit test for complexes
REVERT: 1a4630bb99 Fix various small issues detected by gcc
REVERT: 2116009cc5 Make assignment from general EigenBase object call evaluator, and support dense X= sparse
REVERT: 9b23578913 Fix more typos in Ref.h (doc).
REVERT: 4d48949ef4 Fix typos in Ref.h (doc).
REVERT: 9d33afe458 Fix numerous nested versus nested_eval shortcomings
REVERT: 0f2c4059c7 Make cross product uses nested/nested_eval
REVERT: f988d98a60 Fix typo in PermutationMatrix (doc).
REVERT: cbcf149d39 The tensor assignment code now resizes the destination tensor as needed.
REVERT: d6779e9fba Make loadMarket use the sparse-matrix index type, thus enabling loading huge matrices.
REVERT: 4a573106c3 Fix 4x4 inverse via SSE for submatrices
REVERT: 3f1f56f695 Make minimal changes to make homogenous compatible with evaluators
REVERT: 808985f488 Make Transform exposes sizes: Dim+1 x Dim+1 for projective transform, and Dim x Dim+1 for all others
REVERT: 9d0ed3a133 Re-enable main unit tests which are now compiling and running fine with evaluators
REVERT: 995f665b28 Call product_generic_impl by default, and remove lot of boilerplate code
REVERT: 5ee4dba777 Make permutation compatible with sparse matrices
REVERT: e88b1a558e Various minor fixes
REVERT: f3ea8ab05e add missing delete operator overloads
REVERT: 3884155bb2 Made sure that the data stored in fixed sized tensor is aligned.
REVERT: e3ee82e78d Fix typo in MatrixExponential noticed by Markos.
REVERT: be288a9893 Fix bug 61: gemm was broken since we changed the blocking order
REVERT: 74d1fb01f9 Simplification of some Altivec constants, reuse existing constants and avoid loading from RAM esp in the case of p16uc_COMPLEX_TRANSPOSE*
REVERT: 09a3c9fbd4 Added a few tests to validate the behavior of the assignment operator.
REVERT: bff2304389 Fixed the assignment operator of the Tensor and TensorMap classes.
REVERT: 4c902295f7 Ambiguous call fixes  for clang.
REVERT: c56aaa41de Workaround ambiguous call of init1 with MSVC.
REVERT: 3537093efc Extend fixed-size ctor unit test and fix conversion warning.
REVERT: cfb676a3fe Fix max sizes at compile time of DiagonalWrapper
REVERT: c1fafe530a Define EIGEN_TRY, EIGEN_CATCH, EIGEN_THROW as suggested by Moritz Klammer. Make it possible to run unit-tests with exceptions disabled via EIGEN_TEST_NO_EXCEPTIONS flag. Enhanced ctorleak unit-test
REVERT: 629fec5575 Re-enable a couple of unit tests with evaluators.
REVERT: 368815ddc6 Refactor TriangularView to handle both dense and sparse objects. Introduce a glu_shape<S1,S2> helper to assemble sparse/dense shapes with triagular/seladjoint views.
REVERT: 07d53035ec Implement evaluator for sparse-selfadjoint products
REVERT: 0f1df587dd Resizing is done by call_assignment_noalias, so no need to perform it when dealing with aliasing.
REVERT: 5bb2a2ff55 Extend qr unit test
REVERT: f72d205cf8 Compilation fixes
REVERT: 30a64cc35c Make sure we evaluate into temporaries matching evaluator storage order requirements
REVERT: 63d9f66d9d Implement evaluator for sparse outer products
REVERT: 69237562b7 Applied changes suggested by Christoph Hertzberg to c'tor leak fix.
REVERT: 81cbf2d575 Bug 770: fix out of bounds access
REVERT: d23b9cc5d9 merge with default branch
REVERT: ec25e01257 Bug 843: fix jacobisvd for complexes and extend respective unit test to chack with random tricky matrices
REVERT: f5c52582df Bug 397: add a warning for 64 to 32 bit integer conversion and fix many of these warning by splitting the index type used for storage and as size/coefficient indexes in PermutationMatrix and Transpositions.
REVERT: 8e61398dd9 Bug 842: warn user about MPFR++ being under the GPL
REVERT: ac56f761b1 merge
REVERT: f4655f4a3d Fix bug 770: workaround thread safety in mpreal
REVERT: a292ae42ae Bug 842: update mpreal copy (fix compilation with clang)
REVERT: 923950f926 Remove unnecessary <bench/BenchTimer.h>include
REVERT: 48f9f735e4 Bug 842: fix specialized product for mpreal
REVERT: 3ce23a8ca9 Bug 838: add unit test for fill-in in sparse outer product and fix abusive fill-in.
REVERT: 2fbbfc0bde Regression test for bug 714. Note that the bug only occurs on some compilers and is not fixed yet
REVERT: f6103dfc70 Bug 826: fix is_convertible for MSVC and add minimalistic unit test for is_convertible
REVERT: 3b2ba33fff Added HasDiv=1 to Altivec PacketMath.h, now vectorization_logic test passes. Added comments to the constants, indicative of the actual values
REVERT: 458289ca3f Extend unit test of dense triangular solvers
REVERT: 89b96b9c4a Extend dense*sparse product unit tests
REVERT: 4928d653de merge with default branch
REVERT: b316ef531e Test vectorization logic for int
REVERT: 9078c558ce Fix bug 838: detect outer products from either the lhs or rhs
REVERT: 01357f11d0 Fix bug 838: fix dense * sparse and sparse * dense outer products
REVERT: 8b2f43cffc Fix inner iterator on an outer-vector
REVERT: 20f7fbed28 Merged in complexzeros/eigen (pull request #69)
REVERT: afafc15851 merge with default branch
REVERT: 51b7c2578f Added primitives to compare tensor dimensions
REVERT: d810c2c3ac Added tests for tensor slicing
REVERT: 4edbacc98f Vectorized the evaluation of expressions involving tensor slices.
REVERT: e5288d777e Fixed index that would cause crash with two point, two derivative interpolation. Added static_cast.
REVERT: 1af1ea5e3b stride must be DenseIndex not int
REVERT: 5674ab4365 Backed out of changeset 6089:76b6c62565a6 Unfortunately this breaks things at other places
REVERT: 054ac6e8c4 Make MatrixBase::makeHouseholder resize its output vector if it is zero
REVERT: 61c0203932 Fix GMRES: Initialize essential Householder vector with correct dimension. Add check if initial guess is already a sufficient approximation.
REVERT: e2a4115465 Improved the speed of slicing operations.
REVERT: 7ec8d17f38 Fix unit test when using 80bits FPU
REVERT: ce3ed7cc19 Determine version of Metis library. Apparently, at least version 5.x is needed for Eigen/MetisSupport. Marked some internal variables as advanced
REVERT: 1ec863e98c Generalize unit testing of pscatter
REVERT: 4afc160a25 Merged in jdh8/eigen (pull request #72)
REVERT: 3d218e19b1 Add unit test for bug 839.
REVERT: db83c77cfd Improved evaluation of tensor expressions when used as rvalues
REVERT: 4c16ccf9f8 Improved the efficiency of the tensor evaluation code on thread pools and gpus.
REVERT: 632ab769a0 Extended the functionality of the TensorDeviceType classes
REVERT: 0f2c8c32e4 Fix bug 839
REVERT: cbb7b0381e Bug 808: fix implicit conversions from int/longint to float/double
REVERT: 1ce08b9b5e Bug 808: use double instead of float for the increasing size ratio in CompressedStorage::resize (grafted from 23493b2f2875fb3a6e669cf59881b13d3b4726de)
REVERT: 59feb9a375 Fix implicit long to int conversions in blas interface
REVERT: 7d6d76c36c Fix bug 809: unused variable warning
REVERT: c50bf40176 Fix many long to int implicit conversions
REVERT: 8713a9f583 Bug 837: Always re-align the result of EIGEN_ALLOCA.
REVERT: 0ea1f131eb Merged in jdh8/eigen (pull request #71)
REVERT: c2425d0ddd Move using std::abs from Eigen's namespace to function scope.
REVERT: efeda91c4a Fix LDLT with semi-definite complex matrices: owing to round-off errors, the diagonal was not real. Also exploit the fact that the diagonal is real in the rest of LDLT
REVERT: a70e97bb5f Fix LDLT with semi-definite complex matrices: owing to round-off errors, the diagonal was not real. Also exploit the fact that the diagonal is real in the rest of LDLT
REVERT: 47c4ec5290 Added support for tensor slicing
REVERT: 6bf983792b Added support for tensor slicing
REVERT: 6f3ff147d9 Added support for tensor slicing
REVERT: 81072d979e Find benchmark opponents also in /usr/lib64
REVERT: cf35e38bac Find OpenBLAS more aggressively.  This made a difference on Fedora 20
REVERT: 7378f2b801 chmod -x Eigen/src/Core/GenericPacketMath.h
REVERT: 284d50d2f8 Fix dox at internal::tridiagonal_qr_step
REVERT: 7894f8d00c Mark internal namespace as \internal
REVERT: bada93e3e2 Avoid memory leak when constructor of user-defined type throws exception.
REVERT: 26872ff589 Bug 826: document caveats in 1x1 and 2x1 constructors.
REVERT: 2e09ea362e Make the ordering method of SimplicialL[D]LT user configurable.
REVERT: 538963dede Bug 826: fix 64 to 32 bits conversion warning when calling Matrix<int,1,1>(long)
REVERT: c2543ee6cb Fix trivial warnings in MPRealSupport
REVERT: 60ea8e1702 Add note to EIGEN_DONT_PARALLELIZE into preprocessor documentation page (requested in IRC)
REVERT: 80a62a9304 Bug 138: Make building of internal documentation configurable via cmake flag
REVERT: ebe862363e Bug 770: fix out of bounds access
REVERT: 88f77541b0 Percent "Eigen" in dox to prevent linking if not referring to the Eigen namespace
REVERT: dcd9fd7e45 Move Doxygen-only stuff to *.dox
REVERT: a49509c496 Document internal namespace
REVERT: 9e2d9fea74 Fix dox for namespaces
REVERT: d85294d731 Fix regression introduced by 17d2d0880: Matrix<Scalar,1,1>(int) did not compile if Scalar is not constructible from int. Now this falls back to the (Index size) constructor.
REVERT: 96784a51f2 Fix unused typedef warning
REVERT: d5b31a935e LDLT is not rank-revealing, so we should not attempt to use the biggest diagonal elements as thresholds.
REVERT: 5b294498a5 Do not attempt to include <intrin.h> on Windows CE
REVERT: d406b0cfd5 merge with default branch
REVERT: 8759d56d65 Fix regeression in bicgstab: the threshold used to detect the need for a restart was much too large.
REVERT: 840cfc94b4 Fix typo in dense * diagonal evaluator.
REVERT: 70dae58fba Implement evaluators for sparse*dense products
REVERT: 2eb31ae315 Use DiagonalShape as the storage kind of DiagonalBase<>.
REVERT: e463b350fe Split StorageKind promotion into two helpers: one for products, and one for coefficient-wise operations.
REVERT: d45eaf5388 Removed the deprecated EIGEN2_SUPPORT, as previously announced. A compilation error is raised, if this compile-switch is defined. The documentation references to the corresponding pages from Eigen3.2 now. Also, the Eigen2 testsuite has been removed.
REVERT: 9b846d6354 Update copyright dates
REVERT: 6e8ddde6f4 Implement evaluators for sparse * sparse with auto pruning.
REVERT: 417f4de702 Implement evaluators for sparse * sparse products
REVERT: 1258832442 Implement nonZeros() for Transpose<sparse>
REVERT: 94f8554c62 Do not bypass aliasing in sparse e assignments
REVERT: 8ba21714ff Fix bug 836: extend SparseQR to support more columns than rows.
REVERT: 53138ded25 Fix double constructions of the nested CwiseBinaryOp evaluator in sparse*diagonal product iterator.
REVERT: cbd601189b Implement evaluators for sparse times diagonal products.
REVERT: 27189f222d Add a NoPreferredStorageOrderBit flag for expression having no preferred storage order. It is currently only used in Product.
REVERT: db29fca5af Implement evaluator for sparse views.
REVERT: 4f069cd3fd IndexArray is now a typename.
REVERT: 7358fcd973 Fix inverse evaluator
REVERT: f7620e5e7a Disabled HIDE_SCOPE_NAMES (default doxygen setting). This might help to avoid API confusions as in Bug 830.
REVERT: 960e83c705 Update sparse reduxions and sparse-vectors to evaluators.
REVERT: 0ffe7a4761 Make operator=(EigenBase<>) uses the new assignment mechanism and introduce a generic EigenBase to EigenBase assignment kind based on the previous evalTo mechanism.
REVERT: c72675081c Generalize static assertions on matching sizes to avoid the need for SizeAtCompileTime
REVERT: f432080b9b Implement evaluators for sparse coeff-wise views
REVERT: f7bcb16c4d Implement evaluators for sparse Block.
REVERT: 875ecfd37b implement evaluator for SparseVector
REVERT: bb66411f98 Merged.
REVERT: 24a598856f Removed tabs and fixed indentation.
REVERT: 3326445992 Fixed type mixing issues.
REVERT: 35d64c682c Using LU decomposition with complete pivoting for better accuracy.
REVERT: b72f0f7e12 Workaround clang error introduced by 17d2d0880b1d: "template argument for non-type template parameter is treated as function type 'bool (bool)'"
REVERT: dec2fe5411 Changed uint to unsigned int.
REVERT: d9d3e2546e Additional unit tests for bug 826 by Gael
REVERT: 8e31e7e602 Fix Bug 826: Allow initialization of 1x1 Arrays/Matrices by passing a value.
REVERT: c54027a532 Fix Bug 729: Use alloca if it is defined
REVERT: c9bc41de90 Fixed typos
REVERT: 1f4dc82478 Implement binaryop and transpose evaluators for sparse matrices
REVERT: f2b64f5838 Added Spline interpolation with derivatives.
REVERT: fea613114d rm conflict
REVERT: 029281ea52 Backport changes from old to new expression engines
REVERT: ab68e7024b merge with default branch
REVERT: 75403088f3 merge
REVERT: 3786a9d40e Started to move the SparseCore module to evaluators: implemented assignment and cwise-unary evaluator
REVERT: 9c63f7228f 1- Introduce sub-evaluator types for unary, binary, product, and map expressions to ease specializing them. 2- Remove a lot of code which should not be there with evaluators, in particular coeff/packet methods implemented in the expressions.
REVERT: c4bd86e8c2 Fix bug 827: improve accuracy of quaternion to angle-axis conversion
REVERT: c349be0603 Add assertion and warning on the requirements of SparseQR and COLAMDOrdering
REVERT: 14bcf13ff7 Explain how to export sparse linear problems in matrix-market format.
REVERT: 9ed19c7cc2 Add documentation and very simple test for array atan(), part 2 (files I forget in the previous commit).
REVERT: fff3de592a Add documentation and very simple test for array atan().
REVERT: 239215522d Add component-wise atan() function (see bug 80).
REVERT: c1b01976c7 fixed warning: -Wunused-local-typedefs
REVERT: cfbac398f2 Fix Jacobi preconditioner with zero diagonal entries
REVERT: fd0e8c91d2 Update decompositions tables
REVERT: 535d307181 Merged in vladimir_ch/eigen/vladimir_ch/bug-796-fix-eigen3config.cmake (pull request #67)
REVERT: 578e0e3df3 Created additional unit tests for the tensor code and improved existing ones.
REVERT: 29cc2e9c67 Silenced a compilation warning
REVERT: 2c55c112fd Reworked the expression evaluation mechanism in order to make it possible to efficiently compute convolutions and contractions in the future:  * The scheduling of computation is moved out the the assignment code and into a new TensorExecutor class  * The assignment itself is now a regular node on the expression tree  * The expression evaluators start by recursively evaluating all their subexpressions if needed
REVERT: d96f105316 Change variable names in Eigen3Config.cmake to EIGEN3_*
REVERT: 36d2a7abeb Fixed a few compilation errors.
REVERT: b0774d0637 Pulled latest updates from the Eigen main trunk.
REVERT: 4b5f5744d0 TensorEval are now typed on the device: this will make it possible to use partial template specialization to optimize the strategy of each evaluator for each device type. Started work on partial evaluations.
REVERT: 24c7f3845e Fixes compilation errors triggered when compiling the tensor contraction code with cxx11 enabled.
REVERT: ddbd45a167 Improved support for rvalues in tensor expressions.
REVERT: 4b43717368 Prevent the generation of unlaunchable cuda kernels when compiling in debug mode.
REVERT: 65a9007b0d Fixed compilation error
REVERT: 4374f9da0b Pulled latest changes from the main branch
REVERT: 73ebe840ee Fixed the threadpool test
REVERT: 63bea8adf0 Fixed a typo
REVERT: f01ae7213e Created the pblend packet primitive and implemented it using SSE and AVX instructions.
REVERT: d08c4e9a6f Fixed a typo
REVERT: 2b078334d2 Added support for convolution and reshaping of tensors.
REVERT: d76266f037 The BLAS interface is complete.
REVERT: 8031d27a54 Fix bug 738: use the "current" version of cmake project directories to ease the inclusion of Eigen within other projects.
REVERT: f689adc206 Enable LinearAccessBit in Block expression for inner-panels
REVERT: 6c4d35bc8f Created additional tests for the tensor code.
REVERT: 9fb811c9d1 unsupported/TensorSymmetry: factor out completely from Tensor module
REVERT: 15e957b240 unsupported/TensorSymmetry: make symgroup construction autodetect number of indices
REVERT: 9144131f80 unsupported/CXX11/Core: allow gen_numeric_list to have a starting point
REVERT: 39c201586e unsupported/ C++11 workarounds: don't use hack for libc++ if not required
REVERT: 2c2a306dfd Fix compilation for CXX11/Tensor module if unsupported is not in include path
REVERT: 7c106cb987 Added support for tensor contractions Updated expression evaluation mechanism to also compute the size of the tensor result Misc fixes and improvements.
REVERT: ce91f594ce Fic bug 819: include path of details.h
REVERT: dd24da3501 Fix test: EigenSolver on 1x1 matrix with NaN sets info to NumericalIssue. This was changed in 7aaf133083b7.
REVERT: 2cffea6bc8 Fix doc'n of FullPivLU re permutation matrices (bug 815).
REVERT: 2cc659ab97 Added support for additional tensor operations:   * comparison (<, <=, ==, !=, ...)   * selection   * nullary ops such as random or constant generation   * misc unary ops such as log(), exp(), or a user defined unaryExpr() Cleaned up the code a little.
REVERT: 53cddfed43 Vectorized the evaluation of tensor expression (using SSE, AVX, NEON, ...) Added the ability to parallelize the evaluation of a tensor expression over multiple cpu cores. Added the ability to offload the evaluation of a tensor expression to a GPU.
REVERT: 5fe7e5aee8 AsciiQuickReference: added .real(), .imag() (transplanted from a575360f399f3c3a7fd2b87306dbec1bbbb4eb83)
REVERT: 967cf7776a fixed AsciiQuickReference typo: LinSpace -> LinSpaced (transplanted from 3bb403c0a56869fa63abf4eb6348d43ee38be32a)
REVERT: 6e21535f35 README.md edited online with Bitbucket
REVERT: a594016d1b PolynomialSolver: fix typo.
REVERT: 3d62b4c41e PolynomialSolver: fix bugs related to linear polynomials.
REVERT: d51eb400bc PolynomialSolver: add missing constructors.
REVERT: 8eeddee70f PolynomialSolver: test template constructor in test suite.
REVERT: 03f06c5fc6 PolynomialSolver: add a test to reveal a bug.
REVERT: 70dc480f6e Merged in benoitsteiner/eigen-fixes (pull request #62)
REVERT: 035a44a7aa Made it possible to call the assignment operator on an Eigen::Block from a CUDA kernel.
REVERT: 863fb69a8b Added support for fixed sized tensors. Improved support for tensor expressions.
REVERT: 367655dc2f Disabled unused warnings in Eigen2-tests
REVERT: 827633d663 Missed to remove IACA_END in previous commit
REVERT: 37a589e44d Removed IACA-defines This caused redefinition warnings if IACA headers were included from elsewhere. For a clean solution we should define our own EIGEN_IACA_* macros
REVERT: 6270d08c8e Fixed unused variable warnings
REVERT: 58db43cd4e Fix Bug 807: Missing scalar type cast in umeyama()
REVERT: 90e6bfe740 Fixed Bug 806: Missing scalar type cast in Quaternion::setFromTwoVectors()
REVERT: 0c013f4d88 Enable atv in Blaze Benchmark
REVERT: 9d3e0689a4 Use trans(X) instead of X.transpose() in Blaze Benchmark
REVERT: 326a8b4aa4 Fix typo in SparseMatrix assert.
REVERT: 5792809deb Add missing add_subdirectory directive
REVERT: a34bfb5acf Fix bug 803: avoid char* to int* conversion
REVERT: e1668259ce Extended support for Tensors:   * Added ability to map a region of the memory to a tensor   * Added basic support for unary and binary coefficient wise expressions, such as addition or square root   * Provided an emulation layer to make it possible to compile the code with compilers (such as nvcc) that don't support cxx11.
REVERT: e4121bdc15 Add a small benchmark to compare dense solvers for small to large problems.
REVERT: 97c3db0efa Make gdb pretty printer Python3-compatible (bug 800).
REVERT: dc1090c67c TRMM: Make sure we have enough memory in rhs block to enforce alignment.
REVERT: 7c8ee8812f Make sure that calls to broadcast4 are 16 bytes aligned
REVERT: 99ca770d05 Product kernel: skip loop on columns if there is no remaining rows
REVERT: 2357588b02 Fix sizeof unit test
REVERT: bc8f9768e8 Fix for mixed products
REVERT: 4da6fa1887 Implement pbroadcast4 on altivec
REVERT: acf866bf15 pbroadcast4/2 assume aligned memory
REVERT: 35e143dba3 Disable 3pX4 kernel on Altivec: despite this platform has 32 registers, this version seems significantly slower.
REVERT: 28e422416e Add unit test for pbroadcast4/2
REVERT: e9fa21e2fd Fix ptranspose overload prototypes for NEON
REVERT: 50ef58cd29 Minor optimizations in product kernel: - use pbroadcast4 (helpful when AVX is not available) - process all remaining rows at once (significant speedup for small matrices)
REVERT: f9b1cb7efb Avoid blocking-size mismatch in unit tests calling Eigen's blas interface.
REVERT: c0c3bbe43c Enable vectorization of pack_rhs with a column-major RHS. Rename and generalize Kernel<*> to PacketBlock<*,N>.
REVERT: 3f4e76fed7 Enable fused madd for Altivec
REVERT: e7047939e8 Implement ptranspose on altivec and fix pgather/pscatter
REVERT: 36d40f3a7c Fixed the NEON implementation of predux_max<Packet4i>.
REVERT: 08b4c831a0 Created a NEON version of the ptranspose packet primitives
REVERT: 7913e39516 Add Altivec implementation of pgather/pscatter (not tested)
REVERT: 400e974b72 Fix EIGEN_MAKE_UNALIGNED_ARRAY_ASSERT macro
REVERT: a8ff6fca82 merge with default branch
REVERT: 033f480b5f Workaround gcc's default ABI not being able to distinghish between vector types of different sizes.
REVERT: 135fe99307 Fix 128bit packet size assumptions in unit tests.
REVERT: 728b19d911 Fix alignment assertion.
REVERT: 99ed892972 Fix calls to lazy products (lazy product does not like matrices with 0 length)
REVERT: 36c4f61987 Smarter block size computation
REVERT: 994d1b4fd6 Fix typo (was working with clang\!)
REVERT: 191c911bd2 Fixes for fixed sizes and non vectorizable types
REVERT: 093f672898 merge
REVERT: b60e47ace8 Implemented the pgather/pscatter packet primitives for the arm/NEON architecture
REVERT: 9f7f15e39e Make our gemm bench a little more powerful.
REVERT: 58b4c9fe56 Various minor fixes in BTL
REVERT: 2107f31070 Optimize AVX pset1 for complexes and ploaddup
REVERT: c27d85bd49 Fix typo in Reductions tutorial.
REVERT: 5059e4a1ec Reduce block sizes in unit tests.
REVERT: dcff0a0954 add unit tests for ploadquad and predux4, and split packetmath unit test wrt real/complex
REVERT: bc3775d78f Extend mixingtype unit test to check transposed cases.
REVERT: 10760ee681 Fix and optimize mixed products
REVERT: 4eca9f48ef Optimize ploaddup for AVX
REVERT: 503a9ad4f6 Fallback to lazy products for very small ones.
REVERT: 438876421f Enable alloca on MAC OSX
REVERT: dd72064cfd Implement evaluator<ReturnByValue>. All supported tests pass apart from Sparse and Geometry, except test in adjoint_4 that a = a.transpose() raises an assert.
REVERT: 87d9c2c554 New gebp kernel handling up to 3 packets x 4 register-level blocks. Huge speeup on Haswell. This changeset also introduce new vector functions: ploadquad and predux4.
REVERT: f209626ab5 Fix typo in Inverse.h
REVERT: 9da430326c Check IMKL version for compatibility with Eigen
REVERT: dbd0e0a706 Port products with permutation matrices to evaluators.
REVERT: 56fb145406 Merged in benoitsteiner/eigen-fixes/nvcc_fixes (pull request #56)
REVERT: 06bedbdaac Fixed a typo in CXX11Meta.h
REVERT: 83a2288749 Bug 793: detect NaN and INF in EigenSolver instead of aborting with an assert.
REVERT: ef93bf8443 Add isfinite overload for complexes.
REVERT: a59df03f1f Optimized SSE unaligned loads and stores when compiling a 64bit target with a recent version of gcc (ie gcc 4.8).
REVERT: e12bf1c0ea Merged in benoitsteiner/eigen-fixes (pull request #55)
REVERT: 87711a5fb0 Bug 790: fix overflow in real_2x2_jacobi_svd
REVERT: 1842619c69 Bug 793: fix overflow in EigenSolver and add respective regression unit test
REVERT: a420aa23ce Updated the compiler flags to enable nvcc to work with clang.
REVERT: 730f408cad Fixed a typo in cuda_basic.cu
REVERT: 61e4aa53d4 Add include LevenbergMarquardt in CMakeLists.txt.
REVERT: 0d606e31eb Merged in benoitsteiner/eigen-fixes/nvcc_fixes (pull request #53)
REVERT: 2ef20e5554 Updated my previous fix to avoid introducing a compilation warning on ARM platforms.
REVERT: 6a29e1098f Silenced a compilation warning produced by nvcc.
REVERT: 405a186357 doc: Add references to Cholesky methods in SelfAdjointView.
REVERT: 49a5b76f36 Updated the geo_parametrizedline_2 test for AVX.
REVERT: a8b3578a55 Deleted some dead code.
REVERT: 3a06240ded Remove out-dated comment in cholesky test.
REVERT: a1238193f4 Fix Bug 784: Assert if assigning a product to a triangularView does not match the size.
REVERT: 56e266c6cb Bug 782: Workaround for gcc <= 4.4 compilation error on the NEON PacketMath code.
REVERT: 1a887a858b Pulled the latest updates from the eigen trunk.
REVERT: 1df65a7375 Make some actual verifications inside the autodiff unit test
REVERT: ee60ae0029 Fixed typo: symmretric -> symmetric
REVERT: 3337e2be24 Fix lapack build
REVERT: 008fea323d Bug 775: propagate generator when workingaround cmake bug 9220
REVERT: 248fdfdb0e Fix bug 776: it seems that mingw does not support weak linking
REVERT: 851b778672 Rename the vector() factories defined in blas/common.h into make_vector() to prevent a possible name conflict with std::vector.
REVERT: 23a947c5e8 Fix no newline at end of file warning
REVERT: 3685acebad BTL: add blaze
REVERT: cef83a8357 BTL: fix warnings and extend to 5k matrices, update GotoBlas to OpenBlas, etc.
REVERT: 74719eeae5 Finally, prefetching seems to help getting more stable performance
REVERT: e8beef7b05 Enable repetition in mixing type unit test
REVERT: e2e2db98bc Workaround alignment warnings
REVERT: 3ef5709106 Optimize gebp kernel: 1 - increase peeling level along the depth dimention (+5% for large matrices, i.e., >1000) 2 - improve pipelining when dealing with latest rows of the lhs
REVERT: 49195e488f Vectorized the loop peeling of the inner loop of the block-panel matrix multiplication code. This speeds up the multiplication of matrices which size is not a multiple of the packet size.
REVERT: 5aa10a3a9d Properly align the input data to prevent false failures of the packetmath.cpp test.
REVERT: 126620d22e Add a mechanism to recursively access to half-size packet types
REVERT: 31ddf2de91 merge with default branch
REVERT: 3580c8337e Enable vectorization of gemv for PacketSize>4 through unaligned loads (still better than no vectorization)
REVERT: 4fac5c1703 Merged latest changes from parent.
REVERT: ff622d14fb Implemented the SSE version of the gather and scatter packet primitives.
REVERT: 044666bce7 Implemented the AVX version of the gather and scatter packet primitives.
REVERT: 9ba18b78a0 Introduced pscatter/pgather packet primitives. They will be used to optimize the loop peeling code of the block-panel matrix multiplication kernel.
REVERT: 5edd9ee5a3 enforce the use of vfmadd231ps for pmadd (gcc and clang stupidely generates the other fmadd variants plus some register moves...)
REVERT: b05ceb4976 Fixed compilation error when FMA instructions are enabled.
REVERT: 3ffb0303e7 Silenced "unused variable" warnings when compiling with FMA.
REVERT: 11d92d5266 Vectorized the packing of a col-major matrix used as the right hand side argument in a matrix-matrix product when AVX instructions are used. No vectorization takes place when SSE instructions are used, however this doesn't seem to impact performance.
REVERT: 3d07751290 Vectorized the packing of a row-major matrix used as the left hand side argument in a matrix-matrix product.
REVERT: 6d14288048 Implemented the AVX version of the ptranspose packet primitive.
REVERT: f814f0983f Change abi version when enabling AVX with GCC
REVERT: 35177c7143 Fix geo_* unit tests with respect to AVX
REVERT: 2da4aa9b0e Implement pcplflip, palign, predux and the likes from AVC/complexes
REVERT: 2f6a68ce19 Fix warning
REVERT: 721f8967a4 Merged in infinitei/eigen (pull request #50)
REVERT: 38774b224a immintrin.h did not come until intel version 11
REVERT: 7905a61768 Created the ptranspose packet primitive that can transpose an array of N packets, where N is the number of words in each packet. This primitive will be used to complete the vectorization of the gemm_pack_lhs and gemm_pack_rhs functions. Implemented the primitive using SSE instructions.
REVERT: bdffdd94cb Fixed compilation error due to obsolete internal::abs and internal::sqrt function calls
REVERT: 82445783e5 Made sure that the version of gemm_pack_rhs specialized for row major matrices is vectorized when nr == 2*PacketSize (which is the case for SSE when compiling in 64bit mode).
REVERT: 24e40fd7f8 Specialized the pload1 packet primitive for Packet8f and Packet4d in order to take advantage of the vbroadcastss and vbroadcastsd instructions whenever possible.
REVERT: bce06f372f Merged latest updates from the parent branch
REVERT: f05532a4f9 Update gebp kernel to process a panle of 4 columns at once for the remaining ones.
REVERT: 45218a138e Remove remaining bits of the dead working buffer
REVERT: bd7a8192f7 Vectorized the multiplication and division of complex numbers using AVX instructions.
REVERT: bde2232870 Used AVX instructions to vectorize the complex version of the pfirst and ploaddup packet primitives. Silenced a few compilation warnings.
REVERT: 10dbc15365 Implement new 1 packet x 8 gebp kernel
REVERT: fc36887bca add pbroadcast2/4 generic intrinsics
REVERT: 59b61d3b9a Use AVX instructions to vectorize pset1<Packet2cd>, pset1<Packet4cf>, preverse<Packet2cd>, and preverse<Packet4cf>
REVERT: 6ad2d93e56 Used AVX instructions to vectorize the predux_min<Packet8f>, predux_min<Packet4d>, predux_max<Packet8f>, and predux_max<Packet4d> packet primitives.
REVERT: e92ae44221 Added proper support for AVX and FMA in the makefiles.
REVERT: e03d9b5e56 Made sure that EIGEN_ALIGN is defined when EIGEN_DONT_VECTORIZE is set to true to prevent build failures when vectorization is disabled.
REVERT: 501392fbee Merged latest changes from the parent
REVERT: a2e1ae09c5 MINRES, bug 715: add support for zero rhs, and remove square test.
REVERT: cb783b105a fixed Spline constructor dimension bug
REVERT: 3194ad71c7 fix Spline constructor
REVERT: 9d26ee29a5 clang does not accept this without template keyword
REVERT: adc8b2cda3 Relax Ref such that Ref<MatrixXf> accepts a RowVectorXf which can be seen as a degenerate MatrixXf(1,N)
REVERT: 034a68e4a9 A bit of cleaning
REVERT: 69b78fb090 Silence stupid parenthesis warnings for old GCC versions (<= 4.6.x)
REVERT: 0992ccf46f Fix bug 760: complete Eigen's lapack interface with default Lapack for SPQR if there is no fortran compiler.
REVERT: 4ad71812c2 Resurect EvalBeforeNestingBit to control nested_eval
REVERT: 2565de6b2f Conditionally disable unit tests that are not supported by evaluators yet
REVERT: 8ca7c0d915 More debug info and use lazyProd instead of operator* to query the right flags
REVERT: 5fc0af05c2 Fix regressions in redux_evaluator flags and evaluator<Block> flags
REVERT: 56f601e4ee Extend evaluation traits debuging info
REVERT: a5848b7c13 merge default and evaluator branches
REVERT: f559d517b5 This file is not needed anymore
REVERT: 3e29c8ca6d Fix a few regression when moving the flags
REVERT: 49f572ec72 Bug 755: CommaInitializer produced wrong assertions in absence of ReturnValueOptimization.
REVERT: a8576e256c Bug 759: Removed hard-coded double-math from Quaternion::angularDistance. Some documentation improvements
REVERT: e7286ad910 Fix Eigenvalues module
REVERT: e26d06f13c Move evaluation related flags from traits to evaluator and fix evaluators of MapBase and Replicate
REVERT: 0b806a506e Migrate JacobiSVD to Solver
REVERT: 20911e8927 Port Cholesky module to evaluators
REVERT: d2f4f6c5e7 Avoid stupid "enumeral mismatch in conditional expression" warnings in GCC
REVERT: d827458aa0 Port QR module to Solve/Inverse
REVERT: 8f069275ee Fix CoeffReadCost issues
REVERT: b45b9aec3b It is not clear what XprType::Nested should be, so let's use nested<Xpr>::type as much as possible
REVERT: 3769ab8925 Even ReturnByValue should not evaluate when assembling the expression
REVERT: deee5c2250 Merged in abachrac/eigen (pull request #47)
REVERT: cd4420e6c6 Move CoeffReadCost mechanism to evaluators
REVERT: d947caf03f Hide legacy dense assignment routines with EIGEN_TEST_EVALUATORS
REVERT: a63d2d9e02 Fix evaluators unit test (i.e., when only EIGEN_ENABLE_EVALUATORS is defined
REVERT: ef4b315df7 Move the Base typedef's from private to public scope
REVERT: 65a2491a18 swap 3.2 <-> default CTestConfig.cmake file
REVERT: c822f7cc94 Merged latest changes from the main trunk
REVERT: 47c5a39ca7 Pulled latest changes from the Eigen main trunk
REVERT: 83c8179303 Merged eigen/eigen into default
REVERT: 74c80eaf19 Added support for FMA instructions
REVERT: 5d5d6791ef Implement bug 317: use a template function call to suppress unused variable warnings. This also fix the issue of the previous changeset in a much nicer way.
REVERT: c53e51617b Workaround clang ABI change with unsed arguments (ugly fix)
REVERT: 3ea63fa160 Fix Bug 748 - array_5 test fails for seed 1392781168.
REVERT: 2c4f639b41 Specify what non-resizeable objects are in transposeInPlace and adjointInPlace (cf Bug 749)
REVERT: 63de19e0ae Split LU/Inverse.h to Core/Inverse.h for the generic Inverse expression, and LU/InverseImpl.h for the dense implementation of dense.inverse()
REVERT: 6d68b62495 Hide some deprecated classes.
REVERT: d95b80d388 By-pass ProductBase for triangular and selfadjoint products and get rid of ProductBase
REVERT: 53e1949a0a Get rid of GeneralProduct<> for GemvProduct
REVERT: e43817dcb0 Get rid of GeneralProduct<> for GemmProduct
REVERT: 8ef5554603 Get rid of GeneralProduct for outer-products, and get rid of ScaledProduct
REVERT: dcba41de33 Generalize evaluator<Inverse<>> such that there is no need to specialize it
REVERT: 52b7b8be8a Port LU module to evaluators (except image() and kernel())
REVERT: fa2913d8dc Some bit flags and internal structures are deprecated
REVERT: 03c94209c4 Fix dimension of Solve expression
REVERT: 58771a95a8 Propagate LvalueBit flag to TriangularView
REVERT: 92ce6f4135 Add general Inverse<> expression with evaluator
REVERT: c54c3631d9 More int versus Index fixes
REVERT: 8b66b64b2e Fix mixing scalar types with evaluators
REVERT: 5771a14966 ExprType::Nested has a new meaning now...
REVERT: d720e9c597 evaluator<Replicate> must evaluate its argument to avoid redundant evaluations
REVERT: 78f3b144bf Add missing assertion in swap()
REVERT: 8dc32b5d18 Disable Flagged and ForceAlignedAccess
REVERT: c0b24d0875 Fix vectorization logic wrt assignment functors
REVERT: e34c7fddf1 Fix lazy evaluation in Ref
REVERT: 82bc072fe9 Add a Solve expression for uniform treatment of solve() methods.
REVERT: 7d967ab8a0 Fix CoeffReadCost of products to handle Dynamic costs
REVERT: 0cffef88fa isApprox must honors nested_eval
REVERT: e276d0edde Merged the latest version of the code from eigen/eigen
REVERT: ca31ac669a Reverted the definition of the EIGEN_ALIGN to its former meaning (i.e. a boolean) Created a new EIGEN_ALIGN_BYTES define to encode how the data should be aligned Fixed a few remaining alignment issues exposed when the Eigen code is compiled with avx enabled. Created a new EIGEN_ALIGN_DEFAULT define, which is set to the minimum alignment value required for the chosen instruction set. Use this value instead of EIGEN_ALIGN32 to preserve the existing alignment on SSE/Altivec/Neon.
REVERT: 46f8b6fe7f Add evaluator shortcut for triangular ?= product
REVERT: ae61b319e9 Simplify implementation of coeff-based products to fully exploit our reduxion mechanisms. If this results in performance regressions, then we should optimize reduxion rather than somehow duplicate the code.
REVERT: 3a6ef75f5a Merge with default branch
REVERT: 42bc62c0a9 Cleaning
REVERT: db6855ab6d Product::coeff method are also OK for lazy products (including diagonal products)
REVERT: 5db92a5a7d Fix all()/any() for evaluators
REVERT: 39d22bf2c5 _MatrixTypeNested must be public in sparse Block
REVERT: 8b599ea14b Temporary workaround for permutations
REVERT: ee280b6e81 Support Product::coeff(0,0) even for dynamic matrices
REVERT: 2464a0af6d Finally, the simplest remains to deffer resizing at the latest
REVERT: 386046b561 Add evaluator for Ref
REVERT: eca4961473 Move is_diagonal to XprHelper, forward declare Ref
REVERT: 02de9b9346 New design for handling automatic transposition
REVERT: 3028d059fd Get rid of DiagonalProduct
REVERT: 8fa4d65cc2 Get rid of SeflCwiseBinaryOp
REVERT: 1e833aebf8 Fix scalar * product optimization when 'product' includes a selfadjoint matrix
REVERT: 4011e635b1 Deal with automatic transposition in call_assignment, fix a few shortcomings
REVERT: 60a8e8085a Add evaluator support for diagonal products
REVERT: c980f4ea19 Relaxed umeyama test. Problem was ill-posed if linear part was scaled with very small number. This should fix bug 744.
REVERT: 36d41b8252 Fix support for row (resp. column) of a column-major (resp. row-major) sparse matrix
REVERT: 65e7329751 Fix compilation of SPlines module
REVERT: 2ab819217e Fix sparse_product/sparse_extra unit tests
REVERT: 842698a664 Fix FFTW unit test with clang
REVERT: 75b2ed4039 Fix a few Index to int buggy conversions
REVERT: 546c00beb2 Fix infinite loop in sparselu
REVERT: 4b71aa0987 Merged in martinhofernandes/eigen (pull request #40)
REVERT: b385ced6fb optimize sparse-sparse Kronecker product
REVERT: c116ceffff Upload the 3.2 testing result to its own CDash project
REVERT: 28dbb3a86f reduce false negative in the qr unit test
REVERT: 9058ffe502 alloca is not necessarily alligned on windows
REVERT: a378b5d278 Fix propagation of index type
REVERT: 7c859c6091 fix stable norm benchmark
REVERT: ac2a30460d Fix stable_norm unit test for complexes
REVERT: c11243a1db Fix bug 740: overflow issue in stableNorm
REVERT: 249857ddcf Fix Fortran compiler detection
REVERT: 19815dbe9e Fix documentation of MatrixBase::applyOnTheLeft (bug 739) Add examples; move methods from EigenBase.h to MatrixBase.h
REVERT: ca29c25230 fix compilation of Transform * UniformScaling
REVERT: 563072329c Added examples for casting, made better examples for Maps
REVERT: 7a78bc8308 Remove unused typedef in polynomialsolver test.
REVERT: 2ee3809e7c Merged in maksqwe/eigen/maksqwe/fix-typo-in-evalSolverSugarFunction (pull request #44)
REVERT: b7dd382e61 fix typo in evalSolverSugarFunction()
REVERT: e1c5445602 Fix bug 736: LDLT isPositive returns false for a positive semidefinite matrix Add unit test covering this case.
REVERT: 4997232245 Fixed assignment from QMatrix to Transform for compact storage.
REVERT: 2f11c0343a Fixed issue #734 (thanks to Philipp Büttgenbach for reporting the issue and proposing a fix). Kept ColMajor layout if possible in order to keep derivatives of the same order adjacent in memory.
REVERT: 8446faf7dc Fix Bug 730: Path of OpenGL headers is different on MacOS
REVERT: 85d36f0e6e Added support for AVX to Eigen.
REVERT: 0b577aff09 Fix Random().normalized() by introducing a nested_eval helper (recall that the old nested<> class is deprecated)
REVERT: bf44b5b9a3 Fix evaluator<Replicate> for fixed size objects
REVERT: 248f15d3dc Add missing template keyword
REVERT: c31992c62b Port evaluation from selfadjoint to full to evaluators
REVERT: 8dbd745ebc Refactor triangular assignment
REVERT: 2d2867bfa1 fix scalar * prod in evaluators unit test
REVERT: 606660a2e7 Remove useless register keyword, and optimize predux_min/max for SSE4
REVERT: a903ba4860 Add a minimalistic page on CUDA with Eigen.
REVERT: 1870084e28 NVCC: add more debug info
REVERT: f84d93d8ac NVCC: no need to enforce host compiler
REVERT: 9f70bdd18c NVCC: fix closed-form eigenvalue decomposition, workaround gcc4.7/nvcc5.5 issue
REVERT: 82dc82d86c sparse_solve_retval_base::defaultEvalTo created extremely oversized temporary matrices in some cases
REVERT: 928a0467d9 Add doc page on computing Least Squares.
REVERT: 3b68a2494f Merged eigen/eigen into default
REVERT: dc86f7f4a7 Placement new must use void* to avoid user-specific overloads.
REVERT: d2e84fa160 Add C++11 allocator overloads to avoid implicit conversions.
REVERT: 5293bcd1bb Add an example showing how to use C++11 random distributions
REVERT: 39238da073 Document the fact that Random and setRandom are not reentrant (so not thread-safe)
REVERT: 79d7ffb5c1 Fix typo
REVERT: 1bf86e1af0 Improved the efficiency if the block-panel matrix multiplication code: the change reduces the pressure on the L1 cache by removing the calls to gebp_traits::unpackRhs(). Instead the packetization of the rhs blocks is done on the fly in gebp_traits::loadRhs(). This adds numerous calls to pset1<ResPacket> (since we're packetizing on the fly in the inner loop) but this is more than compensated by the fact that we're decreasing the memory transfers by a factor RhsPacketSize.
REVERT: 840fc7e08d Fix Bug 222. Make temporary matrix column-major independently of EIGEN_DEFAULT_TO_ROW_MAJOR
REVERT: 8372d10e92 Merged in prclibo/eigen (pull request #49)
REVERT: a0cf7186fe Revert previous change and introduce a new workaround regarding gcc generating a shufps instruction instead of the more efficient pshufd instruction. The trick consists in introducing a new pload1 function to be used in low level product kernels for which bug 203 does not apply. Indeed, it turned out that using inline assembly prevents gcc of doing a good job at instructtion reordering.
REVERT: c0e2195fe5 merged incoming udpates
REVERT: 26448c4d41 fixed a template type conversion bug in AngleAxis found by Pei Luo
REVERT: 77ece473f1 Makes gcc to generate a pshufd instruction for pset1
REVERT: d9968ba002 Simpler and hopefully more future-proof fix for bug 503 (aligned_allocator with c++11)
REVERT: 215c04d2fc Minor corrections in QR docs.
REVERT: e2102da0c7 Port unsupported constrained CG to Eigen3
REVERT: 2aa60d6445 QuaternionBase::slerp was documented twice and one explanation was ambiguous.
REVERT: d9b168c87e Make geo_hyperplane unit test more stable (bug 539)
REVERT: fd0904ba31 Applied patch from Richard JW Roberts, resolving Bug 704
REVERT: 6843161c1b Grafted from 5725:1d38ca918d87 and resolved conflicts
REVERT: 96ade3d404 Fixed typos in comments
REVERT: 1328f7082d Use vectorization when packing row-major rhs matrices. (bug 717)
REVERT: 43e386031a Fix typo: 'explicitely' -> 'explicitly'
REVERT: cf49327aa1 Fix selfadjoint_matrix_vector_product for complex with packet size > 2 (e.g., AVX)
REVERT: 5741e3afd7 Fix typo and formating
REVERT: b4b7d98214 Add support for OSX in BTL and fix a few warnings
REVERT: c12682c7ba Extend sizeof unit test
REVERT: 09c17119d2 Fixed Bug 754. Only inserted (!defined(_WIN32_WCE)) analog to alloc and free implementation (not tested, but should be correct).
REVERT: 9cf3f2d26b Help MSVC to inline some trivial functions
REVERT: 4d3066250a Bug 289: Removed useless static keywords
REVERT: 5402d0aa24 Typo in the example for Eigen::SelfAdjointEigenSolver::eigenvectors, the first eigenvector should be col(0) not col(1)
REVERT: 7e9f324fd4 Fix PaStiX support for Pastix 5.2
REVERT: 765306af30 Regression test for bug 752
REVERT: be3a4ab08d Remove early termination in LDLT: the zero on the diagonal of the input matrix does not mean the matrix is not full rank. Typical examples are matrices coming from LS with linear equality constraints.
REVERT: 45634a759d Make pivoting HouseholderQR compatible with custom scalar types
REVERT: 1c20453bae Fix a few regression regarding temporaries and products
REVERT: 84be95c80a Make selfqdjoint products use evaluators
REVERT: f3c36940db fix resizing in noalias for blocks, and make -=/+= use evaluators
REVERT: 58e9a1ff3c Add support for triangular products with evaluators
REVERT: 4031388ea2 Move inner product special functions to a base class to avoid ambiguous calls
REVERT: bca5401480 Enable use of evaluators for noalias and lazyProduct, add conversion to scalar for inner products
REVERT: 9601be1b35 Make reductions compatible with evaluators
REVERT: 9721dbd861 fix a typo triangular assignment
REVERT: deb3fcdee5 Fix flags of Product<>
REVERT: a3f6f7a467 Add direct assignment of products
REVERT: 0878239a4d Fix product evaluator when TEST_EVALUATOR in not ON
REVERT: 1c98f90d4b Make swap unit test work with evaluators
REVERT: d54f3d852c Get rid of call_dense_swap_loop
REVERT: 074f58a35b Add evaluator/assignment to TriangularView expressions
REVERT: 020bc32186 Fix usage of Dense versus DenseShape
REVERT: ceea3bd91f Fix swap in DenseBase
REVERT: e6d64eed98 Fixed and simplified Matlab code and added further block-related examples
REVERT: 658d8fd2cd Fix Bug 609: Euler angles are in Range [0:pi]x[-pi:pi]x[-pi:pi]. Now the unit test verifies this (also that it is bijective in this range).
REVERT: a2772aeb7d First step toward the generalization of evaluators to triangular, sparse and other fancyness. Remove product_tag template parameter to Product.
REVERT: 4760dbfcdb Get rid of evalautor_impl
REVERT: 57caaf0fbb add definition of product_tag
REVERT: 0e1c82473b Remove HasEvalTo and all at once eval mode
REVERT: f93934f2c1 Refactor dense product evaluators
REVERT: b9c5ff80f9 Simplify evaluator of EvalToTemp
REVERT: 9edc62af4b Fix bug 708: add placement new/delete for array
REVERT: 6edeafa36a Evaluator: introduce the main Assignment class, add call_assignment to bypass NoAlias and AssumeAliasing, and some bits of cleaning
REVERT: 1bad406c82 extend Map unit test to check buffers allocated on the stack
REVERT: c5ca692770 Fix FullPivHouseholderQR ctors for non squared fixed size matrix types
REVERT: 483616334a Add scaling in JacobiSVD to avoid overflows
REVERT: 44ee18f493 Document how to reproduce matlab's rot90
REVERT: 39cff9eb3c Merged in chris-se/eigen/tensor-for-merge (pull request #39)
REVERT: b7ca600e95 C++11/Tensor: Fix copyright headers
REVERT: 593444ad26 Workaround fixing aliasing issue in x = SparseLU::solve(x)
REVERT: cb4c2f8029 fix overflow and ambiguity in SparseLU memory allocation
REVERT: 9b7cd18197 CXX11/TensorSymmetry: add symmetry support for Tensor class
REVERT: e863073375 CXX11/Tensor: add simple initial tensor implementation
REVERT: 81655f6c47 C++11: add template metaprogramming helpers
REVERT: beb999ba0b Implement boolean reductions for zero-sized objects
REVERT: c51edfcd3a Use the specialization of Block<SparseMatrix> for const matrices too
REVERT: 01af287a77 Add missing nonZeros() overload in Block<SparseMatrixBase<>>
REVERT: 0b46123d05 Install functor folder with cmake
REVERT: 946fb4233f fix broken commit
REVERT: bd3cbb592e Fix stupid mistake in CMakeLists.txt
REVERT: bb52a4ab1f Fixed Bug 702 and added unit test. Thanks to Alexander Werner for the report.
REVERT: a7dc95f33d Add an option to test evaluators globally
REVERT: 158b48953b Drop evaluators for SwapWrapper and SelfCwiseBinaryOp
REVERT: d94a61416e Clean evaluator_impl_base. It will probably be removed in the future
REVERT: a274c627b5 Bug 99: move the creation of the evaluator to a central place, and make generic_dense_assignment_kernel hold the destination and source evaluators
REVERT: 14fa4fe8e1 Move internal::swap to numext to fix ambiguous call with std::swap
REVERT: 2688a2e16b 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.)
REVERT: 66acfbbe96 Fix static/inline order
REVERT: 2645a85497 Split the huge Functors.h file
REVERT: e3b4741737 Add minimalistic unit tests for NVCC support
REVERT: bd8a70d421 Allow calling attributes of dynamic size objects from device
REVERT: b04c4ce819 merge with default branch
REVERT: b230653f83 SparseLU: fix estimated non-zeros in U
REVERT: 890b962dec JacobiSVD: fix a 0/0 issue for complexes
REVERT: f602572fd7 Check for minimal norm solutions
REVERT: 0346fc5919 JacobiSVD: move from Lapack to Matlab strategy for the default threshold
REVERT: 7c9f35239f Bug 677: fix usage of pld instrinsics for ccomplexes
REVERT: 1bd0afa2e3 Add a rank method with threshold control to JacobiSVD, and make solve uses it to return the minimal norm solution for rank-deficient problems
REVERT: ea604f42b7 Fix changeset 2369461 for fixed size matrices
REVERT: 3c6fbac579 Fix bug 677: compilation issue on arm64 which does not have the PLD instruction
REVERT: bf612433b6 Fix bug 678: vectors of row and columns transpositions were not properly resized in FullPivQR
REVERT: 8741df6567 Fix unused variable warnings
REVERT: 688ccf2ebc Fix parenthesis min/max issue in mpreal
REVERT: 5095ca9cdf Use aligned loads in Matrix-Vector product where possible. Fixes Bug 689
REVERT: 646b0651d7 Merged in martinhofernandes/eigen (pull request #33)
REVERT: a1b9c6cc44 Merged in xantares/eigen (pull request #36)
REVERT: 03a9046534 Fix bug 672: use exceptions in SuperLU if they are enabled only
REVERT: 13278d70f5 Merged in vanhoucke/eigen_vanhoucke_unused_variable (pull request #34)
REVERT: 0ee7eb2dec Fix bug 359: fix AlignedBit flag of CoeffBasedProduct thus enabling the vectorization of more matrix products
REVERT: 50d4ab61b0 Clarify the meaning of AlignedBit (bug 359)
REVERT: 3c9ed5acdf Fix bug 685: document the range of Random and setRandom
REVERT: 3d3250caab Fix bug 688: make it clearer that CG is for both dense and sparse matrices.
REVERT: 211462d13a fix a few "dead stores" warnings
REVERT: 49fe5db319 Fix bug 684: optimize vectorization of array-scalar and scalar-array
REVERT: 2a30c970eb simplify/uniformize eigen_gen_docs
REVERT: 68e5d8dd19 Added comparisons scalar to array (previously only the array to scalar was possible) (Fixes Bug 147) Extended the unit test for that
REVERT: 62eb62c10f Copy all format flags (not only precision) from actual output stream when calculating the maximal width
REVERT: 5d0a17aa2a consider all columns for aligned output (fixes bug 616)
REVERT: 1ebd71c4b6 Copy and paste mistake in last commit
REVERT: deb5366be5 Don't add rowSpacer if columns are not to be aligned
REVERT: 5a1b6b9a34 Fixes Bug 681 Also fixed some spelling issues in the documentation
REVERT: 8a12615058 Fix bug 674: typo in documentation example for BiCGSTAB. They are now proper snippet files.
REVERT: 7f5bab5f43 Use != instead of < to check for emptiness of iterator range (fixes Bug 664)
REVERT: f2c5f8a148 Make index type of Triplet default to SparseMatrix::Index as suggested by Kolja Brix. Fixes Bug 665.
REVERT: 0dfdfff1e5 Allow .conservativeResize(rows,cols) on vectors
REVERT: b331005c9a bug 679: add respective unit test
REVERT: ba65611a92 Fix Bug 679
REVERT: e9b3a985d0 uniformize piwik code among branches
REVERT: edf36821f7 Add cmake config files
REVERT: 72c98ef13f Silence unused variable warning.
REVERT: 0db5f69dc6 Sparse is stable now, so Eigen/Eigen should include Sparse
REVERT: 916a07dc42 Fix dot*w to return 0 for empty vectors (BLAS interface)
REVERT: 90046c4ce1 Fix SPQR Solve() when assigning to a Map object
REVERT: 0e0da5dc39 Fix leaked memory for successive calls to SPQR
REVERT: c16f6fa970 Reduce explicit zeros when applying SparseQR's matrix Q
REVERT: 28f658fb5c Add a block sparse matrix class. tests to be added
REVERT: ac16d0675f Fix assert bug in sparseQR
REVERT: 85a9890fa6 Fix elimination tree and SparseQR with rows<cols
REVERT: 24d1a5dcbb Fix bug #503
REVERT: 657ead52ce Fix ploaddup and lin-spaced with AltiVec.
REVERT: c8ee0a2b2f Fix bug 654: allow implicit transposition in Array to Matrix and Matrix to Array constructors
REVERT: c647e6fff6 Fix sparse block
REVERT: c55b692092 Merged in advanpix/eigen-mp-devs (pull request #32)
REVERT: 3a861d86d0 Another compilation fix with ICC/MSVC combo
REVERT: 9594794a5e BDCSVD: Use rational interpolation to solve secular equation. Algorithm is rather ad-hoc and falls back on bisection if required.
REVERT: a1b128795c Added missing inline statements in order to prevent linker errors.
REVERT: 34b8e88e66 Fixed InnerPanel definition in the Transformation class. Added some inital documentation on InnerPanel.
REVERT: 0f77d22a42 Use unblocked version if the matrix is too small, plus some cleaning.
REVERT: d2e523efcd Implement a blocked upper-bidiagonalization algorithm. The computeUnblocked function is currently for benchmarking purpose.
REVERT: b173d20dbc Updated mpfr::mpreal. Move semantic support, RVO, other new features
REVERT: 7a697ff67d Replaced memcpy & memmove to smart_* alternatives for non-POD scalar types
REVERT: 02f381b5b7 Switched to smart_copy to support non-trivial scalar types
REVERT: ea99b17c82 Fixed bug 647 by using smart_copy instead of bitwise memcpy.
REVERT: e49b893532 Added smart_memmove with support of non-POD scalars (e.g. needed in SparseBlock.h).
REVERT: c04dbcbb65 BDCSVD: Use HouseholderSeq directly.
REVERT: 1ba4e58b9e Fix compilation with ICC/MSVC combo
REVERT: 6f790026d8 Add explanations of the logic behind the matrix-vector products
REVERT: 2f7a74b9c6 Allows EIGEN_STACK_ALLOCATION_LIMIT to be 0 for no limit
REVERT: a6f0c0bb5a BDCSVD: Compute SVD of combined problem directly. First step at implementing final stage in BDCSVD algorithm. Uses bisection method to solve nonlinear equation. Still lots of room for optimization.
REVERT: 5cf6e73f07 Fix indentation
REVERT: 40e9e2ef3a Fix compilation with non-msvc compilers.
REVERT: 194ba99b87 Make the static assertions on maximal fixed size object use EIGEN_STACK_ALLOCATION_LIMIT, and raise its default value to 128KB
REVERT: 2676b35ee4 Merged in advanpix/eigen-mp-devs (pull request #31)
REVERT: 65d4f843ee Make FullPivHouseholderQR::solve returns the least-square solution instead of aborting if no exact solution exist
REVERT: 74d78f0a95 Removed unnecessary parentheses
REVERT: ad1500ae8d Added support for custom scalars
REVERT: e99ce8fd4b Make ArrayBase operator+=(scalar) and -=(scalar) use SelfCwiseBinaryOp optimization
REVERT: ae78e5c92c Fix bug 643: enable vectorization of compound assignement for fixed size objects
REVERT: 00f6ca90c0 typo
REVERT: fe561e0a0e Fix bug 642: add vectorization of sqrt for doubles, and make sqrt really safe if EIGEN_FAST_MATH is disabled
REVERT: 63e4db96a0 Merged in advanpix/eigen-mp-devs (pull request #30)
REVERT: fc5ad305b9 Added support for custom-scalars
REVERT: 69377f64f8 Documentation of deprecated struct. Closing Bug 426.
REVERT: 97380b3c0b Deprecate boolean sum operator (Bug 426)
REVERT: 963e828de1 Fix broken link on transforming normals
REVERT: 8502958874 Bug 638: fix typos in sparse tutorial
REVERT: 0d4aefc1fa Switched to MPL2 license.
REVERT: b716b47203 Backout parts of changeset 2d62a0ee5095 (these changes were not intended to be commited)
REVERT: 3e7b08be42 Fix cost evaluation of partial reduxions -> improve performance of vectorwise/replicate expressions involving partial reduxions
REVERT: 034eca1474 Ref<> objects must be nested by reference because they potentially store a temporary object
REVERT: 64e20955cc QuickReference.dox: std::tan(array) --> tan(array), same for other functions.
REVERT: ee182d5279 Added copy constructor and assignment to DenseStorage. Required by the standard even when its not used but elided. Added a test for DenseStorage copying and assignment.
REVERT: 317e183a75 Added alternative C++11 detection.
REVERT: cfcd6279b6 Disabled std::log1p on Cygwin.
REVERT: c442adc516 BDCSVD: Streamline compute() and copyUV()
REVERT: 0b717544b1 doc: Explain type of result for VectorwiseOp member functions. Prompted by a question on the forum.
REVERT: 8a3834a11d Remove LinearLeastSquares.dox , which should not have been added. Accidentally included in changeset e1dfda41aec9 .
REVERT: b8727f1cf9 Removed errornous swap for stack storage.
REVERT: 1fd1c025b0 Move inheritance from Eigen example in stand-alone file. Also fix a small mistake (Vector3d instead of VectorXd).
REVERT: 2351e0b5b7 Removed a warning when rvalue references are not unsed.
REVERT: fc84e2fcf7 Fix compilation.
REVERT: ee3e6ea0ee Ensure that (potentially aligned) stack objects are passed by reference.
REVERT: dfbcd68165 Added move support for Matrix and Array. Added EIGEN_HAVE_RVALUE_REFERENCES define. Added move unit tests. Removed superfluous 'inline' declarations in DenseStorage.
REVERT: a513698016 Fix bug 635: add isCompressed to MappedSparseMatrix for compatibility
REVERT: 321827bbfb Make Pardiso solvers non copyabe
REVERT: 7e39427e09 Fix compilation and warning of PARDISO
REVERT: 13f12e80b5 reduce cancellation probablity
REVERT: 5d1ba74e79 Added build name support for VC11 and its service packs.
REVERT: b91e991bf8 Add nvcc support for small eigenvalues decompositions and workaround lack of support for std::swap and std::numeric_limits
REVERT: 191250d0b7 Removed unused testing files.
REVERT: 8ea76043bd Remove superfluous testing files (as changeset 5c4d6666125a but more complete)
REVERT: 797ca68617 Added a pattern which forces LF line endings for *.sh files.
REVERT: 4d2325f1f2 Backed out changeset: 5c4d6666125a
REVERT: 4885982e8f Removed unused test files.
REVERT: 8ff6074773 Disable some shortcuts with nvcc
REVERT: c2ea009b5b Enable support for minimal rebuilds.
REVERT: 913ee1a3fa MatrixFunctions: replace eval() by nested. This eliminates an unnecessary copy in some situations, e.g. Map.
REVERT: c979d7503c Extend support for nvcc to Array objects and wrappers
REVERT: b10f01e902 Merged in advanpix/eigen-mp-3.2 (pull request #29)
REVERT: b7d427fd7f Removed non-standard conforming (17.4.3.1.2/1) leading underscore.
REVERT: 575078e32a Quick fix in order to be custom-scalar friendly.
REVERT: 6930370bbc Removed 'T' prefix from types and thus fixed compilation for GCC.
REVERT: f9bc98d1a2 Bug 502: add bool intersects() methods to AlignedBox
REVERT: a3922292a7 Fixed constness in Array- and MatrixWrapper. This also fixes the compilation on VC11.
REVERT: 03847cfea3 Fixed dummy_precision evaluation.
REVERT: 34a09c1f2f Fix bug in MatrixFunctions for matrices with multiple eigenvalues. Store indices, not eigenvalues, in clusters. Bug was introduced in changeset a3c08a8.
REVERT: c0e69646f4 merge
REVERT: 784d7c60ee Fixed floating point warning. Fixed evaluation of matrix_exp_computeUV.
REVERT: 760d78c527 MatrixFunctions: Clean up StemFunction.h
REVERT: cb7d4d96ff Fixed VC11 compilation. The typedefs Lhs/Rhs in the base class are now accessible by derived classes.
REVERT: f4072e6a19 Merged simple geometry asserts.
REVERT: a87b7fb4be Clean up MatrixFunction and MatrixLogarithm.
REVERT: 0699cb1ef4 Clean-up of MatrixSquareRoot.
REVERT: 03fa54334f Clean-up of MatrixExponential: * put internal stuff in the internal namespace * replace member functions by free functions
REVERT: d19f5f2eb2 Merge in jdh8's branch. * Enable singular matrix power and complex exponents. * Eliminate unnecessary copying for sparse Kronecker product.
REVERT: b0a8758af6 Directly code failing example, or it breaks `make doc`.
REVERT: f9ddea7c5a Fix doc. (It is also used by computeFracPower)
REVERT: e0d869f88f Warn about power of a matrix with non-semisimple 0 eigenvalue.
REVERT: 4df052b0e8 Improve documentation on Kronecker product module.
REVERT: 06a0d0147f Document on MatrixExponential::ScalingOp
REVERT: b2d57cee0e Apply argument-dependent lookup on user-defined types. (using std::)
REVERT: db19302fd8 Optimize MatrixPower::computeIntPower
REVERT: c3694004fe Comment on private members of MatrixPower.
REVERT: fb52e92de7 Simplify MatrixPower::split
REVERT: e172b2703c Fix ICE with ICC 11
REVERT: 1b75c95ede Previous isFinite->hasNonFinite change was broken. After discussion let's rename it to allFinite
REVERT: be1372186f Fix bug 326 : expose tridiagonal eigensolver to end-users through ComputeFromTridiagonal()
REVERT: c59da02d41 Rename isFinite to hasNonFinite to avoid future naming collisions.
REVERT: b4c4c54bba merge with main branch
REVERT: e22045530b Bump default branch to 3.2.90
REVERT: cae0145f8b SparseLU: make COLAMDOrdering the default ordering method.
REVERT: cd0aeaf347 IncompleteLUT should not raise an assert in compute if factorize failed.
REVERT: fa04be40b3 Fix vompilation of bdcsvd with ICC.
REVERT: db8733e028 Fix testing issues with x87 extra precision.
REVERT: 5ddbbe350b avoid unneeded const_cast
REVERT: 3688d5151d Fix Sparse LU for matrices in non compressed mode
REVERT: 70a667b6cd Expose InnerSizeAtCompileTime in SparseMatrixBase (it was already present in DenseBase) and simplify sparse_vector_assign_selector (this also fix a stupid warning in old gcc versions)
REVERT: 8ca0ffefd6 Remove obsolete sentence on LPGL in MKL doc.
REVERT: bfd2af5292 Fix adjoint unit test: test_isApproxWithRef works for positive quantities only.
REVERT: 08532e7794 Add bdcsvd unit test in CMakeLists
REVERT: 76e1198247 Eliminate unnecessary copying for sparse Kronecker product.
REVERT: bbd8f4a6fe generateTestMatrix can use processTriangularMatrix
REVERT: cdace56b28 Test singular matrix power with square roots. Exponent laws are too unstable.
REVERT: 42dc3e16f1 SparseVector::assign: it is not always possible to reserve according to given non-zeros.
REVERT: 9c725f6d43 Fix typo in testSingular.
REVERT: 58957463b8 Add test3dRotation.
REVERT: 96f3e79a4b Rationalize assignment to sparse vectors
REVERT: abc138d77f Document on MatrixPowerAtomic.
REVERT: 09377e03ee Document on complex matrix power.
REVERT: bdd85824cd Document on the return type of MatrixPower::operator()
REVERT: f5046207aa Extend the "functions taking Eigen type" doc page to present the Ref<> option.
REVERT: 4ec3f8682c Stabilize eulerangle unit test.
REVERT: 40aa957e8c Fix various scalar type conversion warnings.
REVERT: 43029fa25a Relax slerp unit test
REVERT: 2af11179f2 Fix SparseMatrix::conservativeResize() when one dimension is null
REVERT: 0b9c195b53 Fix constness of diagonal() and transpose() for MSVC.
REVERT: 2e7ff0c379 Remove double const qualifier
REVERT: 3fa93d7eb3 Add no_assignment_operator to a few classes that must not be assigned, and fix a couple of warnings.
REVERT: b19c7ae0a4 Rename map unit test to mapped_matrix: without splitting unit tests, this created a "map" binary file in the include path, not a good idea!
REVERT: 7d1416a61f Revisit the implementation of random_default_impl for integer to make sure avoid overflows and compiler warnings.
REVERT: 4d3f898926 Make non-conversion unary constructors explicit.
REVERT: 1105bd4de0 The only(?) way to test complex matrix power.
REVERT: 537aa183e6 Test power of singular matrices.
REVERT: 2a342d6f09 These casts are unnecessary because isApprox already casts them.
REVERT: c3c9efb0b2 Remove unused struct definition in test.
REVERT: 3bb280b2fb Write doc for positive power of a matrix with a semisimple zero eigenvalue.
REVERT: 815a1f4f13 Write doc for complex power of a matrix.
REVERT: 60155166ef Add assertion against undefined matrix power.
REVERT: 7f46016db6 merge
REVERT: d6f78ecd6c Slightly optimize atanh2.
REVERT: 0fa4870fdf Ease setting build options when running ctest -D
REVERT: 5f620964cf We need not prohibit assignment here.  Thanks to changeset 7ab391e.
REVERT: 1263bf64ee Prevent copying with internal::noncopyable.
REVERT: dd9f69e858 Rationalize the use of Index type in iterators
REVERT: 7890045117 Use numeric_limits to get NaN and inf
REVERT: c06de70e67 ReturnByValue should not be assignable!
REVERT: 4233b5c26c Fix ambiguity from the origin of Index type in BlockImpl<Sparse>::InnerIterator
REVERT: faa015e45a Bug 63: add lapack unit tests. They are automatically downloaded and configured if EIGEN_ENABLE_LAPACK_TESTS is ON.
REVERT: 3a57de4e50 Bug 556: workaround mingw bug with -O3 or -fipa-cp-clone
REVERT: 10b84bc113 Fix bug 611: diag * sparse * diag
REVERT: 73cc3d3478 Const-correct the scaling functor.
REVERT: d0405fd7a8 Fix a couple of warnings in unit tests.
REVERT: 692b7fbeab Use true compile-time branching in SparseVector::assign to handle automatic transposition.
REVERT: acd027e9e9 Avoid pow(Scalar, int) for C++11 conformance.
REVERT: 1a20f28954 Let complex power fall back to "log, scale, exp".
REVERT: 59974ee4b2 Remove unused declarations for MatrixPowerProduct.
REVERT: bd919927c2 Fix unresolved typename bug for MSVC
REVERT: 052dae2e86 Remove unused inclusions.
REVERT: bcfd1c5bb8 Enable singular matrix power using unitary similarities.
REVERT: 6b87f8ac9a Fix bug in sparse documentation.
REVERT: e13655793e Simplify class hierarchy.
REVERT: 69d36fee4e Remove unreachable MatrixPowerTriangular, paving the way to future cleanups.
REVERT: 434ef4a073 Add missing namespace prefix in pconj
REVERT: 2c08464f0d Fix some doxygen errors and warnings.
REVERT: 352fe39267 doc: Mention vec=vec.head(n) in aliasing page.
REVERT: 2a4b073743 Fix bicgstab for complexes, and avoid a duplicate computation
REVERT: 28554e63d6 It's better to check that eigen_assert does raise an assert rather than testing the definition of NDEBUG
REVERT: 137caa98bd On windows CE, assert.h defines NDEBUG if DEBUG is not defined
REVERT: e96c30f61d Improve BiCGSTAB robustness: fix a divide by zero and allow to restart with a new initial residual reference.
REVERT: 38c7958831 Add missing sparse matrix constructor from sparse self-adjoint views, and add documentation for sparse time selfadjoint matrix
REVERT: c1ac98f3b0 Fiw bug 553: add support for sparse matrix time sparse self-adjoint view products
REVERT: 2d60bf5b94 Fix bug 611: fix const qualifier in cwiseProduct(sparse,dense) and SparseDiagonalProduct::InnerIterator
REVERT: 727cb5e746 Fix bug 626: add assertion on input ranges for coeff* and insert members for sparse objects
REVERT: 5644ee7f35 Bug 626: add compiletime check of the Options template parameter of SparseMatrix and SparseVector. Fix eval and plain_object for sparse objects.
REVERT: 22c171182f Fix bug 623: inlining test_is_equal leads to failures with x87
REVERT: 766673c1cd Fix bug 554: include unistd.h before checking the presence of posix_memalign.
REVERT: 732075a0d0 Merged in jdh8/eigen (pull request #27): Matrix power cleanup
REVERT: 0b9efc5ddf Introduce a TEST_SET_BUT_UNUSED_VARIABLE macro for initialized but unused variables in the unit tests and also fix a few other warnings.
REVERT: 5052db6b16 Workarounf nvcc not being able to find RowMajor when declaring a Matrix<...> inside another namespace.
REVERT: 8dbba2fcf9 Clean namespace pollution.
REVERT: aa80418436 Matrix square root can process 0 eigenvalue.
REVERT: 8e18f26311 Remove mat.pow * vec specialization, which causes segfault for mat.pow * mat.pow
REVERT: 5cd65e4f10 fix casting from double* to void* in SuperLU and Cholmod support
REVERT: 629548c7ba Fix segfault and bug with equal eivals in matrix power (bug 614).
REVERT: 534f1aaede CwiseUnaryView should not inherit no_assignment_operator!
REVERT: 90e8695e77 fix compilation of ArrayBase::transposeInPlace
REVERT: 4cee7f12de fix compilation of ArrayBase::transposeInPlace
REVERT: 487c5a92b4 Bug 620: fix robustness issue in JacobiSVD::solve (also fix a perf. issue)
REVERT: b9b4987a69 Workaround a bunch of stupid warnings in unit tests
REVERT: 85892a8386 Fix bug 590: NEON Duplicate lane load
REVERT: 1b18a57dd1 that's getting harder and harder to make ICC, GCC and clang all happy: one wants type_name to be static and if it is so then the other one triggers 'unused function' warnings -> a forward declaration seems to do the trick
REVERT: a627aacebd explicit template specialization cannot have a storage class
REVERT: e4872a6d5c Fix an shut down a few ICC's remarks
REVERT: f7589e3d52 Fix a couple of warnings
REVERT: 882477c3f5 Disable ASM comments on non x86 architecture and do not redfine if EIGEN_ASM_COMMENT is already defined
REVERT: 1337e11a6f Add missing using std::pow in lpNorm.
REVERT: 6934656e8b Fix warning typedef XXX locally defined but not used
REVERT: ea084d2bfe Shutdown clang warning: argument unused during compilation: '-ansi' at linking time
REVERT: dc15930903 Reduce maximum number of warnings/errors. (they took GBs even for limited period of time)
REVERT: 76aa6ec293 new unsupported and not finished SVD, using a divide and conquert algorithm, with tests and benchmark
REVERT: b7258ad725 Bug 71: enable vectorization of diagonal products in more cases.
REVERT: ff4b30269a Fix bug 542: fix detection of compiler version on systems without the head command.
REVERT: 1280a17d66 Avoid phrase "static allocation" for local storage on stack (bug 615).
REVERT: 3042e6a8ed Implement mixed static/dynamic-size .block() (bug 579)
REVERT: ce87228595 Bug 230, fix compilation issues and wrong static assertions
REVERT: d9555a5ff2 Fix compilation issue with some compilers (when doing using Base::foo;, foo must be visible in the direct base class)
REVERT: d396db91ba Require at least cmake version 2.8.2 (bug 606).
REVERT: 854e7e3303 Merged in RhysU/eigen//fix-documentation-typo-1371479301909 (pull request #25)
REVERT: fc7fe5dcea Fix documentation typo
REVERT: 05f7767bb5 Fix HouseholderSequence::conjugate() and ::adjoint() and add respective unit tests.
REVERT: b9395c0559 Make psqrt works with numeric_limits<float>::min
REVERT: bd380787fe Extend sparse-block unit test to explicitly cover bug 584
REVERT: 1ac345c9c4 Fix bug 613: psqrt was incorrect for small numbers
REVERT: 7c4f2acd0b Extend the magnitude range of tested numbers in packet math unit tests
REVERT: e47ce7494c Fix copy constructor signature
REVERT: d854036b7e Add missing changes.
REVERT: ac7121241d Remove meaningless explicit qualifier
REVERT: 74b98c000d Suppress warning #2304: non-explicit constructor with single argument may cause implicit type conversion
REVERT: 19f0389325 compilation fixes in unsupported
REVERT: 9ff05befc7 Fix sparse_basic unit test conflict
REVERT: 38a5056de8 Fix bug 314: move remaining math functions from internal to numext namespace
REVERT: e1e01ec3ab Complete the lapack interface to make it complete enough for suitesparse QR.
REVERT: f8d5bb35dd Improve SuiteSparse cmake scripts
REVERT: 2413a89f58 Fix implicit conversion warnings
REVERT: d33fe4f06d Fix warning: explicitely initialize all member of IOFormat
REVERT: 0d5226b72f Add default value for IsRepeatable in functor_traits
REVERT: 00f97999b3 Add missing dependency in SparseSholesky header
REVERT: 9232d7e6a0 Fix bug in SparseLU dfs for dense matrices
REVERT: 3583f17ea3 Fix bug 588 : Compute a determinant using SparseLU
REVERT: e089c64a53 Add support with unit test for off-diagonal sparse matrix views
REVERT: 742712d25d Restore internal math functions for unit tests
REVERT: f2863ef4fc Fix bug 583: add compile-time check that DenseIndex is signed
REVERT: 71b694185e Fix bug 591: minor optimization in NEON vectorization support
REVERT: fe2c15849f Fix bug 595: typo
REVERT: 47ed8220c9 fix bug 597: typo in sparse documentation
REVERT: 5f398682ef Fix bug 598: add explicit cast to Scalar type
REVERT: 5f0aff7a1e Fix bug 599: add missing documentation of some members in QR module.
REVERT: 678a6f254f HouseholderSequence should expose standard enums (Rows/Cols, etc.))
REVERT: 839c9d5a7e Check sparse matrices with short indices
REVERT: 44a3560676 Simplify and generalize assign_selector logic
REVERT: 1dd1e0a275 Fix bug 605: ambiguous call to std::min when calling .diagonal() on a sparse matrix with non default index type
REVERT: fd0b9034e3 Fix bug 607: handle implicit transposition from sparse vector to dense vector
REVERT: 4d2336334a Add regression test for bug 608
REVERT: 3cfc7976e6 Fix bug 608: the sign computation in LDLT was broken
REVERT: aefcf351e3 Fix bug 609: avoid if statement and improve consistency of eulerAngles method
REVERT: e5f51fce7d fix unused variable warning
REVERT: d40d247c9f Add nvcc support for normalize, initializers, and fuzzy comparisons
REVERT: 8aed0852b8 Add missing pconj specializations
REVERT: f3fd4ef5b3 fix a weird typo I commited in 950d01faf9d5 (Nov 10th, 2009)
REVERT: 495fe8d95d Include misc struct declarations
REVERT: d0ee00f7a2 Delete unneeded resize in SparseQR
REVERT: cb0e570bb4 Optimize Sparse setIdentity and add a unit test
REVERT: 3069e1b0a7 Fix bug 596 : Recover plain SparseMatrix from SparseQR matrixQ()
REVERT: e9c42ab72f Fix return type of TriangularView::ReverseInnerIterator::operator++
REVERT: feb4adf2c7 Fix A=A with A a SparseMatrix
REVERT: 9c16361e99 Disallow implicit scalar conversion of SparseMatrix
REVERT: e8b5b33209 Fix non const data() member in Array and Matrix wrappers.
REVERT: 8e242da058 Added asserts to AngleAxis class which verify that the initial axis is normalized.
REVERT: d29d4d19fc Adapted settings for the eol extension.
REVERT: 92937b9101 Add support in SparseLU to solve with L and U factors independently
REVERT: cad5f123a9 Set back the default ordering method in SPQR support
REVERT: 1edf6cc7fe fix memory leak from Cholmod data in SPQR support
REVERT: ed34c15300 Add missing support for x.noalias() = ReturnByValue<...>
REVERT: 6614310564 Fix setFromTripplet with empty inputs
REVERT: 0d9a7a0fa3 document the evaluation order of the comma initializer
REVERT: f3d3cf3bde merge with default branch
REVERT: fbac165599 actually assertion are incompatible with nvcc even on host code
REVERT: cd75b07f8e Add a few missing standard functions for ScalarWithExceptions type.
REVERT: 977a2e3c07 Disable "operands are evaluated in unspecified order" ICC's remark
REVERT: b37b437ee5 Extend internal doc of ploaddup and palign
REVERT: b45ac0591e Big 564: add hasNaN and isFinite members
REVERT: 0311cca2fd Fix a bug in Supernodal Matrix Iterator
REVERT: 88e257c30e Fix ICC warning when defining both -ansi and -strict-ansi
REVERT: a7990985aa Fix bug 482: pass scalar value by const reference (it remained a few cases)
REVERT: ef405b8a8a generalize testing flags to clang and ICC
REVERT: eb1195cbbd Fix bug 563: assignement to Block<SparseMatrix> is now allowed on non-compressed matrices
REVERT: bfe2bb8976 Enable SSE with ICC even when it mimics a gcc version lower than 4.2
REVERT: 1d70a3d5b7 workaround strange compilation issue with ICC and -strict-ansi
REVERT: f7a95aa298 Add temporary check for triangularView += product
REVERT: be4df78d1e Clean source code and unit tests with respect to -Wunused-local-typedefs
REVERT: 01c59106e1 Fix a serious bug in handmade_aligned_realloc: original data have to be moved if the alignment offset differs.
REVERT: b2ba85aa51 Fix missuse of unitialized values in unit tests
REVERT: c59bc5403e Remove a useless variable in blueNorm
REVERT: 5759c36f5b Bug 564: document the fact that minCoeff/maxCoeff members have undefined behavior if the matrix contains NaN.
REVERT: f3e127bcbe Fix bug 562: add vector-wise normalized and normalize functions
REVERT: f698178318 Fix a couple of int versus Index issues.
REVERT: 525afb7ed6 Add missing epsilon/dummy_precision function in NumTraits<Array>
REVERT: d11131157c Fix bug 581: remove useless piece of code is blueNorm
REVERT: 057029a042 Replace int by Index
REVERT: 5732809bc8 Port SelfCwiseBinaryOp and Dot.h to nvcc, fix portability issue with std::min/max
REVERT: 55e232b62c Fixing Bug 578. Thanks to Angelos <filiatra@gmail.com>
REVERT: f9c3246453 elif/elseif typo
REVERT: fed0c3ac35 Fix warning: implicit conversion loses integer precision in SparseMatrix. No need to use std::ptrdiff_t instead of Index since this later is requested to be signed.
REVERT: 26b7223560 adapt AutoDiff to scalar_product_traits
REVERT: c18a843887 Allow multiplication like binary operators to be applied on type couples supported by scalar_product_traits
REVERT: 90c17f5a69 Add complex support to dgmres and the unit test
REVERT: 996afda9c1 Add SSE4 min/max for integers
REVERT: 31b7bdd9df Bug567 : Fix iterative solvers to immediately return when the initial guess is the true solution and for trivial solution
REVERT: 8ae64f1a01 Use a template Index for COLAMD ordering
REVERT: 9850d05ed7 Handle zero right hand side in CG and GMRES
REVERT: 7059037d3f Add Official/Unsupported labels to unit tests and add a ctest driver to submit subprojects to cdash
REVERT: e3f47328e4 fix a weird bug where a space was missing before a link
REVERT: 462cf73773 fixes http://eigen.tuxfamily.org/bz/show_bug.cgi?id=568 (files from previous build were kept on the server, with outdated/garbled information)
REVERT: d6ca347f64 Make cpuid not use %%esi -> dangerous if someone is using it.
REVERT: e4b353d9ed Fix bug 566: rbx register has to be saved when calling cpuid on x84_64 with -fPIC and medium or large code models.
REVERT: a5c98cb262 Forward compiler flags to Fortran workaround
REVERT: 2e6350e00f Patch by Kolja Brix <brix@igpm.rwth-aachen.de> that fixes Bug 565 and adds a testcase to verify that.
REVERT: c8ad874929 Include SparseLU and SparseQR
REVERT: fb9c76d4a2 Update matlab-eigen quick ascii reff
REVERT: f1253306ba Bug 563 : Sparse block assignments should be called on compressed matrices. Uncompressed matrices will be supported later
REVERT: 00f287360a Relax tolerances in matrix_power tests to avoid intermittent failures.
REVERT: 1bb85776ee Handle special case in atanh2(x,y) when y = 0. This fixes matrix_power unit test on clang.
REVERT: 25deb61fe5 Fix bug 561: remove useless sign macro
REVERT: a069f67af7 Added tag 3.2-beta1 for changeset da195914abcc
REVERT: 430f1b9f64 bump to 3.2-beta1 (3.1.91)
REVERT: d707975889 Fix bug in SparseLU kernel for 32bits indices
REVERT: f4ee58d081 fix sparse vector assignment from a sparse matrix
REVERT: f02388b542 Fix mismatched free/delete
REVERT: c6b7a81724 Update doc for the sparse module
REVERT: 22e037afdf Fix overlaping operands when calling memcpy
REVERT: acde91d71c Do not globally disable stupid warnings in our unit test since such warnings do affect user code.
REVERT: fbc4f88334 Fix a couple of remaining warnings (missing newlines, inline-noinline, meaningless type qualifiers)
REVERT: bc0e6f9d96 Fix "missing return statement at end of non-void function"
REVERT: 6689177402 Update to latest mpreal.
REVERT: d82154b6b9 Remove assumption on RowMajorBit==RowMajor and ColMajor==0
REVERT: 82aa4dbb5e Add missing template keyword in evaluators
REVERT: b6a8dc3af8 Add missing template keyword
REVERT: 2590347174 Fix "explicit instantiation of 'Eigen::Spline' must occur in namespace 'Eigen'" warnings
REVERT: 890f0ab672 Fix "routine is both "inline" and "noinline"" warnings
REVERT: 78448e0f40 Fix "type qualifiers are meaningless here" warnings
REVERT: 31c402c439 Fix "storage class is not first" warnings
REVERT: d883613ef1 Prevent calling .norm() on integer matrices in the unit tests.
REVERT: f5c52686b3 MSVC fix; the compiler failed to detect the correct overload.
REVERT: eb45732f9e Fixed compiler warning.
REVERT: 8b11082037 MSVC fix; the base class typedef shadowed the local template parameter.
REVERT: 1d03780897 The ref unit test cannot be easily written to work with EIGEN_DEFAULT_TO_ROW_MAJOR
REVERT: befa483842 Fixed MSVC dashboard (Experimental/Continuous) build scripts.
REVERT: 857913bb6d Fix two numerical issues in unit tests.
REVERT: c358ce04f1 Remove ICC warning in nomalloc unit test.
REVERT: 405ae0d54d Fix compilation with ICC that was unable to instanciate Scaling from Eigen's namespace.
REVERT: cf0e899756 Fix compilation with ICC that was unable to instanciate first_aligned
REVERT: 9f50acad7d Add a unit test for Ref.h and fix an extra copy.
REVERT: 54f7557559 Fix computation of outer-stride when calling .real() or .imag()
REVERT: d836a13586 Add the possibility to define a custom build-string suffix
REVERT: 816a450d5d workaround "may be used uninitialized in this function" warning
REVERT: 582cee63c5 Add assertion on the input matrix size in factorizations relying on permutations of 32bits int
REVERT: 3a5b447f76 Workaround warning: assuming signed overflow does not occur when...
REVERT: 4cb0a01d19 Fix no newline warning.
REVERT: 5e189b9319 Fix bug 552: disable EIGEN_GLIBC_MALLOC_ALREADY_ALIGNED when compiling with -fsanitize=address, and allow users to manually tell whether EIGEN_MALLOC_ALREADY_ALIGNED.
REVERT: ee75d36775 bug 482: pass scalar arguments by const references. Still remains a few cases that might affect the ABI (see the bug entry)
REVERT: 13f5123717 Add reference for the default threshold in sparse QR
REVERT: 5b7b2e6096 Fix the computation of the default pivot  threshold for sparse QR
REVERT: 2ec098b548 Fix bug 483: optimize outer-products to skip setZero and a scalar multiple when not needed.
REVERT: 8874691f45 conservative_resize unit test was executed only once
REVERT: 101d6aef3c Output random generator seed in case of failure so that we have it in CDash.
REVERT: 8839a62d8b Fix segfault in SparseBlock::InnerIterator
REVERT: fba8f78d49 Remove erroneously committed debugging stuff.
REVERT: 873e2ed535 Fix visitor unit test.
REVERT: 3b443827f3 Fix bug 496: generalize internal rank1_update implementation to accept uplo(A) += v * w and make A.triangularView() += v * w uses it. Update unit tests and blas interface respectively.
REVERT: 431ef75735 Remove superfluous cast.
REVERT: 3c92dff7d9 Extend sparseqr unit test to check linearly dependent columns
REVERT: 57991a2aca Cleaning pass on SparseQR
REVERT: d08a306d1a Fix another issue related to summing up many signed values.
REVERT: 15fa17f136 Fix array unit test: isApprox(log(0),log(0)) is false, and summing up signed float value might result in very small values and thus large numerical errors
REVERT: 7bb68171c9 Avoid problematic ternary operator (http://forum.kde.org/viewtopic.php?f=74&t=109486)
REVERT: ae78b59035 Fix EIGEN_INITIALIZE_MATRICES_BY_NAN.
REVERT: ba55bfa147 remove double parenthesis
REVERT: 3c95804c50 SparseLU does not accept row-major matrices for the destination.
REVERT: 98e599912e Protect min with parenthesis in IncompleteLLT
REVERT: 63353b1860 NVCC: EIGEN_NO_DEBUG must be defined before including Macro.h
REVERT: 4b98bf1670 Clarify the doc for column-pivoting QR
REVERT: 4a834b8de8 Make it compile without nvcc
REVERT: 8caee77989 Guard against transposeInPlace on non-square non-resizable matrix. Inspired by question by Martin Drozdik at stackoverflow.com/q/14954983
REVERT: dca3185153 Be more explicit about user-defined functions in Map tutorial. See discussion on mailing list on 18 + 19 Feb 2013.
REVERT: 3b5113325e Set built-in sparse QR as the default sparse solver  and add ComputationInfo for Levenberg Marquardt,
REVERT: ff7bb58d0e Add setPivotThreshold to Sparse QR
REVERT: 17b1d2c895 Correct the SPQR backend for rank-deficient matrices and delete some public functions
REVERT: 904ccaafd1 Add matrixR() to get the triangular factor from the Householder QR
REVERT: 386e97ddb4 Metis ordering backend supports only squared matrices
REVERT: aa4134d09b Remove confusing transpose() in setLinSpaced() docs.
REVERT: 21b532fbe9 Fix linear vectorized transversal in linspace (fixes bug 526).
REVERT: 8e42a68416 Add a rank-revealing feature to sparse QR
REVERT: e75d455799 Fix the following warning: "comparison between signed and unsigned integer expressions"
REVERT: 77e701d4d3 Workaround the following warning: "assuming signed overflow does not occur when assuming that (X + c) < X is always false"
REVERT: e1cce2ca82 Fix some unused or not initialized related warnings.
REVERT: 24211c4eab "-Wno-psabi" option is not supported by all gcc version.
REVERT: cf49886e3e Fix SSE plog<float> to return -INF on 0
REVERT: f017f0b69f Remove the following note made by gcc: "The ABI of passing structure with complex float member has changed in GCC 4.4"
REVERT: c2e33ad2fd Add missing using std::sqrt
REVERT: 87d7fa0be6 Update adjoint unit test to avoid instantiating sqrt(int)
REVERT: e68fb08d35 Update basicstuff unit test to avoid instantiating the ambiguous sqrt(int)
REVERT: 7a00255343 Fix some implicit int64 to int conversion warnings. However, the real issue is that PermutationMatrix mixes the type of the stored indices and the "Index" type used for the sizes, coeff indices, etc., which should be DenseIndex. (transplanted from eae4abe46e5b454adfad59f9894f340594c1b9b7)
REVERT: 14467e1589 Fix bug in aligned_free with windows CE
REVERT: 85003d6525 Fix bug 544: assertion in JacobiSVD when compiling with EIGEN_NO_AUTOMATIC_RESIZING
REVERT: ddda7fe332 Fix bug 551: compilation issue when using EIGEN_DEFAULT_DENSE_INDEX_TYPE
REVERT: c0dad88995 Add support for NVCC5: most of the Core and part of LU are callable from CUDA code. Still a lot to do.
REVERT: 37b98ba469 add EIGEN_INITIALIZE_MATRICES_BY_NAN
REVERT: b547cc5d50 Add missing operator= in RefBase
REVERT: 1ac858c7fe Add missing data member function in CwiseUnaryView
REVERT: 09b2c04a19 Fix some MPL2/LGPL lisencing confusions
REVERT: bc490b5a6a Replace assert() by eigen_assert() (fixes bug 548).
REVERT: d0ed833c22 Correct bug in SPQR backend and replace matrixQR by matrixR
REVERT: a5e440867f Change int to Index type for SparseLU
REVERT: 9bcb4958f5 Added missing using std::sqrt.
REVERT: e2689ad1a0 Added Visual Studio 2012 debug visualizers.
REVERT: 895ffec87c Add additional methods in SparseLU and Improve the naming conventions
REVERT: 053d70f8e8 Merged local branch with main trunk
REVERT: 70916294e8 add support for solving with sparse right hand side
REVERT: 2ce213c3c6 Suppress annoying "may be used uninitialized in this function" warning with gcc >= 4.6
REVERT: df168c4669 Check that NeedsToAlign is properly sets before checking alignment
REVERT: 5cac611c63 Remove dummy code in MPRealSupport
REVERT: 07aef45bea Relax a bit the precision in mpreal unit test.
REVERT: fafb80bc11 Specialize GEBP traits and kernel for mpreal to by-pass mpreal and remove the costly creation of many temporaries.
REVERT: f7e7d2d4fc Workaround "error: floating-point literal cannot appear in a constant-expression" in mpreal.h when compiling with predantic. (I really don't know how to properly fix this))
REVERT: b64368eeb3 Fix SparseLU special gemm kernel on 32 bits system w/o SSE
REVERT: 62d870326b remove dummy code in ColPivHouseholderQR::solve
REVERT: 0be06ee584 Workaround gcc-4.7 bug #53900 (too aggressive optimization in our alignment check)
REVERT: 8f0c5e0e6e Recent UMFPACK library requires to link to libSuiteSparse
REVERT: 45321766ae Fix test for Metis
REVERT: 6fe186e3e4 Fix documentation for SparseLU
REVERT: 04ac0c5769 Documentation for the ordering methods
REVERT: 3115d3275a Test for the sparse Blue norm
REVERT: 70d298f3c8 Unit test for the Metis Ordering package
REVERT: 09c899c17e Fix traits of Map<Quaternion>, and respectively extend the unit tests
REVERT: 8ce922e20a Some minor documentation fixes in Quaternion
REVERT: dd89024633 I think it's OK to let XprHelper.h determine the nested type.
REVERT: 39e2d09af5 Remove unused typedef (traits<MatrixPowerProduct>::PlainObject) for brevity.
REVERT: b48722e175 Simplify traits<MatrixPowerProduct>: StorageKind must be Dense because MatrixPowerProduct is derived from MatrixBase.
REVERT: 3db5c6c8ca Use the nested type instead of const reference
REVERT: 7c68d248b8 Just tidy up: no need to specify template parameters inside class body.
REVERT: 681e5e2922 Make MatrixPowerTriangularAtomic::computePade static because it should be.
REVERT: 299f9af396 Use simplified return type, trying to work around MSVC.
REVERT: 46f084dd9c Make use of TRMM (speed up), and remove useless condition (the triangular don't need LU)
REVERT: f159b08d1e Make better decision on PartialPivLU vs inverse(): We have specialized inverse() only for FIXED matrices.
REVERT: e9576e5193 Add test for real MatrixPowerTriangular.
REVERT: 21d8e4ac53 Avoid Schur decomposition on (quasi-)triangular matrices. (Huge speed up!)
REVERT: e1493467d5 Implement complex MatrixPowerTriangular. There are still problems with real one.
REVERT: 295b2a13fa Move the definition of DenseBase::InnerIterator to Core module. (needed to make blueNorm generic)
REVERT: e3b34eb5ce Delete unused variable in SparseLU
REVERT: 703db93643 Move SparseColEtree common to SparseLU and SparseQR to SparseCore and fix build issue of sparseqr
REVERT: 1c2a19ca35 Fix the column permutation in SparseQR
REVERT: 63b72d2e8a Remove TOC numbering, and minor improvement in overview.
REVERT: aa7af8a715 Fix bug 540: SelfAdjointEigenSolver improperly used the upper triangular part to extract the scaling factor.
REVERT: e2b156320d Cleaning documentation pass in ordering and ILUT
REVERT: ff111dc36b Clean inclusion, namespace definition, and documentation of SparseLU
REVERT: 94b9fea802 SparseQR: clean a bit the documentation, fix rows/cols methods, remove rowsQ methods and rename matrixQR to matrixR.
REVERT: 33482b5264 Fix installation path of SparseQR
REVERT: 9edc1deae5 Pass a const matrix to sparseQR
REVERT: 98e455f87d Add support for Schur decomposition of matrices in Hessenberg form
REVERT: 436e36fdcf Add support for sparse blueNorm
REVERT: 9acf07f3ad Add a sparse QR factorization and update the elimination tree in SparseLU
REVERT: e2442a1943 Make the MatrixFunctions documentation page looks a bit better
REVERT: f289aff177 update unsupported module documentation to be conformed with new documentation style
REVERT: 0a4910e647 remove the 'Unsupported Modules' meta module
REVERT: f30f595d06 typos
REVERT: 0bcfeb2cf6 update javascript hacks for doxygen 1.8.3
REVERT: 8ad09a7ab4 Rename the dox files: the number prefixes are not needed anymore
REVERT: 5aa6b9e78c Clean the manual page titles, links and intro.
REVERT: 080638e29c fix typo
REVERT: bd0a9ed46a Check that minCoeff(int*)/maxCoeff(int*) always pick the first entry in case of multiple extrema.
REVERT: 24f8b368e4 Fix _data() versus data() issue in SparseVector, and add a Storage typedef just like SparseMatrix.
REVERT: 137066391d Update the overview page to reflect the new organisation
REVERT: 1639ec9bc0 Doc presentation:  - remove the "modules|classes" link for module pages (they are already in the TOC)  - fine tune the TOC css
REVERT: f9ead47664 Big changes in Eigen documentation: - Organize the documentation into "chapters".   - Each chapter include many documentation pages, reference pages organized as modules, and a quick reference page.   - The "Chapters" tree is created using the defgroup/ingroup mechanism, even for the documentation pages (i.e., .dox files for which I added an \eigenManualPage macro that we can switch between \page or \defgroup ).   - Add a "General topics" entry for all pages that do not fit well in the previous "chapters".   - The highlevel struture is managed by a new eigendoxy_layout.xml file. - remove the "index" and quite useless pages (namespace list, class hierarchy, member list, file list, etc.) - add the javascript search-engine. - add the "treeview" panel. - remove \tableofcontents (replace them by a custom \eigenAutoToc macro to be able to easily re-enable if needed). - add javascript to automatically generate a TOC from the h1/h2 tags of the current page, and put the TOC in the left side panel. - overload various javascript function generated by doxygen to:   - remove the root of the treeview   - remove links to section/subsection from the treeview   - automatically expand the "Chapters" section   - automatically expand the current section   - adjust the height of the treeview to take into account the TOC - always use the default .css file, eigendoxy.css now only includes our modifications - use Doxyfile to specify our logo - remove cross references to unsupported modules (temporarily)
REVERT: e3363d4844 Set matrix to zero before inserting entries (partially fixes bug 539).
REVERT: c86bf20eb1 Make KroneckerProductSparse inherit EigenBase instead of SparseMatrixBase, for it does not provide an InnerIterator.
REVERT: d34b386784 Fix compile error caused by incomplete SparseMatrixBase.
REVERT: 33b2301211 Let KroneckerProduct inherit ReturnByValue to eliminate temporary evaluation. It's uncommon to store the product back to one of the operands.
REVERT: 7536b073a7 Add doc for KroneckerProductSparse.
REVERT: 7f00b2664a Make kroneckerProduct take two arguments and return an expression, which is more straight-forward.
REVERT: c6ff80eade KroneckerProduct: we have const_cast_derived so why not use it?
REVERT: 8244f552a2 Remove #include of removed header file.
REVERT: 6cc1b6cd28 Remove useless empty file.
REVERT: ec5b16b5c1 Doc: replace manual TOC by doxygen's \tableofcontents command
REVERT: da3416a334 Doc: remove page margins and limits to 60em paragraphes only instaead of the entire page (many declarations and tables are larger than 60em anyway)
REVERT: 1b27fab712 Update doxygen files to doxygen version 1.8
REVERT: 15da2582dd Fix several documentation issues
REVERT: dbee13f655 Fix MSVC compilation: std::log was not accessible.
REVERT: 4b581f5304 Make sure sqrt and the likes are not compiled for integer type in cwiseop unit test.
REVERT: f2851e392a Fix Bug 507: Mark variable as unused in NDEBUG case
REVERT: 55068a82f3 Merge with 2bd8e480a2b66915e89e78f5e57a6653f399b02a
REVERT: ed006e9780 replaced compiler specific __attribute__((noinline)) by EIGEN_DONT_INLINE
REVERT: 5518b752f7 Fix Bug 531: Empty line in <table> made doxygen render it as paragraphs
REVERT: 140959de8f updated geometry benchmark to handle additional cases
REVERT: d5d32c024f added benchmark for test vectorization in geometry package
REVERT: 3a76a765ba Fix bug 534: rm useless initialization of rowSpacer.
REVERT: cc3840270d Fix bug 535: unused variable warnings
REVERT: e134dd2dae Fix compilation of Block/SparseBlock with MSVC
REVERT: 713e691386 Add arpack support module file
REVERT: e4104eb878 Added ARPACK support for standard and generalized eigenvalue problems. Currently self-adjoint only.
REVERT: 711870c23c Move work in progress Levenberg Marquardt module in unsupported
REVERT: c0829fd1b2 Add missing minpack copyrights/license. Fix LM header files and credits original MINPACK authors. Move minimizeOneStep code into its own file to get it more properly credited.
REVERT: 0ff6b58c89 Backed out changeset 348b72970013
REVERT: a1664a0237 Rename the old LevenbergMarquardt class to LevenbergMarquardtLegacy Split the levenberg marquardt test and the hybrid nonlinear test
REVERT: d5aaf991de Add tests for dense and sparse levenberg-Marquardt
REVERT: 728ca671b0 Move the Levenberg Marquardt to the supported branch Add support for sparse computations... need SPQR module.
REVERT: 4fee6b270a Fix Incomplete Cholesky factorization. Stable but need iterative robust shift
REVERT: b6904be66c Update SPQR interface
REVERT: ac7d74910a Fixed mpreal for IA64 architectures
REVERT: 19d0c30700 fix geometry tutorial
REVERT: ed95802b08 Update SPQR module for Sparse LM
REVERT: 83a1ecf777 ReverseInnerIterator for SparseBlock
REVERT: daef0987e7 Move VectorBlock methods into plugin section
REVERT: 62a93e99c0 remove deprecated InnerVectorSet for the deprecated DynamicSparseMatrix class
REVERT: cbe09fff9c Remove Sparse/InnerVectorSet expression in favor of a more general Block<> specialization for Sparse expression. The specializations for "InnerPanels" are still preserved for efficiency reasons and because they offer additional usefull features.
REVERT: 3c766a9c3e Generalize Block<> to support various implementation wrt StorageKind (just like other expression)
REVERT: 7e799734f5 plugin header files can be included more than once
REVERT: 54f7a19191 Improve the IncompleteLLT ... not yet robust
REVERT: 2acc09dc79 Add more useful functions to SPQR interface
REVERT: 74ec7f7233 Add support for Sparse QR factorization
REVERT: 049eee524a Add restarted GMRES with deflation
REVERT: 0611d5ab52 Fix bug 314: - remove most of the metaprogramming kung fu in MathFunctions.h (only keep functions that differs from the std) - remove the overloads for array expression that were in the std namespace
REVERT: 685bb6f0cc Fix FindUmfpack when specifying manually the related cmake variables.
REVERT: 77f87269b6 Disable opengl demo if Qt4 or OpenGL cannot be found. (transplanted from d2657addc177e98abb860ecdbba97c1a092a6e7a)
REVERT: 45933df5e0 add first_multiple helper function
REVERT: 256a07cb4c SparseLU: remove the "snode" path which appears to bring nearly zero speedup
REVERT: 1528f73390 add missing copyright
REVERT: 990b7d4021 SparseLU: add a specialized gemm kernel, and add padding to the supernodes such that supernodes columns are all properly aligned
REVERT: 06ccfb3d11 Fix build error in matrixfunctions on MSVC
REVERT: cb0c966e43 fix bug 524: Pardiso's parameter array does not have to be aligned!
REVERT: d152c4c310 fix bug 521: __cpuidex is not available on all architectures supported by MSVC
REVERT: a3d24cce32 Windows CE does not provide an aligned_malloc function.
REVERT: 821c5eb14d Fix bug 519: AlignedBox::dim() was wrong for dynamic dimensions
REVERT: 9a9e413b04 Fixed gcc warnings, John Westwood name and round_style function
REVERT: 087c7cc383 Updated multiprecision module to support the most recent version of MPFR C++
REVERT: 5bf0f69072 the repeated solves are already present in check_sparse_solving()
REVERT: a7b42fe60f MINRES solver
REVERT: dfa22b8fdb Discard failing tests in NonlinearOptimization
REVERT: d7f51d8cee Use Ref instead of VectorBlock
REVERT: 0d61d0d23f RealShur for a already Hessenberg matrix
REVERT: 59c56b05e2 fix comma initializer when inserting empty matrices
REVERT: 8a763ff296 bug 517 : Small typo in AsciiQuickReference
REVERT: a4d55f452f fix dense=sparse*diagonal (there was an issue in the values returned by the .outer() function of the related iterators)
REVERT: b924fa9245 extend unit tests to check rectangular matrices for sparse*diagonal products
REVERT: 57714ff1f3 add an assertion when inserting an already existing element
REVERT: 69c68fc681 spd test instead of square test. Still missing complex version of MINRES.
REVERT: ff8a9e0335 Merge
REVERT: ad0686b25e Make testExponentLaws in matrix_power quiet. It was too noisy.
REVERT: e31df32f21 Avoid memory manipulation for simplicity, efficiency, and safety.
REVERT: 0e028237c5 Abort the extension. MatrixSquareRootTriangular only takes upper triangular matrices.
REVERT: bdfc13b914 Extend MatrixPowerTriangularAtomic for future implementation for triangular matrix power.
REVERT: e47a8b94ee MSVC needs parentheses around min and max
REVERT: 322abca931 compiling (but failing) unit test
REVERT: 617ae83ace old gcc versions do not have immintrin.h file...
REVERT: 1d9070e659 Fix doc and tidy up
REVERT: f05cfd37fe Fix Build error on MSVC
REVERT: 74e836579c Add forgotten SparseLUBase
REVERT: 82040c7749 Move unshared items back to MatrixPower
REVERT: 371d086390 add scalar multiple to diagonal matrices (transplanted from d822610f02508f06bf324da6b2747c1911578882)
REVERT: 14e94026b4 fix SparseMatrix option bit flag in eval<> helper
REVERT: d0715bdc85 fix bug 515: missing explicit scalar conversion (transplanted from 7e81114cbfa584a09292d14619c22245df88c442)
REVERT: 76b6f78947 fix bug 511: pretty printers on windows
REVERT: af926c0f41 fix bug 509: warning with gcc 4.7
REVERT: 06fe9ef81c Write doc on (matrix power) * (matrix expression)
REVERT: 40d2cdec11 Create class MatrixPowerBase for further extension (like specialization for triangular or self-adjoint matrices)
REVERT: d42c9ba7c0 we should not directly include the *mmintrin.h headers but include immintrin.h only
REVERT: 6e1ebf1a72 fix minor typo in doc
REVERT: 3058971c9d Correct reference to iterative scaling method
REVERT: 6c6f240b9b Doc for sparseLU
REVERT: 0a57b10292 Removed scaling from the umeyama when it is not requested.
REVERT: fd9d023c17 Fix MSVC compile error in SparseLU
REVERT: 7b46e9a7fc Define sparseLU functions as static
REVERT: 304572b825 some clean-up and new comments.
REVERT: 37dc4f0a12 Remove unnecessary code. lazyAssign seems to fix all (noalias, initialization, etc.)
REVERT: 1feac03444 Some minor optimization.
REVERT: 472af3fff1 moved MINRES to unsupported. Made unit test.
REVERT: a0e1936792 Remove class MatrixPowerEvaluator with enhanced existing MatrixPowerReturnValue to simplicity, but docs are not completed yet.
REVERT: 18fb019b04 Fix bug in MatrixPower(expression) due to destruction of temporary objects. Sorry for ugly pointer manipulation but it prevents copying a PlainObject.
REVERT: 8d0fbc913d working preconditioned MINRES solver
REVERT: 5b754c8d1e Eliminate unnecessary evaluations
REVERT: 3af9989017 Avoid inefficient 2x2 LU
REVERT: f8e5cd8ddc Fix my typo in MatrixPowerBase.h, no effect on the flow.
REVERT: 686a7785f4 Fix cost evaluation. (chain product for integral power)
REVERT: 60e2b82a3c Make Ref<> suitable for both Matrix and Array kinds. Note that Matrix kind objects can be implicitely converted to an Array kind Ref<> and vice versa
REVERT: 5e3fa2b3af Implement matrix power-matrix product again
REVERT: 5861c04c62 Enable saving intermidiate (Schur decomposition) but disable unstable specialization for matrix power-matrix product.
REVERT: 8b5aee36e0 Improve BiCGSTAB : With exact preconditioner, the solution should be found in one iteration
REVERT: 23bd372216 Optimize matrix functions: m_fT is triangular and trmm is faster than gemm
REVERT: e5d709e76a workaround weird compilation error with MSVC
REVERT: 07ab0547a7 fix compilation with m.array().min/max(scalar)
REVERT: aebe95abca Merged in jdh8/eigen (pull request #17)
REVERT: 7e000d869b fix compilation on freebsd
REVERT: 27c8f35e02 Incomplete Cholesky preconditioner... not yet stable
REVERT: 32e4fccda7 Replace COPYING.LGPL by a copy of the LGPL 2.1 (instead of LGPL 3).
REVERT: bd38fd9b59 Clean the Colamd routine and add test for sparselu code
REVERT: 9cb8fe6d99 Clean the Colamd routine
REVERT: d9986d34c7 add SparseLU in sparse bench
REVERT: 457c613a5e Fix rank-1 update for self-adjoint packed matrices.
REVERT: 3150730d7c Implement packed triangular solver.
REVERT: f41364d768 Implement packed triangular matrix-vector product.
REVERT: 9d734725ea Use conj_expr_if to clarify what it's doing.
REVERT: d25b45bd8d Extend rank-1 updates for different storage orders.
REVERT: c0586c1d9e Implement rank-1 update for self-adjoint packed matrices.
REVERT: c69844ac4f Simplify Rank2Update.h
REVERT: 640103b5f9 Comment FIXMEs on Rank2Update.h and remove unused files.
REVERT: a133dc2c74 Merged in jdh8/eigen (pull request #16)
REVERT: 38212534eb fix bug 501: remove aggressive mat/scalar optimization (was replaced by mat*(1/scalar) for non integer types)
REVERT: a11f790298 Implement rank-2 update for packed matrices.
REVERT: 4e5c5ff68a Perform direct calls in xHEMV and xSYMV.
REVERT: aad503de3b remove stupid assert in blue norm.
REVERT: ee0edc200e Implement SDSDOT with DSDOT and avoid allocating buffers in DSDOT.
REVERT: d61286d8db Implement functors for rank-1 and rank-2 update.
REVERT: 33b24d9a10 multiple warnings for unused variable
REVERT: ae9fe9f7d4 merge Sparse LU branch
REVERT: a991a76419 Add tutorial for sparse solvers
REVERT: a25121d7dd Fix memory leak in DSDOT.
REVERT: 2ff725199a BLAS: implement DSDOT and SDSDOT; update test for them.
REVERT: b1646db45b Init perf values
REVERT: 495da08876  correct bug in Blas 3 2D block update
REVERT: d16917b85e  Bug in blas 3 2D block update
REVERT: ebf39ee039 Insert XSL styles into output XML files
REVERT: 46739161ae Fix a typo in blas/common.h
REVERT: fe21f14b63 added preconditioner with preconditioned-Lanczos iteration
REVERT: 72f30c75d4 Write dox for assertions
REVERT: 8e87c4e218 Avoid inefficient 2x2 LU. Move atanh to internal for maintainability.
REVERT: 4033253e16 forward resize() function from Array/Matrix-Wrapper to the nested expression such that mat.array().resize(a,b) is now allowed.
REVERT: aff7c19110 some optimization in MINRES, not sure about convergence criterion
REVERT: 5bef91a4d2 Fix out-of-range memory access in GEMV (the memory was not used for the computation, only to assemble unaligned packets from aligned packet loads) (transplanted from 694e18ba243fff371447fb94f079f8c57c108ce4)
REVERT: 157189648a first working version. Still no preconditioning
REVERT: fdf82bd4f3 Fix dox and tabbing
REVERT: 4f210aea54 Tidy up and write dox.
REVERT: fc5e15d9ed Optimize matrix power
REVERT: 6374d3fbfc Fix a lot in MatrixPower.h
REVERT: 4bcfe5302c merge
REVERT: 5beaf1bec6 Add test for matrix power. Use Christoph Hertzberg's suggestion to use exponent laws.
REVERT: 4447f0da24 Read real and complex bench matrices  from a unique folder Output and display bench results using XML and XSLT
REVERT: 3f71efce86 Replace atanh with atanh2
REVERT: ed6bb02d1c workaround clang bug (see http://forum.kde.org/viewtopic.php?f=74&t=102653)
REVERT: c033d15a09 fix a typo in commit 4b483eaddf74 (regarding MKL on windows)
REVERT: eca258eadc fix bug 499: the image was missing because of a dependency issue when building/executing the "special" examples
REVERT: 585e7474ad simplify eigen-doc.tgz file generation, and make it more future proof
REVERT: 10022629f8 remove EXTRACT_ALL
REVERT: bbbdc604b6 add piwik code to documentation (web stats engine)
REVERT: 5a1823b1bd Fix toc in dox and claim copyright
REVERT: ba1b9e8f0e Dox in MatrixFunctions
REVERT: c0639155aa Bugfix in MatrixLogarithm.h
REVERT: 45b8bada9f Ensured that all branches of MatrixLogarithmAtomic::getPadeDegree return values.
REVERT: 6af7f69c99 Add specialization for float and long double
REVERT: 840cd4583a Undo incorrect fix in previous commit, and fix real mistake instead.
REVERT: b655542743 Documentation fixes. Thanks to Rodney Sparapani for reporting these.
REVERT: 71d35d5874 Remove useless code (abort specialization for complex exponent temporarily)
REVERT: 6a542b417c matrix power: MatrixBase::pow(RealScalar) and MatrixBase::pow(T) where T is integral type
REVERT: a096da5d4d using std::frexp instead of frexp
REVERT: 1dd1f2dd1d Optimize getting exponent from IEEE floating points.
REVERT: d60e5e98e2 Clean the supernodal matrix class
REVERT: ea02ae8d58 Bug in 2D block update, disable it for now
REVERT: a1d91beb3a Add support for Metis fill-reducing ordering ; it is generally more efficient than COLAMD ordering
REVERT: 54e4621f2c Add missing const in some casts
REVERT: ba6e511654 Fix precision regression when attempting to fix underflow issues.
REVERT: 85c2754414 Fix some typos in MatrixLogarithm to improve accuracy.
REVERT: 947bf3d200 Prefix with glu, the global structure
REVERT: 80335f56a6 Prefix with glu, the global structure
REVERT: 570157d782 SparseLU: add leverage level3 ops
REVERT: b79889f931 factorize column_dfs and panel_dfs
REVERT: fc4977c566  Add unit tests
REVERT: 94853ec79a  correct bug when solving with multiple Rhs
REVERT: f89946100c fix bug 495: remove too aggressive EIGEN_FLATTEN_ATTRIB attribute (after some benchmarking, it was not useful anymore)
REVERT: df06c24b33 Bug 493 : multiple calls to FindUmfPack (transplanted from 35ee747575143155b8ef538c0c0b30d0cf0894a3)
REVERT: 5dd8b02350 Update copyrights sections
REVERT: b6ef45457b switch to MPL license
REVERT: 449daef7db Add missing .noalias()
REVERT: bed7c2b761 fix warning
REVERT: 72cc06a5bb fix lower acceptable bound of SSE pexp for double
REVERT: 30e7fb99a7 add another missing .noalias()
REVERT: fded5f8416 optimize LU_kernel_bmod for small cases, and add an important .noalias()
REVERT: 8c94eff89b Eigenvalues module: Implement setMaxIterations() methods.
REVERT: 21579c5da9 add an example for GeneralizedEigenSolver
REVERT: 913acb8506 fix various regressions with MKL support
REVERT: 48fefebef8 RealQZ: added example and some code comments
REVERT: e653053598 Added a default constructor for Splines which creates zero (constant) splines.
REVERT: 844fa61127 Fix typo in the doc: s/Succeeded/Success
REVERT: 6d6419de40 add SSE pexp function for double, make use of _mm_floor_p* for pexp with SSE4.1
REVERT: a9be989d1d Improve the permutation
REVERT: 8d8e06b476 extend quotient functor to allow for mixed types (complex-real)
REVERT: 8f8a49f456 Refactoring codes for numeric updates
REVERT: 9f7e647345 Add a preliminary GeneralizedEigenSolver computing the eigenvalues of Av=lBv with A and B general real matrices. Currently only the eigenvalues are reported.
REVERT: 4a851384e3 RealSchur: improve speed of computeNormOfT
REVERT: 68fdea9ab0 RealQZ: improve computeNorms speed, improve shift accuracy (better to do a/b than a*(1/b)),         update API to set the maximum number of iterations
REVERT: 018fba2030 SparseMatrix: add missing ctor for ReturnByValue
REVERT: 48ed540459 RealQZ: bug in pushDownZero fixed too
REVERT: d61306e90f RealQZ: bug in splitOffTwoRows fixed
REVERT: 6d3ea213c7 correct bug in the complex version
REVERT: 58a27ad6c7 Add exception handler to memory allocation
REVERT: 615dbe58f6 Add a draft (not clean ) version of the COLAMD ordering implementation
REVERT: 000cc6f0ec Add static assert that objects on stacks are not too big (bug 491).
REVERT: 2d98505642 Fix aliasing issue in sparse matrix assignment. (m=-m; or m=m.transpose(); with m sparse work again)
REVERT: 5d577ac434 do not apply plane rotation when it is exactly the identity
REVERT: 84866386a1 RealQZ: optimize general hessenberg to not apply rotations to zero entries.
REVERT: e1f6ff99a9 real QZ: update license
REVERT: 7e22efef6d  working version of sparse LU with unsymmetric supernodes and fill-reducing permutation
REVERT: 588bb884e6 Add a RealQZ class: a generalized Schur decomposition for real matrices
REVERT: a3cef33935 Allow user to specify max number of iterations (bug 479).
REVERT: c5462d6985 Use EISPACK's strategy re max number of iters in Schur decomposition (bug 479).
REVERT: f31c3358d8 LDLT: Report sign consistent with D for indefinite matrices. See http://forum.kde.org/viewtopic.php?f=74&t=106942
REVERT: 6f2a056a29 Fix some illegal memory access in sparse conservativeResize()
REVERT: d363acd587 bug 449: add SparseMatrix::conservativeResize feature
REVERT: 796c30aed0 add COPYING.MINPACK
REVERT: 54b0d23efc MINPACK license is OK for MPL2 after all
REVERT: 7cea7aff6a add COPYING.README
REVERT: 26a74c7930 add COPYING.MPL2
REVERT: 7b8c6c3f3a remove outdated "Eigen itself is part of the KDE project" outside of eigen2 files
REVERT: 51cdcf8193 Silence clang warning about && inside ||
REVERT: 0500a70405 Evaluators: Fixed bug caused by Diagonal dynamic index change. This caused the evaluators unit test to fail.
REVERT: 2e9ac6fa94 clean Eigen2Support wrt KDE mentions
REVERT: 14db530944 clean old KDE mention and related
REVERT: 7db66b9fef document EIGEN_MPL2_ONLY
REVERT: 8b9d43fb69 fix bug 485: conflict between a typedef and template type parameter
REVERT: 46557a0b5f Add a EIGEN_MPL2_ONLY build option to generate compiler errors when including non-MPL2 modules
REVERT: bdcbd26582 Manual MPL2 relicensing fixes
REVERT: 5d774f10f0 Automatic relicensing to MPL2 using Keirs script. Manual fixup follows.
REVERT: 001235c555 Add preliminary script to relicense Eigen to MPL2.
REVERT: c175034384 Add a DynamicIndex constant for signed quantities and use it to fix the conflict between Diagonal<S,-1> (the first sub diagonal) and a runtime super/sub diagonal which is now: Diagonal<S,DynamicIndex>
REVERT: e09a46c515 fix computation of fixed size sub/super diagonal size
REVERT: 94d631a786 correct bug when applying column permutation
REVERT: 6777427e0e working version of sparse LU without fill-reducing permutation
REVERT: 823537fc85 Fix possible underflow issues in SelfAdjointEigenSolver
REVERT: fcde17258e Correct bug for triangular solve within supernodes
REVERT: eedf2855c6 fix include path
REVERT: 03f4c82dfb Update Ordering interface
REVERT: 61bc0681d9 Evaluators: Remove member variables if known at compile-time. Also, use composition instead of inheritance in EvalToTemp evaluator.
REVERT: f0868d301b Update Ordering interface
REVERT: 5f619d1664 fix compilation with MSVC
REVERT: d857051d55 Fix bug 480: workaround the Android NDK defining isfinite as a macro
REVERT: 7801b46a5a Bug 481 step 1: add a new Ref<> class for non templated function arguments
REVERT: d8f72b4eca doc: Typo in CustomizingEigen, introduced in previous commit. Thanks to Christoph Hertzberg for noting this.
REVERT: 97751f876c merge
REVERT: 0890fef2c9 doc: Add constructor to example for inheritance. See "Error in Inheriting Eigen::Vector3d" on forum.
REVERT: 747c7fa2af fix bug 486: template speacialization of member functions must be declared inline to avoid duplicate references
REVERT: ddf60e129d Move implementation of coeff() &c to Matrix/Array evaluator.
REVERT: 689110c569 Bug 488: Add setShift method (and functionality) to Cholmod classes Also check for Success of numerical factorization
REVERT: c55daf3b99 fix bug 487: isometry * scaling was not compiling
REVERT: 0718882895 fix typo
REVERT: 00d8af034c fix NEON port, use vget_lane_*() instead of temporary variables (saves extra load/store), following advice by  Josh Bleecher Snyder <josharian@gmail.com>. Also implement pmadd() using vmla instead of nested padd/pmul.
REVERT: f6c485311a Doc: add an example for HouseholderQR::householderQ()
REVERT: d6147a213c workaround compilation issue with MSVC 2005
REVERT: 2721b91b59 Before moving to the new building
REVERT: 5cf9cde220 Implement A.noalias() = B * C without temporaries * Wrap expression inside EvalToTemp in copy_using_evaluators() if we   assume aliasing for that expression (that is, for products) * Remove temporary kludge of evaluating expression to temporary in   AllAtOnce traversal * Implement EvalToTemp expression object
REVERT: d74d64ea9f Make product eval-at-once. * Make product EvalAtOnce in cases OuterProduct, GemmProduct and   GemvProduct * Ensure that product evaluators are nested inside EvalToTemp   evaluator * As temporary kludge, evaluate expression to temporary in AllAtOnce   traversal and pass expression operator to evalTo()
REVERT: 77e946ab05 Implement eval-at-once in evaluator. - Add evaluator_traits with HasEvalTo flag, which is true if evaluator   has evalTo() function. - Add AllAtOnce traversal, which calls evalTo() in evaluator. - If source evaluator in copy_using_evaluator has HasEvalTo set, then   use AllAtOnce traversal.
REVERT: 8b826b0038 Implement interface for NoAlias assignments. * Rename the old copy_using_evaluators to noalias_copy_using_evaluators. * Write a new copy_using_evaluators which strips NoAlias expression, if present,   and calls noalias_copy_using_evaluators; in future, it will also take care of   aliasing in products. * Add expression() getter to NoAlias.
REVERT: f2c092dece Move (part of) evaluation of products to evaluator objects. * Copy implementation from CoeffBasedProduct. * Copy implementation from GeneralProduct in InnerProduct case. * For GeneralProduct in other cases, call the evalTo() member function with   expression objects in constructor of evaluator.
REVERT: 96db8c3ee0 bug 482: pass scalar by const ref - pass on the sparse module (also fix a compilation issue due to previous pass)
REVERT: c3c6589df8 Resize lhs automatically in copy_using_evaluator().
REVERT: a521a29bf9 fix implicit scalar conversion
REVERT: ca546fa6f7 bug 482: pass scalar arguments by const references. This changeset only concerns the Core and Geometry modules
REVERT: 4134fa76cc fix performance regression due to check_rows_cols_for_overflow and add appropriate assertions in the PlainObjectBase::resize() functions. The fix consists in disabling this useless test for statically allocated objects.
REVERT: 39b9972a95 remove dynamic allocation for fixed size object and triangular matrix-matrix products
REVERT: 9e934472bb Fix bug in {Matrix,Array}Wrapper evaluator
REVERT: 1415d47a23 Fix bug in evaluators with sliced vectorization.
REVERT: f06600cb77 Fix an evaluator test which was wrong and failed in debug builds.
REVERT: c2d47e1287 typo
REVERT: 4dcb3826d0 fix GMRES
REVERT: 090ee1768d put the resurected files into the Eigen namespace
REVERT: 4bae115747 fix most of the shadow warnings in Core/*.h
REVERT: f4b7e9262f resurrect expression evaluators
REVERT: 445c197fba bump default branch to 3.1.90
REVERT: 35fd87895d Added tag 3.1.0-rc2 for changeset bf4cb8c934fa
REVERT: 4fc259f16b bump to 3.1.0-rc2
REVERT: 67c02e5cb5 fix compilation issue with MKL's backend
REVERT: c0c901b37c add the multithreading topic in the topic list
REVERT: fac7575528 fix sparse benchmark help
REVERT: e5412cadc8 extend documentation of *Support modules
REVERT: 8b5515a07a MPreal: extended unit test, remove useless internal overloads, add support for internal::cast (needed for printing)
REVERT: 45e56c92ac patch mpfr c++ copy to fix warnings and min/max issues
REVERT: 969425d249 update internal mpfr C++ copy
REVERT: 866f277013 Fix some typos in sparse tutorial.
REVERT: 52e7eddf2b fix bug 478: RealSchur failed on a zero matrix.
REVERT: d451ed3919 fix bug 477: warning with gcc 4.7
REVERT: 003fdb0c8f significantly extend the tutorial of sparse matrices
REVERT: cd10a83026 comment two tests in nomalloc (there is no regression here, it's just I've been too optimistic when adding them recently)
REVERT: 9340ef8024 fix geometry tutorial about scalings.
REVERT: 236ee70c7a update custom scalar type doc
REVERT: 35fbbe7a07 update adolc support wrt "new" NumTraits mechanism
REVERT: 4e12930d47 Update custom scalar example, based on unstable/Eigen/AdolcForward .
REVERT: f99214c13e prevent the allocation of the two preconditioner, only one is needed
REVERT: 41f237d197 Build finished... start debugging
REVERT: 4d67a1080a fix a warning and formatting
REVERT: 649bd0dfbf Matrix-Market: fix perf issue and infinite loop
REVERT: 64db135a33 fix a few warnings
REVERT: 33fefb53c6 fix typo in unsupported/NumericalDiff
REVERT: 763457374c Added tag 3.1.0-rc1 for changeset 8383e883ebcc
REVERT: cf963e87e7 bump to 3.1.0-rc1
REVERT: 1953596e2f build complete... almost
REVERT: a84896c298 Bug 466: better fix for the race condition: this new patch add an initParallel() function which must be called at the initialization time of any multi-threaded application calling Eigen from multiple threads.
REVERT: 5eec4ed900 fix bug 475: .exp() now returns +inf when overflow occurs (SSE)
REVERT: 01d6540599 disable the MKL's vm*powx functions on windows
REVERT: 9c6a208b0c  Build process...
REVERT: 5f00e24683 Checking Data structures and function prototypes
REVERT: 3739578d2d simplify and clean a bit the Pastix support module
REVERT: 262ed5e7ec update blas interface for trsm
REVERT: f2bdb3069a extend nomalloc unit test to test the solve calls
REVERT: 66fe17a246 fix inclusion order
REVERT: bd39dccbfd avoid dynamic allocation for fixed size triangular solving
REVERT: f54da4f3ac  Checking Syntax...
REVERT: bfd98d590e fix typo
REVERT: eb57342b56 Sparse LU - End Triangular solve... start debugging
REVERT: 22b149b474 Fix bug 466: race condition destected by helgrind in manage_caching_sizes. After all, the solution based on threadprivate is not that costly.
REVERT: 778a9c5171 triangular solve... almost finished
REVERT: 0500873924 workaround ICC 11.1 compilation issue
REVERT: 0c6014e9d3 fix ambiguous calls in the functors by prefixing function calls with internal::
REVERT: 9c43154e6b Memory management
REVERT: 949103864d BTL: add missing TRMM plots, update Eigen's interface
REVERT: 87b4a310da clean the support for testing existing sparse problems
REVERT: 091cf19d3b fix a warning
REVERT: 6b61d40d6d For consistency, Simplicial* now factorizes P A P^-1 (instead of P^-1 A P). Document how is applied the permutation in Simplicial* .
REVERT: 3cd81a1648 fix documentaion of twistedBy
REVERT: d3bc027255 Added tag 3.1.0-beta1 for changeset 920fc730b593
REVERT: 15c200c3a3 bump to beta1
REVERT: 08ed8afb62 fix installation path
REVERT: ad1d7b710a Memory expansion and few bugs
REVERT: 83ebf435d6 make sure we do not solve with a null right hand side
REVERT: 005210e280 Fix stopping criteria of CG
REVERT: 5dcde6b234 discourage users to user developer preprocessor directives
REVERT: d3b2db46fe fix umfpack for row-major
REVERT: a94b8f63e7 test block objects for sparse solving
REVERT: fed479b3ec Fix bug 454: allow Block/Map objects for solving with SuperLU
REVERT: 3af4953c8f Fixed RVCT 3.1 compiler errors.
REVERT: ef1ad43318 Fix kdBVH unit test
REVERT: dcf528b2e8 CholmodDecomposition now has explicit variants. These variants will allow to provide access to the underlying factors.
REVERT: b75191aa5d make Simplicial* non-copyable, and fix return type of Simplicial*::compute()
REVERT: 4eb398b9e9 add a noncopyable base class for decompositions
REVERT: e4feed15f3 extend umfpack support
REVERT: ef469dba29 Supernodal Matrix
REVERT: a2ad5f9de1 Fix bug 468: generalize UmfPack support to accept any input at the cost of an implicit copy.
REVERT: d43274a359 SimplicialCholesky: avoid multiple twisting of the same matrix when calling compute()
REVERT: b76b5fcdda Eliminate and prune columns in a panel
REVERT: 4dc346b6e3 Symbolic and numeric updates within the panel
REVERT: 3a15fed1da Symbolic and numeric update on a whole panel
REVERT: 3a7e186f0f ARM NEON supports multiply-accumulate instruction vmla, use that in pmadd().
REVERT: f5c0489be0 Add preliminary files for SparseLU
REVERT: b2de10327e The sparse quick reference guide is not ready
REVERT: 213ef00542 Add common options to the benchmark interface
REVERT: 271e75997a Read header of Hermitian matrices
REVERT: 1fd1110f23 Add a preliminary reference guide on sparse interface
REVERT: a03d35eec4 protect min/max with parenthesis
REVERT: 3aac2db3f5 Warn users against dangerous macros. Also, mark EIGEN_DEFAULT_TO_ROW_MAJOR as internal (see also bug 422).
REVERT: dbc269b81d bug 455: add support for c++11 in aligned_allocator
REVERT: c8493ca7d0 merge
REVERT: 29d273023f AutoDiffScalar: fix bug with operator/, add missing functions
REVERT: 645d93ce25 Got rid of a warning message by doing an explicit cast
REVERT: 7f20092dc0 fix lmdif1 with Scalar!=double
REVERT: 35b32a8c2d Define NoChange as enum constant (bug 450). This gets rid of some warnings on Intel Composer XE, apparently.
REVERT: ba3b2c638c fix more warnings in MKL support
REVERT: 223fdf82ab Fix infinite recursion in ProductBase::coeff()  (bug 447) Triggered by product of dynamic-size 1 x n and n x 1 matrices. Also, add regression test.
REVERT: 880ca0344c cleaning pass: rm unused variables in MKL stuff, fix a few namespace issues, MarketIO needs iostream
REVERT: f02238bc6c remove debug output
REVERT: 6851dc1535 Remove unused file EigenvaluesCommon.h
REVERT: 1fdf14a4f0 Get rid of include directives inside namespace blocks (bug 339).
REVERT: 975c135527 Added spline interpolation with pre-defined knot parameters.
REVERT: 8e4ac1e12f remove an extra ';' and suppress a 'variable used before its value is set' warning
REVERT: 67057c9d5c remove use of GSL in polynomialsolver unit test
REVERT: 0c051be08b suppress extra ',' and ';'
REVERT: 200955a8df fix compilation of "somedensematrix.llt().matrixL().transpose()" (missing constness on the return types)
REVERT: 1a6ba82a09 Replicate now makes use of the cost model to evaluate its nested expression
REVERT: 8a35f267bb uniformize eigen_gen_docs between branches / cleaning
REVERT: 9382fcef6b does not include MatrixMaketIterator on win32, no "using whatever" in global scope in a header file
REVERT: 90cd983480 rm unused gsl_helper file
REVERT: 6238d59329 fix bug 362 and add missing specialization for affine-compact * projective
REVERT: f5e3076e9f fix compilation with ICC
REVERT: 1ffdd57d11 Add private copy constructors to sparse solvers backends
REVERT: 9e45dd7d7b Cholmod does not compute a determinant
REVERT: 73ef4a83f3 Adding a householder-GMRES implementation from Kolja Brix
REVERT: 49737117cd Correct a small bug in sparse_solver
REVERT: 5ead3f899e modify the unit tests of sparse linear solvers to enable tests on real  matrices, from MatrixMarket for instance
REVERT: 19999b3173 add a benchmark routine for all sparse linear solvers in Eigen
REVERT: d275e0e812 add missing forward declaration
REVERT: 7c33232bb4 add sparse * permutation products with assiciated unit tests
REVERT: 35b4d396a1 add sparse-selfadjoint to sparse-selfadjoint assignment operators (no need to use .twistedBy(I) anymore)
REVERT: 581a7f5944 fix bug 439: add Quaternion::FromTwoVectors() static constructor
REVERT: 312d25457e we have a new server for hosting CDash reports.
REVERT: 685b78881e Algorithm to equilibrate rows and columns of a square matrix
REVERT: b0905ba69f Add simple API to set Pastix parameters
REVERT: 4b52102c40 compress loaded market matrix
REVERT: 83b9bd0e1c workaround stupid gcc 4.7 warning
REVERT: b97bee3755 s/__SSE3__/EIGEN_VECTORIZE_SSE3
REVERT: 868b152292 improve FindFFTW  cmake module
REVERT: 453439a353 Add some documentation to existing methods in the Householder module.
REVERT: 23b5afbe86 remove parenthesis suggestion warning
REVERT: c0ebbd1c65 add 2 missing ReverseInnerIterators
REVERT: baccd7793d Fixed division by zero corner case in array unit test.
REVERT: 983af8c288 declare Block::m_outerStride as Index (instead of int)
REVERT: 87b60a517b export IsRowMajor in MappedSparseMatrix
REVERT: 99fbf9a784 rm cC++11 features
REVERT: 347b262d47 typo in variable name not revealed by ICC
REVERT: d1500a3582 fix conversion warning
REVERT: 439ee3f6b3 Adding an interface to PaStiX, the multithreaded and distributed linear solver
REVERT: d25d369051 Adding support to read and write  complex matrices in Matrix Market format
REVERT: 597fff17a9 Improved the unit tests for setLinSpaced. Provide a default constructed step size as opposed to an int when the size is 1.
REVERT: 1930f406fc Fixed setLinSpaced for size==1.
REVERT: 559e3ecced Added support for component-wise pow (equivalent to Matlab's operator .^).
REVERT: 52b66e60a6 Moved the operator/(Scalar,ArrayBase) into the Eigen namespace.
REVERT: b867532a93 Added support for scalar / array division.
REVERT: 2ee2baed82 Replicate ctor now uses Index instead of int.
REVERT: 78755f7c95 simplify and speedup sparse * dense matrix products
REVERT: 562b8bc931 allow null elements in sparse assignments
REVERT: 28024e5dd8 fix MKL interface with LLT::rankUpdate
REVERT: 9874f8a6a6 update unit test for Simplicial-Cholesky
REVERT: cf9108d508 fix assertion condition
REVERT: b8cdcf03aa SimplicialCholesky*: s/LLt/LLT and s/LDLt/LDLT for consistency with dense names
REVERT: 9887793935 fix a couple of warnings
REVERT: ed721304de add analyzePattern/factorize API to iterative solvers and basic preconditioners
REVERT: d6700f0c57 fix and clean Pardiso solver and s/PARDISOSupport/PardisoSupport
REVERT: a02804b4ae add unit tests for analyzePatter/factorize API
REVERT: f3929bb127 fix symmetric permuatation for mixed storage orders
REVERT: 4b6d4ecee2 declare a ReverseInnerIterator in sparse CwiseBinaryOp. These ReverseInnerIterator should probably be removed anyway since we currently don't have real use cases for them. The only one in TriangularSolver could be advantageously replaced by a binary search.
REVERT: 5e1402f583 Bug 419: Add spaces between adjacent > in template arguments
REVERT: f9a6f89f8e SSOR is not there yet
REVERT: f74b7a83ea clean a bit the ILUT code
REVERT: 57dc45cb68 add Eigen::Array support to GDB pretty printers
REVERT: ff0485f51f <complex> must be included first
REVERT: 9ddc916db7 some cleaning and add copyrights
REVERT: ed7f126d28 Add test in BiCGSTAB for ILUT
REVERT: 063422c692 Split the computation of the ILUT into two steps
REVERT: bcbe1f77e4 Add the implementation of the Incomplete LU preconditioner with dual threshold (ILUT) Modify the BiCGSTAB function to check the residual norm of the initial guess
REVERT: 7b90b59c91 Modify the LinSpaced function to take only the two bounds
REVERT: b1f058bf47 Modify the symmetric permutation to deal with nonsymmetric matrices
REVERT: b8b5bd7c21 suppress generation of TEMPLATE_RELATIONS: they are useful but take much too much space
REVERT: e9933d2d2f fix bug 417: Map should be nested by value, not by reference
REVERT: 27cc4c2cf8 Add a tutorial page on the Map class, and add a section to FunctionsTakingEigenTypes about multiple-argument functions and the pitfalls when using Map/Expression types.
REVERT: bccc3536e7 fix bug 415: wrong return in Rotation2D::operator*=
REVERT: fa5ca94f78 Adding support for twistedby on SparseMatrixBase
REVERT: fb60db4ffb Improve performance of some Transform<> operations by better preserving the alignment status. There probably many other places in Transform.h where such optimizations could be done.
REVERT: 86169698f8 Added tag 3.1.0-alpha2 for changeset 304c88ca3aff
REVERT: 9b82bcec9d bump
REVERT: 3fcd2a808d fix a dozen of warnings with MSVC, and get rid of some useless throw()
REVERT: 8b95613a55 fix conjugation in packet_lhs
REVERT: 9654873d3f Update the PARDISO interface to match other sparse solvers. - Add support for Upper or Lower inputs. - Add supports for sparse RHS - Remove transposed cases, remove ordering method interface - Add full access to PARDISO parameters
REVERT: 4a3f431539 add the recent setFromTriplets() feature in the manual
REVERT: 11c68d4d18 fix several const qualifier issues: double ones, meaningless ones, some missing ones, etc. (note that const qualifiers are set by internall::nested)
REVERT: 5d945e594a fix compilation errors with ICC
REVERT: 6e792b8c4b stop disabling this legitimate warning, recall that in the following the const on FooRef is really meaningless: typedef Foo& FooRef; const FooRef foo;
REVERT: d2c9030a34 remove unused variables
REVERT: a1df8f7c5f fix ctest -D Foo with MSVC 2008
REVERT: bae9ab41c5 Enable Eigen to compile on 'pure C/C++' Gcc environment (with no inline assembly or asm directive). Required if we want to use Eigen with Adobe Alchemy.
REVERT: e4026dfe31 shutup floating point underflow warning for this specific unit test
REVERT: 49a0f69556 the default ctor had no sense because of the const reference member
REVERT: 7473462051 add missing return *this
REVERT: a3c591065f rm non standard and useless overloads of is_arithmetic for long long
REVERT: b1540af1cf proper C++ casting
REVERT: 602722ee88 fix a few warnings: change of sign and missing return statement
REVERT: 3b3d633602 fix static inline versus inline static issues (the former is the correct order)
REVERT: 68796bd25d workaround "empty macro argument" warning
REVERT: 860990b936 add .data() member to Diagonal<>
REVERT: 1bac919430 fix some compilation errors with ICC and -strict-ansi
REVERT: 3e28ca9eae add the possibility to assemble a SparseMatrix object from a random list of triplets that may contain duplicated elements. It works in linear time, with O(1) re-allocations.
REVERT: 1fc72d6f75 fix memory leak in SuperLUSupport
REVERT: ead6618712 honor nested types in dense * sparse
REVERT: 149de39148 Document that JacobiSVD also handles complex matrices. Thanks to 'Jazzdude' for noting this on IRC.
REVERT: 4d9eebbde3 add missing inline keyword (linking issue)
REVERT: e02053a590 SimplicialCholesky: the shift offset must be real, and fix a comparison issue for complexes
REVERT: 0afc24486a simple compilation fix
REVERT: d37701616d fix bug 410: fix a possible out of range access in EigenSolver
REVERT: 2209f388c6 Check for positive definiteness in SimplicialLLT
REVERT: 67cbaa4628 fix a nesting type issue in Sparse/TriangularView
REVERT: d428046594 fix bug 406: Using OpenMP and Eigen causes infinite loop/deadlock (transplanted from 8b1ca56a7cf05183dc0958f155f8e8a1ff9ff97c)
REVERT: e3e620f708 fix warning with gcc 4.6
REVERT: bcfbe9775c workaround ICC compilation error with -strict-ansi
REVERT: 5bf6fc1071 determine windows version from major.minor only, the patch number is irrelevant.
REVERT: 4dc6f6ccd7 std::isfinite is non standard
REVERT: bed92a3731 LLT: improve rankUpdate to support downdates, LDLT: add the missing info() function, improve unit testing of rankUpdate()
REVERT: cbb284cad3 added functions to allow for cwise min/max operations with scalar argument (bug 400). added function for array.min(), array.max(), matrix.cwiseMin(), matrix.cwiseMax().
REVERT: 28e28139d0 optimize the packing of lhs blocks for matrix-matrix products => significant speedup for small products
REVERT: 759003a302 Make sure that now-fixed assert is not triggered.
REVERT: 67d4f20361 Fix broken asserts releaved by Clang.
REVERT: 52b1cfe5d5 fixe one more VC10 ICE
REVERT: 5077ee14f5 fix VC10 ICE
REVERT: 91412f5614 Correct description of rankUpdate() in quick reference guide. Thanks to Sameer Agarwal for pointing out this mistake. (transplanted from c279825e7337bb440773f3831e84068fadb3fb0b)
REVERT: 6f53948ebc Fix out-of-range int constant in 4x4 inverse. (transplanted from 9f1e5198da7fa08f82e297949d85b24760571f64)
REVERT: bfea528f33 suppress unused variable warnings
REVERT: 59808c7b1a set the default number of iteration to the size of the problem
REVERT: 08a40027b9 pushed too fast the previous one
REVERT: 6f604ad4dd the previous test works for Dynamic sizes only
REVERT: d28b8b2f23 add a reconstruction test
REVERT: 7178c4174c fix bug 398, the quaternion returned by slerp was not always normalized, add a proper unit test for slerp
REVERT: 0d70413165 fix compilation of sparse_basic unit test for complexes
REVERT: 1f29158582 suppress an 'unused variable' warning
REVERT: 7ab5810efd evaluate 1D sparse expressions into SparseVector and make the sparse operator<< and dot honor nested types
REVERT: 5322daa3bf fix assignment of a row-major sparse vector to a column major sparse one
REVERT: d03d7fe098 fix bug 391: prune was for compressed format only, now it also turns the matrix into compressed form
REVERT: f44a6566b5 fix bug 391: improper stream output for uncompressed mode, also avoid double debugging outputs for column major matrices
REVERT: 187f3958e0 add aliasing test for sparse*sparse product
REVERT: e9f38e106a fix bug 394: innerVector::nonZeros() was broken for uncompressed mode
REVERT: 8df12458e3 we need to define EXTRACT_ALL to YES to get doxygen see the whole hierarchy. Exclude internal::* from the doc.
REVERT: 357c55bc1e workaround doxygen limitation to follow the base class of PlainObjectBase
REVERT: 7fd18ef5c9 rm local fill-in ratio estimation (was broken sometimes)
REVERT: 87697413ce implement a more optimistic heuristic to predict the nnz of a saprse*sparse product
REVERT: 41729a8875 fig bug 396: add a static assertion on the storage order of a sparse-sparse coeff-wise binary op
REVERT: c312d17afc Remove evaluators for 2.1 release. We plan to re-instate them when we branch 2.2 (see bug 388).
REVERT: bfd43246c8 remove a file that was not intended to be committed
REVERT: b87c80dbec Remove asserts that eigenvalue computation has converged (bug 354).
REVERT: 1ff9a44521 fix sparse insertion example
REVERT: 3fdf2e4cab remove redundant declaration (fix compilation with clang 3.0)
REVERT: 6a622e6b1f s/compressed()/isCompressed()
REVERT: ff26feaa4d Cholmod: add support for uncompressed SparseMatrix objects
REVERT: ba6f6cc81e add cholmod_support unit tests
REVERT: 5b20a211a2 enforce weak linking of xerbla
REVERT: 94c5469ba4 trivial compilation fix
REVERT: b6f1502aed feature 297: s/intersectionPoint/pointAt, fix documentation, add a unit test
REVERT: 63ec128925 feature 297: add ParametrizedLine::intersectionPoint() and intersectionParam() -> intersection() is deprecated
REVERT: d3e2fce693 bug 352:properly cast constants
REVERT: 01ab7d10ad fix compilation with EIGEN_NO_DEBUG
REVERT: e43e05dff0 feature 319: fix LDLT::rankUpdate for complex/upper, simply the algortihm, update copyrights
REVERT: 889f71cc51 feature 319: Add update and downdate functionality to LDLT
REVERT: f6c496fbdc add a "using MKL" documentation page, add a minimal documentation of PARDISO wrapper classes, refine a bit the EIGEN_USE_* logic
REVERT: 4b23786bcf Fix MSVC integer overflow warning
REVERT: 11cc443700 add missing CMakeLists.txt
REVERT: b54fd36d60 add user defined CXX and LINKER flag cmake variables for the unit tests
REVERT: 9941bb9154 mv blas.h to src/misc such that it would be possible to use any blas libraries, however, this requires some more works:  - add const qualifiers in the declarations of blas.h  - add the possibility to add a suffix to blas function names
REVERT: 87e4d585f9 - split and rename defined tokens to enable the use of BLAS/Lapack/VML/etc - include MKL headers outside the Eigen namespace.
REVERT: 6cfcee786e Intel(R) MKL support added. * * * License disclaimer changed to BSD license for MKL_support.h * * * Pardiso support fixed, test added. blas/lapack tests fixed: Scalar parameter was added in Cholesky, product_matrix_vector_triangular remaned to triangular_matrix_vector_product. * * * PARDISO test was added physically.
REVERT: 1f0ee37957 fix min/max clash with clang's header by including fstream beforehand
REVERT: a684e9baf8 remove dead code
REVERT: fa302dfcad suppress deprecated warning when compiling legacy tests
REVERT: 60eb4357f8 add missing CMakeLists.txt in Splines
REVERT: 6d378c75b9 Document QuaternionBase, minor doc improvements. * Document class QuaternionBase so that docs for members are displayed. * Remove obsolete \redstar refering to Array module * Fix typo in Constants.h * Document EIGEN_NO_AUTOMATIC_RESIZING
REVERT: a101bfccf3 improve compiler name and version detection
REVERT: 2faa36767a fix detection of ICC version
REVERT: 03a9729fb6 improve compiler and architecture detection
REVERT: 1d05474c63 eigen_gen_docs: dont try to update permissions on server
REVERT: 82556f1f2e Added tag 3.1.0-alpha1 for changeset a810d5dbab47
REVERT: b0b4f3b591 bump
REVERT: 5ddc8dde71 Fixed a typo.
REVERT: 7b0a0c5e47 fix QuaternionBase::cast. It did not work with clang, and I'm unsure how it worked for gcc/msvc since QuaternionBase was introduced
REVERT: 9f8131a7a2 fix compilation with clang
REVERT: 4d1ac2fee5 fix bug 223: SparseMatrix::Flags no longer encode triangularness information
REVERT: ce3568e161 fig bug 373: compilation error with clang 2.9 when exceptions are disabled (cannot reproduce with clang 3.0 or 3.1)
REVERT: 1f0fb49cfc fix bug 384: add a static assertion on the Index type which has to be signed
REVERT: 859fc70aab fix bug 294: add a diagonal() method to SparseMatrix (const)
REVERT: 3c346b5e2d fix bug 221: remove the dense to SparseVector conversion ctor.
REVERT: b25d3dacae fix bug 281: replace csparse macros by template functions
REVERT: ba6808db0b Added docs to the spline module.
REVERT: 91f3023b7a fix bug 341: trisove on MappedSparseMatrix
REVERT: fce86780c8 fix bug 356: fix TriangularView::InnerIterator for unit diagonals
REVERT: b0639f41cc make the accessors to internal sparse storage part of the public API and remove their "_" prefix.
REVERT: 6bbcc1b4d7 add SparseVector::ReverseInnerIterator
REVERT: 994e021b07 add ReverseInnerIterators to loop over the elements in reverse order, and partly fix bug 356 (issue in trisolve for upper-column major))
REVERT: cbb127c982 fix bug 282: add the possibiliry to shift the diagonal coefficients via a linear function.
REVERT: e76cd1cbbd fix matrix names in the insertion example
REVERT: 6fa3800885 Eigen2sSupport: import some fixes from the 3.0 branch (MSVC fix)
REVERT: 3bd72f0f17 RandomSetter: turns the matrix into compressed form before the filling
REVERT: c9294bae8f add a command to fix the permission of the uploaded documentation
REVERT: 9bf94af3d5 improve sparse manual
REVERT: c394dba66f improve documentation of some sparse related classes
REVERT: 6aaeeaff54 Sparse matrix insertion:  - automatically turn a SparseMatrix to uncompressed mode when calling insert(i,j).  - now coeffRef insert a new element when it does not already exist
REVERT: 66041c6104 - move CompressedStorage and AmbiVector into internal namespace - remove innerVectorNonZeros(j) => use innerVector(j).nonZeros()
REVERT: 462eef1ddb Extend tutorial page on broadcasting to reflect recent changes.
REVERT: e8cc19b08b remove GSL dependency in the unit tests
REVERT: e760a8e16f remove useless blas reference code
REVERT: 709e08b2d0 add code for band triangular problems:  - currently available from the BLAS interface only  - and for vectors only
REVERT: 90cf7d0e7a output error messages in blas unit tests
REVERT: d485059693 Integrated spline class and simple spline fitting
REVERT: 55e7a43a04 fix assigment from uncompressed
REVERT: bb0fc57bce bug fix in SparseSelfAdjointTimeDenseProduct for empty rows or columns
REVERT: 35e4ad8c29 bug fix in SparseView::incrementToNonZero
REVERT: d1df1d5587 add more support for uncompressed mode
REVERT: 6106c3eabb cleanning pass on the sparse modules:  - remove outdated/deprecated code  - improve a bit the documentation
REVERT: 67dedc46fb fix alignment computation in Block and MapBase such that aligned means aligned on 16 bytes and nothing else (transplanted from 248f1d7c5f86d35de61eec412d34efdee89bf3d5)
REVERT: fb46bf9b95 Bug 383 - another c++11-user-defined-literal fix
REVERT: 276a75c5fb Bug 383 - EIGEN_ASM_COMMENT broken in C++11
REVERT: f5b3101cd2 add two alternative solutions to the problem of fixed size members
REVERT: a8a8bc7c99 draft of the new sparse manual reflecting the new sparse module
REVERT: 9619992b30 fix compilation of doc (broken by changeset d48a7c25e052 - General tightening/testing of vectorwise ops)
REVERT: 093f308b37 fix CG example
REVERT: 2ddb11e9f1 improve accuracy of 3x3 direct eigenvector extraction
REVERT: 862e91e754 typo
REVERT: 1a74a92870 Install eigen3.pc in default directory if pkgconfig not found (bug 358).
REVERT: 33b12e27c4 Alignment fixes:  * Fix AlignedBit computation for Plain Objects  * use it for the conditional alignment of operator new  * only overload new in PlainObjectBase, don't overload again in Matrix and Array
REVERT: 1a130164b2 stop fill pivoting LU only if the pivot is exactly 0
REVERT: b5bc78f612 Bugs 157 and 377 - General tightening/testing of vectorwise ops:
REVERT: abd87be8bd Bug 157 - Implemented *= /= * / operations for VectorwiseOp (e.g. mat.colwise())
REVERT: 3baadbb092 Move EIGEN_USING_MATRIX_TYPEDEFS macros to Eigen2Support.
REVERT: ec72d022c7 [Geometry/AlignedBox] New typedefs, like for Core/Matrix
REVERT: 81254f657f fix some include paths
REVERT: 579a785b49 add the new module headers
REVERT: 7ab60a874f move sparse solvers from unsupported/ to main Eigen/ and remove the "not stable yet" warning
REVERT: 345a751660 fix ei_add_property
REVERT: e6890909db optimize vectorized reductions by peeling the loop:  - x2 for squaredNorm() on double  - peeling the loop with a peeling factor of 4 leads to even better perf    for large vectors (e.g., >64) but it makes more difficult to keep good performance on smaller ones.
REVERT: 9278e9e4f4 fix performance issue with SPMV
REVERT: 26161ea7cd merge with hauke/eigen-cdash-improvements branch
REVERT: 54ac26113a [Core/Matrix] Fix: Clear the right typedef macro
REVERT: 15f7e198de reimplement abs2 not to use std::norm which is incredibly slow.
REVERT: 7687c74113 Add simple example on how to compute Cholesky decomposition.
REVERT: c7094935bf Patches to support ARM NEON with Clang 3.0 and LLVM-GCC
REVERT: 6107e13d02 Refactor force-inlining macros and use EIGEN_ALWAYS_INLINE to force inlining of the integer overflow helpers, whose non-inlining caused major performance problems, see the mailing list thread 'Significant perf regression probably due to bug 363 patches'
REVERT: d1039f7549 Add test for Matrix(x, y) ctor static assert added in previous changeset
REVERT: a2c19c6af2 In the Matrix constructor taking (rows, cols), statically assert that the types are integer.
REVERT: d7026f578c fix a couple of warnings in the unit tests
REVERT: e7f06921f5 Automatically produce a tgz archive of the documentation.
REVERT: 6f84f6396a completely remove EIGEN_BUILD_BLAS_LAPACK option
REVERT: 5a25bc3a98 fix compilation
REVERT: 110d68cd7e remove deprecated assert
REVERT: d15e75e2eb use runtest.sh script iif /bin/bash does exist
REVERT: 1f1a981087 fix fftw cmake stuff
REVERT: 98e60c4749 Allow for more iterations in SelfAdjointEigenSolver (bug 354). Add an assert to guard against using eigenvalues that have not converged. Add call to info() in tutorial example to cover non-convergence.
REVERT: fb4d0bb998 Mention that the axis in AngleAxis have to be normalized.
REVERT: 7ee98dbb2f Bug 365 - Rename B0 in GeneralBlockPanelKernel.h to avoid name clash with termios.h on POSIX systems.
REVERT: f27a913a5b Bug 365 - Add test for non-usage of B0
REVERT: d9bac1adc0 Bug 369 - Quaternion alignment is broken
REVERT: 2b1d38e2d7 fix more variable-set-but-not-used warnings on gcc 4.6
REVERT: 5842afd0fc Fix some unused-variable warnings with GCC 4.6
REVERT: e38d7981b0 Bug 206 - part 4: Removes heap allocations from JacobiSVD and its preconditioners
REVERT: 41f43e816b Bug 206 - part 3: Reimplement FullPivHouseholderQR<T>::matrixQ() using ReturnByValue
REVERT: e5849c2e23 Bug 206 - part 2: For HouseholderSequence objects, added non-allocating versions of evalTo() and applyThisOnTheRight/Left that take additional working vector parameters.
REVERT: 1b14e012c7 The most important inline keyword ever? Without it, gcc failed to inline this function, which is called by all matrix constructors...
REVERT: 971bccf71f remove the MSVC specific blas/lapack option
REVERT: 4c2b401bbb hopefully this workaround of cmake bug #9220 works for MSVC too
REVERT: 3815003ec3 update sparse*sparse product: the default is now a conservative algorithm preserving symbolic non zeros. The previous with auto pruning of the small value is avaible doing: (A*B).pruned() or (A*B).pruned(ref) or (A*B).pruned(ref,eps)
REVERT: 345c238806 mark deprecated sparse solvers as so.
REVERT: 832413d77c add the possiibility to disable deprectated warnings (useful for deprecated unit tests!)
REVERT: c1c4e02498 factorize solving with guess
REVERT: 4534217083 move DynamicSparseMatrix to SparseExtra
REVERT: 5dc24e46ca move the blas.h header to blas/ and remove declaration of function returning a complex
REVERT: f14e49d97b forgot inline keyword
REVERT: 248a9d4370 Throw std::bad_alloc even when exceptions are disabled, by doing new int[size_t(-1)]. Don't throw exceptions on aligned_malloc(0) (just because malloc's retval is null doesn't mean error, if size==0). Remove EIGEN_NO_EXCEPTIONS option, use only compiler standard defines. Either exceptions are enabled or they aren't.
REVERT: f00eedb41e Bug 363 - add test for integer overflow in size computations
REVERT: c8839ddf33 Bug 363 - check for integer overflow in size=rows*cols computations
REVERT: 024cab9e09 Bug 363 - check for integer overflow in byte-size computations
REVERT: 2a24a9b3bb update the decomposition catalogue
REVERT: a432061491 add a basic ILU preconditioner
REVERT: ebc6a65689 fix sparse tri-solve for full matrices
REVERT: 0597747c3f extend BiCGSTAB to arbitrary rhs
REVERT: 737eb17bcc add proper bicgstab unit test
REVERT: a40b3d9a4a add a unit test for permutation applied to sparse objects
REVERT: 4b9af9572e refactor sparse solving unit tests
REVERT: 0ab66267d8 extend SimplicialCholesky for sparse rhs, and add determinant
REVERT: 7ab35d64ef extend CG for multiple right hand sides
REVERT: 70380bd253 make it compatible with Diagonal<>
REVERT: 6d85cf27eb fix assignment to a set of sparse inner vectors
REVERT: cbe60e88f1 fix nesting
REVERT: 2c197a7c37 DiagonalPrecond: fix potential segfault in case the diagonal contains explciit zeros
REVERT: 0ac05b5e65 add a generic unit test for sparse SPD problems
REVERT: b911af022a split SimplicialCholesky into SimplicialLLt and SimplicialLDLt classes and add specific factor access functions
REVERT: 6eca2b51ff Configured unsupported/test/mpreal/*.* as CRLF files.
REVERT: fcf2b97dc5 Added a flag to build blas/lapack.
REVERT: 0fe24d4ad3 fix superLU when the salver is called multiple times
REVERT: 0a800119da Convert tabs to spaces.
REVERT: eef96ff0bb Fix bug 286: Infinite loop in JacobiSVD with denormals
REVERT: 77833c6f78 Add method which returns worst time (and make some methods const).
REVERT: 913df8859b clean sparse LU tests
REVERT: 2e37a2b5a0 fix a couple of issues in SuperLU support (memory and determinant)
REVERT: 60e75f09d2 port umfpack support to new API
REVERT: b63ba26f04 fix some compilation issues
REVERT: 1f67dee9a8 fix atan2 when tmp4==0
REVERT: 9c7375d1e2 BiCGSTAB does not like starting from 0...
REVERT: 9f9685e8ea no comment
REVERT: ea799fa654 quick workaround of MSVC9' ICE in pset1
REVERT: 4f0f4508a4 find macport' umfpack/cholmod
REVERT: 73a7bdf1a5 Enable incomplete BLAS/Lapack builds when no fortran compiler has been found. Works here with gcc. Hopefully this will work for MSVC too.
REVERT: 1aae7bd9fd fix status after initialization
REVERT: 9d3cee8f52 accept both STL and Eigen's containers for reserve()
REVERT: 75cb7301af Typo in geometry tutorial.
REVERT: 94b105d841 Bug fix for matrix1 * matrix2 * scalar1 * scalar2. See report on http://forum.kde.org/viewtopic.php?f=74&t=96947 .
REVERT: b6ac622473 mainly enhance MatrixLogarithm's performance for RealScalar != double
REVERT: cc522341d5 add support for macosx
REVERT: f3d1d10d8c add a bi conjugate gradient stabilized solver
REVERT: 774ff2e216 add tan, acos, asin
REVERT: 6cdf03c080 Fix LDLT::solve() if matrix singular but solution exists (bug 241). Clarify this in docs and add regression test.
REVERT: 1bb558d5ab Write page on template and typename keywords in C++. After yet another question on the forum, I decided to write something on this common issue. Now we just need to link to this and get people to read it. Thanks to mattb on the forum for some links. Caveat: IANALL (I am not a language lawyer).
REVERT: cf4db45bf5 fix bench_gemm
REVERT: 4bfa4c8d5e reactivate the sorting in the experimental sparse-sparse product
REVERT: be3f358287 add the possibility to reserve room for inner vector in SparseMatrix
REVERT: b56f9b8bad Put docs for unsupported modules in right place. Doxygen was confused by the unsupported modules being partly in the doc/ directly, instead of completely in unsupported/doc/ . Thus, the link to the unsupported modules on the server did not work (I think this manifested itself after doxygen was upgraded on the server).
REVERT: cee0a9edb8 Define log2() on FreeBSD (fixes bug 343).
REVERT: 31e970cc2b add atan2 support in AutoDiff and remove superfluous std:: specializations
REVERT: b873bcf986 Merged in trevorw/eigen (pull request #7)
REVERT: 0bb0a5f256 Update docs of PlainObjectBase::Map(); fixes bug 335. Also fix some typos.
REVERT: 3930522c9a Add defensive assert to MatrixExponential,
REVERT: cccb43f9e4 enhance efficacy via avoiding exception handling
REVERT: e11fd36a73 resolve pkgconfig destination - http://eigen.tuxfamily.org/bz/show_bug.cgi?id=338
REVERT: a8a7476512 Leverage triangular square root in matrix log.
REVERT: e89c8271f5 Split code for (quasi)triangular matrices from MatrixSquareRoot. This way, (quasi)triangular matrices can avoid the costly Schur decomposition.
REVERT: 04936ffb7b fix: <ctime> is necessary for srand(time(NULL))
REVERT: 9b8aefb479 fix bug 330: Index to int conversion warning
REVERT: c6747bdc41 oops EIGEN_DEFINE_STL_VECTOR_SPECIALIZATION now perfroms full specialization, no need for the typename keywords
REVERT: 9f6a0a6675 fix bug 262: Compilation error of stdvector_overload test with GCC 4.6 Now our aligned allocator is automatically activatived only when the user did not specified an allocator (or specified the default std::allocator).
REVERT: a9b833ea96 Fix failures in redux test caused by underflow in .prod() test.
REVERT: 500263b7e7 Add coverage for long double to matrix_exponential test.
REVERT: fc3bf01385 add compatibility with long double
REVERT: 9e0f5aa050 mv the mpreal copy in its own folder
REVERT: 873efe8138 update to latest mpreal and fix a min/max issue in mprel.h
REVERT: 8390a48424 the min/max macros to detect unprotected min/max were undefined by some std header, so let's declare them after and do the respective fixes ;)
REVERT: 930371e9ac add the possibility to specialize assign_impl and still call the default implementations. (yes I know this change will be deprecated as soon as the evaluators will be in shape but I need this now)
REVERT: 50e31c62d4 fix linking issue
REVERT: 7b17915338 fix a numerical issue in the direct 3x3 eigenvector extraction
REVERT: 173f68323d fix a bug where some rotations were not initialized They actually were in the original minpack code, this is a bug introduced by our migration. Reported on http://eigen.tuxfamily.org/bz/show_bug.cgi?id=322 and http://forum.kde.org/viewtopic.php?f=74&t=96197#p201158
REVERT: fae21d6dc8 wa2 was computed twice because of a confustion between changesets 2357130b7817 and ab273e210eb8. Reported on forum: http://forum.kde.org/viewtopic.php?f=74&t=96197#p201158
REVERT: 349e519214 Remove unnecessary template keywords (breaks compilation under MSVC). Thanks to Hauke for finding this.
REVERT: bb4ef92fad Improved compilation errors for Transform initialization/assignment with different numeric types.
REVERT: d15a899f65 compilation fix with conjugate_gradient_solve_retval_with_guess
REVERT: 71276692d2 add the possibility to configure the preconditioner
REVERT: 4b5a7fc41d add a naive IdentityPreconditioner
REVERT: 248afde5db add a conjugate gradient solver
REVERT: 18d1c71149 fix sparse selfadjoint time dense such that the other triangular part is not used at all
REVERT: e905122562 fix eigen2 support min/max garbage
REVERT: 9a908d8e8c simplify a bit the 2x2 direct eigenvalue solver
REVERT: 60fc877aa0 integrate Hauke's 2x2 direct symmetric eigenvalues solver
REVERT: 972b2c928d add a computeDirect method to SelfAdjointEigenSolver for fast eigen decomposition
REVERT: fd5f3c4949 protect calls to min and max with parentheses to make Eigen compatible with default windows.h (transplanted from c0d402eeccb51416edf43eca96e63c2b587bb6cf)
REVERT: 50136bfa2d fix bug 320 (pretty gdb printer on mingw)
REVERT: a067625548 Translation * RotationBase now returns an isometric transformation.
REVERT: 27c1d12670 fix triangular unit test: it only accepts small matrices
REVERT: 6b9f88b295 fix trmv unit test
REVERT: 954a50c88b fix LLT rank one update for "upper" hermitian matrices
REVERT: e8fac7ff10 add an "InvalidInput" enum, used by the SuperLU interface
REVERT: d1d2ccba91 add the possibility to configure the maximal matrix size in the unit tests
REVERT: 8ccc1d5a1d enable instalation of blas and lapack libs
REVERT: d1a9dd8cc2 fix bug 316 - SelfAdjointEigenSolver::compute does not handle matrices of size (1,1) correctly
REVERT: 092badca72 fix few warnings reported by clang
REVERT: c3ef076629 suppress polluting EMPTY macro defined by SuperLU
REVERT: 12a9b9ff9e add new interface to SuperLU
REVERT: 31ff0a0a9e fix constness of intersection methods (bug 309)
REVERT: 3aa5d06e06 Add DenseStorage specializations for dynamic size with MaxSize = 0 (bug 288). This is necessary for instantiations like Matrix<float,Dynamic,Dynamic,0,0,0>.
REVERT: b7b1e85044 Fix compilation of cholesky rank update test.
REVERT: 7845c15b5c fix typo in doc for ParametrizedLine
REVERT: 55829cbc17 add a KroneckerProduct module (unsupported) from Kolja Brix and Andreas Platen materials.
REVERT: 0c798364fe rm confusing sentence
REVERT: 7c7438dd4a Relatively straightforward changes to wording of documentation, focusing particularly on the sparse and (to a lesser extent) geometry pages.
REVERT: d74ed9cacd A first tiny test commit: fix a spelling error in the documentation.
REVERT: 57ab20aacf New feature: add rank one update in Cholesky decomposition
REVERT: 6b3fb81e7d fix documentation of norm
REVERT: 0abe5a03ba Suggest placing Eigen directory in system include path.
REVERT: 7584cfa5f6 Fixed a few typos and cleaned up some language.
REVERT: cab21c0cf7 adapt test to the change reverting normalize() to returning void
REVERT: 5f52ff95fa back out 8bc600ff7984
REVERT: 72496dd113 add test for normalize() and normalized()
REVERT: 8d21886b69 Bug 298 - let normalize() return a reference to *this
REVERT: c6760accaf remove the use of non standard long long
REVERT: 2e741d7f9e fix aligned_allocator::allocate interface
REVERT: dd0983fc4e fix typo in constant name
REVERT: ebd5acd286 introduce a smart_copy internal function and fix sparse matrices with non POD scalar type
REVERT: a95d1bb34d Implement matrix logarithm + test + docs. Currently, test matrix_function_1 fails due to bug 288.
REVERT: 55dc5f6e6c Decouple MatrixFunction and MatrixFunctionAtomic in preparation for implementation of matrix log.
REVERT: 3232da2d29 Fix and test MatrixSquareRoot for 1-by-1 matrices.
REVERT: d8c254014c Sparse: more fixes regarding long int as index type
REVERT: eefa6909da Sparse: fix long int as index type in simplicial cholesky and other decompositions
REVERT: 59b47fdfdc Fix snippets for operator|| and && by adding pair of parens.
REVERT: 4520e9421f fix compilation with MinGW
REVERT: d76821d47c forgot to include this file in previous commit
REVERT: da564e9d40 add boolean || and && operators
REVERT: 784868d66f update URL
REVERT: 5d1a556a29 add read/write routines for sparse matrices in the Market format
REVERT: bff2f0950c Fix truncated instructions for printers.py ... as noted by kp0987 on forum
REVERT: cec4ec8a38 fix bug 278: geometry tutorial (transplanted from e96300b0a9a91f1ed926901f0915830ac41c9248)
REVERT: 1c17067245 do not directly call std::ceil
REVERT: d95d0e1847 finish to fix bug 270: we have to use EIGEN_ALIGN_STATICALLY and not EIGEN_DONT_ALIGN_STATICALLY...
REVERT: eeb965a3ca Fix typo ('using namespace' instead of 'using').
REVERT: 40cb96a499 Simplify the use of custom scalar types, the rule is to never directly call a standard math function using std:: but rather put a using std::foo before and simply call foo: using std::max; max(a,b);
REVERT: 810029af2f bug 225: add a unit test for memory leak
REVERT: ef9074f6a9 bug 271: fix copy/paste mistakes in doc (transplanted from 145b9cad63101ee46924d446fa8b08ffb48c7f3a)
REVERT: 8c144e05fb clean a bit previous patch (ctor vs static_cast and a few bits)
REVERT: 5e0a7d22ec fix implicit scalar conversions (needed to support fancy scalar types, see bug 276)
REVERT: 63fb03489d fix gemv_static_vector_if on architectures that cannot aligned on the stack (e.g., ARM NEON)
REVERT: ce12f68028 clean several other assertion checking tests
REVERT: 298941b8e8 fix vectorization_logic when EIGEN_GCC_AND_ARCH_DOESNT_WANT_STACK_ALIGNMENT
REVERT: 3b3d88fc7e NEON: fix plset
REVERT: fb4798245a add unit test for plset
REVERT: f34eccdbc0 NEON: disable unaligned assertion checking for non vectorized types
REVERT: 2ddf320d90 NEON: fix ploaddup
REVERT: 7f7d2fb602 fix bug 267: alloca is not aligned on arm
REVERT: d1aa6c7a35 Autodiff: fix scalr - active_scalar
REVERT: 5bdad4a9eb Store light-weight objects in evaluators by value. This resolves failure in unit test caused by dying temporaries.
REVERT: 2a58bfa640 AutoDiff: add one missing operator- version
REVERT: 6e2d2cbf7a AutoDiff: fix most of bug 234 (missing operators, used old internal math function interface, etc)
REVERT: a0c3659f41 AutoDiff: fix unary operator-
REVERT: b41d4a8b8b Remove Eigen::internal::sqrt(), see bug 264.
REVERT: 66cb64c607 fix bug 260: broken Qt support for Transform (transplanted from 4efe2fb36e7e1a08354c33e136c5699d1be3c559)
REVERT: 47c91bd2f9 Forgot to 'hg add' example file in last commit.
REVERT: 82328181d2 Implement and document MatrixBase::sqrt().
REVERT: 21ec1b697a Fix compilation error under GCC 4.5. That version is stricter in forcing function prototype and definition to match.
REVERT: 40da22a184 Add test for sqrt() on complex Arrays. From Gael's dashboard output of matrix_square_root test, I suspect the test committed here may fail on old gcc.
REVERT: 3fc07a9dfa Implement square root for real matrices via Schur.
REVERT: 0e16cecb04 Implement matrix square root for complex matrices. I hope to implement the real case soon, but it's a bit more complicated due to the 2-by-2 blocks in the real Schur decomposition.
REVERT: 7579d072ba Get rid of wrong "subscript above bounds" warning (bug 149).
REVERT: af05de1a28 s/n=n/EIGEN_UNUSED_VARIABLE(n)
REVERT: 245cf31b53 add missing .data() members to MatrixWrapper and ArrayWrapper
REVERT: faebb523af fix compilation on ARM NEON (missing AlignedOnScalar)
REVERT: 2a8512698c better fix for gcc 4.6.0 / ptrdiff_t, as suggested by Benoit
REVERT: eaf7298186 Fix compilation with gcc-4.6.0, patch provided by Anton Gladky <gladky.anton@gmail.com>, working on debian packaging.
REVERT: 464fa6b9f6 Bail out if preprocessor symbol Success is defined (bug 253).
REVERT: 7bee03ab75 Document some more preprocessor symbols: EIGEN_NO_MALLOC, EIGEN_RUNTIME_NO_MALLOC, eigen_assert.
REVERT: da44f75cb7 Remove unused enums in Constants.h .
REVERT: c9f3f0515e Document enums in Constants.h (bug 248). To get the links to work, I also had to document the Eigen namespace. Unfortunately, this means that the word Eigen is linked whenever it appears in the docs.
REVERT: 69defbcba6 fix bug 258: asin/acos copy paste mistake
REVERT: 3be776df4c Final working fix for the EOL extension. MSVC debugger tools are now forced to CRLF.
REVERT: 07f53ce997 This should fix the eol extension.
REVERT: e7c1129315 Fixed Unix script line ending conversions.
REVERT: 751fe57ac4 Implement compound assignments using evaluator of SelfCwiseBinaryOp.
REVERT: 5fe480d7bd Implement swap using evaluators.
REVERT: fb7ef8aef4 Use copyCoeff/copyPacket in copy_using_evaluator.
REVERT: ee192bfa51 Implement evaluator for Diagonal.
REVERT: 22afc8e53b Implement evaluators for Reverse.
REVERT: 9c7a844019 Implement evaluators for ArrayWrapper and MatrixWrapper.
REVERT: 6251eefcfe fix aligned_stack_memory_handler for null pointers
REVERT: 7a12cb73cd Quaternion : add Flags on Quaternion's traits with the LvalueBit set if needed Quaternion : change PacketAccess to IsAligned to mimic other traits test : add a test and 4 failtest on Map<const Quaternion> based on Eigen::Map ones
REVERT: 7ff8a9583f I doubt this change was intented to be committed
REVERT: e27b15a016 be nice with the server : dont use -j3
REVERT: 8dd78ba888 fix bug 250: compilation error with gcc 4.6 (STL header files no longer include cstddef)
REVERT: 7ec0090518 fix bug 242: vectorization was wrongly enabled on MSVC 2005
REVERT: ce4c339fa5 WIN32 isn't defined ?? but _WIN32 is.
REVERT: 9738885d8c Make MapBase(PointerType) constructor explicit (fixes bug 251)
REVERT: 5258e04b17 fix unaligned-array-assert link
REVERT: 4928770c14 Normalize eigenvectors returned by EigenSolver (fixes bug 249) because the documentation says that we do this. Also, add a unit test to cover this.
REVERT: 45b58fcf37 Implement unrolling in copy_using_evaluator() .
REVERT: 47bd49d00d Implement evaluator for PartialReduxExpr as a dumb wrapper.
REVERT: 5ae8377705 Implement evaluator for Replicate.
REVERT: 96639e6709 Implement evaluator for Select.
REVERT: 8c90d40454 Decouple AssignEvaluator.h from assign_traits from Assign.h
REVERT: bea330b57a enforce no inlining of the GEBP product kernel: this is a big function that makes no sense to inline, though GCC was thinking the opposite. This even slighlty improve the perf. And as a side effect this workaround a weird GCC-4.4 linking bug (see "Problem with g++-4.4 -O2 and Eigen3" in the ML)
REVERT: e2b5009f45 Decouple Cwise*Op evaluators from expression objects
REVERT: 957e011d4d Implement evaluator for CwiseUnaryView
REVERT: 36610351c4 Implement evaluator for Map
REVERT: 960a6db3f5 Performance tunning for TRMM products
REVERT: 3bbfa6519a Make evaluators for Matrix and Array inherit from common base class. This gets rid of some code duplication.
REVERT: 7ea94c5f95 Do some of the actual work in evaluator for Block. Also, add simple accessor methods to Block expression class.
REVERT: 98f6fbd17f std::min/max are not implemented and they cannot be implemented easily
REVERT: ffd696c432 Correct typo in QuickReference doc, plus typographical improvements.
REVERT: 93d25e51eb fix trmm unit test
REVERT: 6c48be83d1 Evaluators: add Block evaluator as dumb wrapper, add slice vectorization.
REVERT: 8d425a0873 fix typo and remove unused declaration.
REVERT: 4f2da538c2 fix bug 239: the essential part was left uninitialized in some cases
REVERT: bb13695069 Add directory containing split_test_helper.h to include path.
REVERT: 169535dc15 Evaluators: Make inner vectorization more similar to default traversal.
REVERT: f897e41583 extend trmm/trmv unit test to thoroughly check all configurations
REVERT: 9c889ebaf3 add the possibility to specify a list of sub-test suffixes in a compact way
REVERT: 0385fb19b6 fix trmv for Strictly* triangular matrices and trapezoidal matrices
REVERT: 1ec67d7262 fix trmm for some unusual trapezoidal cases (a dense set of columns or rows is zero)
REVERT: 7f41045900 automatically generate the CALL_SUBTEST_* macros
REVERT: 5d2b7e896a Evaluators: Implement linear traversal, better testing.
REVERT: 63735f9fc7 Evaluators: Implement inner vectorization. The implementation is minimal (I only wrote the functions called by the unit test) and ugly (lots of copy and pasting).
REVERT: de1799f75a Evaluators: Implement LinearVectorizedTraversal, packet ops in evaluators.
REVERT: 7e854b22eb improve computation of the sub panel width
REVERT: 40ec70ec40 improve performance of trsm
REVERT: df40f73343 Bug fix in linspace_op::packetOp(row,col). Fixes bug 232. Also, add regression test.
REVERT: 3ebee1cfc0 impl basic product evaluator on top of previous one
REVERT: 24e062400f makes evaluator test use VERIFY_IS_APPROX
REVERT: 76a5abbe7d BTL: add eigen2 backend
REVERT: 354f1057ca do not confuse Eigen3 or beta versions of Eigen3 with Eigen2
REVERT: 74787aad6f BTL: do not enable GOTO1 if GOTO2 was found
REVERT: 70d078a554 fix tridiagonalization action
REVERT: 028ee6b0b6 add a stupid Product<A,B> expression produced by prod(a,b), and implement a first version of its evaluator
REVERT: 9387d49a86 import evaluator works
REVERT: 6eac45ba76 add support for ublas
REVERT: cfc7e23cd9 BTL: by default use current Eigen headers, and disable the novec version
REVERT: 22faf17311 BTL: add a Eigen-blas backend
REVERT: 17fee43f03 BTL: clean the BLAS implementation
REVERT: 9312f2517c BTL: rm stupid backends
REVERT: 5671d6ae80 update plot settings
REVERT: 38a64dda20 update aat action to do a syrk operation, and remove (comment) ata action
REVERT: 5077fac152 BTl: GMM++ LU is not a full pivoting LU
REVERT: 2a067680a6 extend sparse product unit tests
REVERT: 70458bfcce fix 228 (ei_aligned_stack_delete does not exist anymore)
REVERT: b04a19baab merge
REVERT: 8777eaa3cc fix typos
REVERT: fa09ffff75 port sparse LLT/LDLT to new stack allocation API
REVERT: 7bb8f64a1a make compile_snippet use Eigen/Dense
REVERT: 04b755fd88 clean a bit the stack allocation mechanism
REVERT: 71c73b65ac test the new stack allocation mechanism
REVERT: 80ad1a2a10 fix memory leak when a custom scalar throw an exception
REVERT: 2bbf2681ef bump
REVERT: 2b8223cc41 fix compilation for old but not so old versions of glew
REVERT: bd1a5a7fbe disable testing of aligned members when aligned static allocation is not enabled (e.g., for gcc 3.4)
REVERT: 5ff5a3778b fix array_for_matrix unit test
REVERT: 2e1bfd2e93 Added tag 3.0-rc1 for changeset b6456624eae7
REVERT: db3c0ea634 bump
REVERT: 5e6e647473 Document EIGEN_DEFAULT_DENSE_INDEX_TYPE. Also, expand description of EIGEN_DONT_ALIGN.
REVERT: 61d5712241 Change int to Index in equalsIdentity(). This fixes compilation errors in nullary test on 64-bits machines.
REVERT: a0e0184012 fix bug 219: Map Flags AlignedBit was miscomputed, didn't account for EIGEN_ALIGN
REVERT: 1b6bf16e9a add test for EIGEN_DONT_ALIGN and EIGEN_DONT_ALIGN_STATICALLY, cf recent bugs (214 etc) and changeset b2a24739db97
REVERT: dc334ed8b6 Fix equalsIdentity() for rectangular matrices.
REVERT: 85e6d0a3ef bug 37: fix resizing when the destination sparse matrix is row major
REVERT: 6bdd5ed9a5 repeat nullary tests, and fix some tests
REVERT: 4ddde81bb8 Tweak geo_quaternion test to squash intermittent failures.
REVERT: cfb9b40a0e * bug 206: correctly forward computationOptions and work towards avoiding mallocs after preallocation, with unit test. * added EIGEN_RUNTIME_NO_MALLOC and new set_is_malloc_allowed() function to implement that test
REVERT: 9939263b1a try to fix a ICC 11.1 compiler error (bug 217)
REVERT: 9524b26074 disable ICC 12 warning 279 - controlling expression is constant
REVERT: c6ae55f29d The Eigen2 intrusive std::vector hack really can't be supported in eigen3 (bug 215)
REVERT: 5c912227a4 Make EIGEN_ALIGN16 always align to fix crashes with EIGEN_DONT_ALIGN_STATICALLY. New macro EIGEN_USER_ALIGN16 had the old behavior i.e. honors user preference.
REVERT: 9e1f3163e8 Changed debug/gdb/printers.py to correctly display variable sized matrices. There is no python error now.
REVERT: c9a54fa13b fix bug 212 (installation of Eigen2Support/Geometry)
REVERT: 828c4422c4 Copy fix of unit test when GSL is enabled to eigen2 test suite.
REVERT: e26e4d6630 Escape hash character in docs as required by doxygen.
REVERT: 9e7fb87007 Use copy_bool() workaround in Eigen2 test suite. See bug 89 and changeset 6e3a48f1c1ff.
REVERT: 908d53985c Fix bug 205: eigen2_adjoint_5 test fails.
REVERT: 7bc6f6c6c6 extend unit tests of Transform * MatrixBase and Transform * Homogeneous
REVERT: 86c302d7ca fix compilation in the case of 1D Transform
REVERT: 92cff19646 fix compilation when mixing CompactAffine with Homogeneous objects
REVERT: 3d9d980dff fix transform * matrix products: in particular it now truely considers the rhs as a set of (homogeneous) points and do not neglect the homogeneous coordinates in the case of affine transform
REVERT: c67cb2507a fix bug 204: limit integer values to numbers which are representable using float
REVERT: f76226558a re-enable fast pset1-pstore by introducing a new higher level pstore1 function
REVERT: 80b2bc287b now fixing "unsupported" "legacy" code...
REVERT: 1f67832149 Added tag 3.0-beta4 for changeset c40708b9088d
REVERT: 726dd7fd22 bump
REVERT: d9667d39f8 fix bug 203: revert to using _mm_set1_p[sd]
REVERT: 1ce793ae3f relax condition in matrix_exponential test for clang
REVERT: 3cb20599a1 fix umeyama test
REVERT: ba3089cfec fix stable_norm test: the |small| value was 0 on clang with complex<float>.
REVERT: 9523c1d3d8 remove now-useless comments
REVERT: 8583a4d430 fix bug 201: Clang too has intrinsics bugs preventing us to use custom unaligned loads
REVERT: fb23d68915 disable BVH test on Clang++. Looks like there's a good reason why BVH is unsupported. It seems to have a very weird usage pattern, relying on an externally defined bounding_box function in a naive way.
REVERT: a0ebef537f fix compilation of unit tests with clang
REVERT: c635efbfae shut up a stupid clang 2.8 warning
REVERT: 47e2394e05 fix compilation with clang 2.8
REVERT: 487fe53440 documentation fixes
REVERT: 185f95c7bb add option to build in 32bit mode
REVERT: 905ac190b2 bug 195 - fix this once and for all: just never use _mm_load_sd on gcc/i386, it generates redundant x87 ops
REVERT: de564de720 Document (non)sorting of eigenvalues. Also, update docs for (Generalized)SelfAdjointEigenSolver to reflect that these two classes were split apart.
REVERT: a2328609d3 Use absolute error to test sum in which cancellation may occur.
REVERT: 0f73b81303 to ease debugging let's catch invalid template options in Transform
REVERT: 2c049bc0f4 fix compilation with gcc 3.4
REVERT: a20f6c30ee fix bug 195: fast unaligned load for integer using _mm_load_sd failed when the value interpreted as a NaN
REVERT: 3074c6f911 Improved docs of PlainObjectBase::conservativeResize methods.
REVERT: d5826fc64f fix AltiVec ploaddup
REVERT: cea9be46f9 bounds the range of random integers for AltiVec
REVERT: 3c6a2e8c33 extend testing of ploaddup
REVERT: 07ee16273a fix pset1 for complex
REVERT: 4387379a68 improve packetmath unit test
REVERT: 21de7d6fd3 implement ploaddup for complex and SSE/NEON even though they are not used in practice
REVERT: 5594843ee5 implement ploaddup for altivec and add respective unit test
REVERT: f7c98068ac fix overflow in packetmath unit test
REVERT: a2f4445a03 fix a couple of issues with pcplxflip
REVERT: c8608a0523 mention reverse and replicate in the quick ref
REVERT: 2e16034ca7 implement pcplxflip for altivec
REVERT: 688f610823 add unit test for pcplxflip
REVERT: 8eff804103 implement workarounds for MSVC IDEs and the Experimental target
REVERT: 60d14de3d7 same for neon
REVERT: 1ce38c90ed Altivec: fix infinite loop (ei_ -> internal:: change)
REVERT: f31fca0dd0 suppress unused warning
REVERT: b0d54d471f do not try to use Eigen's blas/lapack if they cannot be compiled
REVERT: c1a48fba77 fix no newline warning
REVERT: feaf41ba76 add missing AlignedOnScalar
REVERT: 6134c7083a fix icc warning #68
REVERT: ad303fede6 add EIGEN_PERMANENTLY_DISABLE_STUPID_WARNINGS non-default option. Use it in our own CMakeLists. also add a include-guard-like mechanism to prevent doing unmatched #pragma warning push/pop.
REVERT: 299adfb7ca merge
REVERT: 5a8afd45d3 ICC 12 / linux only defined __INTEL_COMPILER, not __intel_compiler
REVERT: f26a0b9d62 shut up stupid ICC warnings
REVERT: 271f3ff268 fix legitimate ICC 12 warning
REVERT: 95afbbfba5 altivec compilation fix
REVERT: 70019f36eb 'fix' a couple of clang -Wconstant-logical-operand warnings (still not convinced about the pertinence of that warning)
REVERT: e2f37b804e __attribute__((flatten)) seems to be recognized by neither clang nor icc despite these compilers defining __GNUC__.
REVERT: 349c4ad2d7 also test non_projective_only with row major transformations
REVERT: 8e28b0e755 fix bug 190: directly pass Transform Options to Matrix, allowing to use RowMajor. Fix issues in Transform with non-default Options.
REVERT: ba5622d897 gcc 4.4 also defines float32_t as a special type
REVERT: fd334f6e0f disable output compression since this feature seems to be broken
REVERT: 770ef1a151 more compilation fixes for altivec
REVERT: 6dd27e163a fix compilation
REVERT: 5c542ee343 workaround ICC aggressive optimization
REVERT: 5317a0858a fix ICE and warning with gcc 4.2.4
REVERT: ac3f532f2d link to blas/lapack only when needed, and use the static versions to hopefully workaround weird linking issues to gfortranbegin (see jitse dashboard)
REVERT: e15bd08e48 fix bug 176 (workaround a too aggressive optimization made by ICC)
REVERT: 12079b5e9c Improved site and buildname generation.
REVERT: bd97f419a6 enable some tests that have been commented out
REVERT: 9c9f05ccf2 fix umfpack with complexes
REVERT: b9310118fe remove unused code
REVERT: e3077813cb forgot that one, again
REVERT: ac79c0ac40 merge
REVERT: 52dbe9bb56 remove largeEps in adjoint unit test and use a more accurate test_isApproxWithRef test.
REVERT: 0e557b0278 fix bug 186 (in 32 bits mode, gcc 4.3 messed up with pfirst for complex<float>)
REVERT: 78a2b4af00 fix bug 187: stable norm test was quite broken
REVERT: 522b0e6374 fix bug 189 (issue with fortran concentions to return COMPLEX values)
REVERT: 938fc22575 extend mapstride unit test to test unaligned configurations
REVERT: 052d786da5 fix a segfault in "slice vectorization" when the destination might not be aligned on a scalar (complex<double>)
REVERT: d628dc9f80 back to brute force linking to sparse libraries (fix cmake when these libs are not found)
REVERT: 1e2c1b4992 forgot to include this file in previous commit (needed for lapack)
REVERT: 7d5a8f122c now cholmod, umfpack, and superlu uses our own BLAS and LAPACK libs
REVERT: 0aa75f2e8e add lapack interface to real symmetric eigenvalue dec and enable building of the lapack shared library
REVERT: 1c2b597195 it is now up to user of these Find* module to find and link to BLAS and/or LAPACK
REVERT: 9e0752febb clean a bit SuperLU declarations
REVERT: 23a18ea0a3 fix division by zero if the matrix is exactly zero
REVERT: 6864fb6d24 for consistency forward declare tan, asin, acos functors
REVERT: fabda4360a use C linkage for umfpack (might fix some linking issues)
REVERT: 87abe5e866 mention std::ptr_fun in the quickref guide
REVERT: cb9a124425 typo
REVERT: 3a4877f283 factorize implementation of standard real unary math functions, and add acos, asin
REVERT: ee4bea3c47 make check no test everything - also rm the EigenTesting cmake sub-project
REVERT: b675b6a8c8 fix unused var warning
REVERT: 2f46c4bffb forgot to include this file in one pretty old commit (missing EXCLUDE_FROM_ALL)
REVERT: 4221e979a6 Add blas tests for buildtests target.
REVERT: f43eea2638 remove #include <iostream> at the wrong place
REVERT: 5a9f67d2f1 Include necessary header files when working around bug 89. Fixes bug 188.
REVERT: f2edf6dae2 with old gcc (bug 89), only include iostream in debug mode
REVERT: 3bd6002f86 properly report OpenGL as a disabled backend
REVERT: 18687a0500 fix intallation of unsupported modules
REVERT: 41d5078570 undo debugging change
REVERT: f6549ca9b2 Fix bug 89: on GCC <= 4.3, use a custom assert implementation to work around a compiler bug
REVERT: d2f4929eaf Replace unset() by set() with no value specified; this does the same. unset() was introduced in CMake 2.6.3 but we require only 2.6.2.
REVERT: bc806aed9a CTEST_CUSTOM_* parameter have to be put in a CTestCustum.cmake file which itself has to be in the build directory
REVERT: a3b63f4d4c now ctest does compile the test even though they are not in the "all" target
REVERT: 07d9e3de43 fix bug 184 (warning)
REVERT: 6e603360c0 fix stupid warning (bug 185)
REVERT: 4e4d819a59 Improve the Transform interface in order to prevent T.rotation() = R from compiling.
REVERT: d1412047a9 Improve documentation of plugins.
REVERT: 2fa89fdf61 Added tag 3.0-beta3 for changeset 7ae24ca6f389
REVERT: 2f6c881616 bump
REVERT: 247c248629 Mention comma initializer can be used to concatenate vectors (inspired by a question on IRC)
REVERT: d849451a2a MSVC does not like using uninitialized SSE variables, so we have to pass all zeros.
REVERT: d3224d3ca1 Merge
REVERT: 824309fcd6 Disabled warning regarding the use of uninitialized variables on MSVC.
REVERT: 827b61ad84 Write topic page for storage orders.
REVERT: 49d5a78fb6 Added configuration file for the 'eol' extension.
REVERT: 90d975f154 implement optimized ploadu for MSVC10: this also fix bad code generation in gebp_kernel :)
REVERT: 98dda11c85 since gebp_kernel handled the scaling by alpha it used too many packets, this patch fix that.
REVERT: 2ea9b4cf30 doc fixes
REVERT: 9b8bf682ae Reduced error traces when mixing matrices with different scalar types.
REVERT: 4e2d975616 fix Transform documention regarding Mode
REVERT: f464f29c3d fix typo
REVERT: 68b614c561 document the eigen2 support stages
REVERT: 3ab1aad1c4 The pfirst hack is needed also on msvc 2010 as it gets completely nuts, even though it doesnt segfault as msvc 2008 did
REVERT: c4bca94aeb remove debug #error
REVERT: baed7a1826 back out changeset f77ed291f8f0. It turns out that the SSE3 header is always included, even without any SSE enabled, so it was making us wrongly use SSE3 paths. Backing this out fixes msvc related crashes, at least bug 165.
REVERT: b7bc92e853 fix redundancy
REVERT: c26bb3f883 workaround gcc 4.2.1 ICE (fix bug 145)
REVERT: 171ed8772a fix memory leak (when conservatively resizing vectors of dynamically allocated scalar types such as bugnums)
REVERT: 24fcda5b6a now random<integer types> spans over 0..RAND_MAX, or -RAND_MAX/2..RAND_MAX/2 for signed types, or the most significant bits for smaller integer types.
REVERT: 091d0ebec5 fix unit tests for integer types in preparation for next changeset making random<int> span over a much bigger range
REVERT: 855962cba1 fix fuzzy compares for integer types, using a selector
REVERT: 77553f9db9 workaround gcc 4.2 and 4.3 compilation issue with NEON
REVERT: bf5938a51d introduce EIGEN_MAKING_DOCS to tell whether we're compiling the docs examples
REVERT: 42b91f270c fix build of class Block examples
REVERT: 4869a57d48 merge
REVERT: dda1b09eba fix const correctness in Diagonal::coeffRef (fix found by failtests)
REVERT: 240b51167e fix EIGEN_STATIC_ASSERT_LVALUE (fix found by failtests)
REVERT: 036c914bfc add more failtests
REVERT: 2f30d0288d Removed internal::as_argument. This fixes the alignment issues of bug #165.
REVERT: a5f9cd0318 Exposed failtetst publicly.
REVERT: af0d731e10 fix under- and overflow
REVERT: 4cbc7d9b90 add more failtests
REVERT: a63fa086b0 failtest: a new cmake-based test suite for testing stuff that should fail to build. This first batch imports some const correctness checks from bug 54.
REVERT: 78ccfa9a58 Made MatrixBase::BasisReturnType const.
REVERT: 884563888e Fix Diagonal related const correctness issues.
REVERT: 908af49f0a Fixed hidden const correctness issue.
REVERT: 5275148a8f Remove all references to EIGEN_TUNE_CPU_CACHE_SIZE. This macro is no longer used as of revision 4b309f8a5308.
REVERT: edec8d4471 fix misc warnings
REVERT: 0192971254 turnaround for a compiler bug in gcc 3.4.6
REVERT: 068eb0cd9f extend ctest script for SSSE3 and above
REVERT: 6791413be3 fix SSE3 issue (infinite loop after the ei_ => internal change) - this fix bug 174
REVERT: 3bdde66f74 fix compilation with MSVC
REVERT: 0a33e64f85 add Map static methods taking Strides, add test checking for compilation errors
REVERT: 1d38007848 fix MSVC8 compilation
REVERT: b16911a826 add global tan function
REVERT: f127fcea75 add tan function in Array world
REVERT: 1c0c227378 an even more stable procedure
REVERT: dbbdaf8e3c slightly more stable eigen vector computation
REVERT: 393d1c14ee fix compilation with MSVC2005 (strange, stupid fixes for MSVC9 confuse MSVC8....)
REVERT: 94603152da implement GBMV
REVERT: 6b52fcbe38 split BandMatrix to a base and a wrapper class
REVERT: 8ba3f152ab fix 168 : now TriangularView::solve returns by value making TriangularView::solveInPlace less important. Also fix the very outdated documentation of this function.
REVERT: 6274245e58 extend nomalloc test
REVERT: 43029fcf58 mark the packet access methods as internal
REVERT: 95c7aab9bf implement optimized path for selfadjoint rank 1 update (safe regarding dynamic alloc)
REVERT: c8d84f1110 forgot hg add
REVERT: da3fd353f8 fix alignment issue
REVERT: e462d7dcce relax Matrix/Array(Index) ctors to allow size 0, add test.
REVERT: d77f53fd8b fix compilation of snippets
REVERT: 3c4f6fcc9e notify the creation of manual temporaries
REVERT: 8d19931b5d fix trmv regarding strided vectors and static allocation of temporaries
REVERT: 830d2a2110 operator(int) and the likes are not only fine for linear storage
REVERT: 4732e4a058 fix packing criterion
REVERT: 62c1e5735c fix dynamic allocation for fixed size objects in matrix-vector product
REVERT: aba5522529 update .hgignore
REVERT: 8d8e7ec0f3 kill stage 15, it's useless
REVERT: 2139fb5fdd eigen2 support: pass remaining 2 tests
REVERT: c2b1956694 eigen2support: disable sparse tests, and do not require to define YES_I_KNOW_NOT_STABLE
REVERT: 2ea9449dd1 make eigen2 eigensolver test pass
REVERT: 3fe35dac9e clean the script to generate the plots
REVERT: 141d61f84d include cblas.h header file to ease configuration
REVERT: 397333d298 fix name collision
REVERT: 862b79901e add GOTO2 and clean a bit the cmake macros
REVERT: b7142319c1 now gemv supports strides
REVERT: f2884f8250 Added the /bigobj flag in order to enable compilation with MSVC when EIGEN_SPLIT_LARGE_TESTS is not set.
REVERT: e2a63c1859 make eigen2 cholesky test pass
REVERT: 06429b70d5 fix bug in triangular matrix-vector produce found by eigen2 tests!
REVERT: e18fc7dd27 still test fftw even if the binary for long double is not available
REVERT: 4be968dab4 disable broken determinant for complexes and SuperLU
REVERT: defa894bfe typo reported by Don Lorenzo
REVERT: 333ccfe268 really fix permute_symm_to_symm for sparse complex matrix
REVERT: 8c80f05af5 fix crash in autodiff
REVERT: fc30a20e34 fix bug 73: weird compilation error in HouseholderSequence where double and float were mixed. Hopefuly this also solve bug 91...
REVERT: ccf6854fd3 rm useless ctor
REVERT: 0e3172ad90 fix BTL cholesky action and output errors if the factorization failed
REVERT: 660fd2a90a fix compilation with old gcc
REVERT: 77ce89763f start nighlty builds at 00:00:00 UTC
REVERT: d294063c65 fix compilation with gcc 4.2 and older
REVERT: 75bcb9a514 Eigen/Eigen should not include Sparse until it is API stable
REVERT: 69fa68954c typo
REVERT: 3720319968 fix compilation of sparse module with ICC
REVERT: c873ddb0ea fix fftw test
REVERT: 8fdcfc0d06 dot() now always uses eigen3 convention, even in eigen2 support mode, even stage 10. Didn't have a choice as lots of eigen code is using it.
REVERT: 1a3beeb7a7 merge
REVERT: c7713add95 fix MaxCols in ComplexEigenSolver which was causing memory allocation instead of static allocation in the nomalloc test. Uncomment commenetd parts of the nomalloc test since now matrix-matrix products are safe.
REVERT: 733cb9a18f EIGEN_YES_I_KNOW_SPARSE_MODULE_IS_NOT_STABLE_YET must be defined to use Eigen/Sparse
REVERT: 3841399e17 add test for geometry with eigen2_ prefixes. fix that stuff.
REVERT: 8ec9ee3f5e add an Options template parameter to Hyperplane and ParametrizedLine
REVERT: a8ca942c2e Added regression tests for bug #148.
REVERT: dfbcd61b0e reverse order of testing for eigen2 support stages. Higher stages now have priority. So if your whole project builds with say stage 10, you can manually enable stage 20 for selected files.
REVERT: 336c3fdedb add Threshold API to FullPivHouseholderQR
REVERT: e30e9790ca Add an Options template paramter to Transform to enable/disable alignment
REVERT: 2eadf0b462 test case for unaligned quaternion
REVERT: 369a65ea21 add quaternion Options, add unaligned possibility
REVERT: 295bb5fcf3 fix twisted selfadjoint to selfadjoint (conjugation issue)
REVERT: e92cf3513e EigenSolver is now in the Eigenvalues modules, not QR !
REVERT: 543abec668 fix various compilations issues
REVERT: 3b0ae55b25 fix mixingtypes unit test
REVERT: 690e431749 fix const-related compiler error on MSC.
REVERT: f07df38522 fix many missing const in return types
REVERT: 16b2bf7d8b fix cross product for complexes and add support for mixed real-complex cross products
REVERT: 23f2018bad allow mixed complex-real and real-complex dot products
REVERT: dcb1ff6401 allow matrix[index] in EIGEN2_SUPPORT
REVERT: 3e81567be9 improve automatic handling of gotoblas and atlas
REVERT: add796b725 always link to gfortran for gotoblas, it seems to be harmless for 1.x but needed for 2.x
REVERT: 3b43a0c013 finish the move to Eigen3 in BTL, and let's use our own FindEigen3.cmake script
REVERT: d725e7bb9b pass to eigen3 ;)
REVERT: 3b4d9ba437 fix compilation
REVERT: c5b026847c update FindMKL to match the default installation behavior of MKL 11
REVERT: 50dbae778d allow the possibility to automatically call or not the ctors on a per scalar type basis, and disable automatic initialization of std::complex<>
REVERT: a89adcb53c do not include reference lapack files if they are not there
REVERT: 50ea48bfa8 import back LeastSquares into eigen2support. Pass most of eigen2's 'regression' test, except for regression_4 which is about complex numbers.
REVERT: bf0987735c merge
REVERT: 7bd578ab96 add a minimalistict lapack wrapper
REVERT: 53487cb598 extend PermutationMatrix and Transpositions to support arbitrary interger types and to support the Map/Wrapper model via base and derived classes
REVERT: 46dfdbfcca eigen2 support: import SVD back, pass SVD tests
REVERT: bcb7999cc3 fix the remainder of bug 159
REVERT: 41e3d89bfa fix the eigen3 part of bug 159 - build issue with selfadjointview
REVERT: ad498e1ec3 fix bug 160 - forgot hg add
REVERT: 8a2a0fb9f7 fix bug 161
REVERT: 9c792d545e fix build
REVERT: b03141b526 eigen2 support: implement part<SelfAdjoint>, mimic eigen2 behavior braindeadness-for-braindeadness
REVERT: 8d52744c73 merge
REVERT: a13b183527 eigen2: pass QR decomposition and hyperplane tests
REVERT: c9acfb3c69 one more const missing
REVERT: b7644a956e fix compilation after recent const change in return types
REVERT: 43e38a044e eigen2: pass the inverse test
REVERT: ef415ac48f eigen2: pass lu test
REVERT: 7cf1dda188 eigen2: split tests
REVERT: a020812671 disable eigen2_first_aligned test, it's completely internal stuff
REVERT: beb5ca16d0 fix eigen2_bug_132 test
REVERT: 6ffae0eafa let eigen2 tests use the same ei_add_test macro, which required to prefix them with eigen2_ ; rename buildtests_eigen2 to eigen2_buildtests, etc.
REVERT: 403879f094 eigen2: fix USING_PART_OF_NAMESPACE_EIGEN
REVERT: 8aa346f8bd fix USING_PART_OF_NAMESPACE_EIGEN to export ei_ prefixed math functions
REVERT: 7b9ff330bb fix missing const qualifier in cwiseEqual
REVERT: 38b5854b0b import eigen2 Geometry module into Eigen2Support. fix build of geometry tests
REVERT: 5e5f43994c fix compilation of array tests
REVERT: 0f20f76b14 fix compilation of Eigen/Geometry with EIGEN2_SUPPORT: was including non-existent header
REVERT: 7d973c6f18 const-qualify template parameters representing const arguments to expressions. needed to fix docs compile issue.
REVERT: 327ad49448 fix compilation of LU class example
REVERT: 83b68b03f8 pass eigen2's triangular test
REVERT: ce9c6cffed Move part() to EIGEN2_SUPPORT (had been deprecated for a long time)
REVERT: 7665537b1b make eigen2 visitor test pass
REVERT: de3efafa48 rename build stages to multiples of 10; old stage 2 becomes stage 15, while stage 20 generates errors (instead of warnings) on conflicting API.
REVERT: 742680142e make eigen2 dynalloc test pass (add to eigen2 support some internal stuff that some users may have been relying on)
REVERT: 8c3255c4df relax Map const correctness in eigen2 support stages <= 3 introduce new 'strict' stage 4
REVERT: 733cd0db88 remove eigen2 vectorization_logic test, it's not an API test
REVERT: 5248d623b3 make eigen2 submatrices test pass
REVERT: a02bfa49d8 introduce the 3 stages of eigen2 support, writing to the mailing list about that in Eigen2 to Eigen3 Migration Path thread
REVERT: 0ad8ad73d8 lots more EIGEN2_SUPPORT fixes. Now several of the most important core tests build and succeed.
REVERT: 907dc6111b Completely disable Eigen/Array in Eigen3; completely enable in EIGEN2_SUPPORT.
REVERT: b9f5baf552 big eigen2support fix, aimed at users who relied on internal eigen2 stuff: now we dont need customizations in test/eigen2/main.h anymore.
REVERT: 43b5ac67be restore the behavior of defaulting to Release build type
REVERT: db5b4dd11b import eigen2 test suite. enable by defining EIGEN_TEST_EIGEN2
REVERT: 6e0e7b9a5b fix bug 155, const-related compilation error
REVERT: d587d4e0c8 Added remaining const coeffRef accessors to Array- and MatrixWrapper.
REVERT: 7c99b1932d __cpuidex is not (always) present in VS 2008 + SP1, it seems
REVERT: 8f5b7fd9f2 Replace CMAKE_SOURCE_DIR with PROJECT_SOURCE_DIR to allow the cmake project to be included by a root project.
REVERT: e55c547239 do not stop the factorization if one pivot is exactly 0, and return the index of the first zero pivot if any
REVERT: b0931627f2 return the index of the first non positive diagonal entry (more useful than simply true or false)
REVERT: aeb9fecba1 fix compilation of rowmajor sparse time diagonal
REVERT: 5dedd5abbb fix EIGEN_TEST_NOQT (reported by Philippe Hamelin)
REVERT: f987124d32 Update of CPUID macros to fix segfaults in amd64 code.
REVERT: c24212589a third pass of const-correctness fixes (bug 54), hopefully the last one...
REVERT: c1ba0d3f25 add plugin mechanism to sparse objects
REVERT: e814e52197 Fix compilation error in HouseholderSequence introduced in my previous commit.
REVERT: 780dc1a42a Fix bug 38 * address of temporaries were passed to umfpack_zi_* functions. It is ok with g++-4.4 or 4.5, but not with the -std=c++0x in both versions. This patch makes it work for c++98 and c++0x versions
REVERT: b33088097b Make HouseholderSequence::setTrans() protected (cf. bug 50). Users can call .transpose() instead.
REVERT: c4ae684f0c Decrease the degree of the polynomials being tested to reduce time spent during the tests.
REVERT: 2a30bf4cc0 Fixed #148 where a const-accessor for coefficients was missing in the MatrixWrapper.
REVERT: 135d04cc95 fix compilation when defaulting to row major
REVERT: 4b9bf5eed4 fix openglsupport unit test when defaulting to row major
REVERT: 25c1249e79 fix vectorization_logic unit test when defaulting to row major
REVERT: becf5b1af3 Fix bug in symmetric rank-2 update for row-major matrices (bug 144).
REVERT: 9abf5bb9b0 Const-correctness fix for gemv_selector<OnTheRight,ColMajor,true> (bug 144).
REVERT: 8a3a2c47e4 fix severe perf bug: coeff-based matrix products were not considered aligned, typically preventing vectorization. added unit test.
REVERT: 978334208e Document HouseholderSequence. Incomplete: I did not explain the difference between OnTheLeft and OnTheRight, and there is only one example.
REVERT: 0048aad448 make the table fit within 80 characters
REVERT: 0b84e92c3b an attempt to fix a compilation issue with -std=c++0x
REVERT: e466b85627 Switched "MESSAGE(" -> "MESSAGE(STATUS " in CMake script, since otherwise they may look like errors to the user.
REVERT: 3e33a0bcd0 merge
REVERT: 81ba03546a fix sparse time dense product with a rowmajor lhs
REVERT: 16110f6de8 [Sparse] Added regression tests for the two bugfixes, the code passes all sparse_product tests
REVERT: d1ae68628e fix compilation of code using e.g. Transpose<const Foo>::data() non-const-qualified. Same problem existed for coeffRef() and also in MapBase.h.
REVERT: f8b8e6f200 fix compile errors in Tridiagonalization and in doc examples
REVERT: 03cfbd3123 fix HouseholderSequence API, bug 50:  * remove ctors taking more than 2 ints  * rename actualVectors to length  * add length/shift/trans accessors/mutators
REVERT: ad69e578be In QuickRefPage LinSpaced is improperly documented.
REVERT: f8b18a282b Rename EIGEN_DENSESTORAGEBASE_PLUGIN to EIGEN_PLAINOBJECTBASE_PLUGIN.
REVERT: 2487b17e77 fixed msvc9 build errors.
REVERT: 2bf9e3406a Enable GSL tests (reverts part of changeset 88c50cd078dd).
REVERT: 421122b436 fix MSVC warnings, bug 143
REVERT: 156406c7dc fix preprocessor checks for availability of cpuid
REVERT: e06efb514e Mention ptr_fun in docs for .unaryExpr()
REVERT: 80b2c0f7bd Extend doc page on preprocessor directives.
REVERT: dcfad874e8 Move doxygen comments for EIGEN_NO_DEBUG from source to I14. This reverts changeset 9401cf3193fe. Benoit and I agree that my approach there (to use doxygen comments) pollutes the code too much.
REVERT: 8987a1f1d5 Move section on preprocessor directives from I00 to its own page.
REVERT: 8e1721ffd0 Finish doc page on aliasing.
REVERT: 07224d5604 move BandMatrix and TridiagonalMatrix to the internal:: namespace
REVERT: 9cefea7885 more renaming to make this file matrix-or-array-agnostic
REVERT: 92d77beb08 rename macro
REVERT: 26da803e82 remove EIGEN_REF_TO_TEMPORARY, clarify docs
REVERT: 60ec154d08 Bug 54 - really fix const correctness except in Sparse
REVERT: 73200f5752 Re-enabled the BLAS compilation on non-MSVC systems.
REVERT: 5ad5307b10 Switched back to the old behaviour where EIGEN_SPLIT_LARGE_TESTS was ON per default on MSVC systems. Without splitting these tests, some do not compile
REVERT: 9a7500e713 disable blas if C++ compiler is MSVC
REVERT: 3885512bb3 Added automatic SSE3/4.1/4.2 support for MSVC.
REVERT: 6449087410 Re-enabled the missing tests, again...
REVERT: a95a64f7db Improved the array unit test - internal::isApprox needs to use the same precision as VERIFY_IS_NOT_APPROX. Removed debug code from test_isApprox.
REVERT: bc1b421cd2 Uups - re-enabled subtests 1 to 5.
REVERT: c353950ea3 Fixed compound subtraction in ArrayBase where the assignment needs to be carried out on the derived type. Added unit tests for map based component wise arithmetic.
REVERT: edb40dbde5 Added unit test for matrix creation from const raw data.
REVERT: 17603cc55c Fixed ctor from const raw data for Matrices and added the missing implementation for Arrays. Fixed a warning regarding the conversion from int to bool in MapBase.
REVERT: 96d572eff8 fix warning
REVERT: dcdf17be25 Fix bug 133: remove the EIGEN_RESTRICT which was useless here anyway
REVERT: e6ab671eca merge
REVERT: 9045c65e00 Fix compilation of Tridiagonalization_diagonal example. After changeset 63806965d637, matrixT() is a real matrix even if the matrix which is decomposed is complex.
REVERT: 09c9a316c4 enforce compilation of blas unit tests when running ctest
REVERT: c4b495cf2c Specify root namespace for fftw_plan from FFTW3 library. After changeset de091f956edd (the ei_ --> internal:: change), there are two symbols called fftw_plan, one from the FFTW3 library and one from Eigen.
REVERT: bfed6b8c1e Fixed NEON compilation errors, changed float-abi back to softfp (which is the most used right now). Some complex tests appear to segfault, needs a more careful look.
REVERT: 84c1b3679a fix intermittend failure of schur_real test: there only is an iterative process if size>2
REVERT: 2d6861421c Bug 54 - The big Map const-correctness changes
REVERT: 675f6bd5f1 suppress stupid warning
REVERT: e317d87770 fix compilation
REVERT: 401cbc5c46 fix compilation with ICC (template keyword on a non template method)
REVERT: f9badff55a fix ICE with gcc 3.4 and 4.0.1
REVERT: b43566d387 fix bug 128 : tridiagonalization failed for 1x1 matrices
REVERT: 4100ec2e87 simplification
REVERT: 3aaef5524d compilation fix
REVERT: 61c546f279 fix compilation of sparse_basic for DynamicSparseMatrix
REVERT: 13c53a90de fix the build of eigensolver_complex test.
REVERT: 10be8886ca fix bug 127. our product selection logic was flawed in that it used the Max-sized to determine whether the size is 1.
REVERT: 2c04d19739 fix comment
REVERT: cc2a9029e2 [mq]: Mingw32 fix
REVERT: ea8d1f4bbd add main ei_* functions into Eigen2Support
REVERT: 0c90dce747 add a word about the ei_ prefix change in Eigen2 -> Eigen3 doc page.
REVERT: 546b104ef9 Applied a fix to our std::vector specialization which prevents the usage of workaround_msvc_stl_support when T is not a class.
REVERT: 388bcce048 add is_const
REVERT: 71b59be7f9 remove makeconst_return_type
REVERT: 3fd0a9af5a Fixed compilation of tridiagonalization related unit tests.
REVERT: 1e4d29dc76 Removed remove_const_on_value_type since the meaning is unclear and it is in fact unused. Extened the meta unit tests.
REVERT: d63bf00afc Added STL like (add|remove)_const. Fixed add_const_on_value_type for "const T* const".
REVERT: 69622fc9a6 Postfixed add_const and remove_const by _on_value_type to express the differences to the STL.
REVERT: d69c4f0c52 dos2unix
REVERT: 8f2c7c3db4 Merge.
REVERT: b785d578dd make HessenbergDecompositionMatrixHReturnType internal
REVERT: 55b5bdabd3 make TridiagonalizationMatrixTReturnType internal and only export a public MatrixTReturnType typedef
REVERT: 7a3796adcc add a TridiagonalizationMatrixTReturnType class to make Tridiagonalization::matrixT() more efficient and future proof.
REVERT: 3bae41561a Compilation fix in case EIGEN_DEBUG_ASSERTS is defined.
REVERT: b105995d4e fix a couple of issues with TridiagonalMatrix
REVERT: 89857b962f s/id/p to avoid name clash
REVERT: f8ba3ede02 fully implement scalar_fuzzy_impl<bool> as, e.g., the missing isMuchSmallerThan is convenient to filter out false values.
REVERT: 363201fb39 Remove parentheses for compatibility with cmake 2.6.2
REVERT: 5afdf3c91f make example compile
REVERT: 4e480723ab minor fixes
REVERT: 351f373454 some dox tweaks
REVERT: 5249b77718 fix bug 122 : rank 2 update test and scalar multiple extraction were both wrong
REVERT: 34c9649192 make UpperBidiagonalization internal: don't want to support it, it's not used. Keeping it because it tests BandMatrix.
REVERT: 6e5f4f8509 Rework nested<> to be cleaner, see bug 76.
REVERT: 98a64a9d88 Improves the filter for hidden files in "Eigen" and "Eigen/src". This generic solution prevent cmake from having an error .svn folders when the source folder is under subversion.
REVERT: ef9c7c323e now the full blas folder requires a fortran compiler
REVERT: 0e9e2a4b14 fix bug 120 : compilation issue of trsolve unit test
REVERT: 58a026a562 split level 1 and 2 implementation files into smaller ones and fix a couple of numerical and tricky issues discovered by the lapack test suite
REVERT: 00e458d634 import reference BLAS routines which are not already implemented in Eigen : modified givens rotations, and packed and banded storages
REVERT: 2150ec5c53 this product still badly read the imaginary part on the diagonal
REVERT: 70ae65319d holy crap, i had disabled all static asserts in r3382
REVERT: 5a6d691663 fix compilation of product_mmtr
REVERT: 30898f3631 add missing non const data() method to MapBase
REVERT: 70c157a515 implement HEMV level2 blas routine
REVERT: 989aadcb34 make sure our internal selfadjoint*vector product does not use the imaginary part of the diagonal entries
REVERT: ef17e9367c implement SYMV level2 blas routines
REVERT: 8ef87328ea implements TRMV level 2 blas routine
REVERT: 5165f43e9d make trmv uses direct access
REVERT: 555774bbae fix issue 114: workaround cmake enable_language bug
REVERT: 45c712a154 IBM XL C compiler supports __attribute__((aligned(n))) syntax
REVERT: a2720bbf47 some cleaning in blas level 2
REVERT: 84efbd8db3 fix typo
REVERT: 5662db130b implement GERC and GERU blas routines
REVERT: cb2fb9564e implement GER blas routine
REVERT: 041f2f2334 implement HER and HER2 blas routines
REVERT: 5e87ce14ad update rank 2 update doc
REVERT: f75e50c6ad makes rank 2 update function conformant to BLAS HER2
REVERT: 9160d9a5f5 implement SYR and SYR2
REVERT: 7eb19fdddf add regression unit test
REVERT: 7b23abae20 fix compilation of transform * scaling
REVERT: dd9c1e0ea0 clean a bit AMD and SimplicialCholesky and add support for partly stored selfadjoint matrices
REVERT: 83bcc0e246 Add support for sparse symmetric permutations
REVERT: 3d8d64b252 update blas lib wrt recent change of general_matrix_matrix_triangular_product
REVERT: fb69f90c30 Docs: aliasing and component-wise operations.
REVERT: a51d1e9eb9 fix some remainign issue with  ei_ -> internal change
REVERT: b7cf1a2422 new feature: copy from a sparse selfadjoint view to a full sparse matrix
REVERT: a395efee83 fix return type of rightHouseholderSequence()
REVERT: 4fd0221340 Correct std::map fix (two commits ago); copy fix to aligned_allocator doc.
REVERT: d343e85781 fix doc compilation
REVERT: b7249d4df1 Docs: correct declaration of aligned std::map in TopicStlContainers.
REVERT: 215413eca9 properly use nested types
REVERT: 3d27aa8e50 prevent warning
REVERT: 2bd18377c9 generalize our internal rank K update routine to support more general A*B product while evaluating only one triangular part and make it available via, e.g.: R.triangularView<Lower>() += s * A * B;
REVERT: 47fe776cdd add missing specialization
REVERT: b0ce8f1d83 extend unit test to cover previous bug
REVERT: 657042cb52 fix Eigen's trsv for complexes
REVERT: 7bbef2f825 blas level2: gemv and trsv are green
REVERT: d2159209a1 trsv: simplifications/cleaning
REVERT: 67bd2deccd trsv: add support for inner-stride!=1, reduce code instanciation, move implementation to a new products/XX.h file
REVERT: 16daaa050b fix error handling of level 1 routines
REVERT: 1994dfbb3d add a minimum degree ordering routine based on CSparse (LGPL) and a new built-in sparse cholesky decomposition
REVERT: 1c4c3cb6b1 fix bug 107: SelfAdjointEigenSolver and RowMajor (and add unit test)
REVERT: adf36c39e1 fixes related to ei_ -> internal change
REVERT: f8e5384ea1 merge
REVERT: f7e787f921 implement proper error handling in level 3 routines
REVERT: be1a753c30 improve detection of erros
REVERT: a0d32edc54 fix matrix product bug with OpenMP
REVERT: 3677433ae7 rm auto normalization in favor of clamping
REVERT: ede3a327f5 Additional fix to enforce the compiler to use the correct prunning method.
REVERT: 60082ce8b0 Fix bug #65.
REVERT: 49afb692f0 Added a comment on why is_arithmetic is used in DenseCoeffsBase.
REVERT: 4aed2caeec Fixed compilation due to lacking Transform definitions.
REVERT: acb80ba184 oops (rm commented code)
REVERT: 13e6a9e697 Let's be safe: enable auto normalization is quaternion to angle-axis code since a slight numerical issue may trigger NaN. The overhead is small and I doubt the perf of this function could be critival for any application !
REVERT: 9c53003e39 implement VERIFY in a function so it doesn't get compiled thousands of times.
REVERT: 0c3dcfde86 on test failure, abort instead of exit, so we can get a stack trace
REVERT: d4c8e8cd0a add eigen2support Transform typedefs, add Eigen2To3 section on Transform
REVERT: c58b17336b fix bug 92 - we were doing stupid things when passing the list of libraries to link to.
REVERT: ec74bdf0b9 document LvalueBit better
REVERT: ad980afbe2 generalize the prune function
REVERT: abe284b0dc fix sparse rankUpdate and triangularView iterator
REVERT: cb2172d5f2 add the possibility to solve for sparse rhs with Cholmod
REVERT: d4a6867089 Fixed bug #95 by changing _M_IX64 to _M_X64 as proposed by Jan Schlicht.
REVERT: 1cf5524b5f Merge
REVERT: 293b8f61a1 rm the useless SparseSolverBase class and provide more compile time traits
REVERT: 62335b888e Renamed cleantype to remove_all since it is close to remove_{const|pointer|reference}.
REVERT: 4de2abc88b fix compilation (bad internal:: stuff)
REVERT: 500e805187 fix compilation and unit test of adolc
REVERT: f2b04691b0 fix bug 94: add #include src/misc/Solve.h in SparseExtra
REVERT: bfcdeca4d0 add new API for Cholmod preserving the legacy one for now
REVERT: 27b05fdd7c Initial fixes for bug #85.
REVERT: 9e7fc39660 Allow unset ${CMAKE_BUILD_TYPE} which is required for some targets and corresponding to using default values.
REVERT: 2f6a728345 make polynomialsolver test compile faster
REVERT: aab4ed7974 error out on bad build type
REVERT: 7bbc414f3b adapt mpreal to eigen3 mathfunctions system
REVERT: 754240f7d2 bug 86 : use internal:: namespace instead of ei_ prefix
REVERT: f236284106 remove build type tweaking
REVERT: 1a295f905f Use 'Release' as default when build type is not specified. Otherwise, "cmake /path/to/eigen/" in an empty build directory, as specified on the CMake page on the wiki, yields a fatal error.
REVERT: 5b4d33438e don't change the build type, fatal error if bad build type
REVERT: 3cdb76dae5 Improved I13_FunctionsTakingEigenTypes.dox.
REVERT: 119016852d Fixed bug #84.
REVERT: 8ef8f47f28 Fixed the unit test splitting for MSVC.
REVERT: bad5808006 fix typo and rephrase sentence
REVERT: aaf7006e28 renaming: ei_matrix_storage -> DenseStorage           DenseStorageBase  -> PlainObjectBase
REVERT: 78ba5ce6c1 Improved the fixed size array display.
REVERT: 2d039b297b rename PlanarRotation -> JacobiRotation
REVERT: a86570b9eb work around stupid msvc error when constructing at compile time an expression that involves a division by zero, even if the numeric type has floating point
REVERT: e120013b2d allows blocks of code to be larger than the page body (like tables)
REVERT: a3c6662ee0 update the position of the owl
REVERT: 87ebf8fbaa factorize CSS code, make use of the "manual" class when appropriate, clean the style of the big linear algebra table
REVERT: 9bd38a64e0 increase css max-width
REVERT: 3c3e38274d merge
REVERT: 5a119b05c7 specify max-width in em not px
REVERT: d7ee34a10f factorize CSS code, make use of the "manual" class when appropriate, clean the style of the big linear algebra table
REVERT: ffc1f552b4 css update: max-width and margins
REVERT: aa8abb241c move tables from class "tutorial_code" to "example" also remove a align="center" in the Aliasing page -- it doesn't make sense to have 1 centered table page when all others are left aligned.
REVERT: 7e614f879f update style of the quick ref guide
REVERT: f1d8c7dfbb update CSS to doxygen 1.7.2, new CSS and cleaning of the tutorial
REVERT: fa794de870 Fixed bug #79.
REVERT: 813cc6f930 re-fix the broken msvc warning in JacobiSVD
REVERT: 9f365c6b18 improvements in pages 5 and 7 of the tutorial.
REVERT: 4b42c94b54 improvements in tutorial page 4 : block operations
REVERT: 858aae2ce2 fixed table html
REVERT: 0776ab82ae fix stupid msvc warning in jacobisvd
REVERT: 11e96d53da fix bug i just introduced in ei_add_test_internal
REVERT: 4eb80638e0 ah ok, we want to build this even without GSL. so the bug is in FindGSL.cmake.
REVERT: b8313eca6f more unsupported/ CMake fixes
REVERT: a71e79f0c6 Fix general linking issue for tests linking to multiple libs, and explicitly link mpfr_real test to GMP.
REVERT: 0f2d4e018d add jacobiSvd() method, update test & docs
REVERT: b38b43e4b3 Fixed bug #74.
REVERT: d85c36e38c Added stddeque unit test dervied from the stdlist test.
REVERT: ba2e51f4ac Added tag 3.0-beta2 for changeset 5c4180ad827b
REVERT: 229cc2ed79 bump to 2.92.0
REVERT: 7df5e31ed3 doc updates/improvements
REVERT: 744df47ad4 update the porting guide
REVERT: c85aade208 doc typo
REVERT: 8a11062acf JacobiSVD doc fix
REVERT: bffc87d168 JacobiSVD:   * fix preallocating constructors, allocate U and V of the right size for computation options   * complete documentation and internal comments   * improve unit test, test inf/nan values
REVERT: a873272126 import BLAS test suite
REVERT: e9babbd63d compilation fix
REVERT: eb1efdd153 fix bug 44: use VERIFY_IS_APPROX instead of exact comparison to please x87 extended precision
REVERT: 3b0d64e056 add EIGEN_TEST_X87 option
REVERT: bf6f6a029e fix compilation and warnings with fcc 4.0.1
REVERT: 20aeb28ea8 add the possibility to disable OpenGL testing
REVERT: 64f683365b remove SVD class (was bad code taked from elsewhere) Use JacobiSVD for now. We do plan to reintroduce a bidiagonalizing SVD asap.
REVERT: 381d5602b8 Jacobi improvements:   * add fixed-size vectorized path   * add missing restrict keywords   * use innerStride()   * allow vectorization even if innerStride()>1, if PacketSize==1     (think of the case of rows of std::complex<double>)
REVERT: 594828194a fix the Jacobi bug, expand unit test
REVERT: bee4789880 add Jacobi unit test. jacobi_5 fails, exposing bug 39.
REVERT: e6c9d65a75 add support for uniform of double
REVERT: bb5e0a0287 uncomment commented line for debug
REVERT: 06b0ba1c86 add support for uniforms
REVERT: 956350d5d9 set ColPivHouseholderQR as default preconditioner for JacobiSVD
REVERT: a7f74efc1a implement JacobiSVD::solve() and expand the unit test
REVERT: 7d2b7bd801 add the prototype of all level2 functions
REVERT: 758c99102b compilation fix
REVERT: 8839967f77 adapt Quaternion to JacobiSVD API changes.
REVERT: ea3fb888da add option to compute thin U/V. By default nothing is computed. You have to ask explicitly for thin/full U/V if you want them.
REVERT: bc58a5beec Rework JacobiSVD api / template parameters. There is now an integer QRPreconditioner template parameter, defaulting to full-piv QR. Since we have to special-case each QR dec anyway, a template template parameter didn't add much value here. There is an option NoQRPreconditioner if you know your matrices are already square (auto-detected for fixed-size matrices).
REVERT: 99a2cc1829 merge backout
REVERT: f1749c5066 Backed out changeset dc35beb7190f
REVERT: 33de52939c MSVC for windows mobile does not have the errno.h file
REVERT: 7950d4ed6b an attempt to fix compilation on windows mobile
REVERT: 8893c3b8b0 remove the Taucs backend : Taucs is not maintained anymore and the backend was crap anyway
REVERT: b8e9bf7353 improve FindCholmod
REVERT: 0a25dcd5f9 Updates to the Sparse unsupported solvers module. * change Sparse* specialization's signatures from <..., int Backend> to <..., typename Backend>. Update SparseExtra accordingly to use structs instead of the SparseBackend enum. * add SparseLDLT Cholmod specialization * for Cholmod and UmfPack, SparseLU, SparseLLT and SparseLDLT now use ei_solve_retval and have the new solve() method (to be closer to the 3.0 API).
REVERT: db106d1277 extend OpenGL support module with true unit tests and support for Transform, Translation, etc.
REVERT: 00a252002f fix geometry tutorial regarding the need to specify the "mode"
REVERT: 1cdd2b4f90 mark LLT/LDLT solveInPlace func internal and rm their boolean returned value
REVERT: 7dd8650461 fix doc
REVERT: 51e186401f fix compilation on ubuntu 9.04's version of gcc 4.3 (yes, wtf)
REVERT: 8cd0437541 fix warning
REVERT: e0e8da5556 Added a note to the Gram Schmidt code and improved some formatting.
REVERT: e412f96cbf Merge.
REVERT: f362d09acb Fixed some SVD issues.
REVERT: 45b231fc50 Make the SVD's output unitary and improved unit tests.
REVERT: 8ae10a90a1 merge
REVERT: e2c82d809a SVD:  * fix unit test for rectangular matrices.  * enforce that rows >= cols since various places in the code assume that.
REVERT: 13162f5567 Fixed bad memory access in the SVD.
REVERT: a123c71912 Fixed bad memory access in the SVD.
REVERT: 555ec5ddfb remove superfluous #ifdef
REVERT: 2ae066e4ee add cmakelists for 2 subdirs and make sure all subdirs are installed (GLOB)
REVERT: 937112f2d2 fix vectorization logic and code of cross3 which was never enabled..
REVERT: fdd742a1f0 fix unitialized quaternion
REVERT: 9661edfc55 add a bench to compare various transformation methods
REVERT: f697aa0121 fix += return by value like operations
REVERT: 8b74c4b5b4 noalias was wrongly skipping automatic transposition
REVERT: 8fd57190ee add the possibility to extend QuaternionBase
REVERT: 7f23cc53e8 Fixes mingw32 compile issues
REVERT: 43b71ea18a add missing copyrights
REVERT: 53b3476a76 fix bad mat * mat * scalar when the implicit conversion operator to a Matrix is used
REVERT: daca5d6cfe Docs: Improved the docs for writing functions taking Eigen types.
REVERT: acf422ec54 fix bad "using typename"
REVERT: 98511eea5d Fix Sun CC parsing of Eigen/Core. In particular, I moved all the block related methods to a plugin file. This also significantly reduce code verbosity.
REVERT: d47e4af206 didn't want to commit that bench change.
REVERT: 980ab33000 make a couple of typedefs public so stuff compiles
REVERT: da35c25184 fix 4x4 SSE inversion when storage orders don't match
REVERT: a39102dbdc update inverse unit test to highlight another bug in SSE 4x4 inversion code
REVERT: 45fca9b844 fix inversion of 4x4 unaligned matrices
REVERT: 2743e36bcb update this test to build against current eigen. remove the 'normal' path as it was not compiling anymore and I couldn't see the point of it (?)
REVERT: 26c0f2c76d add TriangularMatrix::conjugate to be consistent since we have adjoint
REVERT: 67aff6cb8a Docs: add section on resolving the aliasing issue.
REVERT: 4e783a6dcc Docs: Typos in ArrayBase doxygen comments
REVERT: 39109e95b2 Docs: Add references to TopicClassHierarchy
REVERT: 39a00fb15f Document DenseCoeffsBase
REVERT: 464810bce1 Fixed DiagonalMatrix assignment.
REVERT: 009c7c0d56 Fixed typos.
REVERT: 09d1663a69 Simplified to product templates to a minimum of template parameters.
REVERT: aa145d4dca Removed unused code.
REVERT: 8d0bc6eac6 Matrix product refactoring (rhs products only).
REVERT: 9f35e5914b fix ugly conversion from double[2] to complex
REVERT: 953e63beca add missing specialization for vector * selfadjoint
REVERT: 6c5570ee82 merge
REVERT: 383f219d67 quickly mention how to solve a sparse problem
REVERT: 29c955b805 disable NonLinearOptimization test until it's fixed
REVERT: 37521de45a * disable unalignment detection when vectorization is not enabled * revert MapBase unalignment detection
REVERT: 0c289762f1 Fixed Geometry module failures.
REVERT: 87ddc8b7ec fix Transform() constructor taking a Transform with other mode. Not really tested as the geometry tests are currently busted.
REVERT: 82212b610f fix warnings
REVERT: e5fef829b4 further improve compilation error message for array+=matrix
REVERT: 604ff63001 improve compilation error message for array+=matrix and the likes
REVERT: a2e47943dd fix declaration of AffineTransformType in Translation
REVERT: 78d7213575 fix missdetection of GLUT
REVERT: 31bfa34a37 allow vectorization of mat44.col() by adding a InnerPanel boolean template parameter to Block
REVERT: 0814a475bc slightly generalize the alignment assert in MapBase
REVERT: c8bca91c8f remove the aligned bit flag for non vectorizable types
REVERT: 8b72f26e2f forgot to remove a #endif
REVERT: 172b7028e4 fix determination of number of registers on sse:   __i386__ was not defined by MSVC 2010. fixed as (2*sizeof(void*)). also move that to SSE/ and let the default for unknown arch's be just 8.
REVERT: ee795deaa8 merge the backout
REVERT: e2a90c7df1 Backed out changeset 05aa89b0c8a4
REVERT: bd4491211d Document EIGEN_NO_DEBUG macro. I needed some doxygen tricks to get this to work, so it may not be worth it.
REVERT: bca88848de Aliasing doc: explain that some cases are detected, reverse order examples.
REVERT: 36292ed4e2 Added more detailed docs to the QR decompositions classes.
REVERT: 5b64de8f9e some small improvements to the page on functions taking eigen objects.  - make the beginning more precise  - make the first example be a full selfcontained compiled example, no need for all the others, but having the first one doesn't hurt.
REVERT: 00cb21da46 Added more examples to the function writing tutorial including EigenBase, DenseBase, etc.
REVERT: 28c320b156 Fixed some typos and reformulated a few sentences.
REVERT: 65f7cb165f Added a tutorial on writing functions taking Eigen types.
REVERT: 4f53415779 fix warnings. The one in Reverse was potentially serious: coeff() methods should return CoeffReturnType, not "Scalar", if the expression is potentially a Lvalue.
REVERT: 8180bb9c50 Fixed Affine transform typedef.
REVERT: 6ebbcd9161 Add page giving an overview of the class hierarchy. This is mostly copied from the wiki, which in turn copies Benoit's email at http://listengine.tuxfamily.org/lists.tuxfamily.org/eigen/2010/06/msg00576.html I used ASCII art for the inheritance diagrams for now, but I don't mind moving to GraphViz/dot as discussed earlier.
REVERT: a7761ccb22 Documentation: Start special topic page on aliasing.
REVERT: 25438791e5 Added static method Identity() to the Translation class.
REVERT: 9f5ad5af9f Safeguarded some Transform functions with compile time asserts. Added missing static Identity() to Rotation2D, AngleAxis.
REVERT: 1af785f16e Transform is now per default Projective. Improved invert() in the Transform class. RotationBase offers matrix() to be conform with Transform's naming scheme. Added Translation::translation() to be conform with Transform's naming scheme.
REVERT: d1d3c505a9 Removed debug outputs.
REVERT: 6b33457448 * added EIGEN_ALIGNED_ALLOCATOR macro to allow specifying a different aligned allocator  * attempted to add support for std::deque by copying and modifying the std::vector implementation...MSVC still fails to compile with the std::deque::resize() "will not be aligned" error...probably missing something simple but I'm not sure how to make it work
REVERT: 6ef937b6b8 Several changes in comments to keep Doxygen happy.
REVERT: f2290c988f Add some more examples for the API documentation. The only missing examples now are for homogeneous() and hnormalized(); I don't know what they're used for ...
REVERT: a0dbd062e5 Add examples for API documentation of block methods in DenseBase.
REVERT: 7f46338b2d Add examples for API documentation of MatrixBase::cwiseXxx() methods.
REVERT: 8436f12d32 Set Doxygen config variable INCLUDE_PATH to plugins directory. This is necessary to get functions like MatrixBase::cwiseAbs() documented; otherwise doxygen can't find the include file in which they are defined.
REVERT: 7ecac65137 Tutorial page 7: more typical example for .all(), minor copy-editing.
REVERT: 2f559aa8ec Add newline at the end of Dense.
REVERT: 5e91a7c446 allow vectorization of mat44.col() by adding a InnerPanel boolean template parameter to Block
REVERT: 99f2c2c7d8 Tutorial page 6: Fix typo, add table of contents.
REVERT: 6721459066 fix merge conflicts
REVERT: ef449a9ecd merge with complex branch
REVERT: ac4e9d0f7a Extend tutorial page 5: Advanced initialization.
REVERT: 4e8e781e2d sync with default branch
REVERT: a2d4e164ba oops
REVERT: 0153082bc9 add an OpenGL module simplifying the way you can pass Eigen's objects to GL
REVERT: ce67f3b5a0 fix SparseView: clean the nested matrix type
REVERT: a33e6ed40b Unified LinSpaced in order to be conform with other setter methods as e.g. Constant.
REVERT: 4519a9dfbe merge
REVERT: 968aaaff9a add matlab-like mixed product
REVERT: 65c4807968 rename indices to a common scheme
REVERT: ba52e60808 fix inner vectorization logic
REVERT: 8ea6c28fa7 fix strict aliasing issue
REVERT: 2059c6b143 now that we properly support mixing real-complex: clean mixingtypes test
REVERT: e419df1bf0 fix typo
REVERT: c11b44996f fix compilation of quaternion demo
REVERT: 096f6e67fa fix mandelbrot compilation, and make it use Array instead of Matrix
REVERT: 4e9b33341c fix a strict aliasing issue with gcc 4.3
REVERT: d4d97ec2df fix storage order request
REVERT: ad31b346ed fix static allocation of workspace
REVERT: 40cb6ea169 add NEON ploaddup and pcplxflip functions
REVERT: 4e8c65dff0 one more fix for openmp
REVERT: 73896584c4 improve block-size heuristic
REVERT: 87beb57fab fix openmp version
REVERT: f0ee91bfeb fix declaration of pack_lhs in trsm
REVERT: 72f3a0fd04 uncomment commented code for debug
REVERT: 654c42f4ed report a true assert when not checking for an assertion
REVERT: bd9582f584 it appears only the "on the left" case was tested
REVERT: 6219aa5d29 fix trmm and symm wrt lhs packing
REVERT: d428973112 fix compilation by including file in correct order
REVERT: 273028897e * fix SelfCwiseBinaryOp traits and handling of mixed types * improve compilation error in case of type mismatch
REVERT: b938581869 explicitely disable vectorization for mixed coeff based products
REVERT: adc016ce49 fix lhs packing in the case of real * complex products
REVERT: aee8c35011 port Jacobi to new ei_pset1/ei_pload API
REVERT: d2ed9a08b0 * fix compilation of mixed scalar product * optimize mixed scalar products
REVERT: e06e327670 * fix a couple of remaining issues with previous commit, * merge ei_product_blocking_traits into ei_gepb_traits
REVERT: c14e452304 * _mm_loaddup_pd is slow * optimize SSE ei_ploaddup<Packet4f>
REVERT: 6783b144b6 wip: extend the gebp kernel to optimize complex and mixed products
REVERT: c5c3fe89f6 update mixing type test
REVERT: c1dd54ff13 update unit test for new API
REVERT: d849d54ef8 add support for mixing type in trsv
REVERT: e6e3d8cebb optimize non fused MADD, and add a flatten attribute macro to enforce inlining within a function
REVERT: fc200d194c matrix product: move the alpha factor to gebp instead of the packing, clean some temporaries, etc.
REVERT: e5a047133d mixing types step 3: - improve support of colmajor by vector and matrix - matrix - now all configurations are well handled, but the perf are not always very good
REVERT: cbd2c855d3 make colmaj * vector uses pointers only
REVERT: 84eaa61f7f mixing types in  product step 2: * pload* and pset1 are now templated on the packet type * gemv routines are now embeded into a structure with   a consistent API with respect to gemm * some configurations of vector * matrix and matrix * matrix works fine,   some need more work...
REVERT: 8d434dc8c7 sync
REVERT: dac7fef5b3 * generalize rowmajor by vector * fix weird compilation error when constructing a matrix with a row by matrix product
REVERT: 19c42475d7 fix compilation: make the check_coordinates* functions const
REVERT: 4d2840f1b4 let ei_pset1 use _mm_loaddup_pd. Not a significant speed improvement, but also not a speed regression, and replaces 3 instructions by 1 single instruction.
REVERT: 7f206faee9 Added NEON/Complex.h, ~3.5x faster than scalar std::complex<float> minor fix in AltiVec Complex.h
REVERT: 98c262487c disable MSVC optimization when the underlying compiler is ICC
REVERT: 5ebf86e5d9 move ei_conj_if to a more appropriate file
REVERT: 8d016d6f26 forgot to commit ei_p4f_FORWARD;
REVERT: dd0ebf076f forgot to add the Complex.h include for AltiVec.
REVERT: e6e9d5db55 Altivec port of Complex.h. Note: For some reason g++ 4.4 is >200% slower than g++ 4.3 on altivec code. The same benchmark (bench_gemm) was tested, on the same hardware/OS (G4/Debian testing), with same CFLAGS. With some code reorganizing I managed to get some minor gain on 4.4, but I just could not reach 4.3 speed. This is most likely a bug, but I'm waiting to see if it's fixed on 4.5. I'll look into this a bit more.
REVERT: 157f302a5f Be consistent in how the tutorial pages link together.
REVERT: 0945201dd0 Small changes to tutorial page 2 (matrix arithmetic): * slightly more extensive discussion of aliasing * layout: put example code and output side-by-side * add some links, etc
REVERT: 9f135fbefe fix a few weird issues with gcc 4.3 32bits and complex<float>
REVERT: 1089540a87 bench: use of Eigen/Array is deprecated + fix includes for iostream
REVERT: 2259b66567 fix SliceVectorizedTraversal for packetsize==1
REVERT: 62446e8b37 extend vectorization_logic
REVERT: b9b3a6b77d Added more redux types/examples in tutorial and fixed some display issues
REVERT: 68d1c328eb Reductions/Broadcasting/Visitor Tutorial added to index
REVERT: dd4b65d13e Reductions/Broadcasting/Visitor Tutorial added
REVERT: 829cf24af0 scalars fitting in a single packet requires more work, step 1 * add a, Alignable trait * update LinearVectorization assignment
REVERT: 20a23926ad compilation fix
REVERT: 48e45522cf enabling aligned loads/store for complex<double> is much more tricky, so the temporary fix is to always perform unaligned load/store
REVERT: dafd6b600f an attempt to fix wrong unaligned store
REVERT: 8c6068379f update to support mixin types
REVERT: 5b4d01a826 support for real * complex matrix product - step 1 (works for some special cases)
REVERT: 39bcf5b71b mention that array = matrix is fine too
REVERT: d13f251982 sync
REVERT: 71a1c2cc09 add support for complex
REVERT: a29fd8fb06 optimized conjugate products for SSE3
REVERT: 7945f1d294 optimize for SSE3 => significant speed up !!
REVERT: 5892b63753 optimize pmul for complex<double>
REVERT: 733d64d35b optimize gemv for complex<double> and fix gcc alignment issue in 32bits
REVERT: 71b8e15f7a cleanning
REVERT: 14b0df2778 typo
REVERT: 9843e1965d s/IsVectorized/Vectorizable
REVERT: 95ae46287f add a compile time error if someone call packet on Diagonal (instead of infinite runtime loop)
REVERT: d84022c299 fix vectorization rule of diagonal-product
REVERT: 1287e544dd fix row cwise-prod column in coeff based products... I really don't know why this worked so far...
REVERT: 34b35e0feb extend product unit tests
REVERT: ea4425915e add a conj_product functor and optimize dot products
REVERT: cc3dfb5188 fix mixing types in DiagonalProduct
REVERT: 639ebc885b * add a IsVectorized mechanism (instead of packet-size>1...) * vectorize complex<double>
REVERT: 151c385060 add a unit test for previous bug
REVERT: 2e84723985 add a unit test for conj_helper and ei_pconj
REVERT: b454a9391a bug fix forgot to conjugate the scalar factor when needed
REVERT: bb4799f8ee reduce code generation and minor speed up
REVERT: b9fd46fc18 add support for vectorized conjugated products
REVERT: b5bace4d83 fix range
REVERT: 940d5e1ba1 Various documentation improvements. * Add short documentation for Array class * Put all classes explicitly in Core module (where applicable) * Section on Modules in Quick Reference Guide * Put Page 7 after Page 6 in Contents :)
REVERT: 04831b65d2 Small changes to tutorial page 1.
REVERT: fdc9c54489 Avoid calling resizeLike, if EIGEN_NO_AUTOMATIC_RESIZING is defined
REVERT: c547f6223a Add all unsupported modules and fix header file paths
REVERT: d78beeee55 indentation
REVERT: 52f5937136 Added tag 3.0-beta1 for changeset 12a658962d4e
REVERT: 334004b299 fix the overview page and add mention that the wrong stack alignment issue may have been solved by gcc 4.5
REVERT: 3635acdc24 * extend the Has* packet traits and makes all functor use it * extend the packing routines to support conjugation
REVERT: 38f5d16661 oops I did not see that
REVERT: 70ee0da55a add intitial support for the vectorization of complex<float>
REVERT: d0a05f5d92 add check for non x86 platforms, we get a compile error on arm/powerpc without the check (there is no known -yet- method to get cpuid, without resolving to kernel /sys interface)
REVERT: c294b75414 check for !x86 platforms, otherwise the BTL benchmark doesn't compile on arm/powerpc
REVERT: dec2f6b235 Improve documentation, mostly by adding links to Quick Start Guide.
REVERT: 707c0504d1 fix warning "type qualifiers ignored on function return type" for long long scalar types
REVERT: 988be51e9a char is not necessarily signed....
REVERT: f540fa0301 improve packetmath unit test for sum reductions
REVERT: 73072069b7 fix unaligned workspace in sybb
REVERT: 9d958cdd08 fix nomalloc_2 issues with ICC and gcc 4.0.1 (and speed up compilation ;) )
REVERT: be01a5e7b4 comment the workaround of the EIGEN_EMPTY_STRUCT_CTOR workaround for gcc 4.3
REVERT: 8ad4410663 Relaxed precision test.
REVERT: 8a1067d4ca update topic page on products
REVERT: 9adc8b796c * update the general TOC * integrate the old geometry/sparse tutorial into the new one (they are better than nothing) * remove the old tutorial on the core module
REVERT: 2faf94b046 suppress warning and add a fixme about this transpose argument
REVERT: b8680697c3 fix openmp for row major destination
REVERT: a1ad4977f6 Adapted the MSVC visualizer to the new Dynamic value.
REVERT: 960d733a73 fix bug with openmp
REVERT: 834ff195b8 Fixed annoying CMake - Qt warning.
REVERT: ba347c60fc simplify and polish a bit the page 4 / block ops
REVERT: 0e52598cb7 polish the Array tutorial page
REVERT: fb424205fe actually remove 3.0-beta1 tag
REVERT: 0b1dcf7492 Removed tag 3.0-beta1
REVERT: d50340fe6c Enable OpenMP testing for MSVC. Added CMake comments.
REVERT: 36a61b1aae shut one more warning
REVERT: 235fd0e4d1 fix compilation issue with clang
REVERT: f70b8e3d81 oops... fix it better
REVERT: ce06973f6f fix compilation with icc. Anyway, the use of an enum instead of a 'const bool' is more consistent with the code around.
REVERT: 8cf7c116df fix warnings with old gcc
REVERT: b48b877bd3 Bug fix for NumTraits<T>::lowest() . std::numeric_limits<T>::min() is the lowest *positive* normalized number for floating point types. This fixes the test failure for geo_alignedbox8 for me.
REVERT: ce9d4272ce slightly raise the threshold used in this test to accomodate results obtained with gcc 4.1
REVERT: 001439e77f s/struct/class/g ; bug reported by Thomas
REVERT: 482e6073d0 fix linalg tut; remove the old one
REVERT: e7998db176 Fixed nullary test not passing on Core Duo
REVERT: 050a0ddc40 Firefox specific style fix.
REVERT: dac0d5c397 More style fixes.
REVERT: 955d1c7651 Slight pimping of the "Basic matrix manipulation" table. More CSS simplifications.
REVERT: 492098192f Examples for DenseBase::middle{Rows,Cols}()
REVERT: 2aa167928a Added tag 3.0-beta1 for changeset 8df94bad9a2e
REVERT: 08137b89a7 merge. first time i see this: someone pushed *between* my hg pull -u and my hg push ! I guess that means we have very high activity these days. good!
REVERT: 74b4022372 nearly complete page 6 / linear algebra + examples fix the previous/next links
REVERT: 8063a48f09 Fixed small typo in arithmetic tutorial
REVERT: 926871d0f9 Fixed some doc appearance issue. Started cleaning up the CSS.
REVERT: f8312a0b40 Fix hover background color for H2. Align tutorial tables at the top.
REVERT: f8284aaa51 fix unsupported module doc
REVERT: b6e10a8b95 Followed Benoit's comment and removed the Mainpage.dox too.
REVERT: 216fd9de27 clean the class hierarchy
REVERT: 07e1266215 Removed old doxygen config file.
REVERT: e4efadf331 Added exclusion filters.
REVERT: 478d5e730d Fill in open entries in decompositions table.
REVERT: 696f052afa update the big linear algebra table (fixes, add notes and definitions)
REVERT: b78fea39f8 it remains only to set the status of RealSchur and EigenSolver
REVERT: ab87d7c045 update the big table and add an Optimization column
REVERT: 5c9d80fc52 Renamed DenseBase::{row,col}Range() to DenseBase::middle{Rows,Cols}()
REVERT: e59e563555 Included tests for middleRows() and middleCols()
REVERT: 78621d073d disable empty struct trick for buggy gcc 4.3
REVERT: 61658b797b Remove \nonstable yet. The stability rules for Eigen3 are much simpler:  - all what's not in unsupported/ is considered stable API     (except internal stuff e.g. expression templates).
REVERT: bd0d798620 start linear algebra tutorial
REVERT: caf68148e5 fix potential warning
REVERT: 0ef5368028 Added Block tutorial to docs index
REVERT: e4e786e5ff Fix name clash in "m.block(i,j,m,n)" where m has two meanings. Fix simple typos in tutorial.
REVERT: 916a862134 AltiVec signed integer pmadd removed, proved to be 2x slower than the scalar trait(!).
REVERT: 4811a8fabc Added Block Operations tutorial and code examples
REVERT: 023cde9a94 Modified Array Class tutorial, added examples
REVERT: 41bf620193 Added doxygen info for .matrix() and .array()
REVERT: 2471b07594 start a topic page on decompositions, with a big table.
REVERT: d978f8d035 * update redux section * fix output precision to 3 for the snippets
REVERT: 44d13984ef fix bad tests
REVERT: 8af0fb821d * use transpose() instead of row vectors (more common use case) * add a word about noalias and performance for BLAS users
REVERT: 926fbf7e15 mv comma initializer to page 1
REVERT: 651b6c42a9 add a Transposition section in page 2
REVERT: b3c45302be fix filename
REVERT: 344b3c905f fix link
REVERT: a7bd490abe show a more fancy example for the getting started tut
REVERT: b73c84c770 fix unused warning when EIGEN_HAS_FUSE_CJMADD
REVERT: df5c89f72a fix #146
REVERT: 8e10424303 Fix cache computation on old Intel CPUs which do not support the cpuid function 0x4
REVERT: 3bb2bb21c3 add the manual Intel's way to query cache info
REVERT: 316dbd9dc0 Included definitions for rowRange() and colRange() member functions of DenseBase
REVERT: a956febe99 Relax assertion to allow for matrices with cols() == 0 and/or rows() == 0.
REVERT: c4d3e02f1d introduce a new LvalueBit flag and split DenseCoeffBase into three level of accessors
REVERT: 3c37a53fec Add (set)LinSpaced to quick reference guide.
REVERT: f284c9e478 Require at least MPFR version 2.3.0, because we use mpfr_signbit. Code in FindMPFR.cmake is taken from FindEigen2.cmake .
REVERT: 9e3c67c204 add support for determinant on empty matrix
REVERT: 593555d5c9 add a small bench demoing the possibilities of a direct 3x3 eigen decomposition
REVERT: d09a4d16e0 fix compilation of ei_tridiagonalization_inplace_selector for 1x1 matrix
REVERT: 8c3011b57b finish/fix level1 blas, all test pass
REVERT: f5fd595efa fix level3 blas: it now passes all computational tests
REVERT: fd394ecebe fix hemm to not use the imaginary part of the diagonal entries
REVERT: 756510bb8c fix a couple a issue with blas (new TRMM api, and enforece column major)
REVERT: e18544226c fix compilation of blas lib
REVERT: 3a242dfccd re-enable writing to reversed objects
REVERT: 8df50d0cdc fix for empty matrices
REVERT: f6ff528589 disable the optimized 3x3 path for complexes which was not working at all
REVERT: ee0383a642 fix bad fuzzy comparison in 3x3 tridiagonalization
REVERT: c79df879f4 fix sum()/prod() on empty matrix making sure this does not affect fixed sized object, extend related unit tests including partial reduction
REVERT: 77e11a379b MPRealSupport was missing
REVERT: a2bb56cc87 merge
REVERT: a3d36ed343 add support for strictly triangular matrix in trmm though it is not really useful
REVERT: 302a02924c add a support module for MPFR C++ with basic unit testing
REVERT: 1baa1d0133 merge
REVERT: d3584282d0 fix compilation for non trivial types
REVERT: d1730a9c59 merge
REVERT: 706889a0a7 use dummy_precision by default instead of 0
REVERT: cc89915d1b fix ei_aligned_delete for null pointers and non trivial dtors
REVERT: c29fd60be6 Tutorial page 4: add some text, diversify examples. Use \verbinclude for output text to disable syntax highlighting. Give tables consistent look.
REVERT: 6636b4d1d6 add a bench for quaternion multiplication
REVERT: 3ce4b88a14 Change EXPAND_AS_DEFINED doxygen configuration option. Add macros so that MatrixBase::cwiseProduct() and ArrayBase::min() are documented, and remove one macro which is no longer used.
REVERT: a51ae35c0b Tutorial page 3: add more cwise operations, condense rest.
REVERT: 8b62641e17 Implemented SSE optimized double-precision Quaternion multiplication
REVERT: d20845627d Tutorial page 1: Put code and output side-by-side.
REVERT: 11cab0b23d fix doc compilation on non 32bits systems
REVERT: 7acac0457f fix unused warning
REVERT: b1d27c3ebb add a utilility to debug cpuid, and makes sure we get 0 if we query an unsupported cpuid function
REVERT: f8bbc03508 update the main page and add a TOC
REVERT: 0aa364da85 improve ref tables
REVERT: 8dcf8357eb big improvements to tutorial, especially page 2 (matrix arithmetic). add placeholders for some 'special topic' pages.
REVERT: 70ae190a25 extend the quick ref table page
REVERT: 06603b8ff0 started the quick reference tables
REVERT: 2511462835 rename file
REVERT: 012402f53d add initial versions of pages 2 and 3 of the tutorial: matrix arithmetic and the array class
REVERT: c7d6eb8a11 add tutorial page 1 - the Matrix class  + 3 examples
REVERT: a718aeefd7 int main() is a standard main() prototype, and makes for cleaner examples
REVERT: 9c6b21b0ad adapt to change: lu() now gives partial piv LU, here we want fullPivLu()
REVERT: 5daf4904e3 extend the eigen 2 to 3 guide
REVERT: 8c2d0882a4 add default parameters for InnerStride/OuterStride to be able to simply write OuterStride<> instead of OuterStride<Dynamic>
REVERT: 3c98709dc2 use const Scalar& instead of Scalar for function arguments
REVERT: b165cde63d comment all disabled MSVC warnings
REVERT: 28284620ff fix very annoying warning (gcc 4.3): type qualifiers ignored on function return type
REVERT: d74c28548b fox blcok size computation for fixed size objects
REVERT: fd34de0a49 add mixed sparse-dense outer product
REVERT: 1a362d1ac6 Fix use of nesting types in SparseTranspose and split the big SparseProduct.h file
REVERT: 44707776e2 email change
REVERT: 6915544062 add support for oski
REVERT: 3ed6e8c999 makes sure to test small sizes
REVERT: fc6327933e makes SparseView a true sparse expression and fix use of nesting types
REVERT: daff882a03 fix infinite loop
REVERT: 9b09c1a651 - add a low level mechanism to provide preallocated memory to gemm - ensure static allocation for the product of "large" fixed size matrix
REVERT: 92f954da33 fix temporary creation rule
REVERT: 1792720920 bug fix in gemv: solution always use a temporary in dst.innerStride != 1 even though this is not needed when packet_size == 1....
REVERT: 41ba52a6c4 unit test fix for default to row major
REVERT: f29c1571da block householder : minor optimization
REVERT: 332ba3b788 fix symm
REVERT: 6d7846db53 fix syrk
REVERT: 85c08f4331 fix vectorization logic test
REVERT: e5bee87bb9 fix compilation when default to row major
REVERT: b2477bcfec fix computation of blocking sizes for small triangular matrices
REVERT: c6234ecda8 Added version testing for MSVC.
REVERT: 41826f7d2e Fix compilation when the memory layout is RowMajor.
REVERT: 0e214fc612 Fixed MSVC cpuid.
REVERT: 95b2740b18 fix compilation when EIGEN_CPUD is not defined
REVERT: a79e5451b5 fix EIGEN_CPUID for i386 & PIC, still remains to fix the MSVC version
REVERT: df6cd9de80 btl: add a trmm action and update eigen interface
REVERT: 38b69d5fef default to Intel's API by default
REVERT: 146b5b5815 fix cache queries for non core2 CPU ;)
REVERT: de909ec4d0 add missing typename
REVERT: 2653eefe44 add a spmv mini becnhmark for Eigen, GMM++, ublas, mtl4, and oski
REVERT: eb5e9c3eb1 * makes all product use the new API to set the blocking sizes * fix an issue preventing multithreading (now Dynamic = -1 ...)
REVERT: 2f380038fa slightly optimize computeProductBlockingSizes by explicitely precomputing what is known at compile time
REVERT: d10c167341 merge
REVERT: d3a7e32449 Correct the options computation for RowMajor matrices.
REVERT: 006e606529 forgot to include this file in my previous commit
REVERT: 3f1774bf65 fix in case we don't know how to query the L1/L2 cache sizes
REVERT: a423404945 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.
REVERT: 19ad3da8d3 The intrin.h header needs to be included after cmath in order to prevent warnigns. Fixed (hopefully) final Index realted warnings.
REVERT: fdace5d79a Added include reuqired for __cpuid.
REVERT: 0bda602056 make bench_gemm print out the queried cache sizes
REVERT: ca5e2f386c add functions to query the L1 and L2/L3 cache sizes
REVERT: 94aa33ba03 Added missing typename.
REVERT: 0b45127a7b More Index related stuff.
REVERT: 3685211449 Compilation fix.
REVERT: 71b17b60b8 This does hopefully really raise the warning/error limit.
REVERT: 5181e4b34d Fix compilation.
REVERT: 43238b9a8e Finally fixed the matrix function/exponential warning. Index fixes.
REVERT: a46a5cad4d Raise the error/warning limit.
REVERT: 2b348e37af compilation fix
REVERT: b7edfb415d Next try - more Index fixes.
REVERT: aad9969aca Still fixing warnings.
REVERT: e9ec617531 Fix compilation of some tests as well as more warnings.
REVERT: 7ed667f13e Utilize Index in all unit tests.
REVERT: 4bf0f5c676 More Index realted warnings.
REVERT: ebff96be5f Silence index warnings in triangular unit test. Silence index warnings in FFT module.
REVERT: e9bbd6b0ba Attempt to fix MatrixExponential/Function related warnings.
REVERT: 74a80b3257 Silence indexing warning.
REVERT: c5579545ba fix array_comp *= array_real
REVERT: 9d3397b32b finish to merge Array into Core: - mv Array/* into Core/ - merge Functors.h files, and move Norms.h into Dot.h
REVERT: 3932db62c4 add missing support for std::pow(array,scalar)
REVERT: ef3bb939bf remove reference to the dead Array module
REVERT: 0811dfdd9a fix compilation of sparse tests
REVERT: c50ae4d12a Fixed spare unit test.
REVERT: c1f5bf82f3 add the possibility to set the cache size at runtime
REVERT: 4f4c5801bc optimize SparseMatrix iterator
REVERT: 06e2f7cef7 fix linking errors with multiply defined functions
REVERT: 0da3009964 QuickStart examples: shorten var names, remove superfluous 'using'.
REVERT: 78b0a74c9c add missing files
REVERT: fa0dd5cb53 split the Sparse module into multiple ones, and move non stable parts to unsupported/ (see the ML for details)
REVERT: ee48fa6666 Add blocking inside HouseholderQR based on code from Vincent Lejeune. This is all internal stuff for now.
REVERT: 3d43144caf add an inplace householder QR dec function in preparation for a block version
REVERT: d5e883ca0a more compilation fixes for ICC
REVERT: bec4891fa6 compilation fix for ICC
REVERT: 3556a90297 eigenvalues: documentation fixes
REVERT: 01a2f02975 Add second example to QuickStart guide. Also, some changes suggested by Keir and Benoit on mailing list.
REVERT: 8c9779798b makes trmv works with the triangular matrix on the right
REVERT: 573e8013af add unit tests for other generalized variants
REVERT: ee9552c4f0 implement other variants
REVERT: d008071949 warn users other variants are not implemented yet... (will do it very soon)
REVERT: 4752eec37d * decouple the generalized selfadjoint eigenvalue problem to the standard one * uses named values instead of bools
REVERT: ffdbf84bae typo
REVERT: 74347bcc77 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.
REVERT: ba0617f021 fix #126, part 1/2: fix the return type of coeff() on direcaccess xprs: was amounting to
REVERT: 5750c38470 fix #139, exactly the same issue as #138, this time in Assign.h: const Index is not a compile-time constant, must use enum.
REVERT: a3e652ca60 fix #138: const bool is (rightly) not considered a compile-time constant by ICC, use enum.
REVERT: 5c5041466d Compilation fix for matrix_exponential test: add 'typename'.
REVERT: 64c4dfb6b3 improve trmm unit test and fix several bugs in trmm
REVERT: 3eedf9b46b * make the triangular matrix * matrix product works with trapezoidal matrices * extend the trmm unit test for unit diagonal
REVERT: a1ed1b10a3 packet math functions:  - take const Packet& args like the other packet funcs  - SSE specializations: make them be actual template specializations
REVERT: 5d493d45dd Ups, fixed a little ugly bug.
REVERT: 19dfef013f This scalar needs to be passed by ref to preserve its alignment.
REVERT: cf06c75f41 Fixed 64bit/Index related warnings in the matrix functions module.
REVERT: e8daf76959 Really fix #123.
REVERT: 6b09175140 fix issue 135 (SparseBlock::operator= for SparseMatrix)
REVERT: d7acfbb84c remove extra semicolon;
REVERT: 9224f88806 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.
REVERT: 95108e94e2 Fixes bug #123.
REVERT: 0136ab9aec merged
REVERT: 85cc81fbbe Fix compilation of docs after changes in Eigenvalues module. Clean-up after revision d037ea27eed7.
REVERT: cf08db8cb6 fixed a bug in the DenseBase InnerIterator ctor.
REVERT: f94cee2304 added the SparseView class.
REVERT: 1f8c0c556f First draft for the 5-minute quick start guide to kick off discussions.
REVERT: ee8f9dd4bb an attempt to fix 133
REVERT: e4110b7f0a compilation fix
REVERT: 5b113d0dc7 Fixed another enum related warning.
REVERT: 61ca39f074 Fixed another enum related warning.
REVERT: e982b9fc5b Remove printouts.
REVERT: 55f5b893dd Fixed warnings regarding enums.
REVERT: dce24f73dd add a info() function in LLT to report on succes/faillure
REVERT: d292cd4403 add missing overload of operator= in SparseVector
REVERT: 2b78a9b46f undo fa29f384b58e2, 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.
REVERT: 60a889c1f6 merge my Dynamic -> -1 change
REVERT: 471999474a change the value of Dynamic to -1, since the index type is now configurable. remove EIGEN_ENUM_MIN/MAX, implement new macros instead
REVERT: 070b6b80a4 unsplit this test: was compiling 16 times the same thing! Need to find another way. Suggestion: should compile the stuff once into a binary library, or properly split into different tests with different code.
REVERT: 872f9aecd7 Added some verbosity on failures in order to get an idea of what is goind wrong on GCC 4.3.
REVERT: 0ea268dd8a For 1x1 matrices we really need to check the abs diff of the determinants.
REVERT: 7e135040f4 Fixed warnings regarding missing assignment operator.
REVERT: 95d0619719 merge
REVERT: 2f3f3861b5 add runtime API to control multithreading
REVERT: b447e28720 Merge.
REVERT: 9f315623b6 Add line to prevent compiler warning on unused variables.
REVERT: a920124eb0 make the cache size mechanism future proof by adding level 2 parameters
REVERT: 8daae56c54 Make test slightly fuzzy to account for effect of extended precision.
REVERT: 3470d82ea1 merge
REVERT: 62f95bbdb7 * 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.
REVERT: 1d40949d15 merge
REVERT: 1fa93a8d83 fix warning with gcc 4.3
REVERT: 49b99c330c compilation fix for gcc 4.2
REVERT: 9738ad0217 Adapted the determinant test for rank 1 matrices with zero determinant.
REVERT: eb519bb0a1 generalized eigendecomposition doc
REVERT: bb64accfe2 clean general symm eigensolver
REVERT: 8cd7bba716 Fixes geo_transformations_3 unit test.
REVERT: 3c3ecc0717 fix unit test when GSL is enabled
REVERT: 2d5fcba49a Fix generalized symm eigensolver (I don't know why the eigenvectors were normalized)
REVERT: 96664066eb Added missing return statement.
REVERT: ea01a5eb3d Fixed language issue.
REVERT: 9bb68d4268 Fix #131.
REVERT: 42684c7415 fix LDLT, now it really only uses a given triangular part!
REVERT: 8d02363a6c fix ldlt unit test
REVERT: e8b544e5c2 Fix devision by zero warning.
REVERT: d0320ba3f6 Fixed many MSVC warnings.
REVERT: 0dd2a89aa2 * add Transpositions to PermutationMatrix conversion * make PartialPivLu uses the  Transpositions class
REVERT: 9cb1e43364 added inline to setL1Cache functions to avoid shared object compile error
REVERT: 8579cf4d02 Disabled warning caused by declspec(align()).
REVERT: 637d58f2b1 Fix stable_norm compilation.
REVERT: 541268aa71 Fighting for a green dashboard! Next warning's gone.
REVERT: ab9cd8fd84 Made the supression of unused variables portable. EIGEN_UNUSED is not supported on non GCC systems.
REVERT: a471889d98 Eigen types must always be passed by reference in order to retain memory alignment.
REVERT: 1fb14d8f5f improve/fix stable_norm unit test
REVERT: 2edfb55e3b Fixed integer type warnings.
REVERT: 803c9fe771 Fixed GCC compilation.
REVERT: 0ca35af575 Fixed more warnings.
REVERT: 2b27ca5101 Fixed eigensolver warning.
REVERT: 281402c559 remove ei_ prefix of public global functions, and s/cpu/l1
REVERT: b5a131917d compilation fix (std::sqrt(int) does not exist)
REVERT: 513e268728 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.
REVERT: d2065fd263 clean old stuff used to support precompilation inside a binary lib
REVERT: 220f887264 Add a Transpositions class to ease the representation and manipulation of permutations as a sequence of transpositions. Make LDLT use it.
REVERT: f72c057246 Schur decomposition of 1-by-1 always converges.
REVERT: de1bb8e534 Add info() method which can be queried to check whether iteration converged.
REVERT: 4d70340135 Refactor compute() by splitting off two smaller private methods.
REVERT: 1c580cdcae LDLT: make it honors the Lower/Upper directive and make it works inplace
REVERT: 3ed528c711 make LDLT uses only the lower triangular part
REVERT: b48336ea20 fix sparse LDLT with complexes
REVERT: 0a2319cb4f * remove ei_index, and let ei_traits propagate the index types * add an Index type template parapeter to sparse objects
REVERT: d6ab5ba734 Fixes #104.
REVERT: b334573ff4 Add field m_maxIterations; break loop when this limit is exceeded.
REVERT: b6806d87de fix typos (oops)
REVERT: aff4fc3087 clean the ambiguity with insertBack and add a insertBackByOuterInner function
REVERT: 155540494b improve aliasing detection for inverse and add unit test
REVERT: 03a6518b91 implicit conversion to scalar for inner product
REVERT: aa8c2e2bc6 fix issue #128 : inner stride can also be 0 in which case it means 1...
REVERT: 4eb7733646 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.
REVERT: e6d4ec8789 Make all compute() methods return a reference to *this.
REVERT: 8eb353d8e9 Addressess small compile error with OpenMP
REVERT: 44c822c42d 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()
REVERT: 9dc405779f Backed out changeset bc42d1ee30d4
REVERT: f717941ef3 oops, remove extra 'typename'
REVERT: ba7ad87abd the Index types change. As discussed on the list (too long to explain here).
REVERT: 5b0feca277 tests:  * change test_is_equal so it just checks for equality, doesn't try anymore to allow to ignoring the difference between col and row vectors.    (needed for the upcoming Index types change)  * in ei_assert, don't report on cerr if we're inside of VERIFY_RAISES_ASSERT
REVERT: abb783d998 finish the change of adding .sh extensions to scripts
REVERT: 3413db1401 * 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.
REVERT: 4c5ec26b7d Fixes the problem, described here: http://listengine.tuxfamily.org/lists.tuxfamily.org/eigen/2010/05/msg00154.html
REVERT: 6cc398ca67 simplify a using statement
REVERT: 68a7115573 make BenchTimer compatible with 2.0 branch
REVERT: 1d176fc7c9 fix issue #125 - *norm() return RealScalar and not Scalar
REVERT: b79a2055d2 Allow user to compute only the eigenvalues and not the eigenvectors.
REVERT: 39edcd23d1 Change skipU argument to computeU - this reverses the meaning. See "skipXxx / computeXxx parameters in Eigenvalues module" on mailing list.
REVERT: b334b036dd Define non-const operator() in Reverse; enable test for this. Introduction of DenseCoeffBase (revision 0ed02244a501) 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?
REVERT: 194e47fc9d Fix stupid compilation error in test.
REVERT: d3d74c7e17 Guard with assert against using decomposition objects uninitialized.
REVERT: 2de0beeef9 Fix SparseMatrix/SparseVector::sum()
REVERT: e3cf6b6d63 Fix to ProductBase::evalTo() in order to get matrix multiplication working for numeric types that don't have implicit conversion from int
REVERT: 903b327b16 fix readcost for complex types
REVERT: 23c5aaefa4 Respect MaxRowsAtCompileTime in HouseholderSequence::evalTo(). This fixes the failing test nomalloc_4. Also remove a print inserted for debugging in schur_real test.
REVERT: 74bd194fa7 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
REVERT: 7a26ed4d84 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
REVERT: 035893dcd5 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().
REVERT: 6cfaadd244 Use ReturnByValue mechanism for HessenbergDecomposition::matrixH().
REVERT: d04ee8becd Change return type of matrixH() method to HouseholderSequence. This method is a member of Tridiagonalization and HessenbergDecomposition.
REVERT: 14b16e5a28 fix some warnings
REVERT: f530db226d erm.. use EIGEN_ONLY_USED_FOR_DEBUG() as it already exists.
REVERT: 80d4edb183 fix another warning
REVERT: be5654345e display actual/expected warning if ei_isApprox() fails
REVERT: 8ac7cf0475 fix a warning
REVERT: f7f5b3c530 introduce a new macro EIGEN_ARG_UNUSED(arg) and use it in some places to silent some warnings (from clang)
REVERT: 85447a35b8 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..)
REVERT: 2aeac9f3f5 fix some warnings with clang
REVERT: 46c2e0d183 fix some compilation issues with clang (and hopefully bring eigen more close to std ?)
REVERT: f04167b84d clang shocks on this. According to people on #llvm, this is indeed not allowed by c++ standard:
REVERT: 42267cfc48 fix a compilation pb with clang (it's actually surprising gcc did not complain)
REVERT: 53024b268d Disabled to __forceinline warning - it creates too many spurious errors and we disabled it only for the unit test (see also the code comment).
REVERT: 7441afbb9e 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!
REVERT: b0b38637a6 merge
REVERT: 70b4e2d27a merge
REVERT: 56b2a1df9f minor chnages in Taucs and Cholmod backends
REVERT: b79e5d34b4 DenseBase is implemented as a class, not a struct.
REVERT: 2b812758d2 simplify inner product
REVERT: d1fb718ff3 fix selfadjoint to dense
REVERT: 3ef43e353b Applied tiny Qt related fixes.
REVERT: c08db25c30 make the cmake options EIGEN_DEFAULT_TO_ROW_MAJOR and disabling EIGEN_SPLIT_LARGE_TESTS work also for unsupported tests
REVERT: 2c05812fe3 bug fix, since the last storage order changes, this InnerSize calculation was wrong
REVERT: 58a977d282 compilation fix: const T ---> typename ei_makeconst<T>::type (error was appearing when building tests with alignmnet disabled)
REVERT: aa863a239c cache outer size in Block => x1.5 speed up for a.block() = b.block()
REVERT: 5c0439a1b7 fix mixing types in inner product
REVERT: 9aa4fcdab4 add regression test for previous fix
REVERT: 80dff62944 fix bug in sliced redux
REVERT: 7ea757604d make inner product return a 1x1 matrix
REVERT: 4466c10355 fix compilation error thanks to test case by Trevor Irons, and expand unit test
REVERT: 4233522a1d add important comment and move stride helpers to DenseCoeffsBase.h
REVERT: 2ffdff7e0a fix installation of global headers in case the src path contains 'src'
REVERT: b82e45892e rename Coeffs.h -> DenseCoeffsBase.h
REVERT: aefbc03d96 move the strides API to DenseCoeffsBase, and various fixes to make stuff compile after my big changes
REVERT: 9028e7cad8 use CoeffReturnType
REVERT: a9ebb7a771 use modern ei_first_aligned function, dont try compiling coeffRef() on rvalue expressions.
REVERT: affec9b337 remove bogus test that was failing
REVERT: 67c433756e let Diagonal have the DirectAccessBit, using an inner stride
REVERT: bd9a0161fd 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.
REVERT: 0fc9a4a86a fix CwiseUnaryView: it shouldn't have the AlignedBit, but it should have the DirectAccessBit and corresponding strides API.
REVERT: 4597c98495 Document SelfAdjointEigenSolver and add examples.
REVERT: 31c4aada34 Quiet MSVC.
REVERT: 9fb0747586 Merge.
REVERT: 4a055ca6fd Document Tridiagonalization class, remove unused types.
REVERT: 06ae205c92 fix compilation: const (T&) != const T& , use ei_makeconst
REVERT: d665bc3d2f fix #116 and remove debug cout's
REVERT: a3584b1dda 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...
REVERT: 3e880114dc dont try passing --version to qcc
REVERT: f93304c4ea forgot hg add
REVERT: 954914ce70 * 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
REVERT: 1cf752d800 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.
REVERT: 4397edb398 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
REVERT: 6f3598897c Use topRows() and rightCols() in ComplexSchur and RealSchur.
REVERT: a19d1c5e8e Remove doc/snippets/MatrixBase_minor.cpp because minor() was removed.
REVERT: 0832a2798e Added EIGEN_DONT_PARALLELIZE preprocessor directive
REVERT: 98b4c17fc7 Removed ambiguity between Map and Matrix Options template parameter.
REVERT: e1c976bf63 Added file extensions to our unit test scripts to prevent MSVC from failing to build because of name clashes.
REVERT: df3bf72334 Fixed a warning.
REVERT: c9617f84e4 Fixed stablenorm test, condition was not met when running tests
REVERT: 935112691f compile
REVERT: e70bb03c19 (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.
REVERT: 6f65d4e9a0 Backed out changeset 092d5575f5ac
REVERT: 9973e294b5 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.
REVERT: 5368a3fc55 remove MakeBase, use ei_dense_xpr_base instead (yes, it was only used in dense xprs anyway)
REVERT: 62a73bf01d * remove ei_block_direct_access_status * remove HasDirectAccess / NoDirectAccess constants
REVERT: b4fe277f2b * remove class DenseDirectAccessBase * remove member XprBase typedefs, use ei_dense_xpr_base * remove member _HasDirectAccess typedefs, use ei_has_direct_access
REVERT: 97f74551fd merge
REVERT: d35c334379 restrict operator[] to vectors, not matrices.
REVERT: ea7f421243 remove eigen_gen_credits script
REVERT: 011d1429c9 remove disabled/ directory. It's useless. It remains in the hg history anyways.
REVERT: 35869e362c add minor to Eigen2Support
REVERT: b2d47d2391 remove Minor adapt 3x3 and 4x4 (non-SSE) inverse paths
REVERT: 3586801e0e remove USING_PART_OF_NAMESPACE_EIGEN, leaving it in Eigen2Support. improve porting-Eigen2-to-3 docs
REVERT: 28ad01e2f2 forgot to hg add...
REVERT: 9700cf6d5a * fix Eigen2Support, was not including VectorBlock.h * move the corners support stuff to a new Block.h there * expand the unit test
REVERT: 5962619fc2 merge
REVERT: fa902255b8 * 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
REVERT: 6d7a72e66a 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.
REVERT: 1062e3bfef - 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).
REVERT: cdcaf0335b merge
REVERT: fd0e972b22 fix compilation in Sparse (error introduced yesterday)
REVERT: 809a5b536f 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.
REVERT: 6a9baf93e7 Changed the gdb display format of vectors and added support for quaternions.
REVERT: ae610351a3 fix grave bug introduced by me: the low-level matrix-vector product functions can't be fed strided vectors, only strided matrices.
REVERT: 25159646fc oos, remove eval() used for debugging
REVERT: 4a32180520 add platform check for how to link to the standard math library. This allows to support QNX.
REVERT: 744f745de4 merge
REVERT: de62e8fb8b renaming (MatrixType ---> whatever appropriate) and documentation improvements
REVERT: c39a1728c4 shut up stupid gcc 4.5.0 warning
REVERT: 0fefe00f9a erf() is really non standard, better dont pollute eigen with it.
REVERT: c45260cbe7 Fixed indentation and removed debug code.
REVERT: 04a928aa00 Added support for STL lists with aligned Eigen types.
REVERT: fa331ecd25 Disabled erf also for Cygwin where it is not supported and causes errors.
REVERT: 58915667c2 Disabled unsupported erf on MSVC machines.
REVERT: 9255b38b5f tests for nonlinear module : use different slots + misc cleaning
REVERT: 671e3eed53 introduce ei_erf() for various scalar type
REVERT: 2f1d3680d5 clarify help message about make install
REVERT: 6292b19eae fix compilation
REVERT: 2243eedf4f Added MSVC stack allocation support.
REVERT: bdb006a4f2 fix use of uninitialzed calues
REVERT: a53909516a oops, forgot to add DenseDirectAccessBase
REVERT: eb65cccaf6 fix ei_blas_traits directaccess check: in the case of vectors, having a nontrivial inner stride is OK.
REVERT: 1970999222 * add some 1x1 tests * temporarily disable tests that strangely fail, with a big FIXME
REVERT: 5c20759c6c * 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
REVERT: cbd1b8fa5b * 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
REVERT: 2d182177b8 taucs: make SupernodalMultifrontal the default mode
REVERT: a8d731e09d an attempt to fix compilation with MSVC
REVERT: 9fbe35ac99 fix sparse squared norm
REVERT: d068b99a93 Merge.
REVERT: 887d8a2303 Move computation of eigenvalues from RealSchur to EigenSolver.
REVERT: 26748bd1c4 RealSchur: Make sure zeros are really zero (cont'd); add default ctor, docs.
REVERT: 42e272d778 cholmod: assume selfadjoint matrix by default since selfadjoint flag has been removed
REVERT: 286cb13dc7 RealSchur: Make sure zeros are really zero; simplify initFrancisQRStep().
REVERT: 7bce0c5edb merge
REVERT: 68ac727880 make sure that changing CMAKE_INSTALL_PREFIX is properly taken into account
REVERT: b6ff941d06 RealSchur: change parameter lists; minor rewrite of computeShift().
REVERT: 669a844759 RealSchur: use makeHouseholder() to construct the transformation.
REVERT: 4a24c73331 RealSchur: Rename l and n to il and iu.
REVERT: 09996f4aa3 RealSchur: split computation in smaller functions.
REVERT: 87f14bf26b RealSchur: Use Householder module in Francis QR step.
REVERT: 2b701fbc40 RealSchur: reduce scope of temporary variables in hqr2().
REVERT: 5548314f79 RealSchur: Use PlanarRotation in "found two real eigenvalues" branch.
REVERT: c280d5e346 Merge.
REVERT: d397712785 RealSchur and EigenSolver: some straightforward renames.
REVERT: 07a5c822a5 Add tests for real and complex Schur; extend test for Hessenberg. Make a minor correction to the ComplexSchur class.
REVERT: fb60e04d3d ei_psqrt fix for zero input
REVERT: b82b5d12a9 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.
REVERT: 5224159c81 Use HessenbergDecomposition in EigenSolver.
REVERT: 8f3c86d471 Extend documentation and add examples for EigenSolver class.
REVERT: 3e30d8a886 let the cast functor use the new ei_cast()
REVERT: f6e79c8e25 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.
REVERT: a6045daafe 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.
REVERT: 575ad6f009 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
REVERT: 988abab999 Extend documentation for HessenbergDecomposition.
REVERT: baa2f70bb8 fix misc warnings, more importantly when NDEBUG is defined, assert() is a nop.
REVERT: 5e2ba69651 Center version number on main page of API documentation.
REVERT: 11f7eb8bf6 Fix some doc typos.
REVERT: e53554fe85 fix display of modules list in documentation
REVERT: b2ce039f33 Fix wrong header and warnings in polynomialutils.cpp
REVERT: 38b2bc6f93 Add the possibility to use the polynomial solver of the gsl.
REVERT: 42b7d6eaa1 Add missing test files for Polynomials module.
REVERT: 41c8d27421 Creation of the Polynomials module with the following features: * convenient functions:   - Horner and stabilized Horner evaluation   - polynomial coefficients from a set of given roots   - Cauchy bounds * a QR based polynomial solver
REVERT: a191fb2a44 blas: fix compilation and build both a shared and static lib
REVERT: a3e5819595 Clean up ComplexSchur::compute() .
REVERT: c2dcb357ee Add snippets file which should have been added in the previous commit.
REVERT: 65152ec9e7 Extend documentation of ComplexSchur and add examples.
REVERT: 90963fa0da Move documentation of MatrixBase methods in MatrixFunctions to module page. I think that because MatrixFunctions is in unsupported/ and MatrixBase is not, doxygen does not include the MatrixBase methods defined and documented in the MatrixFunctions module with the other MatrixBase methods. This is a kludge, but at least the documentation is not lost.
REVERT: 5d7b00b4b6 Merge.
REVERT: 15135ddddb 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().
REVERT: 0fab060a0b merge
REVERT: 179540600b * 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
REVERT: cc58649651 oops, fix symv (innerStride instead of outerStride)
REVERT: f588c5d188 Allow ComplexEigenSolver and ComplexSchur to work with real matrices. Add a test which covers this case.
REVERT: 25ce2936bc Added x()/y() and z() access functions to translations.
REVERT: b00f680298 Extend documentation and add examples for ComplexEigenSolver.
REVERT: 4806913fe1 fix the flags and matrix options, to always have the right RowMajor bit in the vector case
REVERT: eae23c73ef merge
REVERT: 5fbc5097b6 compile with gcc 4.5
REVERT: fb29c77106 Document member functions and types of ComplexEigenSolver.
REVERT: 6dd24769f3 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
REVERT: aac6bad8b5 fix and extend replicate optimization, and add the packet method though it is currently disabled
REVERT: 3bcb3c20b1 Replaced strong with weak inlines in CwiseUnaryOp.
REVERT: b7a169ad69 Removed strong inlines which cannot always be inlined.
REVERT: e526c6569c Ups - again a missing typename.
REVERT: f8cacc4640 Try to avoid modulo operations in Replicate if possible.
REVERT: f1adee00c0 Propagate fixed size dimensions if available (on MSVC it leads >2.5x speedup for some reductions).
REVERT: 407fa38568 attempt to fix #101
REVERT: cc21499522 Nest expression within MatrixWrapper by value.
REVERT: 91c67f114d Enable resizing of Arrays.
REVERT: 46074208de Fix MSVC warnings.
REVERT: 5d22fd630d implement the idea that row-vectors have the RowMajorBit and col-vectors don't.
REVERT: cb4074ef27 nomalloc: minor cleanup
REVERT: e841b1a53f 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.
REVERT: c9fb5dc4aa update the product selection logic to use the Max* sizes
REVERT: f7e199e2e6 update the product selection logic to use the Max* sizes
REVERT: da010bff2b add missing cmake directives for arch/Default
REVERT: 3529d84ffb tests : fix compilation issues, adding <iostream> and removing <Eigen/Array>
REVERT: beb636ee8f * Fix #97 : Householder operations on 1x1 matrices * Fix VectorBlock on 1x1 "vectors" * remove useless makeTrivialHouseholder function
REVERT: 1c809ecfe9 * 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
REVERT: 5dec6ac489 minor edit
REVERT: 1328f086a2 merge
REVERT: b6ec5058ee needed different proxy return types for fwd,inv to work around static asserts
REVERT: 44777a0e8b created FFT::fwd and FFT::inv with ReturnByValue
REVERT: be37f229d7 Reintroduced the if-clause for MSVC ei_ploadu via _loadu_.
REVERT: b099b69c08 fix compilation
REVERT: a596fe15d5 bugcount--, this time trmm
REVERT: 10dae8e635 stride() => inner/outerStride()
REVERT: 3af4a9d5d0 pff I introduced much too many bugs latey, count--
REVERT: e28edfb613 fix symm
REVERT: 7d9a9ebb9c fix trsolve
REVERT: d61098276f fix issue #100 (fix syrk)
REVERT: 08744c2176 bugfix in gebp for 32bits x86
REVERT: cd36e16faf #undef minor at the right place
REVERT: c12963ba04 remove the __ARM_NEON__ check there since Konstantinos said he removed it but apparently didn't commit :)
REVERT: 076279cf6a * disable static alignment on QCC * remove obsolete #error
REVERT: 05c4d41b63 * 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.
REVERT: 49194d68a9 merge
REVERT: e35bdabb28 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.
REVERT: e94a7f1ca7 fix copy pasted comment
REVERT: a750bd56d6 Altivec brought up to date. Most tests pass and performance is better than before too!
REVERT: ebe09b021a Fixed line endings.
REVERT: ce1fb38931 add a small program to bench all combinations of small products
REVERT: 0d777f0834 clean a bit the bench_gemm files
REVERT: afdd8b4ba4 add a FIXME
REVERT: cd733cf860 * dynamically adjust the number of threads * disbale parallelisation if we already are in a parallel session
REVERT: ed775e3828 add an option to test ompenmp
REVERT: 1b6857bc81 fix openmp version for scalar types different than float
REVERT: 06e010676c remove the 1D and 2D parallelizer, keep only the GEMM specialized one
REVERT: 369d5d6872 minor cleaning
REVERT: 22c72bddce merge
REVERT: 2dacf8db6e enable posix_memalign for QNX
REVERT: 7f4682d978 merge
REVERT: 66951391b5 merge
REVERT: d3a83dfde0 make the number of registers easier to configure per architectures
REVERT: 2c8ab89b26 merge with default branch
REVERT: 820fb489ca Moved x()/y()/z() and w() access functions to DenseBase; they are now available for Arrays as well.
REVERT: 262f93804c add a minor FIXME
REVERT: a11c50b166 integer division is vectorizable on no SIMD platform, not just SSE.
REVERT: cea843ed2f arm_neon.h is a standard header file, fixed
REVERT: becf74a5da minor cleanup
REVERT: 0604b54faa factorize default performance related settings to a single file included after the architecture specific files such that they can be adapted by each platform.
REVERT: 780b349f7a 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.
REVERT: ab8358cc26 cleanup/simplification in computation of matrix flags
REVERT: c8d1c971fe merge
REVERT: 2e3b00ac29 Backed out changeset d7285a6c782d
REVERT: 40adc2cef0 Added a missing inline hints. Removed a useless Nested temporary.
REVERT: db1d36d396 clean #defined tokens, and use clock_gettime for the real time
REVERT: dbd3cdc3ba a matrix (or array) does not always have the LinearAccessBit! => fixes in outerStride and matrix flags
REVERT: 863bd0838c blas: add a default implementation of xerbla
REVERT: 251ad7a139 blas: fix most of level1 functions
REVERT: c3b40eca82 fix compilation
REVERT: 785e3f19d3 blas: fix HEMM and HERK
REVERT: 0ddc58c345 selfadjoint: do not reference the imaginary part of the diagonal
REVERT: 8e9e0df9c5 blas: fix SYRK
REVERT: 3c247ebcb3 BenchTimer: avoid warning about symbol redefinition on win32, and include <Eigen/Core> (required to compile)
REVERT: 182e20f160 blas: add warnings for non implemented functions
REVERT: 7654bec9e9 Adapted the comment and removed it from the public dox.
REVERT: 704fb25cda product selector: the symmetric case
REVERT: 78bb61f974 Added a comment to prevent placing an EIGEN_STRONG_INLINE where it makes no sense.
REVERT: 84656e3bb8 Changed product type selector to fix perf regression.
REVERT: 481c3c2662 add missing implementation of uniform scaling products
REVERT: 9e7f4d922b Fixes a compilation issue for MSVC.
REVERT: ec448ad61d blas interface: fix compilation, fix GEMM, SYMM, TRMM, and TRSM, i,e., they all pass the blas test suite. More to come
REVERT: e9e0b75b2e Add (failing) test for computing HouseholderQR of a 1x1 matrix.
REVERT: a89f3d18c3 rm useless omp shared directive
REVERT: 151eb9e2eb remove Qt's atomic dependency, I don't know what I was doing wrong...
REVERT: 3820c7da9f Make MatrixFunctions tests more robust. * Use absolute error instead of relative error. * Test on well-conditioned matrices. * Do not repeat the same test g_repeat times (bug fix). * Correct diagnostic output in matrix_exponential.cpp .
REVERT: b399923c0c GEMM: move the first packing of A' before the packing of B'
REVERT: b370a7aa7f make Aron's idea work using Qt's atomic implementation for the synchronisation
REVERT: eb71a74a9e 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.
REVERT: ee029cc3fb forgot defined(...)
REVERT: 67263fcd6f on 64-bit systems, glibc's malloc returns 16-byte aligned ptrs, and we now take advantage of that.
REVERT: bb5ea19553 * 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
REVERT: 4393ce5280 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).
REVERT: 60a7329442 Hide some internal stuff from the docs.
REVERT: aa5058b856 comment out cerr's
REVERT: affe4b7f78 misc cleaning
REVERT: 3fa85ce36c Only include <iosfwd> unless either EIGEN_DEBUG_ASSIGN is defined or we're in eigen2 support mode
REVERT: ba10dfc754 add ei_posix_memalign_realloc
REVERT: a58c8b0616 add missing inline keyword, thanks to Eamon.
REVERT: 1f42ee5265 Use a specialization of test_is_equal() instead of defining COMPARE()
REVERT: 1714ad368f Added support for realloc based conservative resizing.
REVERT: b5ca9d7849 Fixed a typo.
REVERT: 66a70c6574 dot: handle the rowvector.dot(colvector) case where one needs to transpose.
REVERT: a1f362b7a6 * define COMPARE(,), which prints expected/actual results in case of failure * use it in test/NonLinearOptimization.cpp
REVERT: 5025ba22fc Remove the dot product's separate implementation and use cwiseProduct.sum instead. Also take special care to get nicely working static  assertions.
REVERT: 008b6e2399 add examples
REVERT: bda4a84925 merge
REVERT: 3bae77fdea let redux use the new ByOuterInner accessors
REVERT: b7550afaa9 Document Map and Stride, add examples.
REVERT: 47bafa381b Fix Map-with-Stride and cover it by new unit tests.
REVERT: 4ddb32e797 implement Aron's idea of interleaving the packing with the first computations
REVERT: af7c54aeab Fixed perf problems for vector subtraction: inlining wasn't always happening when necessary.
REVERT: a6d4bfcfe6 * 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
REVERT: 5af80da383 BTL: allow to bench real time
REVERT: 8aa7a7796a fix compilation without openmp
REVERT: 8a761a9dca fix some BTL issues
REVERT: 2ed2044392 implement a smarter parallelization strategy for gemm avoiding multiple paking of the same data
REVERT: aeb3514cf9 ComplexSchur: fix bug introduced in my previous commit. The value of c is actually used a few lines later.
REVERT: 0578ed6a29 DenseBase::IsRowMajor now takes the special case of vectors into account.
REVERT: d9194bd85f merge
REVERT: 1bbfa1e20d * 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
REVERT: 9aa5e418d0 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.
REVERT: 444bd32e0c update matrix product selection rules for 1xSmallxLarge and the transposed case
REVERT: a3e44e7e68 detect and implement inplace permutations
REVERT: 8be44efbd6 optimize inverse permutations
REVERT: 49fcdcc5a5 * move the 's': InstructionsSet ---> InstructionSets * proper capitalization: SSE, AltiVec
REVERT: 2fe02241c7 oops, fix typo
REVERT: 2bcede237a provide a static method to describe which SIMD instructions are used
REVERT: ae9e8ea453 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.
REVERT: 4ef7e2467b add reconstructedMatrix() to LLT, and LUs => they show that some improvements have still to be done    for permutations, tr*tr, trapezoidal matrices
REVERT: dd06968fc9 make testsuite aware of EIGEN_CTEST_ARGS
REVERT: 34553cf637 * fix LDLT's default ctor use * add a reconstructedMatrix() function to LDLT for debug purpose
REVERT: 4ae2a9fa5b actually, this is not even meant to be a termination criterion. so the proper fix is this.
REVERT: cae1b1aa66 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.
REVERT: fe0f685189 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.
REVERT: 66b74a0bd3 add a 2D parallelizer
REVERT: 8e0e984ec1 fix typo
REVERT: b50e3143ec update BTL (better timer, eigen2 => eigen3, etc)
REVERT: 58643709c0 * 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
REVERT: b599f699ed merge
REVERT: 94b5ef243d Attempt to fix PGI compilation issue.
REVERT: 5ddb3985b4 merge
REVERT: 93b28f5908 enable caller to supply FFT length for Eigen Matrix interface functions to effect zero pad or source shrink at Nyquist bin
REVERT: 9e789ec01a merge
REVERT: 3f0fa99ac9 provide default values for CXX, remove duplicate define
REVERT: 268e561cfa Merge.
REVERT: d642f105a5 fully adapt the gebp kernel and optimize it for CPU with only 8 registers (transplanted from 2ed88ebbf1995be90b8d0c25ff10248c8f56d023)
REVERT: f68a85c990 implement an even lower level version of the gebp kernel for MSVC (it seems to be faster with gcc as well) (transplanted from 9a5643551fe068497f84a81cd8986febf1918382)
REVERT: 3b5ce6fa81 ups
REVERT: 2a302d6c66 Added getRealTime() for windows.
REVERT: f005727bca extend the bench timer to allow benchmarking of parallel code, improvements are welcome
REVERT: 7088f20afc fix BTL's eigen interface (transplanted from 942fa62f37308f9738c57c520bd7ce8d55b024bf)
REVERT: f03ed73654 significant speedup in the matrix-matrix products
REVERT: e0b2ddeb2f oops
REVERT: 818534e560 fully adapt the gebp kernel and optimize it for CPU with only 8 registers
REVERT: f8c5098ec5 merge
REVERT: 99f7ef32e4 implement an even lower level version of the gebp kernel for MSVC (it seems to be faster with gcc as well)
REVERT: df2abb7a3a Port BenchTimer fix.
REVERT: 869f369413 merge
REVERT: 47d5c3c4bc add a small benchmark to quickly bench/compare SMP support
REVERT: 287ffc5df1 merge
REVERT: e9d0134480 clean a bit the parallelizer
REVERT: 9885715659 add initial openmp support for matrix-matrix products => x1.9 speedup on my core2 duo
REVERT: 987201796d fix BTL's eigen interface
REVERT: b845ad0d6c fix compilation
REVERT: 535f7be110 Added IsRowMajor enum to DenseBase.
REVERT: 41da5a3950 Added missing precision/eps functions to AutoDiffScalar.
REVERT: e769dbc131 merge
REVERT: eadf520159 Added ei_traits<Quaternion>::PlainObject.
REVERT: 1e1c55bc9e Tried to get rid of MSVC warning D9025.
REVERT: 9e808790c1 NonLinearOptimization : clean 'mode' handling from the old minpack code : * this is actually a boolean, not an int * use a better name * can be set at initialization time instead of bloating all methods signatures
REVERT: 5d387c8283 compilation fix in ldlt() for non matrix types
REVERT: 89e3dda2ec add missing return value
REVERT: 648e0516b9 CMake cleanup.
REVERT: 0e8922f3ce Change MatrixFunction::separation() parameter from 0.01 to 0.1 . The latter is actually the value used in the literature.
REVERT: e33a19152a Renamed PlainMatrixType to PlainObject (Array != Matrix). Renamed ReturnByValue::ReturnMatrixType ReturnByValue::ReturnType (again, Array != Matrix).
REVERT: 5761af098f matrix_function test: replace expm(A).inverse() by expm(-A) The latter is more stable. This fixes one of the issues with the test. Also, make typedef's in MatrixFunctionReturnValue public; this is necessary to get the test to compile.
REVERT: 6db5cf73f5 Renamed AnyMatrixBase to EigenBase.
REVERT: 05b75497f8 fix stupid enum values
REVERT: 7c335f56c5 add Stride.h
REVERT: 053806ca96 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.
REVERT: a3216b3fda Update matrix_exponential test after API change in ei_matrix_function Apologies for forgetting this yesterday and not testing properly.
REVERT: 8e5f77fd52 typo in merge
REVERT: 3c1c3ec3ef merge
REVERT: f92ac8f687 found out about little-documented FFTW_PRESERVE_INPUT which has effect on c2r transforms
REVERT: b35749cd9a Use ReturnByValue to return result of ei_matrix_function(), ...
REVERT: 14a43c1982 Use ReturnByValue to return result of ei_matrix_exponential() .
REVERT: 733101b613 not all versions of gcc support -Wno-variadic-macros
REVERT: 1a8960b6af avoid 2 redundant calls to resize
REVERT: d03d098c82 explicitly disable the use of evalTo for dense object
REVERT: 32ba9fae0a the default implementation should really call evalTo
REVERT: 90b5170418 workaround weird gcc 4.0.1 compilation error
REVERT: ee7cf3f592 Workaround for compounds affected by #94.
REVERT: e6b6a673c0 Test matrix functions with matrices with clustered imaginary eivals. The idea is that these test MatrixFunction::swapEntriesInSchur(), which is not covered by existing tests. This did not work out as expected, but nevertheless it is a good test so I left it in.
REVERT: 9b163d1ee5 Refactor matrix_function test in preparation of next commit.
REVERT: 6629103114 this had to be done here, not at the end.
REVERT: abb51200bf Piotr's patch was missing many occurences of size_t. So,   using std::size_t; This is the only way that we can ensure QCC support in the long term without having to think about it everytime.
REVERT: 6d7c3aa809 fix a couple of ICE with gcc 4.0.1
REVERT: b30c4b26aa std:: namespace fixup for more restricive compilers such as QNX's QCC
REVERT: 58d3ce6afe Here is the proper fix.
REVERT: 5303c60771 Fixed notemporary unit test.
REVERT: b06401d620 Fixed typos. Replace NumTraits<bool>::dummy_precision() (three locations) by false in order to suppress warnings.
REVERT: c6116d0dde fix compilation (cwise and epsilon)
REVERT: 3f07650119 also fix tests for NumTraits<double>::epsilon()
REVERT: f8c442d6d3 fix usage of epsilon wrt to latest API change
REVERT: 420b6d8995 fix usage of epsilon wrt to latest API change
REVERT: 2530af8038 unsupported/Eigen/AlignedVector3: dummy_precision is now in NumTraits
REVERT: e8e3bf1424 Fixed warning.
REVERT: 09c12c0454 finally here is a simple solution making (a*b).diagonal() even faster than a.lazyProduct(b).diagonal() !!
REVERT: 76350361db changed destination argument to reference
REVERT: 8aa41fc37e if the src.stride() != 1, then the layout is not continuous -- need to copy to temporary
REVERT: cce713c3bb changed FFT function vector and Matrix args to pointer as Benoit suggested implemented 2D Complex FFT for FFTW impl
REVERT: cbc6791aa8 updated comments and played around with Map
REVERT: c12395ff09 added benchmark for unscaled and half-spectrum FFTs
REVERT: 402a933aae Added array() to ArrayBase and matrix() to MatrixBase().
REVERT: a19483f0be Remove some Array #includes.
REVERT: 1f04a6b4cf Adapted Geometry includes. Adapted the decomposition documentation regarding the solve signature.
REVERT: d9081ca9cd Added the Array include's warning for GCC.
REVERT: 1f4ee24166 Corrected the Array include's deprecation warning for MSVC.
REVERT: 9ae905952e merge
REVERT: db666d60ff Moved the Array module to Core.
REVERT: 410c2b5944 Updated tests for enhanced AlignedBox with volume, diagonal and better handling of integral types.
REVERT: 4c42205f30 Improved patch from Manuel Yguel: Enhance AlignedBox to accept integral types and add some usefull methods: diagonal, volume, sample.
REVERT: f9d999ac63 add highest and lowest functions to NumTraits
REVERT: d19b80f4ea * move dummy_precision and epsilon to NumTraits * make NumTraits inherits std::numeric_limits
REVERT: 5ace1cd5d2 Deactivated test which requires variadic macros.
REVERT: 28659e7ed1 Regression tests for number of nested temporaries. Moved EIGEN_DEBUG_MATRIX_CTOR to ei_matrix_storage to capture resize related allocations.
REVERT: 8dee83086f merge
REVERT: e3937c6702 fix nesting in Arraywrapper and nesting_ops
REVERT: 06de59fe56 Now variadic macro related warnings should be supressed as well under Linux.
REVERT: 54189202c5 extend sparse product benchmark with ublas
REVERT: a601edb5ac document lazyProduct
REVERT: 4dd6240fbb * as promised, remove the "optimization" for Product::diagonal() * add MatrixBase::lazyProduct
REVERT: 6f5eab758e For the record, here is a solution for (a*b).diagonal, at the cost of extra copies if a and/or b as to be evaluated. So in the next commit I'll remove it. A nice solution would be to evaluate the lhs/rhs into member of the initial product, but that would be overkill.
REVERT: e79f0eeb77 Added a non-diagonal product nesting test.
REVERT: bfd34ba17b Fixed paste&copy error.
REVERT: 683bb8d7dc Added debug only unit test for nesting ops - just run ./check nesting.
REVERT: 42d78f93d9 fix one useless temp & copy
REVERT: ac1c22b35b fix nesting lazy prod by ref
REVERT: 920d8d5c16 add accessors to coeff based product
REVERT: f8bc4dbf72 * fix multiple temporary copies for coeff based products * introduce a lazy product version of the coefficient based implementation   => flagged is not used anymore   => small outer product are now lazy by default (aliasing is really unlikely for outer products)
REVERT: 51e19ec1bc s/UnrolledProduct/CoeffBasedProduct
REVERT: 14de91d1b5 fix the multiple temporary issue for nested products
REVERT: e626182aa6 get rid of NestParentByRefBit
REVERT: 2cf397cb12 Introduced NestParentByRefBit and NestByRefBit - this should fix temporaries related to nested products. Fixed a few typos and a few warnings.
REVERT: c20d0da08a make noalias works for coefficient based products
REVERT: 98c5570c7e make sure the correct diagoanl() function is called in trace()
REVERT: 31cac2a127 * resurected Flagged from Eigen2Support * reimplement .diagonal() for ProductBase to make (A*B).diagonal() more efficient!
REVERT: 67274beb0f optiization: make hybrid small/large outer products use the unrolled path
REVERT: 9a54ce8983 Prevent temporaries for reductions.
REVERT: 2a6e67c385 Silenced type conversion warnings.
REVERT: 3c955f626f Fixed a warning. Transform::Identity() is now returning a Transform.
REVERT: 4c598a2d5a Fixed 32bit builds.
REVERT: 31357d7a0a Fixes #89. Added regression test.
REVERT: 6cd6f045e3 fix compilation on 32bits systems
REVERT: 09a9790b0c remove some trailing nestbyvalue
REVERT: abf3fa2110 use unrolled product path for small outer product
REVERT: 0b5664a70e One warning less...
REVERT: bb8ef7886c fix triangular view assignment
REVERT: 8956adeba8 add specialization of ei_ref_selector for Array (fix a big perf issue \!)
REVERT: 01ed24dbd0 Adapted mean to work with complex numbers. Added regression test.
REVERT: b1e4f41189 Fixed mean reduction leading to unresolved symbol.
REVERT: 3b64d5e8a8 Disable variadic macro warning when compiling at full warning level. I was not able to get a macro version running and thus I opted for a cmake patch.
REVERT: 09a7ffd458 erm.... using nxn is the actual purpose of this variant, fix this.
REVERT: 5c9127199f Fix copy-paste error in first_aligned test.
REVERT: 040079195e remove reference to dead option
REVERT: c731a21996 Fixed Quaternion operator*= added regression test.
REVERT: aae407b6b2 Put the Status outside of the class, it really does not depend on the FunctorType or Scalar template parameters.
REVERT: ba9295ee57 eigenization of ei_r1updt()
REVERT: ffe01f8ac3 misc cleaning / eigenization
REVERT: 628f5e8046 silent warning of icc
REVERT: 52b5361bf7 fix compilation
REVERT: f65ecb6a80 add support for global math function for array
REVERT: 9af517c75b Modified license header.
REVERT: 40e5b7203a Added the missing unit test file.
REVERT: a0e9a8790d Added EIGEN_DEFINE_STL_VECTOR_SPECIALIZATION macro including unit tests and documentation.
REVERT: cac9ef73ea EIGEN_ENUM_MIN ---> EIGEN_SIZE_MIN
REVERT: f8cf710fe4 add EIGEN_DEFAULT_TO_ROW_MAJOR cmake option for the tests.
REVERT: 9a4e5bc910 *forward port fix in MapBase::coeff(int) and coeffRef(int) *forward port expanded map.cpp unit test *fix unused variable warnings
REVERT: ea11652a5a port ei_rwupdt to c++,  and misc cleaning
REVERT: 4384dc1c86 doc : update code, mention examples
REVERT: 8b1b16b626 Added an ei_linspaced_op to create linearly spaced vectors. Added setLinSpaced/LinSpaced functionality to DenseBase. Improved vectorized assignment - overcomes MSVC optimization issues. CwiseNullaryOp is now requiring functors to offer 1D and 2D operators. Adapted existing functors to the new CwiseNullaryOp requirements. Added ei_plset to create packages as [a, a+1, ..., a+size]. Added more nullaray unit tests.
REVERT: 5efc2fb3ad use PlanarRotation<> instead of handmade givens rotation in cminpack code + cleaning. This results in some more memory being used, but not much.
REVERT: 3c3282fb3c clean r1mpyq: remove fortran leftovers
REVERT: 796067b58d misc cleaning
REVERT: 39f255740e forgot to commit this: qform.h is not used anymore
REVERT: 3004ce28dc more eigenization, dropped 'ipvt' in lm
REVERT: 388dc437b9 fix possible segfault
REVERT: 10b908a1d9 remove spaces
REVERT: 730cfa788b get rid of ei_qform + lot of other cleaning, now that we do not depend on minpack qr factorization.
REVERT: 4d71d56db9 some more eigenization
REVERT: bfabb17950 cleaning
REVERT: 3d87701aae use a plain matrix to store the upper triangular matrix 'R', instead of the "compact inside a vector" scheme used by fortran/minpack. The most difficult part is to fix all related code. Tests pass.
REVERT: 836ef21b47 cleaning
REVERT: aea3d1c58d some more (thoroughly checked) eigenization
REVERT: deb3250608 Clean up one compilation error and two warnings.
REVERT: f2c30323e4 fix a bug introduced between the cminpack version of Manolis Lourakis and the one from Frédéric Devernay. Here, we want to compute the max over the column, the -1 is not needed in fortran because indices start at 1, contrary to c/c++.
REVERT: a2e738297e Use eigen methods for solving triangular systems. We loose again very slightly on both speed and precision on some tests.
REVERT: eda1f61d71 define ei_lmpar2() that takes a ColPivHouseholderQR as argument. We still need to keep the old one around, though.
REVERT: 6f299b14dc Replace the qr factorization from (c)minpack (qrfac) by Eigen's own stuff. Results as checked by unit tests are very slightly worse, but not much.
REVERT: 9533f8aee4 useful cleaning
REVERT: 285f52bbc6 useless cleaning
REVERT: dbcaebc0c4 generate a compilation error when using ReturnByValue::coeff() or coeffRef(), instead of doing an infinite recursion
REVERT: c6cf7c744b Use matrices with clustered eigenvalues in matrix function test. This is in order to get better code coverage. Test matrix_function_3 now fails regularly because ComplexSchur reaches the max number of iterations; further study needed.
REVERT: 16009cc518 fix the script again (definitely?) + cleaning
REVERT: cbdeb73387 rm ExpressionMaker stuff (weird as I was pretty sure that I had already removed them)
REVERT: 7d8af54848 lot of cleaning: - clean the *_PUBLIC_INTERFACE_* - update Diagonal, ReturnByValue, ForceAlignedAccess, UnaryView, etc. to support array - many other small stuff
REVERT: fba03d49d6 Fix bug in MatrixBase::setIdentity(int, int).
REVERT: 3bc3d04949 Add small test for Matrix::setIdentity() This is to exhibit the bug that makes the jacobisvd_7 test fail.
REVERT: 38a518177c Fixed compilation of MatrixFunctions module.
REVERT: a78f53833c add SSE code (from Intel) for the fast inversion of 4x4 matrices of double
REVERT: 2aa3e9d679 update the fast 4x4 SSE inversion code from more recent Intel's code
REVERT: 63e8a0bedf Get rid off GCC warning on comparing enums from different types.
REVERT: 9cc000b29a merge
REVERT: f4989db5b7 removed Eigen::Complex class since it offered insufficient advantage over std::complex when sane real,imag structure packing is assumed. for more info see: http://www.cpptalk.net/portable-complex-numbers-between-c-c--vt46432.html
REVERT: 8f0f72190f erm.. forgot to test after previous commit. Now it's ok (tm).
REVERT: 19e9544519 fix scalar - matrix
REVERT: 27728eef9f extend CwiseNullaryOp to support Array
REVERT: 7dc8dc986d add unit tests for true array objects
REVERT: 9932afd02a fix both compilation and previous fix : now 'basicstuff' passes again. (Gael: i dont think you meant removing this setIdentity(), did you?)
REVERT: f776fdebc8 fix !=
REVERT: 16599a39b0 unit tests for == / != operators
REVERT: fd4dce1887 fix MatrixBaseAddons example
REVERT: 6e83b051a5 work around warning about /* inside of a comment (gcc 4.4)
REVERT: 762b346dd0 More documentation improvements.
REVERT: 47f2d29aee Adapted doxygen's new style sheet. Added documentation to some of the typedefs.
REVERT: d89cb1a7e6 forgot to include this file in previous commit
REVERT: c37dc60265 remove useless using comp. assignment operators
REVERT: d7ae050449 fix a warning
REVERT: df13b6a3e5 allow to multiply a householder sequence and a matrix when one is real and one is complex. This is especially important as in bidiagonalization, the band matrix is real.
REVERT: a05de11f88 New UpperBidiagonalization class
REVERT: df76cb1f5c Introduce third template parameter to HouseholderSequence: int Side. When it's OnTheRight, we read householder vectors as rows above the diagonal. With unit test. The use case will be bidiagonalization.
REVERT: bac8940730 compilation fix for UmfPack
REVERT: 12af61fa09 Changed parts of the documentation. The param keyword is now tparam (in Matrix). Made PlainMatrixType non-internal (currently MatrixBase only); I think this is an important typedef in particular when writing your own template methods.
REVERT: ae49fd2571 Enabled class diagrams (requires dot, i.e. graphviz). Adapted the style sheet in order to center class diagrams.
REVERT: a514c72643 Added some minor comments. Adapted some of the doc/snippets.
REVERT: bace5ff161 introduce new state, "Not started"
REVERT: 24f2934168 Fixes #83.
REVERT: debc269685 Using operator*= is not required in MapBase. Since no other operator*= is present, none of the base class operator*='s may be hidden and all of them should be visible. As far as I was able to verify, this is not affecting GCC. This fixes #84.
REVERT: dde5466970 merge
REVERT: 4769dd106b Fixed the ProductReturnType (at least for UnrolledProducts). Fixed operator= (MSVC specific) in Array.
REVERT: 984ba7bb31 Fixes #81.
REVERT: 9d2495e257 Add a real plain matrix type to the ei_nested declaration used in product return type.
REVERT: 9de6a506ec Add support for matrix sine, cosine, sinh and cosh.
REVERT: 2e8bbf98f5 Fixed DenseStorageBase typedef (MSVC specific). Unified the ei_plain_matrix_type.
REVERT: 7c222a1e8a * Fix a bug in HouseholderQR with mixed fixed/dynamic size: must use EIGEN_SIZE_MIN instead of EIGEN_ENUM_MIN, and there are many other occurences throughout Eigen! * HouseholderSequence:   - add shift parameter   - add essentialVector() method to start abstracting the direction   - add unit test in householder.cpp
REVERT: a7d5b55521 Fixed conservativeResize. Fixed multiple overloads for operator=. Removed debug output.
REVERT: 1c65db1a6b Eigen/src/Core/DenseStorageBase.h: add 'typename'
REVERT: 704c55804b Fixes unit test swap_3. Friends are not inherited.
REVERT: 20ec6d187c Backed out the removal of the actual resize like implementation. Now, resizing by dimension is optional.
REVERT: 751e3e8265 Fixed swapping and corresponding MSVC compilation.
REVERT: 7e721af312 Fixed MSVC compilation.
REVERT: ace9b54847 doc/A05_PortingFrom2To3.dox: fix typos
REVERT: e95f19c6c1 triangularView<UpperTriangular> --> triangularView<Upper> Necessary after 9625a2059cfc (big delete of "triangular").
REVERT: ddfe5652cd test/triangular.cpp: isUpper() --> isUpperTriangular() Necessary to get the test to compile after 9625a2059cfc. I'm assuming that isUpperTriangular() is the name we want; the alternative is to change Eigen/src/Core/{MatrixBase,TriangularMatrix}.h
REVERT: 1b95c0e77f implement BandMatrix::evalTo (thus avoid infinite recursion when assigning a BandMatrix to a Matrix)
REVERT: b356e19f37 finally, undo this
REVERT: 133118b620 Backed out changeset 273e674999f3
REVERT: 221d8801aa undo
REVERT: f4d4ba330d undo my last commit
REVERT: c5c89cda34 Added std::sqrt(std::complex<float>) and std::sqrt(std::complex<double>) support to MathFunctions.h
REVERT: 69710fce89 remove the Triangular suffix to Upper, Lower, UnitLower, etc, and remove the respective bit flags
REVERT: 7412fe6aed make applyHouseholderOnTheRight take a row vector, not a column vector: this is how it's used in practice.
REVERT: b8a8acad7f typo
REVERT: bcaad78dd2 improved a bit the list of API changes
REVERT: da0d1b286b Various documentation updates: - update the tutorial - update doc of deprecated cwise function - update cwise doc snippets
REVERT: 115dd2020c a couple of fixes
REVERT: 3ecdfcd6dc actually stop on failure
REVERT: 8b665e504a merge
REVERT: 0214915245 fix comments
REVERT: 07e489df4e started a page on the porting from Eigen2 to 3, updated a bit the tutorial
REVERT: e3dc450efe improve the new experimental sparse product
REVERT: 7628fe97b9 merge
REVERT: a2555c798a a couple of improvements in the Autodiff module
REVERT: 2121f19b0e extend benchmark for sparse products
REVERT: eb8891e246 add a novel, experimental sparse product
REVERT: b53fe267ed add operators *= and /= (bis)
REVERT: d1d0f88d98 port unsupported modules to new API
REVERT: d7987f7a4e add missing operators: /, /=, *=
REVERT: 7db3d7125d fix types of scalar constants
REVERT: 50848264ce forgot to hg add this file
REVERT: aee2ca06cc merge and add start/end to Eigen2Support
REVERT: b0862da2bb fix aliasing detection
REVERT: 4bd94bbddc fix a coupe of warnings
REVERT: 4b161f511f merge
REVERT: 0c998838b3 Big renaming:   start ---> head   end   ---> tail Much frustration with sed syntax. Need to learn perl some day.
REVERT: d2e7970501 Make snippet run successfully again:  the snippet for 'eval' was taking m=m.transpose() as an example of code  that needs an explicit call to eval(), but that doesn't work anymore now  that we have the clever assert detecting aliasing issues.
REVERT: 301e5755a2 accessor for the levenberg-marquardt parameter
REVERT: d8960b9fd6 Further refactoring of MatrixFunction<MatrixType, 1> * move some data to member variables * split and/or rename member functions * document all members
REVERT: 2d80579fb1 unimportant small fix
REVERT: 8db887a71c make some changes to please clang, fix some warnings too.
REVERT: 8f6d4b2e88 fix compilation in some cases
REVERT: 38730ce9f8 s/asMatrix()/matrix()
REVERT: ad107b3294 fix dirty triangular unit test
REVERT: e72a0ac788 port VectorwiseOp and Swap to the novel mechanisms, and various cleanning
REVERT: 63c4758b0f Fix #69 for the second time, and add the respective regression test
REVERT: 80f27d21bb remove debug output. sorry!
REVERT: 4d89dc49ba clarify docs as requested on forum
REVERT: afed666aca * Fix bug #79: ei_alignmentOffset was assuming that ptr is multiple of   sizeof(Scalar), and that assumption breaks with double on linux x86-32. * Rename ei_alignmentOffset to ei_first_aligned * Rewrite its documentation and part of its body * The variant taking a MatrixBase doesn't need a separate size argument.
REVERT: e027bdc73a put the assign assert and debug info before the assignment itself
REVERT: 81f6310ae4 Instead of EIGEN_JOBS, introduce EIGEN_MAKE_ARGS and EIGEN_CTEST_ARGS. This is much more powerful! Notice that CTest 2.8 supports the -j argument, although that is undocumented. Last commit of 2009! Happy new year to all!
REVERT: 06f69fa679 * The 'check' and 'buildtests' scripts no longer take a jobs parameter.   Instead, they honor the EIGEN_JOBS environment variable if defined. * The syntax ${BLABLA} in bash scripts was conflicting with CMake configured   file syntax. Resolved by using the @ONLY option and the @BLABLA@ syntax.
REVERT: c3125d50ae Refactoring of MatrixFunction: Simplify handling of fixed-size case.
REVERT: 40f4efefa9 Rename test per naming convention.
REVERT: c87495b960 Refactor MatrixFunction class: Split new class MatrixFunctionAtomic off.
REVERT: 6e5c8c537e Simplify and document Sylvester equation solver in MatrixFunction.
REVERT: 5e2d0f2da0 sorry for committing this mess
REVERT: ac6ed2b098 fix #76, MayLinearVectorize depends on MaxSizeAtCompileTime and not on MaxInnerSize
REVERT: 45fa952697 fix the xpr analyzer for Transpose
REVERT: 6f4481b9b5 clean a bit Hessenberg and make sure the subdiagonal coeff is real even for 2x2 matrices
REVERT: 82ba34d3db fix #75, and add a basic unit test for Hessenberg (it was indirectly tested by the eigenvalue decomposition)
REVERT: 7f8d29e272 fix #69 and extend unit tests or triangular solvers
REVERT: 061fce3055 add checks for on the right triangular solving with matrices
REVERT: b55c000c21 a couple of fixes after thye merge
REVERT: ffe255501d merge with default branch
REVERT: 9a5c284831 extend the DenseStorageMatrix mechanism to all expressions
REVERT: a329226308 merge
REVERT: 290f80f109 Add support for general matrix functions. This does the job but it is only a first version. Further plans: improved docs, more tests, improve code by refactoring, add convenience functions for sine, cosine, sinh, cosh, and (eventually) add the matrix logarithm.
REVERT: 3631b58709 support gcc 4.5
REVERT: b86ad317dc Fix compilation error in doc/examples/class_CwiseBinaryOp.cpp . This is a follow-up of 35c972143f37 (better work around for empty structs).
REVERT: bf9572e74e Set default for second argument for check script. Otherwise, buildtests will be run with a second argument of "" if check is called with only one argument, which leads to infinitely many jobs.
REVERT: baa1aad034 add missing inclusion of LU/arch, thanks to J.B. Rouault
REVERT: 614b8bdcd5 oops, remove duplicated ctor
REVERT: e1c03b336c much better workaround for empty struct (the previous one caused GCC 4.3 to generate wrong code leading to segfaults)
REVERT: d3bd22f0b7 a couple of fixes, now Array passes the linearstructure test
REVERT: 6f6a65c0b8 clean a bit Matrix and fix static Map functions
REVERT: 79e241c493 some cleaning in DenseStorageBase
REVERT: 5a50d58126 finally add a Array class with storage via the introduction of a DenseStorageBase base class shared by both Matrix and Array
REVERT: dd5a05f527 partial LU optimization: noalias
REVERT: 2b0df0a537 more fixes
REVERT: 663dc8b5c3 a couple of fixes and cleaning
REVERT: 3458c3682f Add test for issue #75 (Hessenberg of 1x1 matrix). Also remove an superfluous #include in matrixExponential test.
REVERT: d6a77f1717 a trivial compilation fix
REVERT: dc64bcdf84 a lot of cleaning and fixes
REVERT: 3aace95a85 add an eigen2support test and a few fixes
REVERT: 74174843d6 * introduce ei_alignmentOffset(MatrixBase&,Integer)   couldnt put it in Memory.h as it needs the definition of MatrixBase * make Redux use it
REVERT: 82e3e6e332 this really fix the previous warning
REVERT: 5a023a4592 fix warning by making ei_empty_struct::_ei_dummy_ private
REVERT: 626f65be52 fix compilation when mixing types
REVERT: 96bbddf64f * fix aliasing checks when the lhs is also transposed. At the same time,   significantly simplify the code of these checks while extending them   to catch much more expressions! * move the enabling/disabling of vectorized sin/cos to the architecture traits
REVERT: 47fc655155 fix spasre triangular solve for row major lower matrices
REVERT: 7449f7ab60 ignore more build*/ directories
REVERT: fb7f2966d3 suppress unused variable warnings
REVERT: 41e36cfaf3 no, this wasn't equivalent to ei_pload at all, after all!
REVERT: 78a948362d Gael, who is a man of few words^Winstructions, is right, as usual.
REVERT: cea324346f Suppressed the warning for missing assignment generators (forgot that in the last submission). Commented Quake3's fast inverser sqrt in SSE's MathFunction header.
REVERT: 75e829c01f silence 'statement has no effect' warning with gcc 4.4
REVERT: b48d4df225 *use scalar instructions, packet not needed here *remove unused var warning
REVERT: 6f4115652e only include SSE path if SSE enabled
REVERT: 736a658a97 add SSE path for Matrix4f inverse, taken from Intel except that we do a kosher division instead of RCPPS-followed-by-Newton-Raphson. The rationale for that is that elsewhere in Eigen we dont allow ourselves this approximation (which throws 2 bits of mantissa), so there's no reason we should allow it here.
REVERT: 4adc3670ff change the Arch constants: const int ---> enum, more explicit names, and use of a namespace instead of Prefix_Name.
REVERT: dd9936edab Warning 4512 (assignment operators could not be generated) is now simply disabled. All unimplemented assignment operators have been removed.
REVERT: 5de54c950e Fixed a bad type conversion.
REVERT: e0f6878810 Remove //@{ ... //@} for same reason as in changeset 7dcac90d6df9.
REVERT: ec335c2fec Correct type of ei_solve_retval<LLT,...>::operator=
REVERT: c2811bde11 Removed more warnings.
REVERT: e4325be5e0 Added to possibility to compile unit tests at maximum warning level. Silenced (amongst others) many conversion related warnings.
REVERT: b519229a02 Fixed the bad fix - now the unsupported examples and snippets work on windows.
REVERT: 990e25057a Reverted Jitse's change - the targets unsupported_examples and unsupported_snippets are unknown over here.
REVERT: 49807311d0 Coax doxygen in producing better docs for MatrixFunctions. The //@{ ... //@} in unsupported/Eigen/MatrixFunctions for some reason caused doxygen to list the constructor of the MatrixExponential class as a separate function in the MatrixFunctions module without any reference to the class; very confusing.
REVERT: 23c28d915e fix compilation (for some reason the pb happens only under windows)
REVERT: c830faf856 some compilation fixes
REVERT: a8632deebb adapt select, replicate and reverse
REVERT: b8eb7bdbc8 * 4x4 inverse: revert to cofactors method * inverse tests: use createRandomMatrixOfRank, use more strict precision * tests: createRandomMatrixOfRank: support 1x1 matrices * determinant: nest the xpr * Minor: add comment
REVERT: f4bf071d17 Handle row and col major matrices in the gdb pretty printer
REVERT: 23a4eda5c8 Display the data ptr as part of the header
REVERT: 3b1e6ec900 Correct license header of the gdb pretty printer
REVERT: d50e85280e Adding __init__.py so the printers can be used directly from the checkout
REVERT: f71b5f0a58 Added a 'pretty printer' for the msvc debugger (tested on Visual Studio 2008).
REVERT: 80c869ecce Added a pretty printer python script for Eigen::Matrix (gdb-7.0 and later).
REVERT: 0e9ede6b6f Documentation clean up. * remove non-existant reference to CwiseAll * define \householder_module (used in HouseholderSequence.h) * update I01_TopicLazyEvaluation.dox - Product is now called GeneralProduct * remove reference to list of examples which was deleted ages ago * rename PartialLU_solve.cpp snippet to PartialPivLU_solve.cpp
REVERT: 6c67657f8a C05_TutorialLinearAlgebra.dox: Correct file name
REVERT: 607b797ca2 Various improvements to the docs for unsupported. * Enable compilation of examples for unsupported. * Fix use of std::vector in BVH example. * Add an example for the matrix exponential. * Bug fixes in unsupported/doc/{examples,snippets}/CMakeLists.txt .
REVERT: b194b0ca2a add a DenseBase class for MAtrixBase and ArrayBase and more code factorisation
REVERT: 4e94689854 add a slerp benchmark (for accuracy and speed))
REVERT: dd7146439b Fix poor Quaternion::slerp snapping
REVERT: 7f807b0613 merge
REVERT: b2562e72d5 fix compilation and clean a bit Map<Quaternion>
REVERT: 42a7ede244 Fixed compilation warnings in MSVC with Scalar==float
REVERT: e86031a25d Fix compilation for MSVC.
REVERT: 4fcd1fc5e2 explicitly cast to use the acos(long double)
REVERT: 111ea5e165 removed troublesome M_PI and M_PIl constants
REVERT: 799ce08416 fix MSVC10 compilation
REVERT: d642c6aa71 * Remove test_ prefix in tests * tests now honor EIGEN_REPEAT and EIGEN_SEED if no arguments were passed
REVERT: af39daa1b4 merge
REVERT: 32344df172 * HouseholderSequence:   * be aware of number of actual householder vectors     (optimization in non-full-rank case, no behavior change)   * fix applyThisOnTheRight, it was using k instead of actual_k * QR: rename matrixQ() to householderQ() where applicable
REVERT: 25fe6999e9 Removed unused 'benchmark'.
REVERT: 4368cc00fa * fix include for case-sensitive filesystem * on GNU, clock_gettime requires linking -lrt
REVERT: 65ad82dcc1 * remove empty destructors in Matrix.h and MatrixStorage.h
REVERT: 51adc688af merge
REVERT: 03988dddd9 Added NestByValue and .nestByValue() again for the sake of backwards compatibility.
REVERT: 558cc5451c Removed unnecessary code.
REVERT: 3b5958f29c merge with tip
REVERT: f9ba63b23e added comments to help vim understand the header files are c++.
REVERT: 63118035f2 instruction to remove CMakeCache.txt for out-of-source build
REVERT: a86753aefd quieted signed/unsigned comparison warning
REVERT: 3bdce1d3e0 added newline at the end of file to quiet gcc warning
REVERT: 6fbb14b9c8 merge
REVERT: 4eb6edb853 ColPivQR: now the unit tests even succeeds: * with random matrices multiplied by 1e+8 (i.e. fixed wrong absolute fuzzy compare) * with 10,000 repetitions (i.e. the fuzzy compare is really clever) and when it occasionnally fails, less than once in 10,000 repeats, it is only on the exact rank computation.
REVERT: 8c9ab7f814 Big reworking of ColPivQR and its unit test, which now passes even with thousands of repetitions and correctly tests matrices of all sizes. Several surprises along the way: for example, a major cause of trouble was the optimized "table of column squared norms" where the accumulation of imprecision was a serious issue; another surprise is that tests like "x!=0" before dividing by x really benefit from being replaced by fuzzy tests, as i hit real cases where i got wrong results in 1/epsilon.
REVERT: 4ec4a71592 minor cleanup
REVERT: 1fd920eb32 That's it NestByValue and .nestByValue() are both gone!
REVERT: e157cab0f0 Even more NestByValue cleanup...
REVERT: 5e96b8eabb Much more NestByValue cleanup.
REVERT: 9f03e3c415 Removed NestByValue dependency from Cholesky, Eigenvalues, LU and QR.
REVERT: ef951a1915 Removed NestByValue dependency from VectorwiseOp.
REVERT: 617770d0f2 Removed NestByValue dependency from MatrixBase::select().
REVERT: f413905a70 Adapted the number of test runs.
REVERT: 194cbe6ced Added missing typedef (will I ever learn it!?) Removed unsupported directories that do not provide CMakeList.txt (CMake 2.8 warning). The BenchTimer is now also working on Cygwin.
REVERT: a4092691d0 merge
REVERT: fe10ef1ec4 Added the profiling test to unsupported.
REVERT: 9b39af9e33 add specialization ei_ref_selector for sparse matrix types
REVERT: 55476be6be fix another 'duplicated content in doxygen pages' bug : exclude *.orig files
REVERT: 964434c937 Removed wrong typename.
REVERT: 3b7d84a1ee Initial commit for a modified ei_nested logic.
REVERT: d8d10bdae8 Some of our unit tests require mathematical constants and thus we rely on non-ansi code. It seems as if the new standard removed pow(T,int). M_PIL is only defined when _GNU_SOURCE is defined.
REVERT: f986ac5cc1 Adapted a mail from Mark about some design and add it as documentation for the FFT module.
REVERT: 05ab58f723 fix doc
REVERT: 96b6203974 precision  --->  dummy_precision
REVERT: fa5eb38d04 cleaning
REVERT: d9c04a770a cleaning
REVERT: 747b30be42 kill yet another un-needed parameter
REVERT: 738e73d7d2 make qrsolv use eigen types
REVERT: 82a5264b7f clean qrsolv
REVERT: eea5304a13 reduce ei_qrsolv() signature, wa is actually a 'working array'
REVERT: 87b967e77d improve the scripts for building unit tests: * support unsupported/ * use egrep instead of grep, properly escape special chars.
REVERT: 522f4da1f3 computes column norms outside of ei_qrfac()
REVERT: 1b5ddf3ebd cleaning
REVERT: 691af500b3 export stableNorm(), blueNorm() and hypotNorm() to colwise() and rowwise() + rudimentary test
REVERT: 69b42b59db use typedef
REVERT: 774b0a46f7 silent warnings
REVERT: 0566ea2dc7 Added tag actual-start-from-scratch for changeset 655348878731
REVERT: b2f17ddc24 forward port slight changes in the 4x4 inverse test
REVERT: 3d67098f10 add SSE4 support, start with integer multiplication
REVERT: ff3acfb1ea fix assert and handle Unit shapes
REVERT: 8daebea022 improve precision test
REVERT: 974c1ba04c 4x4 inverse: * change block selection threshold from 1e-2 to 1e-1 * add rigorous precision test
REVERT: 9d1c5d3768 fix important typo
REVERT: 70bbbdd3ad Add the concept of base class plugins, and started to write the ArrayBase class. Sorry for this messy commit but I have to commit it...
REVERT: 1488b05da7 * remove EnforceAlignedAccess option to Block, VectorBlock, Map and MapBase   because thanks to the previous commit this is not needed anymore * add a more general ForceAlignedAccess expression which can be used for any expression.   It is already used by StableNorm.h.
REVERT: de35fca74d improvements in FindEigen*.cmake, ported from changes in CMakeLists.txt:  - better regular expression  - grep the whole file, not expensive anyway, more robust
REVERT: a19b0a1d66 Hey, finally the copyCoeff stuff is not only used to implement swap anymore :) Add an internal pseudo expression allowing to optimize operators like +=, *= using the copyCoeff stuff. This allows to easily enforce aligned load for the destination matrix everywhere.
REVERT: f119d4c3e0 Replace toDense() by toDenseMatrix() in tests.
REVERT: 19a49fddc4 Eigen/CMakeLists.txt: remove parens from if. Only CMake 2.6.3 and later recognize this syntax, and at the moment we require 2.6.2. CMake uses the right precendence, per its man page, so the parentheses are not necessary.
REVERT: cd93b5bb20 * don't laugh, but these bugs took me forever to fix. * expand unit tests to make sure to catch them: they nearly escaped the existing tests as these memory violations were highly dependent on the numbers of rows and cols.
REVERT: 32fb130a87 minor improvements in triangular stuff
REVERT: 8bd46f0df6 * fix compilation of unit-tests (sorry, had tested only 1 channel) * remove buggy (superfluous?) specialization in the meta-unroller
REVERT: 32e2aa7518 TriangularMatrix: extend to rectangular matrices
REVERT: 40ebf84b4d move signature file to root directory, where it belongs
REVERT: aac9305e7f * in Eigen/CMakeLists.txt, finally do a globbing to we no longer will have problems with "oops forgot to install new module". * add a file Eigen/signature_of_eigen3_matrix_library, use it to make FindEigen3.cmake more solid: able to find Eigen in either eigen3/ or eigen/ and not mix it up with Eigen2.
REVERT: efb5f3b6c4 * eigen2->eigen3 * bump version to 2.91.0 * add FindEigen3.cmake
REVERT: e98eaebc26 simplification
REVERT: 78b1972303 fix remaining bug in ColPivHouseholderQR, so now all tests pass again
REVERT: 987f2f9074 fix bugs, old and new: * old bug: in CwiseBinaryOp: only set the LinearAccessBit if both sides have the same storage order. * new bug: in Assign.h, only consider linear traversal if both sides have the same storage order.
REVERT: 7bd33948f7 temporarily disable linear traversal. Actually I don't think it's buggy. But it probably triggers existing bugs, I suspect that some xprs have LinearAccessBit and shouldn't have it. Also this fixes the "bugs" with JacobiSVD ---> now it works again
REVERT: 8e29b27807 fix stuff after the PermutationMatrix changes. I still have JacobiSVD errors when cols>rows
REVERT: 06306fdb01 Another big refactoring change: * add a new Eigen2Support module including Cwise, Flagged, and some other deprecated stuff * add a few cwiseXxx functions * adapt a few modules to use cwiseXxx instead of the .cwise() prefix
REVERT: a88fd31373 Assign.h: add LinearTraversal (non-vectorized index-based traversal) Rename some constants to make names match more closely what they mean.
REVERT: 6c81e531dd Big refactoring/cleaning in the spasre module with in particular the addition of a selfadjointView, and the extension of triangularView. The rest is cleaning and does not change/extend the API.
REVERT: 1c140eb75e more ET refactoring: * extend Cwise for multiple storage base class * a lot of cleaning in the Sparse module
REVERT: 62d6a88812 port the QR module to PermutationMatrix
REVERT: be8d5ce096 adapt CwiseBinaryOp and the Sparse counter part
REVERT: 6bdeb733b5 vade retro
REVERT: ccb1a57f07 for consistency: PlainMatrixType ---> DenseMatrixType
REVERT: 01b010a9f5 addToDense ---> addTo subToDense ---> subTo
REVERT: 23cc88735f PermutationMatrix: add setIdentity and transpositions methods LU: make use of that
REVERT: 1dd6fa2b8b Port FullPivLU to PermutationMatrix
REVERT: 84ef47d3b5 PartialPivLU: port to PermutationMatrix PermutationMatrix: add resize()
REVERT: 5d7eba869b DiagonalMatrix: release-quality documentation BandMatrix: rename toDense() ---> toDenseMatrix() for consistency
REVERT: b9241c75d8 PermutationMatrix:  * make multiplication order not be reversed  * release-quality documentation
REVERT: 57b7301788 initialize-by-zero: remember that when the newsize==oldsize, resize() must remain a NOP
REVERT: 872a349b64 adapt CwiseUnaryOp and CwiseUnaryView
REVERT: f8a789d192 Experiment the ET refactoring on Transpose for Dense and Sparse storages. All tests work fine.
REVERT: 63a8e28065 merge
REVERT: dc02977104 PermutationMatrix: add inverse() and product of permutations
REVERT: 09897de3d3 handle make errors ---> exit, don't run ctest
REVERT: a698a26f54 rename test for coherency with previous renaming of the module
REVERT: 4dad67a0b2 don't be shy and test them all
REVERT: 8bc811a2c0 * add PermutationMatrix * DiagonalMatrix:    - add MaxSizeAtCompileTime parameter    - DiagonalOnTheLeft ---> OnTheLeft    - fix bug in DiagonalMatrix::setIdentity()
REVERT: c1cd2f841f maketests -> buildtests
REVERT: 556439cc64 prevent in-source builds. hope it's ok with you... it's still possible, of course, to have the build dir as a subdir of the source dir.
REVERT: 1ad4600075 there's no reason why we should follow the FSF's stupid recommendation for the naming of these files, right? This could give the wrong impression that Eigen is only GPL-licensed.
REVERT: 6244f0dd1c add workaround for Guillaume
REVERT: 54541780d3 * add Map<Quaternion> test based on Map from test/map.cpp * replace implicit constructor AngleAxis(QuaternionBase&) by an explicit one, it seems ambiguous for the compiler * remove explicit constructor with conversion type quaternion(Quaternion&): conflict between constructor. * modify EIGEN_INHERIT_ASSIGNEMENT_OPERATORS to suit Quaternion class
REVERT: d3b213ab96 Build tests for unsupported modules if EIGEN_LEAVE_TEST_IN_ALL_TARGET
REVERT: b50ce4a7b5 xargs ---> xargs echo (xargs alone doesnt seem to be documented in the man page, while xargs echo is documented)
REVERT: 228b7f2bee introduce check target, and some renaming
REVERT: 2ba461d61c ouch, avoid infinite loop! optimization is not so important here, so a for loop will do.
REVERT: 561f4c4889 also optionnally initialize by zero after resizing
REVERT: 1ff8b67bb4 * add non-default option to initialize matrices by 0   (useful for porting) * maketests really has to be in test/
REVERT: 50a012fc1c * add ./debug and ./release scripts * update the messages * rename EIGEN_CMAKE_RUN_FROM_CTEST to something saner
REVERT: 14fba23fad add mctestr script. In your build directory, just do:    ./mctestr ^qr 5 and it will build all tests matching ^qr with 5 jobs and then do `ctest -R ^qr`
REVERT: 3ab2f7ec45 * add maketests script. It is like make but takes a regexp allowing to build selected targets. Next step will be a "mctestr" script doing that and then calling ctest -R. * in runtest.sh, don't override the default number of repeats. If one thinks the default should be changed, let's change it at the source.
REVERT: fbd9219047 * use standard CMAKE_BUILD_TYPE * remove debug_xxx targets * runtest.sh: don't run make
REVERT: 292f64ad34 Compilation fix: makeHousholderInPlace now uses references.
REVERT: 41465d4883 fix PowerPC platform detection
REVERT: e72a19f329 fix for *.pc install dir (suggested by Ingmar Vanhassel on IRC)
REVERT: 4c5619417f *adapt Householder to the convention that we now favor refs over ptrs for output. Keep "workspace" as pointer because it is an array (which is now more obvious). *rename makeHouseholderSequence to householderSequence, because that's what it returns.
REVERT: 391b369b51 doxygen : exclude diff files
REVERT: 2eeb32dc0c make the complex module appear in doxygen + small documentation
REVERT: dc466be633 make FFT appear in doxygen doc, and provide a mininum of documentation
REVERT: 5fd578029b fix Skyline module doxygen stuff
REVERT: 7addefb805 merge with main repository
REVERT: da8b397cdb documentation fixes
REVERT: 643db05f5e fix compilation and removed some unused stuff in skyline
REVERT: 9e090b7b5d merge with main repository
REVERT: f233730ac8 fix #68 I did not see the skyline matrix patch contained that
REVERT: 7597fea4c7 mv the Skyline module to unsupported/
REVERT: 521dfc6dcd merge with main repository
REVERT: 4a5131065b revert previous commit on the matter : once doxygen cache is flushed this gives very bad results
REVERT: d044e04e7f * merge * remove a ctor in QuaternionBase as it gives a strange error with GCC 4.4.2.
REVERT: d64edf4cb2 add missing includes
REVERT: 51ba130b56 last round of changes, mainly to return derived types instead of base types, and fix various compilation issues
REVERT: 7e6d93521e Quaternion: fix compilation, cleaning
REVERT: dd4cf8ff03 few doc fixes
REVERT: 9c29634ca0 Reduce general diff with eigen-tip. Moreover, this test now seems to pass again.
REVERT: 9da1e4e7b5 more documentatin
REVERT: 052f8943a6 only define groups once in unsupported, in order to prevent ambiguity for the group names.
REVERT: 043ca5e1a9 some more documentation
REVERT: 83a2cc13c8 various fixes in headers
REVERT: 3b1bab1ac1 rename NonLinear to NonLinearOptimization
REVERT: ca85a48eb9 documentation + move "namespace eigen" to the main file, as others do.
REVERT: 7e247d795d starting documentation
REVERT: 58bc4f9189 include NonLinearOptimization_Module and NumericalDiff_Module + cleaning
REVERT: e209eebcf9 simplifications in the ei_solve_impl system, factor out some boilerplate code
REVERT: b1a0d1066b merge with main repository
REVERT: 0611f4b09e port the qr module to ei_solve_xxx.
REVERT: 890b0097af fix compilation adding a makeconst helper struct
REVERT: 5eacc8fecd improve a bit AutoDiffVector, but it still not working
REVERT: 4277713500 update product bench
REVERT: 54c0cfc893 back out previous back out, and this time don't forget to include the NumTraits.h file in the commit ;)
REVERT: e79f1aa2e5 Backed out previous changeset: Does not compile. There is no member Nested in NumTraits.
REVERT: b90f658c2d Add the possibility to control the storage mode of scalar value (by value or reference) in order to avoid unecessary copies when using complex scalar types (e.g., a AutoDiffScalar)
REVERT: 8f9ce99dc2 Add regression test for issue #66 (ComplexSchur of zero matrix).
REVERT: fa18fdf1b3 port svd to the ei_xxx_return_value thing
REVERT: a20eb9b9f0 fix bug in svd solve reported on forum, was apparently assuming square matrix, not sure how the unit test could work.
REVERT: 4a4613c1f1 Let's try to stick to the original code, thus activate the fix of #62 only for 64 bit builds.
REVERT: 4a1a4fac7b Direct access of the packet structs fixes bug #62 and doe not seem to influence compiler optimization.
REVERT: e8b3d131a4 Added basic SkylineMatrix.
REVERT: dddaa75ed6 initialize Eigen::Complex arrays
REVERT: e5120c54d6 an attempt to fix a compilation issue with MSVC
REVERT: a375950d48 move cholesky to ei_xxx_return_value
REVERT: 5b0024e6a1 move partial-pivoting lu to ei_solve_impl
REVERT: 79d4c0ee1a introduce ei_xxx_return_value and ei_xxx_impl for xxx in solve,kernel,impl put them in a new internal 'misc' directory
REVERT: 13fb35cbfe fix #66 : upper triangular checks in ComplexSchur
REVERT: f5b2f33ae6 rephrase tutorial on Map
REVERT: b3d32517f0 fix compilation
REVERT: 3f65dce7e1 * default MatrixBase ctor: make it protected, make it a static assert, only do the check when debugging eigen to avoid slowing down compilation for everybody (this check is paranoiac, it's very seldom useful) * add private MatrixBase ctors to catch cases when the user tries to construct MatrixBase objects directly
REVERT: 28e7018215 added inlines to a bunch of functions
REVERT: ed190792fc moved half-spectrum logic to Eigen::FFT
REVERT: 1835b982b8 moved real-half-spectrum reflection into Eigen::FFT
REVERT: 9a289687a2 moved scaling to Eigen::FFT
REVERT: 2738c0f4c9 switched to BenchUtil.h
REVERT: 36100f5f87 SVD::solve() : port to new API and improvements
REVERT: 6d985fc55e *port the Cholesky module to the new solve() API *improve documentation
REVERT: 9f2c7f650b properly implement BenchTimer on POSIX (may require a platform check for the clock name on non-linux platforms)
REVERT: 8bf4197eec corrected the computation cost of mean
REVERT: 7441470b2f added mean() reduction
REVERT: 1e02b7db70 oops I forgot to include that file in the previous commit (fixing #65)
REVERT: e6962af86c fix #65: MatrixBase::nonZero()
REVERT: 805166bd06 improved selftest for Eigen::Complex -- mainly a documentation of what does not work
REVERT: 62d76c2c8f forgot Complex test file
REVERT: 93d72682ab added many inlines and attempted to fix castable pointer so it works with std::vector
REVERT: 3febbb73aa sync with mainline
REVERT: ea15320374 big huge changes, so i dont remember everything. * renaming, e.g. LU ---> FullPivLU * split tests framework: more robust, e.g. dont generate empty tests if a number is skipped * make all remaining tests use that splitting, as needed. * Fix 4x4 inversion (see stable branch) * Transform::inverse() and geo_transform test : adapt to new inverse() API, it was also trying to instantiate inverse() for 3x4 matrices. * CMakeLists: more robust regexp to parse the version number * misc fixes in unit tests
REVERT: 2d920a99ad * rename new Quat class to Quaternion, remove existing Quaternion * add Copyright line for Mathieu * cast() was broken (compile errors) and needed anyway to be in QuaternionBase * it's VectorBlock<T,3>, don't pass additional parameter 1, it has different meaning!! * make it compile with GCC (put 'typename' at the right location)
REVERT: 567c8c71ee Quaternion could now map an array of 4 scalars :
REVERT: 1bcc8db867 Added dox for the new typedefs.
REVERT: 8a61dd6195 Added more common typedefs.
REVERT: b2172cefb2 Umeyama is now working with fixed size src and dst points.
REVERT: eed15993fb sync the documentation examples
REVERT: 916fbf50d1 * make inverse() do a ReturnByValue * add computeInverseWithCheck * doc improvements * update test
REVERT: 553e4e85fb remove 1 useless layer of functions
REVERT: 8856936a3c big rewrite in Inverse.h in particular, the API is essentially finalized and the 4x4 case is fixed to be numerically stable.
REVERT: 9e903d3213 It is just not that easy and requires more work to get it done right.
REVERT: d7405e5c18 * extend Map to allow the user to specify whether the mapped data   is aligned or not. This is done using the Aligned constant:   Map<MatrixType,Aligned>::Map(data); * rename ForceAligned to EnforceAlignedAccess, and update its doc,   and emphasize this is mainly an internal stuff.
REVERT: b7615d89a3 added inline to many functions
REVERT: 438310e59a support gcc 3.3
REVERT: a6a9403468 demeaning with colwise expression
REVERT: fff52525b7 inlining,all namespace declaration moved to FFT, removed preprocessor definitions,
REVERT: 27c3025ff2 move PartialLU to the new API
REVERT: 1a29e32347 merge branches
REVERT: e09c3a31cf renamed 'Traits' to 'Impl', added vim modelines for syntax highlighting
REVERT: fbb0313808 MatrixBase:  * support resize() to same size (nop). The case of FFT was another case where that make one's life far easier.    hope that's ok with you Gael. but indeed, i don't use it in the ReturnByValue stuff.
REVERT: d0a2137e94 handle mark's first commits before he configured his id
REVERT: c081fdc52f added Eigen::FFT and Eigen::Complex
REVERT: 928294aa6e Added Windows support to the BenchTimer.
REVERT: e695f4c527 merged eigen2_for_fft into eigen2 mainline
REVERT: d1534c2992 * make PartialLU avoid to generate inf/nan when given a singular matrix   (result undefined, but at least it won't take forever on intel 387) * add lots of comments, especially to LU.h * fix stuff I had broken in Inverse.h * split inverse test
REVERT: 1ff90e4603 update doc snippets
REVERT: d1af5237be * proper check for Make * fix documentation of ei_add_test
REVERT: 6e06102353 kill ei_add_test_multi. Now the macro ei_add_test does all that automatically, by parsing the source file. No risk anymore to specify the wrong number of tests! Also, introduce CALL_SUBTESTX for X=1..10 that allows to port existing code much quicker. And port already the product* and eigensolver* files.
REVERT: 46487f9bda Add new default option EIGEN_SPLIT_LARGE_TESTS and cmake macro ei_add_test_multi. When enabled, large tests are split into smaller executables. This needs minimal changes in the unit tests. Updated the LU test to use it.
REVERT: d00b3e04aa * LU unit test: finally test fixed sizes * ReturnByValue: after all don't eval to temporary for generic MatrixBase impl
REVERT: 7f4dcd3fbe remove the m_originalMatrix member. Instead, image() now takes the original matrix as parameter. It was the only method to use it anyway. Introduce m_isInitialized.
REVERT: 4a4ef80e1e * useThreshold -> setThreshold * remove defaultThreshold()
REVERT: 38940dd5f3 oops, didn't want to commit that
REVERT: 467dbb8319 big huge changes in LU! * continue the decomposition until a pivot is exactly zero;   don't try to compute the rank in the decomposition itself. * Instead, methods such as rank() use a new internal parameter   called 'threshold' to determine which pivots are to be   considered nonzero. * The threshold is by default determined by defaultThreshold()   but the user can override that by calling useThreshold(value). * In solve/kernel/image, don't assume that the diagonal of U   is sorted in decreasing order, because that's only approximately   true. Additional work was needed to extract the right pivots.
REVERT: bc722ae129 * add a Make* expression type builder to allow the   construction of generic expressions working   for both dense and sparse matrix. A nicer solution   would be to use CwiseBinaryOp for any kind of matrix.   To this end we either need to change the overall design   so that the base class(es) depends on the kind of matrix,   or we could add a template parameter to each expression   type (e.g., int Kind = ei_traits<MatrixType>::Kind)   allowing to specialize each expression for each kind of matrix. * Extend AutoDiffScalar to work with sparse vector expression   for the derivatives.
REVERT: d47dc598b8 add operator+ scalar to AutoDiffScalar
REVERT: 22a0db07f1 merge
REVERT: e15cc4216f don't try to finish early
REVERT: 014aeb2a5f Inlining fixes + fixed typo. Removed ei_assert in presence of static assert.
REVERT: 7f799fbc7c autodiff: * fix namespace issue * simplify Jacobian code * fix issue with "Dynamic derivatives"
REVERT: 16043e3922 More warning fixes.
REVERT: c68a90d17f Fixed more W4 warnings.
REVERT: c615e33f55 Resize is only defined in Matrix and not in MatrixBase. I am not sure whether the better fix is to move the resize functions to MatrixBase.
REVERT: 7023dcf393 Added prod() reduction to the AsciiQuickReference.
REVERT: e3e272d9de add missing PartialReduxExpr::coeff(index) function
REVERT: 6e093f5b50 compilation fix: make the generic template ctor explicit
REVERT: b69d00dd94 trivial compilation fix
REVERT: b636e16947 also test that the matrix Q is unitary
REVERT: 54841b68da merge with eigen-tip
REVERT: 3073c35c37 Fixed nmake parameter. Disabled debug_* targets for MSVC_IDE (they already exist). Removed the make usage message for MSVC_IDE.
REVERT: 58ad1c5efa merge
REVERT: 019fde5dd7 extend the sparse matrix assembly benchmark
REVERT: d9b56eeb0a really fix stable norm compilation for older gcc
REVERT: 46229fe195 - remove the debug_test_* targets from "all"   (otherwise they are compiled when you simply run    make in test/ or when enforcing "test" to be part of "all") - add linking libraries to the debug_test_* targets
REVERT: 429771515a the answer to the ultimate question in life is: 664
REVERT: a694908bfa merge
REVERT: e4e1e33850 allow arbitrary resulttype, fixes Xuewen's issue, and this stuff is going to get deeply refactored soon anyway.
REVERT: 4aa393cba4 fix compilation in stable norm, move a platform check to the unit tests
REVERT: 6869475b8b discard vectorization in matrix-vector product when data is not even aligned on the scalar type size (e.g., for double on 32 bits system without -malign-double)
REVERT: c6196bf0e2 after all we're not aligning to 8byte boundary keep most of the changes though as they make the code more extensible
REVERT: c6ee5eef32 merge
REVERT: b645f44649 we were already aligning to 16 byte boundary fixed-size objects that are multiple of 16 bytes; now we also align to 8byte boundary fixed-size objects that are multiple of 8 bytes. That's only useful for now for double, not e.g. for Vector2f, but that didn't seem to hurt. Am I missing something? Do you prefer that we don't align Vector2f at all? Also, improvements in test_unalignedassert.
REVERT: 66687ae20c added cygwin specific stuff
REVERT: 0a28e140df remove unneeded stuff
REVERT: 9e50db048e next attempt ... introduce EIGEN_CMAKE_RUN_FROM_CTEST, in that case don't EXCLUDE_FROM_ALL
REVERT: 7c67251aba finally, the right fix: set CTEST_BUILD_TARGET. So this is the come-back of btest target, and the default target is empty again.
REVERT: a746b9f074 dd first-time tip, to warn against doing "make". now i think we're reasonably safe.
REVERT: c6d4296461 use provided $USER if available, let the caller do the update (safer)
REVERT: bc76aaa986 add INSTALL and message about no need to do "make"
REVERT: 7b036f5eb4 add debug targets like debug_qr to build a specific test with debug info remove the btest target, instead just do "make" since anyway we have to let "make" build the tests
REVERT: 89450554b9 fix #59, can't EXCLUDE_FROM_ALL the test directory
REVERT: 164de1dae7 Added cmake project definitions.
REVERT: 6f2695188c forgot to hg add this file
REVERT: 9ae1890a3d fix permissions 666->660
REVERT: f9939759ea finally, actually purge the Main Page
REVERT: 815adfacbb merge
REVERT: 61e7bf9aef better fix for (v * v') * v, we still have to find a way to reorder it
REVERT: 42a3750a83 merge
REVERT: f41ef38389 Fixed wrong line endings.
REVERT: 309370960f make Replicate ctor require the exact expected type
REVERT: 185923d567 bugfix in the eigenvalue solvers (forgot to resize the eigen vectors)
REVERT: 2945ece85e *add test to prevent future regression
REVERT: caca7cb180 add outerproduct coeff(int,int) method. This is needed to make this expression work: (vec1*vec2.transpose())*vec3 Gael, no objection? Seems to make sense as that's fast.
REVERT: e80cdcec79 be sure that there's no name clash between NumericalDiff::df and the original functor df()
REVERT: 43843167a5 more message improvements, tell the user about building a specific test
REVERT: 83136e8a33 Fix compilation of HouseholderQR and ColPivotingHouseholderQR for non-square fixed-size matrices. For Colpiv that was just changing MatrixQType to MatrixType in the instantiation of HouseholderSequence. For HouseholderQR I also re-ported the solve method from Colpiv as there were multiple issues.
REVERT: c6a9921353 * update test to expose bug #57 * update createRandomMatrixOfRank to support fixed size
REVERT: ab2ea925c1 fix tests : we perform slightly worse because we do use one more function evaluation in our numericaldiff than what (c)minpack did
REVERT: e1e9a07253 fdjac2 is not needed anymore
REVERT: 4885ce9370 remove some duplicated code LevenbergMarquardt::minimizeNumericalDiff*() by using the generic Eigen NumericalDiff recently introduced.
REVERT: 3c8f30a40c central sheme for numerical diff
REVERT: a05c7a333b starting work on a Numerical differenciation module
REVERT: 6a65eb562a cleaning doc
REVERT: c1dc0c6ff3 cleaning
REVERT: 9ccbe2d63c default argument for _jac in functor operator() : this way, we can use AutoDiffJacobian::operator()(x,value) exactly as the original functor
REVERT: 710a29e208 use dynamic type in functor, as NonLinear only knows about this currently
REVERT: a0dd2550f5 use operator() so that to be coherent with eigen AutoDiff functor
REVERT: bad5141d6f define a generic functor and makes other ones inherit it
REVERT: 9ecda6f389 * bump to 2.90.0 now that it's agreed that we're doing eigen3   ---> question: do we change the prefix eigen2/ to eigen3/ now?        no, better wait until we've also changed the repository name * more message improvements: "Install Eigen" was unclear as it left   out other things like the BLAS library
REVERT: 7f052199c4 improve message
REVERT: d05841c71b remove references to adolc and split tests functions for clarity
REVERT: c23e05dbff * Introduce make targets btest (build tests), blas (build blas lib), demos (build demos). * remove EIGEN_BUILD_TESTS and siblings * add summary at the end of cmake run, hopefully not too verbose * fix build of quaternion demo * kill remnants of old binary library option
REVERT: 53e2219e08 remove the hack we made to allow api.kde.org to generate the dox. Update the error help page.
REVERT: 88d9d2a99d Ok, too many class bodies - it was only required for ei_svd_precondition_2x2_block_to_be_real.
REVERT: 28acc0f745 Added private, non-implemented assignment operators to functions that don't need them (fixes VC warning on /W4).
REVERT: de5870f74c Fixed VC compilation error on the JacobiSVD module.
REVERT: 2d224dafdb when copying a ReturnByValue into a MatrixBase, first eval it to a PlainMatrixType. This allows to limit the number of instantiations of the big template method evalTo. Also allows to get rid of the dummy MatrixBase::resize(). See "TODO" comment.
REVERT: 4b0c679524 update URL for adol-c
REVERT: 421681504f move also inverse() to ReturnByValue, by doing a solve on NestByValue<Identity>. also: adding resize() to MatrixBase was really needed ;)
REVERT: c350632401 update the sparse tutorial wrt not so recent changes about the filling API
REVERT: d2937d99a8 Removed implicit type conversion (VC warning fix).
REVERT: ef0e43af8c Matrix::conservativeResize, resize only when necessary.
REVERT: 5fa1da4f87 add a wip blas library built on top of Eigen. TODO: - write extentive unit tests (maybe this already exist in other projects) - the level2 functions still have to be implemented
REVERT: c96d6cef3f remove some dirty lines
REVERT: 26e215146f extend the support for bool
REVERT: 2f7926ffbd Uuups that was not yet intended for a commit.
REVERT: 6d9cfc3cb1 Fixed issue #57.
REVERT: 486e9d04e1 remove (changesets), it's enough numbers like this
REVERT: 9c38f147ea * sort by last name alphabetically * replace (no own changesets) by (no information)
REVERT: 412b8cb4cd use -f so that the script is happy even if the log file is not there
REVERT: 2f22ccf7fc oops, don't append, overwrite
REVERT: 585b5cf7d3 improvements, especially: automatically flush the server side cache
REVERT: f886909eb8 fix typo
REVERT: fdde1ce581 add eigen_gen_credits script
REVERT: 8e1a06730b Removed unnecessary MSVC check.
REVERT: 2590f92e63 allow to do xpr = solve(b) etc... just by adding a dummy MatrixBase::resize()
REVERT: 1299ccea55 * make LU::kernel() and LU::image() also use ReturnByValue * make them return zero vector in the degenerate case, instead of asserting   (let's stick to the principle that we only assert on memory errors)
REVERT: 3434c9bc77 fix docs
REVERT: 739ada6a89 convert LU::solve() to the new API
REVERT: 4fa639a2e2 * ReturnByValue:   -- simpplify by removing the 2nd template parameter   -- rename Functor to Derived, as now it's a usual CRTP * Homogeneous:   -- in products, honor the Max sizes etc.
REVERT: 09a7bbbee5 Added EIGEN_REF_TO_TEMPORARY define for rvalue support. Allowed VC10 to make use of static_assert.
REVERT: 46717afe32 fix bug #42, add missing Transform::Identity()
REVERT: 2db7035aed allow to override EIGEN_RESTRICT, to satisfy a smart ass blogger who claims that eigen2 owes all its performance to nonstandard restrict keyword. well, this can also improve portability in case some compiler doesn't have __restrict.
REVERT: 255f9d7a46 add legalese
REVERT: 5e68bc3d18 add demo of how to mix eigen with C code
REVERT: cb219ab831 implement __gnuc_forget_about_setZero_its_over_now
REVERT: 0228934dd2 undef B0
REVERT: fd56b23630 fix stable_norm unit test
REVERT: 9afacd7a51 update page to explain how to get rid of it
REVERT: 72ea0784d4 finish my evalToDense => evalTo change
REVERT: 92c90d767c clean the commented asm instructions because now I'm sure the previous fix is ok
REVERT: 89910ae491 merge
REVERT: bab2d65720 fix bug #52: Transform::inverse() should return a Transform
REVERT: 16dfbea51d fix #53: performance regression, hopefully I did not resurected another perf. issue...
REVERT: f2b14a00e6 compilation fixes
REVERT: d8a518a948 make ColPivotingQR use HouseholderSequence
REVERT: 9d4c2a2cb8 * add a HouseholderSequence class (not good enough yet for Triadiagonalization and HessenbergDecomposition) * rework a bit AnyMatrixBase, and mobe it to a separate file
REVERT: f32d59f767 improve ComplexShur api and doc
REVERT: b6d0c82065 * fix bug in col-pivoting qr, forgot to swap the colNorms when swapping cols * add Gael a copyright line
REVERT: 842ef67aaf * fix super nasty bug: vector.maxCoeff(&index) didn't work when 'vector'   was a row-vector. Fixed by splitting the vector version from the matrix version. * add unit test, the visitors weren't covered by any test!!
REVERT: 4fd65b025c disable warning 279: controlling expression is constant for ICC
REVERT: a16a0b2fd3 bugfixes for ICC (compilation and runtime)
REVERT: b68f1656eb fix warning with gcc 4.2
REVERT: 2f76c529c1 fix warning in stable norm
REVERT: ce6e3443e3 cleaning
REVERT: 7755e993b7 fix indentation (and only that)
REVERT: c9e6e73e9c added the test case for FFTW
REVERT: d0d4fc73db provide some default values for important results. So that we can read them even before *Init() and do no get random values.
REVERT: f423a7eccf cleaning
REVERT: a3c2148ada functors need not be const
REVERT: 4a02c4a528 Remove no-op statement in AlignedVector3.
REVERT: 68daa23318 merge with tip
REVERT: dd0844e2aa Re-factor matrix exponential. Put all routines in a class. I think this is a cleaner design.
REVERT: bec61649c1 Fix LaTeX error in doxygen comment.
REVERT: 7ccd70a43d Fixed if clause.
REVERT: d549e1cb02 Fixed conservative_resize compilation errors.
REVERT: 7ffca287da Added missing casts.
REVERT: 19f3fb3d8d Fixed unit test and improved code reusage for resizing.
REVERT: 322851dc43 Ups - that was not intended to be part of the commit.
REVERT: 2e7a0ceb38 Changed the AnyMatrixBase / ei_special_scalar_op inheritance order as proposed by Gael. Added conservativeResizeLike as discussed on the mailing list.
REVERT: 38d2bdd7dc add optional compile flags to enable coverage testing
REVERT: 62f361e776 improve coverage of matrix-vector product
REVERT: d30894e5c8 improve coverage of unitOrthogonal
REVERT: 0c62fb6028 add a stable_norm unit test
REVERT: ebcbd7e052 fix compilation of swap for ICC
REVERT: 07304264c4 uncomment stuff commented for debugging (sorry for the noise)
REVERT: a6d42b9e9b fix another .stride() issue in Cholmod support
REVERT: 4c838b385a bug fix in SuperLU support: the meaning of Matrix::stride() changed for vectors
REVERT: 412ffb6a9b Typos in tutorial 1.
REVERT: 27d9ff8538 enable ILU in super LU only if the super version supports it
REVERT: 4bd9492c10 fix warning about unused variable
REVERT: 68f36bd9ec merge with tip
REVERT: 68e64026e3 eigenization of fcn_chkder + bugfix
REVERT: 0bbfed85b9 fix bounds using c standard instead of fortran's
REVERT: bd008aab71 fix indentation for fcn_chkder
REVERT: 3f31294ea4 Force release builds on Windows machines in the test suite. Added an IGNORE_CVS flag to the test suite (allows submitting local and modified repositories). Fixed the EI_OFLAG for MSVC.
REVERT: 3f59fea224 Fixed SSE related build warning on 64-bit windows systems.
REVERT: 620135c512 Typos in tutorial
REVERT: b673f7eaac check number of evaluation even in the case of *1(), now we have it..
REVERT: d839031989 move Parameters as a class member, simplify calling sequence. Convenience methods from minpack ( "*1()" ) get their original name back : they are only useful when porting, anyway. Still, i prefer to keep them.
REVERT: a4caa94c55 remove printfs, they are of no use and may prevent compilation
REVERT: 7c7dca5812 add coeff(int,int), coeff(int) and value() functions to the inner product specialization
REVERT: 5b0d22bc6c merge with tip
REVERT: 82c869b21a cleaning
REVERT: 5588e2be66 split every algorithm in  *Init() + while(running) { *OneStep() }
REVERT: f944cd9e4c move more stuff into Parameters
REVERT: 3dcc461e60 cleaning
REVERT: 307b354b4b reduce local variables so that we can split algorithms
REVERT: 2072d001b1 cleaning
REVERT: 3024e5a138 put nfev/njev as internal variables as well
REVERT: ea24fbb084 oops... fixing return values, some copy/paste was done far too quickly
REVERT: f6284c83be if mode==2, the user is supposed to supply diag: do some basic check.
REVERT: 9ce7ec3364 make diag be an internal variable too
REVERT: f85748613d define and use struct Parameters
REVERT: 723a812f6d those are actually bools
REVERT: c77b9e2714 cleaning
REVERT: 45dad790f7 use an enum for status reporting
REVERT: 2a4f966b09 fix installation for recently added files
REVERT: 90174d7f69 merge files
REVERT: 9b687117c3 rename files
REVERT: 2677aaa8b5 remove the boring, old-school nprint option, we'll have a dedicated method for 'one iteration' anyway.
REVERT: eb83ee50ed cleaning
REVERT: 28727fb682 move most of results vectors/matrices inside respective classes.
REVERT: e5d68fcf9a cleaning
REVERT: c70ef12e3c merge both c methods lmstr/lmstr1 into one class LevenbergMarquardtOptimumStorage with two methods.
REVERT: 0901d695af merge both c methods lmdif/lmdif1 into one class LevenbergMarquardtNumericalDiff with two methods.
REVERT: 4c94fd4af2 cleaning
REVERT: 80889b08b2 merge both c methods hybrj1/hybrj into one class HybridNonLinearSolver with two methods. hybrd stuff renamed to HybridNonLinearSolverNumericalDiff.
REVERT: 89e93730b3 merge both c methods hybrd/hybrd1 into one class HybridNonLinearSolver with two methods.
REVERT: 78542f0d27 merge both c methods lmder/lmder1 into one class LevenbergMarquardt with two methods.
REVERT: 5ee38c2357 clean fortran stuff in fdjac*
REVERT: 2a713c43c2 some more work on Functors
REVERT: 8995bd74dc modernize HouseholderQR too, uniformize all that stuff, update tests
REVERT: 86319c7bac playing with functors
REVERT: 7aeb7be9f2 cleaning
REVERT: f046422275 Fix comment which may cause latex to hang when generating docs
REVERT: dfbb6a4c29 fix issue #43
REVERT: 362faa2bf7 cleaning covar
REVERT: 7abfb4d4ba eigenization of ei_covar()
REVERT: 6683c6e5ff bring the modern comfort also to ColPivotingHouseholderQR + some fixes in FullPivotingHouseholderQR
REVERT: 66b0b62177 finally, the correct way of dealing with zero matrices in solve()
REVERT: a29291912b covar : cleaning, removing goto's
REVERT: 5c8b949b54 further cleaning/ goto removing
REVERT: 4e4b9b1ded clean debug stuff
REVERT: d1c88c722b cleaning some more
REVERT: 9a0459d5dc cleaning, removing goto's, uniformization (try to reduce diff between hybr[dj].h  or lm[der,dif,str].h as much as possible), for future merging.
REVERT: 0ed4967630 add logAbsDeterminant() move log and exp functors from Array to Core update documentation
REVERT: f727a74b22 clean, remove goto's
REVERT: 9ce4d4668f cleaning, fixing most goto's
REVERT: 9eea2abca6 misc cleaning
REVERT: 173198d927 use a local variable for qrfac
REVERT: ba247cda78 merge with head
REVERT: 709b32f3d5 move ipvt/fortran fixing deeper
REVERT: bb2cfc5d1f various cleaning and homogeneization
REVERT: 607ab29838 add test for absDeterminant()
REVERT: 14764ce9ad give FullPivotingHouseholderQR all the modern comfort
REVERT: 69b36f2470 small improvements
REVERT: 2dcc7a8759 clarifications in LU::solve() and in LU documentation
REVERT: 9d12901712 fix bug: with complex matrices, the condition (ei_imag(c0)==RealScalar(0)) being wrong could bypass the other condition in the &&. at least that's my explanation why the test_lu was often failing on complex matrices (it uses that via createRandomMatrixOfRank) and why that's fixed by this diff. also gcc 4.4 gave a warning about tailSqNorm potentially uninitialized
REVERT: 594ccaf36e merge
REVERT: ce1b733c62 add ColPivotingHouseholderQR rename RRQR to fullPivotingHouseholderQR
REVERT: a3795bc93c hm, forgot to conjugate the arguments in applyJacobiOnTheLeft
REVERT: 62fff8c3f0 fix apply Jacobi for complexes and add documentation for some *Jacobi* functions
REVERT: 57b3ddd2e4 let createRandomMatrixOfRank support fixed-size!
REVERT: a0ca01234d dogleg, lmpar : use more eigen features
REVERT: 384b500f43 trivial fixes
REVERT: 635264385d eigenize dogleg()
REVERT: a1245ce602 only indentation fixes (this eases porting)
REVERT: 25783bf454 porting lmpar() to eigen : both api and some of the code
REVERT: 17dff34d3e misc cleaning
REVERT: 6ad24a27f2 cleaning fdjac*()
REVERT: a7cb50d9e0 only indentation
REVERT: 048c2212a6 some eigenization in main algorithms
REVERT: ba0ad6bb52 beautify functors for lmdif, lmstr, hybrj, hybrd
REVERT: 3de2386f91 beautify Functor for lmder : we now have f,df,debug methods
REVERT: 39e3e72d4f * use eigen object for callbacks for hybrd and lmdif * use Functor instead of argument for ei_fdjac*()
REVERT: 50d2d63e13 use eigen objects for ei_fdjac*(), this is a prerequisite before porting hybrd/lmdif..
REVERT: 94fd78c24f use eigen objects for hybrj and lmstr
REVERT: 786f48b48c use eigen objects for the lmder callback
REVERT: 9e2ae442e6 remove redundant code, fix bounds in those loops that still come from fortran
REVERT: b492115682 we do not need/use the 'void *p' parameter
REVERT: f7eb5295c5 Rewrite tutorial section on solving linear systems
REVERT: 46524655d5 fix typo
REVERT: 1850727b31 forgot to clean this one
REVERT: 51bed61900 ei_lmpar : use a reference for the parameter
REVERT: 93d25b39fa use const for machine constants
REVERT: 1f211d7970 keep on cleaning f2c mess
REVERT: 5b4c4a1928 cleaning f2c mess / trivial stuff
REVERT: 6626210551 add initial, rough, full-pivoting RRQR decomposition lots of room for improvement! and add Gael a (c) line in Householder.h
REVERT: d00eeaaf5f use blueNorm() instead of norm()
REVERT: 66dc38b79d raw import of covar() : this is the last one, and we now do not depend on the cminpack library anymore.
REVERT: 5b9e87dfe1 Now that the main algorithms are imported into eigen, we import subroutines used by those algorithms (aka "second level").
REVERT: 191cdd622b cleaning defines from f2c (use std::min and such instead of own ones)
REVERT: dd81bba0a5 cleaning : removing #define, use std:min() and such
REVERT: 857bfd0f60 Proper fix for linking to the Qt libraries (and others)
REVERT: 7738cca939 fix compilation with gcc 4.1. Indeed the path for recent gcc doesn't work with gcc 4.1, and looking at the implementation of vector in g++ 4.1, it was exactly our fallback case, so use that.
REVERT: 3ae108d2b4 Added support for SuperLU's ILU factorization
REVERT: bc770e23f3 * add real scalar * complex matrix, real matrix * complex scalar,   and complex scalar * real matrix overloads * allows the inner and outer product specialisations to mix real and complex
REVERT: 6b71d25ab8 extend mixingtype test to check diagonal products and fix the later for real*complex products
REVERT: 5093a049d6 bug fix in novel makeGivens for real
REVERT: 7db6e58130 compilation fix for conservativeResize
REVERT: b0b7256429 rename the EigenSolver module to Eigenvalues
REVERT: 8589fc2724 Added conservativeResize + unit test.
REVERT: cce1ed2421 implement the continuous generation algorithm of Givens rotations by Anderson (2000)
REVERT: ac3b9e95a3 This seems to be important for MSVC to optimize the size of empty base classes.
REVERT: 3eacf78451 update mixingtype unit test to reflect current status, but it is still clear we should allow matrix products between complex and real ?
REVERT: b4aea94c10 typo in sqrt(complex)
REVERT: 3549d5ce9a move eigen values related stuff of the QR module to a new EigenSolver module. - perhaps we can find a better name ? - note that the QR module still includes the EigenSolver module for compatibility
REVERT: 36c000a67d remove the \addexample tags
REVERT: 7389946f95 add examples for makeJacobi and makeGivens
REVERT: 5fe02a4b85 Fix serious bug discovered with gcc 4.2
REVERT: 6497ef43c9 Removed debug cout. Disabled MSVC inconsistent DLL linkage.
REVERT: e58a0d29f3 Remove last lazyness warnings.
REVERT: 04abb2a701 Added support to overwrite the generator type. Eigen'fied the new variables.
REVERT: f45b3dbcf8 big reorganization in JacobiSVD: - R-SVD preconditioning now done with meta selectors to avoid compiling useless code - SVD options now honored, with options to hint "at least as many rows as cols" etc... - fix compilation in bad cases (rectangular and fixed-size) - the check for termination is now done on the fly, no more goto (should have done that earlier!)
REVERT: 54bbcfd0bf introduce EIGEN_SIZE_MIN now we should check if some EIGEN_ENUM_MIN usage needs to be replaced by that... potential bug when using mixed-size matrice
REVERT: 56e598359b finally the first version was the good one...
REVERT: 0e14a146b9 fix #51 (bad use of std::complex::real)
REVERT: da96733493 * rename JacobiRotation => PlanarRotation * move the makeJacobi and make_givens_* to PlanarRotation * rename applyJacobi* => apply*
REVERT: 6f87d493d3 fix wrong assert
REVERT: a9434723a9 much simpler fix for Matrix::swap
REVERT: 33ff4d6026 * add serious unit test for swap * fix my stupidity in Matrix::swap()
REVERT: 744f768d0c merge
REVERT: 38b60facbe JacobiSVD: implement general R-SVD using full-pivoting QR, so we now support any rectangular matrix size by reducing to the smaller of the two dimensions (which is also an optimization)
REVERT: e6698e9aa0 fix compilation errors in swap (could not swap with anything else than the exact same Matrix type)
REVERT: b85534eb1a fix issue #49
REVERT: 81d1015e42 added missing JacobiRotation's ...
REVERT: cf706e6813 clean a bit the previous commit which came from a patch queue, and since it was my first try of the patch queue feature I did not managed to apply it with a good commit message, so here you go: * Add a ComplexSchur decomposition class built on top of HessenbergDecomposition * Add a ComplexEigenSolver built on top of ComplexSchur There are still a couple of FIXME but at least they work for any reasonable matrices, still have to extend the unit tests to stress them with nasty matrices...
REVERT: 2c03747337 [mq]: eigensolver
REVERT: 80321b5e16 I've been too fast (again)
REVERT: a9d024f0f3 fix issue #47: now m.noalias() = XXX properly resize m if needed
REVERT: 2f03a74617 add a JacobiRotation class wrapping the cosine-sine pair with some convenient features (transpose, adjoint, product)
REVERT: c4a8945584 Bug fix in MatrixExponential.h Initialize matrices for intermediate results to correct dimension
REVERT: 9cf3d23eec * JacobiSVD:  - support complex numbers  - big rewrite of the 2x2 kernel, much more robust * Jacobi:  - fix weirdness in initial design, e.g. applyJacobiOnTheRight actually did the inverse transformation  - fully support complex numbers  - fix logic to decide whether to vectorize  - remove several clumsy methods
REVERT: 3a2f0bba39 simplifications
REVERT: 6ea3470000 add VERIFY_IS_UNITARY
REVERT: 669eb68042 fix Matrix::stride for vectors, add a unit test for Block::stride and make use of it where it was relevant
REVERT: e6188177e8 Adaptions from .lazy() towards .noalias(). Added missing casts.
REVERT: 0a26d56ea2 ifdef removed from MapBase and warning disabled
REVERT: bbafb966fa fix issue #45 and document the .data() and .stride() functions
REVERT: c54eb60b5c fix copy/paste issue
REVERT: fd99fb11f1 Fixed a cast warning in scaleAndAddTo. Fixed lazyness in umeyama. Added a few missing casts.
REVERT: 3438e698d9 Added MSVC guards to assignment operators.
REVERT: d612beb3fa Removed redundant assignment operators.
REVERT: 889cf6ab18 compilation fix in AmbiVector<int>
REVERT: 12ec062387 merging ei_lmdif() and lmdif_template()
REVERT: 6b2a653b87 be (hopefully) smarter with indices convention : we keep the c convention (0->n-1) as much as possible, and only convert at borders with fortran-expecting methods, that will eventually dissapear.
REVERT: 33f3776838 merging ei_lmstr() and lmstr_template()
REVERT: 766c2ad009 merging ei_hybrj() and hybrj_template()
REVERT: 03605b1ee6 merging ei_hybrd() and hybrd_template()
REVERT: 1581d830df merging ei_lmder and lmder_template into ei_lmder() which takes eigen argument, but still uses f2c code inside.
REVERT: b3efd8b15d simplifying
REVERT: d261b8b5bd use ei_sqrt instead of sqrt
REVERT: 64dc7ec964 rename i__ to i. i really wonder how f2c can produce such things
REVERT: ec0cde5bfa use references intead of pointers for njev/nfev
REVERT: 8dbe7ae1d4 use math function adapted to the Scalar type instead of hardcoding float or double
REVERT: 5c5fc0599b some more trivial fixes to f2c generated code
REVERT: fa1c1355af nothing more than indentation fixes (using vim '=' command)
REVERT: 98367ffae3 cleaning f2c mess
REVERT: bc5a8dbc03 porting chkder to eigen
REVERT: b8c74bea50 cleaning a little bit the f2c mess for chkder
REVERT: 58f075f978 * porting lmdif1 to eigen * qtf was missing in lmdif signature (this is an output of the method)
REVERT: a3ab0a7273 iwa is not really an argument, but just an old fashioned 'work array' : remove it from the eigen API
REVERT: 955443e14f porting hybrj1 to eigen
REVERT: f4222fba06 porting hybrd1 to eigen
REVERT: 57756cdbdd porting lmstr1 to eigen
REVERT: 3388c79e00 porting lmder1 to eigen (no more wrapper)
REVERT: 6d17ff2845 coherency for scalar typename : use "Scalar" everywhere
REVERT: 969fd62483 oops fix hardcoded typename, which is actually provided as template parameter
REVERT: 1de0215d3d use eigen stableNorm() instead of cminpack 'enorm'. The results are mostly slightly better in tests (one test needs 15 iterations intead of 16, for the same result). Some numerical results have improved slightly, too.
REVERT: 5dd25e3397 work around internal compiler error with gcc 4.1 and 4.2, reported on the forum
REVERT: 96a73ad0cc adapt to API changes
REVERT: ceb8d175af remove unneeded "Eigen::", we already 'use' Eigen namespace
REVERT: b4dbd05e6a oops, forgot those ones
REVERT: 2e81090b6b use machine precision from eigen instead of the one from cminpack. The test pass though they would not if using a value of 2.220e-16 (the real value for 'double' is 2.22044604926e-16). How sensitive those tests are :)
REVERT: 29793efe91 machine_epsilon is now called epsilon in latest eigen
REVERT: 1f62013571 merge with the main dev branch
REVERT: d481b8760a import main files from cminpack as *.h files: * function names are changed by appending _template * it uses basic templating : template<typename T> * wrappers now use those versions instead of the ones from cminpack * lot of external methods from cminpack are still used * tests pass though they are unchanged (they use wrappers)
REVERT: b53706ff11 wrapper for chkder() : this was the last wrapper missing
REVERT: 3871538cd2 Add new unsupported modules to doc/unsupported_modules.dox
REVERT: 1ed213db5f Correct syntax error in doxygen comment.
REVERT: 37aa63b5b1 * make HessenbergDecomposition uses the Householder module * bugfix in ei_blas_traits for .conjugate().conjugate()
REVERT: 89d1b7cece change the make householder algorithm so that the remaining coefficient is real, and make Tridiagonalization use it
REVERT: 4b31a98375 add EIGEN_TRANSFORM_PLUGIN
REVERT: 2dbadf5b09 make HouseholderQR uses the Householder module
REVERT: 8d97a57028 add normalize and normalized overloads in AlignedVector3
REVERT: 6dfab29bbe quick update of TopicLazyEvaluation
REVERT: fa1b06eb0f bugfix in compute_matrix_flags, optimization in LU, improve doc, and workaround aliasing detection in MatrixBase_eval snippet (not very nice but I don't know how to do it in a better way)
REVERT: 59b63e6cbb in all decs, make the compute() methods return *this (implements feature request #18)
REVERT: f1554d3d5e rename back MayAliasBit to EvalBeforeAssigningBit
REVERT: ea441d694a make SVD reuses applyJacobi
REVERT: 190dd540b6 revert previous change in Quaternion::setFromTwoVectors
REVERT: ec27cf523b svd: sort in decreasing order, remove unused code
REVERT: 657bb27d41 add overloads of lazyAssign to detect common aliasing issue with transpose and adjoint
REVERT: 8e561ee916 fix and improve docs
REVERT: 20e557be8f As proposed on the list: - rename EvalBeforeAssignBit to MayAliasBit - make .lazy() remove the MayAliasBit only, and mark it as deprecated - add a NoAlias pseudo expression, and MatrixBase::noalias() function Todo: - we have to decide whether += and -= assume no aliasing by default ? - once we agree on the API: update the Sparse module and the unit tests respectively.
REVERT: 7f50e8598b bugfix in inner-product specialization, compilation fix in stable norm, optimize apply householder
REVERT: b807b812fd my previous fix was not very good
REVERT: 7d86bdc29f bugfix and compilation fix in ProductBase
REVERT: af0b42664a fix setFromTwoVectors because of the change in sorting of the the singular values
REVERT: 2ba6917928 fix a couple of warnings
REVERT: 413a332a5d add a "rot" benchmark in BTL
REVERT: f00e3affad fix compilation of unit tests
REVERT: a417bc3d2a only append the changeset to the version if we're in the default branch
REVERT: 50c88de592 new script that update from mercurial, make the doc, and upload the result to tuxfamily.org
REVERT: 7677c9ddac new script to generate and upload the docs for a given branch needs cleanup by a better shell scripter!!
REVERT: ee182f7966 update snippet
REVERT: 55b9a57101 fix warning
REVERT: 6142946ab5 forgot to update this
REVERT: 98526f8cef as discussed on list: default to align cols, reorganize parameters accordingly so that the default corresponds to 0 flag, and implement FullPrecision output (non-default).
REVERT: 3f16f165bc try to support 16 bit platforms... optimistic, but can't hurt
REVERT: b5532b73ba machine_epsilon -> epsilon as wrapper around numeric_traits
REVERT: 77d7862603 fix BoxBOD in the first case : now all tests pass
REVERT: 1a09d18f34 oops, i missed one : real last difficult nist test : Eckerle4
REVERT: 0e5a3c56c8 last 'hard' test from Nist : ratkowsky3
REVERT: fe4f4f0e22 fix bad urls
REVERT: 06609e8549 yet another (difficult) Nist test : Thurber
REVERT: c58408a180 tweak precision for Chwirut2 test
REVERT: ea5d7ad4b3 add yet another easy Nist test : Chwirut2
REVERT: 09f7bd763f oops bis, I forgot that SelfAdjointEigneSolver directly called the selector...
REVERT: 26bf1087d0 oops forgot to remove the #include in Core
REVERT: daa06d6df9 optimize "apply Jacobi" for small sizes, and move it to Jacobi.h
REVERT: b17118ac09 * remove EIGEN_DONT_INLINE that harm performance for small sizes * normalize left Jacobi rotations to avoid having to swap rows * set precision to 2*machine_epsilon instead of machine_epsilon, we lose 1 bit of precision   but gain between 10% and 100% speed, plus reduce the risk that some day we hit a bad matrix   where it's impossible to approach machine precision
REVERT: d1b133d81f cleaning : wa1 used in 'covar' needs not be the same as in lmder* and all. it's just an old-fashioned way to re-use memory without allocation...
REVERT: 4896a6f035 oops, don't set the precision to -1 !!
REVERT: d92d3e67e3 apply Koldo's workaround for MSVC bug
REVERT: d693d5b3e6 add an optimized "apply in place a rotation in the plane", and make Jacobi and SelfAdjointEigenSolver use it => ~ x1.75 speedup for JacobiSVD and x2 for SelfAdjointEigenSolver
REVERT: 7bdf3891af apply change discussed on the list : * new default precision "-1" means use the current stream precision * otherwise, save and restore the stream precision
REVERT: 4b48de33e8 do without an empirical homemade formula that i wasn't comfortable about... turns out it's not needed anymore and removing it seems to only increase the precision
REVERT: 373f27db5a merge
REVERT: 07c9691575 make jacobi SVD more robust after experimenting with very nasty matrices... it turns out to be better to repeat the jacobi steps on a given (p,q) pair until it is diagonal to machine precision, before going to the next (p,q) pair. it's also an optimization as experiments show that in a majority of cases this allows to find out that the (p,q) pair is already diagonal to machine precision.
REVERT: 4483291a4b Add support for matrix exponential of floats and complex numbers.
REVERT: 0b4ec4a597 add parentheses; hopefully this solves Koldos MSVC compilation issue...
REVERT: c4b5a7df1c finally, the good approach was two-sided Jacobi. Indeed, it allows to guarantee the precision of the output, which is very valuable. Here, we guarantee that the diagonal matrix returned by the SVD is actually diagonal, to machine precision.
REVERT: de9dcc6717 BoxBOD : oops.. shame on me, i did a mistake in the derivative.... now we need 16 iterations instead of 7693 ;-) the first test still fails though.
REVERT: ea4b6dde94 fix a bug in BoxBOD Nist test : we now get the actual value for 'start 2' 'start 1' still fails though :/
REVERT: 906f895afc add another Nist test of 'hard' difficutly : Bennett5
REVERT: 85fc378545 add another Nist test of 'hard' difficutly : MGH09
REVERT: 30b4e34a51 add EIGEN_DEBUG_VAR
REVERT: ffa43b4a20 add another Nist test of medium difficutly : MGH17
REVERT: 1b1db18d31 overload operartor* with a ProductBase such that "scalar * (mat * mat)" is optimized as one could naturally expect
REVERT: 4a40d14ce1 fix issue #36 (missing return *this in Rotation2D
REVERT: 20379d3aa3 remove #include Bidiagonalization, and add missing ";"
REVERT: 54597f5b48 wrapper for lmstr1 and lmstr + eigenization of calling tests
REVERT: eb0c44dbad wrapper for lmdif1 + eigenization of calling test
REVERT: 13dc82a0ba wrapper for lmdif (+test call eigenization)
REVERT: a6bf70c1cf wrapper for hybrj1
REVERT: 9c42b6189c wrapper for hybrj
REVERT: e91b7f6eb7 add another (actuallY) difficult NIST test : BoxBOD. The first try fails, the second one passes, but with a very bad accuracy (~4 digits only). anyway, my aim is to check we do not change cminpack while portint, so i keep this test.
REVERT: 9d79303173 add another 'difficult'-rated NIST test, which passes
REVERT: 0dab06563c fix testNistHahn1 : i had swapped x[] and y[].... :/
REVERT: a97271b609 a Nist test rated 'difficult', which passes.
REVERT: 9033964e2a another nist test with difficulty 'leverage', it passes.
REVERT: a68f3f352c another nist test with difficulty 'leverage', this one passes
REVERT: de85e5852f another nist test ('average' difficulty), which fails. It is disabled until further notice.
REVERT: 596aa29850 add an easy test from the NIST set : http://www.itl.nist.gov/div898/strd/nls/data/misra1a.shtml
REVERT: 83e78733d5 hybrd : wrapper + eigenize test
REVERT: 47bf093748 merge
REVERT: 47b8672523 make custom asm directive volatile
REVERT: 4465147f08 LinearVectorization: If the destination isn't aligned, we have to do runtime checks and we don't unroll, so it's only good for large enough sizes
REVERT: 8bd01e2fa0 now you can #define EIGEN_DEBUG_ASSIGN, and all the values in ei_assign_traits are printed
REVERT: 2d12c6a98e disable the assembly for fast unaligned stores. indeed, there is a strange bug that is triggered by this code:
REVERT: 1cd8a9dbc9 don't depend on uninitialized value
REVERT: 7dae56e5d6 * add Jacobi transformations * add Jacobi (Hestenes) SVD decomposition for square matrices * add function for trivial Householder
REVERT: 9d8c8dda70 i wonder how useful this really is, but others do this way. Probably related to doxygen.
REVERT: 82ab90ac5d eigenize lmder + some other small fixes
REVERT: 2d034bb61d eigenize the test for lmder1, clean functor stuff. (and check the tests still pass, of course, that's the whole point..)
REVERT: 4c0e682dc2 oops.. use the template paramater instead of hard coding 'double'
REVERT: 1fe2bb49d9 use template parameter Scalar instead of VectorType, fix a segfault.
REVERT: c84856bdb7 eigenize the test a little more
REVERT: b420855293 first test for a basic wrapper (and only wrapper!) for cminpack functions
REVERT: c2c6d1dde4 actually use eigen include file
REVERT: fc8400cc6c make LU::solve() not to crash when rank=0
REVERT: 3f7dfa553e fix bug in sorting of singular values
REVERT: eb03941d82 Add all other file from cminpack/examples as tests.
REVERT: c7297b5cae Start of module "NonLinear". We start out of cminpack-1.0.2 (http://devernay.free.fr/hacks/cminpack.html) The first test is adapted from the example/ directory. Some stuff is hard coded for our initial tests.
REVERT: 945ee3ad5f add basic .hgignore file for most common generated/temporary files
REVERT: 449072db5a replace custom rank one update in LU by an expression
REVERT: 42b31e1d39 * implement a second level of micro blocking (faster for small sizes) * workaround GCC bad implementation of _mm_set1_p*
REVERT: 8f1644341c Fix compilation in sparse module
REVERT: 199acfdd0d fix determinant in PartialLU
REVERT: 1e8b8cee00 oops, one more bug fix in homogeneous
REVERT: 2680cad6f7 fixes in determinant and homogeneous
REVERT: 42e7f93984 compilation fix in EigenSolver, bugfix in PartialLU
REVERT: 5143b4b259 typo
REVERT: 8c8a3896e7 fix VS compilation issue in MapBase::operator+= and -=
REVERT: 74fd93a889 shame on me
REVERT: fc66930d4a fix my bad fix of Hauke's fix ;)
REVERT: a711e198bf fix a couple of compilations issues
REVERT: 0ccbf454d8 fixed inversion for AffineCompact matrices
REVERT: 4d059be200 more product refactoring
REVERT: 17cefb04f8 fix vs.net compilation issue
REVERT: f9816c93e2 fix vs.net compilation issue
REVERT: aa866c2e0b fix compilation and segfault issues
REVERT: 01c779aac4 add the missing Affine Transform * set of column vectors products...
REVERT: d8b75f552b remove remnant of MultiplierBase
REVERT: ab05ee3173 implement the missing outer product, and attempt to workaround a gcc internal error
REVERT: dca9f87529 big refactoring in Product.h: - all specialized products now inherits ProductBase - the default product evaluated by Assign is still here,   but it is currently enabled for small fixed sizes only - => this significantly speed up compilation for large matrices - I left the OuterProduct specialization empty as an exercise...
REVERT: 7be198a3c4 fix assertions, improve docs. we never assert on conditions that depend on the result of a computation!! also the assertion that rank>0 amounts to matrix!=0 which we have to leave under the responsibility of the user.
REVERT: 2befc84587 merge
REVERT: bbdddfd6b6 merge
REVERT: 5648f18fcb remove the FORCE
REVERT: 054e7ebd16 implement a ProductBase class and, as a proof of concept, update TriangularProduct and SelfAdjointMatrixProduct to take advantage of it => fewer LOC
REVERT: 211194a052 fix a couple of compilation issue due to the removal of MultiplierBase
REVERT: 68894867c1 merge
REVERT: cd2816bc9c add ger and lu with partial pivoting in BTL
REVERT: d5d705018e implement two levels of blocking in PartialLU => high speedup
REVERT: 214196e22d use explicit Block/VectorBlock xprs to make sure that compile-time known sizes are used
REVERT: 404776983e make the dot product linear in the second variable, not the first variable
REVERT: 4b45dfb03f merge with special_matrix branch
REVERT: ff9ffb87b3 merge
REVERT: 619631db3e add new Householder module
REVERT: 2ae99f3faf * Bye bye MultiplierBase, extend a bit AnyMatrixBase to allow =, +=, and -= * This probably makes ReturnByValue needless
REVERT: 2101e087bb small fixes
REVERT: bf54ae1668 apply Gael's idea for auto transpose in mixed fixed/dynamic case
REVERT: dd5cdf0220 implements a blocked version of PartialLU
REVERT: 26d38ccecd bugfix in trsm
REVERT: b501297341 apply patch from Marcus Hanwell: Improved quoting of tests when added to the build
REVERT: 7d7709ee90 add blocked LLT, and bugfix in trsm asserts
REVERT: 14c2aa65ae add selfadjointView from a trinagularView
REVERT: 7345159a2c some cleaning
REVERT: 08b9fbb371 faster trsm kernel and fix a couple of issues
REVERT: d01a5cf025 s/std::atan2/ei_atan2
REVERT: d58c4b6053 add missing ei_atan2 without painfull warnings
REVERT: a4956a8808 compilation fixes for sun CC
REVERT: 0cecb9ecdc forward-port Anthony Truchet's changeset 255b66bdd38d
REVERT: 761a1f851b add explicit "on the right" triangular solving,  => no temporary when the rhs/unknows is row major
REVERT: d28844e8c4 fix typo
REVERT: 983e5dc67a fix a couple of issues related to recent products
REVERT: 74355b63c2 synch with main branch
REVERT: dc08484fd4 synch with main branch
REVERT: 3f855efa34 add a debug mechanism to compute the number of intermediate evaluations (only for dynamic size)
REVERT: 265d8df72c update doc
REVERT: 05bc68331f compilation fixes in BTL
REVERT: 211ebd024d improve the expression analyzer to bypass Transpose expression
REVERT: c55e6bb48a update doc
REVERT: 76f979bb0f fix compilation of the doc and started a page dedicated to high performance and or BLAS users
REVERT: ad0fbbe1ea bug fix in inverse for 1x1 matrix, some compilation fixes in sparse_solvers
REVERT: 1a76d917cc compilation fixes
REVERT: 851aae29dc various compilation and bug fixes in selfadjoint stuff
REVERT: 0a23b8ead1 cleaning and fix a perf issue
REVERT: 0e8d86bad5 trmm is now fully working and available via TriangularView::operator*
REVERT: 4e05ce3720 trmm is now working in all storage order configurations
REVERT: 664ed210ed some cleaning
REVERT: 56c43bc62b finalize trsm: works in all situations, and it is now used by solve() and solveInPlace()
REVERT: a7ac39676a ok, now trsm works very well for upper triangular matrices TODO: link it with the meta triangular_solve_selector and handle the case where the rhs is row major by copying it to a col-major temporary + handle right solving: X = B * M^-1
REVERT: f087fb69f1 The new trsm is working very very well (read very fast) for lower triangular matrix and row or col major lhs. TODO: handle upper triangular and row major rhs cases
REVERT: 72855311d3 add WIP trsm
REVERT: 682e8bcd71 some cleaning
REVERT: 1164eb5084 add a simplified version of the sybb kernel built on top of gebp
REVERT: 7d54345384 split and add unit tests for symm and syrk, the .rank*update() functions now returns a reference to *this
REVERT: c55e2eeddc oops,, update SYRK so that the rhs can be non-square²
REVERT: 9d78080fb2 Implement efficient sefladjoint product (aka SYRK) : C += alpha * U U^T It is currently available via SelfAdjointView::rankKupdate. TODO: allows to write SelfAdjointView += u * u.adjoint()
REVERT: d1f1c0480d improve SYMV it is now faster and ready for use
REVERT: 1b776ee625 formating
REVERT: e4aa523e55 addd matrix * self adjoint high level API
REVERT: b2ca2fbf2a Added an explicit cast from int to bool to suppress MSVC warnings.
REVERT: 7baf06d836 bugfix in SYMM
REVERT: 67d3efc226 implement high level API for SYMM and fix a couple of bugs related to complex
REVERT: e78d936291 * GEMM enhencement: no need to pre-transpose the rhs   => faster a * b.transpose() product   => this also fix a bug in a so far untested situation * SYMM is now ready for use => still have to write the high level   stuff to convert natural expressions into a call to SYMM
REVERT: 42c8857e8a more refactoring in the level3 products
REVERT: 9d80996b25 * refactoring of the matrix product into multiple small kernels * started an efficient selfadjoint matrix * general matrix product   based on the generic kernels ( => need a very little LOC)
REVERT: 3a24b1aa4c * various fixes related to sub diagonals and band matrix * allows 0 sized objects in Block/Map
REVERT: 2cc09ddb3a enable our own ctest dashboard
REVERT: 660182ed4d bugfix in SVD
REVERT: b930778515 minor compilation fixes for Sun CC and ICC
REVERT: 4e03d47717 compilation fix (sun CC)
REVERT: 74664aaee2 compilation fix
REVERT: 40ea33a76f bugfix in operator*= (matrix product)
REVERT: f80da8b447 bugfix for a = a * b; when a has to be resized
REVERT: d889876f7f re-implement stableNorm using a homemade blocky and vectorization friendly algorithm (slow if no vectorization)
REVERT: 9cf39422d2 add other stable norm impl. in the benchmark
REVERT: 55764cc936 bugfix in blueNorm
REVERT: 4a5e6c8add add a benchmark for the different norms
REVERT: 0cf2adeaa9 * bugfixes in Product, and test/product_selfadjoint * speed up in the extraction of the matrix Q in Tridiagonalization
REVERT: 798fb41efe synch with main devel branch
REVERT: 9d3260dae0 add a TridiagonalMatrix wrapper arround BandMatrix, and extend this latter
REVERT: b7069d2697 add BandMatrix::col()
REVERT: 85d0cbbd1d change the implementation of BandMatrix to follow the BLAS/LAPACK storage scheme
REVERT: 857e1c81d4 fix issue #25 : the problem was that we assumed Dynamic was a multiple of a packet size (also disable the test of blueNorm)
REVERT: 30c7e0995b started an implementation of BandMatrix: at least the read/write access to the main/sub/super diagonals seems to work well.
REVERT: 790f7acbe6 synch with main devel branch
REVERT: 80f7287ec4 fix typo in blue norm
REVERT: 764809805b some cleaning/renaming is Triangular/SelfadjointView
REVERT: 6fbf121189 add a blueNorm() function implementing the Blues's stable norm algorithm. it is currently provided for experimentation purpose only.
REVERT: 394319adfa one more fix of the previous commit (forgot to update ei_must_nest_by_value)
REVERT: 11a5658763 fix typo in previous commit
REVERT: 8183a508dc add a SparseNestByValue expression and fix issue in sparse adjoint evaluation
REVERT: 995b98eade add triangular * vector product
REVERT: 5b8e3bc8d1 Add an efficient rank2 update function (like the level2 blas xSYR2 routine). Note that it is already used in Tridiagonalization.
REVERT: 13e0f0edde more sun studio fixes
REVERT: 233cab1e48 Set of fixes and workaround to make sun studio more happy. Still remains the problem of alignment and vectorization.
REVERT: 672db4688d add a meta unroller for the triangular solver (only for vectors as rhs)
REVERT: 8cc94969fb finally directly calling the low-level products is faster
REVERT: d104d96c7b merge
REVERT: 6561e9cf51 slight change in the comparison to -1
REVERT: 160bd46099 commit woking versions of triangular solvers naturally handling conjuagted expression. still have to bench whether it is faster (runtime and compile time) to directly call the cache friendly functions, whence all the commented piece of code...
REVERT: bf9b44ab5b started to simplify the triangular solvers
REVERT: 9daf6b9359 ok now all the complex  mat-mat and mat-vec products involving conjugate, adjoint, -, and scalar multiple seems to be well handled. It only remains the simpler case: C = alpha*(A*B) ... for the next commit
REVERT: 0bab43bf44 conjugate expressions are now properly caught by Product => significant speedup in expr. like a.adjoint() * b,    for complex scalar type (~ x3)
REVERT: 250c6b4d65 started to catch scalar multiple and conjugate xpr in Product
REVERT: b207df45fa * change the nesting order of adjoint_return_type to  1 - make it easier to catch conjugate expressions  2 - make sure there is no unecessary copy (we had NestByValue<Derived> which seems to be very bad) * update eigensolver wrt recent changes
REVERT: 07b18fbc59 * take advantage of new possibilies in LLT (mat -= product) * fix Block::operator+= product which was not optimized * fix some compilation issues
REVERT: ff96ec58a0 * extended the cache friendly products to support C = alpha * A * M and C += alpha * A * B * this allows to optimize xpr like C -= lazy_product, still have to catch "scalar_product_of_lazy_product" * started to support conjugate in cache friendly products (very useful to evaluate A * B.adjoint() without   evaluating B.adjoint() into a temporary * compilation fix
REVERT: e4562ea116 add a generic mechanism to copy a special matrix to a dense matrix so that we don't need to add other specialization of MatrixBase::operator=, Matrix::=, and Matrix::Matrix(...)
REVERT: 25ff30b2f4 * bybye Part, welcome TriangularView and SelfAdjointView. * move solveTriangular*() to TriangularView::solve*() * move .llt() to SelfAdjointView * add a high level wrapper to the efficient selfadjoint * vector product * improve LLT so that we can specify which triangular part is meaningless => there are still many things to do (doc, cleaning, improve the matrix products, etc.)
REVERT: 551b1ad248 add matrixQR() method exposing the storage. that's where the householder thing impacts the API.
REVERT: a097c41676 fix some search-and-replace damage
REVERT: 5bbbfcbed0 * rename QR to HouseholderQR because really that impacts the API, not just the impl. * rename qr() to householderQr(), for same reason. * clarify that it's non-pivoting, non-rank-revealing, so remove all the rank API, make solve() be void instead of bool, update the docs/test, etc. * fix warning in SVD
REVERT: 9d55746962 include the fixes of the third edition
REVERT: 16310823c3 quick reimplementation of SVD from the numeral recipes book: this is still not Eigen style code but at least it works for n>m and it is more accurate than the JAMA based version. (I needed it now, this is why I did that)
REVERT: 6ea6bea411 switch from eigensolver to SVD which seems to be more accurate with float
REVERT: 838f9fb20f significantly improve the accuracy of setFromTwoVectors (fixes #21)
REVERT: e46beb5d0f fix doc of Quaternion::setFromTwoVectors
REVERT: 52a8907dbb add a VectorBlock expr as a specialization of Block
REVERT: 4b3b729094 fixes a segfault
REVERT: 168cb147c8 some docs improvements
REVERT: 4d459ac2d5 another test in the non invertible case
REVERT: 16d537b251 * update sparse module wrt new diagonal matrix impl * fix a bug is SparseMatrix
REVERT: c2822115a7 fix #20: SVD::solve() now resize the result
REVERT: fdb3b4a4c1 * polish computeInverseWithCheck to share more code, fix documentation, fix coding style * add snippet for computeInverseWithCheck documentation * expand unit-tests to cover computeInverseWithCheck
REVERT: 18b4048837 computeInverseWithCheck method added to matrix base (specialization for 1D to 4D)
REVERT: 22e5abc4ff patch by Myguel from the forum: fix documentation
REVERT: 1a3cc7fbba fully vectorize DiagonalProduct
REVERT: c32f6438a6 FreeBSD: determine precisely when malloc is 16-byte aligned
REVERT: 4aff952ebb double precision() : change to 1e-12 instead of 1e-11 (as discussed several times on the list)
REVERT: 2c11fdd239 new implementation of diagonal matrices and diagonal matrix expressions
REVERT: 286f9f0843 only disable the inline ASM if we're NEITHER gcc nor icc. right ??
REVERT: 7b98c99e9e patch by Patrick Mihelich: use empty struct + anonymous namespace for NoChange
REVERT: 5bbdaa80a1 use system variable instead of custom one
REVERT: 09560b3b8e add missing code snippets for newer Matrix methods and PartialLU::solve()
REVERT: e9a82e3c53 * add resize(int, NoChange) and resize(NoChange, int) * add missing assert in resize(int) * add examples for all resize variants * expand docs (part of which is from Tim Hutt's e-mail)
REVERT: 80574e3f37 use <...> for system headers
REVERT: 3ece355ef2 re-enable the fast unaligned loads for gcc and icc using inline assembly (this allows to avoid incompatible pointer casts and to specify the dependency to the data explicitely)
REVERT: 024772a218 use the slower unaligned load intrinsics in ei_ploadu because GCC mess up with my tricks
REVERT: f5856386bf check version number using newer cmake functionality, instead of kde macro
REVERT: 4b66bfe6c4 update the stack alignment doc
REVERT: 1255f6d25c document the "wrong stack alignment" issue.
REVERT: de3b1b26f6 refine the check to disable alignment. now it's disabled on gcc3 (where we don't vectorize anyway)
REVERT: b0aa524321 add Eigen/Eigen
REVERT: bb1e227818 add "Dense" header
REVERT: a9cd1d870e forward port fix to #12
REVERT: e8d5c7445a fix #14: make llt::solve() and also ldlt::solve() work with uninitialized result
REVERT: 262a306def fixed typo in SuperLUSupport.h
REVERT: f4f0b2b84f added copyright notice
REVERT: 3a92af8e44 candidate header for Eigen/Complex
REVERT: 7b7fa45ae7 example file
REVERT: c9817fbcf3 added FindFFTW, but I don't think it's right yet
REVERT: bc1900ce2b * rename PartialRedux to VectorwiseOp * add VectorwiseOp's +, -, +=, -= operators
REVERT: c13c6867d3 fix #11: now the default Transform ctor set the last row in Affine mode.
REVERT: 95be9efd39 SparseMatrix::resize() always resets the matrix to an empty one
REVERT: 288ed3dc03 fix #10: the reallocateSparse function was half coded
REVERT: 0918f13a0a add a partial LU bench in BTL
REVERT: c5472292b0 Renamed internal helper functions from the Memory header.
REVERT: 9fd9474595 Fixes #9. Thanks to the (unknown) bug contributor.
REVERT: 3cde8ed413 A much simplified version of the earlier commit introducing way fewer changes compared to changeset 68ded02de8fd. The reason of the previous commit was incorrect. The smart pointers issues were actually a result of issue 9.
REVERT: e19e26d4ce Added specializations for DontAlign when using Dynamic matrices. This allows users to store Matrices in smart pointers without the need for a specialized allocator/de-allocator.
REVERT: 393c9b3d3f more work on ei_fftw_impl
REVERT: 52cd030bdd added ei_fftw_impl
REVERT: 1b5f4a2b9e Relaxed checks againts _MaxRows and _MaxCols in Matrix::_check_template_params().
REVERT: 781693ea45 various comment changes
REVERT: 1a45f03eb6 make Umeyama, and its unit-test, work for me on gcc 4.3
REVERT: 37e70b1963 fix the static assert checking the size template parameters.
REVERT: 407a6e3784 * Umeyama has now similar performance for RowMajor and ColMajor layouts. * Fixed a bug in umeyama for fixed size matrices. * Fixed the umeyama unit test for fixed size matrices. * Added XprHelper::ei_plain_matrix_type_row_major.
REVERT: 85e0502a2a Fix out of source build
REVERT: cbeb348e9e Added Umeyama implementation.
REVERT: 223c3fc631 added real-optimized inverse FFT (NFFT must be multiple of 4)
REVERT: 28a7fbca60 refactored ei_kissfft_impl to maintain a cache of cpx fft plans
REVERT: 9be61bbf4d changed name from simple_fft_traits to ei_kissfft_impl
REVERT: 6f13f15239 added FFT inverse complex-to-scalar interface (not yet optimized)
REVERT: b8343d92e9 scalar forward FFT optimized for even size, converts to cpx for odd
REVERT: 83d4e756a0 started real optimization, added benchmark for FFT
REVERT: 3cbc291362 fix #4 and also improve performance of Tridiag::diag/subDiag at the same time
REVERT: c6daa29ed9 added non-optimized real forward fft (no inverse yet)
REVERT: 981f087218 fixes #5 : freebsd really has aligned malloc
REVERT: a9e308947a merge
REVERT: 4c35bd8bbb remove sentence "Eigen itself is part of the KDE project." it never made very precise sense. but now does it still make any?
REVERT: d967282923 fix typo
REVERT: 22aaa98545 Oops, here the actual LLT and LDLT patch.
REVERT: a3fff843fe Eigensolver decomposition interface unification. Added default ctor and public compute method as well as safe-guards against uninitialized usage. Added unit tests for the safe-guards.
REVERT: 7f80fc88a6 LLT and LDLT decomposition interface unification. Added default ctor and public compute method as well as safe-guards against uninitialized usage. Added unit tests for the safe-guards.
REVERT: b1fec40eb3 LU and PartialLU decomposition interface unification. Added default ctor and public compute method as well as safe-guards against uninitialized usage. Added unit tests for the safe-guards.
REVERT: 847fcf86d8 QR and SVD decomposition interface unification. Added default ctor and public compute method as well as safe-guards against uninitialized usage. Added unit tests for the safe-guards.
REVERT: 8e4bb712be add internal comment (mostly a pretext to test the eigen-commits list)
REVERT: be891b49b5 * add a writable generic coeff wise expression (CwiseUnaryView) * add writable .real() and .imag() functions
REVERT: 7fb59bc6b3 merge
REVERT: 9a828e328f * add a FindEigen2.cmake file for reference * parse the version number from the Macro.h header file
REVERT: 14cbd4e319 fix comments (old comments that were copied from LU)
REVERT: f8e098d749 Added pkgconfig support
REVERT: 00cbe6fea3 update CTestConfig file for my.cdash.org
REVERT: 72178bde6e merge
REVERT: b70df210ed * optimize sum() for sparse matrices and vectors * fix the row()/col() functions of some InnerVector
REVERT: 786dca5c24 update cdash testsuite file to use mercurial
REVERT: acccdeb521 indent level change
REVERT: 7cee586b75 removed unused code
REVERT: 6397eb50b9 initial pass of FFT module -- includes complex 1-d case only
REVERT: 635a136c8f Evaluate argument of matrix exponential only once.
REVERT: d5b86b6d54 fix compilation with ICC
REVERT: 441dfaf1c6 fix #3, remove inline keywords in QtAlignedMalloc (MSVC fix)
REVERT: 998a7f064b fix #1 : need to nest by value the affine part in homogeneous product
REVERT: 1c3a64a33f fix bug reported by Moritz Lenz about random setter
REVERT: 6394e40011 Fix compilation error in createRandomMatrixOfRank()
REVERT: 23719979fb * introduced method createRandomMatrixOfRank (R = U*D*V where U,V unitary, D r-by-c diag. with rank non-zero values) * switched lu/qr tests to be using createRandomMatrixOfRank * removed unused methods doSomeRankPreservingOperations * removed NOTE about doSomeRankPreservingOperations
REVERT: f6d8817f1b fix #2, bug in Diagonal::MaxRowsAtCompileTime when Index==Dynamic
REVERT: 8666e81eb7 * added missing project definition (see doc of add_subdirectory and EXCLUDE_FROM_ALL) to fix a win build issue * commented out non-existing unsupported-snippets and -examples
REVERT: 53c20eaf34 Added tag after-hg-migration for changeset d49097c25d80
REVERT: 69b12a645b Fix a previous mistake in moving the 2.0-beta5 in svn for some last-minute fixes.
REVERT: 9917e7a70d Remove this old file. It was stalling in history because of a bug in svn, which did not prevent the commit (svn r722564) to 'svn copy' a directory called 'Core/' on top of an existing file 'Core'
REVERT: 3ed6b46763 update tags
REVERT: 76201c9db2 simplification (no reason anymore to write that in that convoluted way)
REVERT: 8b53afe379 argh, forgot to re-add the throw()
REVERT: 43393347f9 * fix bugs in EigenTesting.cmake: it didn't work with -DEIGEN_NO_ASSERTION_CHECKING=ON * only try...catch if exceptions are enabled
REVERT: d14f514f12 add partial-pivoting LU decomposition the name 'PartialLU' is not meant to be definitive! make inverse() and determinant() use it, so it's *almost* considered well tested.
REVERT: 51f019fa30 enable testing of complex numbers for taucs
REVERT: 48647d07a1 fix adolc unit test for dynamic sizes
REVERT: 489c7865d8 compilation fixes
REVERT: 0599216871 various minor updates of some unit tests
REVERT: e3d2ba64f1 bugfix from Jens Mueller (s/RowMajor/IsRowMajor)
REVERT: be8dc652f8 constant Diagonal  ---> DiagonalBits introduce ei_is_diagonal to check for it DiagonalCoeffs ---> Diagonal and allow Index to by Dynamic -> add MatrixBase::diagonal(int) with unittest and doc
REVERT: 3b2e5b3204 CREDIT Hauke Heibel, fix MSVC warnings
REVERT: bed7797071 *make coeff() return a const reference (required with the recent change with CoeffReturnType) *fix a unused variable warning
REVERT: 6208b8c169 result of our experiments with LU tuning: implement very simple formula, that turns out to be similar to Higham's formula already in use in LDLt
REVERT: 1a9e6b572c apply patch from Hauke Heibel cleaning overloaded operator new/detete
REVERT: ae71dac37d oops, didn't want to commit that
REVERT: 5d61ad005a CREDIT Hauke Heibel, more std::vector::insert fixes
REVERT: 367cec032d CREDIT Hauke Heibel, windows compatibility fixes in MatrixExponential
REVERT: 607ad14f45 forgot a svn add CMakeLists.txt
REVERT: 94118a4e30 fix realloc when initial size was 0 (bug reported by Jens Mueller)
REVERT: df37db31c0 *add missing overloads of setZero, etc... that were mentioned in the tutorial  --->they go into Matrix as they resize. *add isConstant() alias to isApproxToConstant() *extend unit-test *change an assert into a static assert
REVERT: 750dd40f8f add copyright on two public headers that are not so trivial...
REVERT: a8e7bf9bf7 add missing function, thanks to Hauke Heibel
REVERT: 4fab093a27 one more gcc 3.3 fix
REVERT: 6f7490064d fix internal error with gcc 3.3 (all tests are now ok with 3.3 !)
REVERT: 2dc7a0d15e * compilation fixes for gcc 3.3 * test Part::swap
REVERT: 3b0167bd81 add -Wextra only if compiler supports it
REVERT: 8fcabef532 new unsupported module by Jitse Niesen: matrix exponential
REVERT: b655190551 remove unused member remean that was just initialized
REVERT: 24ddc055f6 reimplement linearRegression on top of fitHyperplane which is much better
REVERT: b9f11dba3c fix linearRegression, fix doc, add unit test (it was untested since the change making fitHyperplane no longer use it)
REVERT: 3d7b1f6bb3 oops
REVERT: a26decc662 new simplified API to fill sparse matrices (the old functions are deprecated). Basically there are now only 2 functions to set a coefficient: 1) mat.coeffRef(row,col) = value; 2) mat.insert(row,col) = value; coeffRef has no limitation, insert assumes the coeff has not already been set, and raises an assert otherwise. In addition I added a much lower level, but more efficient filling mechanism for internal use only.
REVERT: cc5f0a3cc4 fix warnings with recent gcc
REVERT: f211098b38 fix warning, unused variable dummy
REVERT: ba014151d0 fix warnings with unused static functions
REVERT: f4de7819ec fix SSE2 detection on win64, reported by 'kajala'
REVERT: 0dda5b0f46 add an AlignedVector3 module suitable for vectorization of 3D vectors
REVERT: 43d968722c "forgot to commit the required changes in stdvector unit test"
REVERT: 02c8be3927 let the user disable alignment altogether by #defining EIGEN_DONT_ALIGN. Until now, the user had to edit the source code to do that. Internally, add EIGEN_ALIGN that takes into account both EIGEN_DONT_ALIGN.and EIGEN_ARCH_WANTS_ALIGNMENT. From now on, only EIGEN_ALIGN should be used to test whether we want to align.
REVERT: 39222298e8 add auto transposition for vectors
REVERT: 96503014a2 ok, this time cast should really work ; sorry for the noise
REVERT: d5a40f1db1 fixed my mistake in cast
REVERT: f31e6e331e gni, forgot to call the new subtest
REVERT: dc177bd1a1 casting to the same type no longer generates a CwiseUnaryOp
REVERT: 9aaa20bb88 add cast<>() tests. including a vectorization_logic test that currently fails (casting to same type should not prevent vectorization)
REVERT: a3094ad0f2 fix the Matrix(int,int)/vector 2D ctors issue so that we really have a Matrix(Scalar,Scalar) ctor. (useful for std::complex, user defined types, etc.
REVERT: 96a62633df CREDIT Ross Smith: fix posix_memalign detection
REVERT: bb2bbdf3dd remove unsupported/doc from make's "all" target
REVERT: 8fc48805f6 * update BVH to explicitely use aligned_allocator * fix warning in StdVector
REVERT: b91a969f99 make the ei_p* math functions overloads instead of template specializations
REVERT: c6771e6479 update STL vector doc
REVERT: b468e2c679 add a generic version of std::vector::resize for other stl implementations
REVERT: 0abb792de8 std::vector now explicitely requires the use of Eigen::aligned_allocator CREDIT Hauke Heibel
REVERT: 5fb3e30644 add missing vector ctor reported by Markus Moll on the ML
REVERT: 588e748bb0 this should fix the linking issue with StdVector without any user changes... I cross my fingers...
REVERT: 17d7b01577 fix ctor issues with ei_workaround_msvc_std_vector
REVERT: bec8c659bb not compilable with msvc :(
REVERT: f77950155f patch from Ilya Baran: This small patch fixes a potential initialization bug in BVAlgorithms and slightly corrects the BVH doc.
REVERT: a4b1c4e4a4 fix the 4x4 inverse -- unit test passes again
REVERT: c0cd8374f2 finally commit Rohit's work as the start of a new (currently unsupported) module, MoreVectorization.
REVERT: b80706e6a5 patch from Moritz Lenz to allow solving transposed problem with superlu
REVERT: 4ce6a9dfd6 fix memory leak in superlu backend
REVERT: d90c928292 bugfix when the diagonal is not stored and assumed to be 1
REVERT: b919c8d6f1 add a 4x4 inverse case which is not handled by the current ei_compute_inverse_in_size4_case (reported by mikola on IRC)
REVERT: 6cf7e8f0c8 clean asm comments
REVERT: 89305021f2 add aligned_allocator operator == and != as suggested by Hauke Heibel
REVERT: 91785a3922 more patches from Hauke Heibel: compilation/warning fixes from VC++
REVERT: c7d2606515 forward-port r951449: patch by Hauke Heibel: compile fix with VS 9
REVERT: 1dfd02833e relicence Julien Pommier's SSE code to Eigen's licenses
REVERT: c942af113d stupid typo
REVERT: a3701fe12a * fix the binary bloat issue, Rohit's idea was the good one * a few dox fixes (alloc routines do return 0 on error) and forgot to update version number in CMakeLists
REVERT: d3662dac10 fix computation of aligned_bit (has been broken by the change of AutoAlign/DontAlign)
REVERT: 42ed1abb19 sparse module: new API proposal for triangular solves and experimental solver support with a sparse matrix as the rhs.
REVERT: 09d94b8a8e Compile fix.
REVERT: 0e0b02452c  * fixed truncation warnings caused by MatrixBase::CoeffReturnType under MSVC
REVERT: 5d3c036d93 add an assertion in sparse LLT for invalid input matrix
REVERT: 68f8b2d1d3 oops, bad copy paste in ei_psqrt, thanks to Jitse Niesen
REVERT: 9ff986f047 CwiseUnaryOp -> SparseCwiseUnaryOp
REVERT: 53373e7b85 add an auto-diff module in unsupported. it is similar to adolc's forward mode but the advantage of using Eigen's expression template to compute the derivatives (unless you nest an AutoDiffScalar into an Eigen's matrix).
REVERT: ab14b3628f * Find SuperLU also when it is installed without a superlu/ prefix * Some more CoeffReturnType changes
REVERT: 88c370dbda now if Derived has the DirectAccess flag, then MatrixBase<Derived>::coeff() const returns a const Scalar& and not a Scalar as before. useful for people doing direct access. + 1 bugfix thanks to Patrick Mihelich, forgot a & in MapBase::coeff(int).
REVERT: 70977b1098 More Cholesky fixes. * Cholesky decs are NOT rank revealing so remove all the rank/isPositiveDefinite etc stuff. * fix bug in LLT: s/return/continue/ * introduce machine_epsilon constants, they are actually needed for Higman's formula determining   the cutoff in Cholesky. Btw fix the page reference to his book (chat with Keir). * solve methods always return true, since this isn't a rank revealing dec. Actually... they already did always return true!! Now it's explicit. * updated dox and unit-test
REVERT: 248b748a53 fix typo found by noir.sender from KDE forums
REVERT: 77840e0d5a fix mistake in static assertion, patch by Markus Moll.
REVERT: 68339af698 add adjointInPlace() and add documentation warnings on adjoint() and transpose() about aliasing effects.
REVERT: 85361456b7 Many improvements in LLT and LDLT: * in LDLT, support the negative semidefinite case * fix bad floating-point comparisons, improves greatly the accuracy of methods like   isPositiveDefinite() and rank() * simplifications * identify (but not resolve) bug: claim that only triangular part is used, is inaccurate * expanded unit-tests
REVERT: df5db8cafd fix superLU backend: missing operator=
REVERT: 599def26f7 make special ei_p functions static to avoid linking issues (they are too complex to be inlined)
REVERT: 4585de4c6f add vectorization of sqrt for float
REVERT: b8d3b1d021 fix Taucs support (it appears Taucs does not return sorted matrices)
REVERT: 9be916d12c The ABI break: * set AutoAlign=0, DontAlign!=0 * set Dynamic=33331 * add check on fixed sizes * bump version to 2.0.52
REVERT: 8703d3206a * enable vectorization of sin, cos, etc. by default with an option to   disable them (-DEIGEN_FAST_MATH=0) * add a specialization of MatrixBase::operator*(RealScalar) for fast   "matrix of complex" times scalar products (even more useful for   autodiff scalar types)
REVERT: c191d5801e oops forgot to include a file in previous commit (I had other local changes I did not want to commit yet...)
REVERT: 2a50291f1f for some reason passing the argument by const reference killed the perf (in the packet version of sin, cos, exp, lop), so let's pass them by value. Also, improve the perf of ei_plog by reducing dependencies.
REVERT: 5f641924e8 add SSE2 versions of sin, cos, log, exp using code from Julien Pommier. They are for float only, and they return exactly the same result as the standard versions in about 90% of the cases. Otherwise the max error is below 1e-7. However, for very large values (>1e3) the accuracy of sin and cos slighlty decrease. They are about 3 or 4 times faster than 4 calls to their respective standard versions. So, is it ok to enable them by default in their respective functors ?
REVERT: 3bd18fd194 As values may be used uninitialised, they have now been given sensible defaults; or, in other words, if worse comes to worst, we'll get a guaranteed segfault rather than a heisenburg.
REVERT: 17b30fcf0d * allows fixed size matrix with size==0 (via a specialization of   MatrixStorage returning a null pointer). For instance this is very   useful to make Tridiagonalization compile for 1x1 matrices * fix LLT and eigensolver for 1x1 matrix
REVERT: 8071e8e7f8 split and extend eigen-solver tests
REVERT: 53ab17aef3 ei_pnegate implemented for AltiVec
REVERT: 1f12f93c6b add vectorization of unary operator-() (the AltiVec version is probably broken)
REVERT: 4e45f68162 Add BVH module in unsupported (patch from Ilya Baran) (I thought I committed it a week ago but it seems the command failed)
REVERT: 519e1d6310 angle-axis doc: make it more clear the axis must be normalized
REVERT: 40612a089e more MSVC fixes: restrict keywords (sorry for all these commits)
REVERT: 3fd1ade8f5 more MSVC fixes (asm comments...)
REVERT: 68f4ae9978 fix compilation MSVC
REVERT: 8b61a14e58 opengl demo: add aligned operator new where appropriate and remove my mess...
REVERT: f9483e2330 add affine * homogeneous vector for backward compatibility (e.g., kgllib)
REVERT: 38feffb28f minor changes in AlignedBox needed for BVH module
REVERT: 8c925538fc add optimized cross3 function (code from Rohit Garg)
REVERT: 9403d575a2 fix doxygen generation of unsupported modules
REVERT: 4100c9e126 fix a few compilation errors and warnings (ICC)
REVERT: a4835665ea fix compilation with old, and future gcc
REVERT: df9918e163 compilation fix in MapBase
REVERT: 4c46e41af2 various BTL updates (disable Cholesky for MTL, add new plot settings, etc)
REVERT: 2ab4156204 add "slice vectorization" of redux (eg. m.block().minCoeff() is now vectorized)
REVERT: d8e4f218c7 because of a missing specialization, operator/(scalar) was not vectorized
REVERT: a33f27e8e3 fix MapBase's ForceAligned concept which was not working at all....
REVERT: 92e8ed2d57 add the vectorization of abs
REVERT: e7e608c099 forgot to include a file in previous commit
REVERT: 599c6180de add an option to bench eigen without GCC's auto vec (might conflict with Eigen's auto vec)
REVERT: 4ba9945ef1 fix warning in Tridiag
REVERT: aa0b7b7d31 add a small note in Transform doc.
REVERT: 529637f347 big rework of the Transform class: * add Projective and AffineCompact modes as an optional third template   argument * extend Transform::operator* to support more use cases
REVERT: 46e0360522 slight optimization of SSE base integer mul (thanks to Rohit Garg)
REVERT: fcd267af16 Install the newly added eigen2/Eigen/src/Geometry/arch/Geometry_SSE.h
REVERT: 52fef8efb5 add optimized quaternion * quaternion product specialization for float/SSE using code from Rohit Garg
REVERT: 6db12da291 significantly reduce the default stack allocation limit which was much too high
REVERT: 6552f5d7c7 patch from Stjepan Rajko (MSVC fix in RotationBase)
REVERT: efdf1c1a58 Commented out duplicate definition of TransformTraits - was causing compile-time errors.
REVERT: bd15a8d22c add efficient matrix product specializations for Homogeneous
REVERT: ff44bade55 remove bad #include of SelfadjointRank2Update.h
REVERT: 9c8e931b7c big addons: * add Homogeneous expression for vector and set of vectors (aka matrix)   => the next step will be to overload operator* * add homogeneous normalization (again for vector and set of vectors) * add a Replicate expression (with uni-directional replication   facilities) => for all of them I'll add examples once we agree on the API * fix gcc-4.4 warnings * rename reverse.cpp array_reverse.cpp
REVERT: cdadef2351 BTL: add syr2 action
REVERT: e1f5a8dbe4 BTL: - patch from Victor (add ACML support)      - fix overflow issues
REVERT: 0f4489dc77 add ReturnByValue pseudo expression for in-place evaluation with a return-by-value API style (will soon use it for the transform products)
REVERT: da2c278302 various update of of BTL
REVERT: b13b1dc7d7 add much faster versions of unaligned stores (and slightly faster unaligned loads)
REVERT: 0b6eb2f601 cleaned Tridiagonalization impl, with improved performance
REVERT: be133717fb performance improvement: rewrite of the matrix-matrix product following Goto's paper => x1.4 speedup with more consistent perf results
REVERT: f9907034ae improve WIP new matrix product
REVERT: a874b3e7c7 add a proof of concept autodiff jacobian helper class based on adolc with unit test and FindAdolc cmake module
REVERT: 1fb53b1585 compilation fix + test orho methods for complex
REVERT: ddc38d913b fix unitOrthogonal() for size > 3
REVERT: 5c9cf1ec12 Add COMPONENT Devel
REVERT: c725bf79d7 Fix install header
REVERT: 37bbf82bde * split CacheFriendlyProduct into multiple smaller files * add an efficient selfadjoint * vector implementation (= blas symv)   perf are inbetween MKL and GOTO   => the interface is still missing (have to be rethougth)
REVERT: 23730c4574 oops, got confused by the preprocessor directives around posix_memalign...
REVERT: 5831fa06a0 fix posix_memalign return value warning
REVERT: 839fbd57f9 fix typo found by markusfroeb (forum)
REVERT: f965ae6a4c Added new product implementation. Just works for square, power of 2 matrices of floats.
REVERT: d2e1bd29dd add symv bench
REVERT: 4e194115a1 Fix some formatting in quick ref. Add references to headers.
REVERT: abfc264610 increase version number for step
REVERT: 7e406a0822 eventually c++ does not provide any optimized pow(int,int) function, so here you go :) (should also fix Timothy's troubles)
REVERT: 3f49001ba2 add size, rows, cols, (), (,) functions in ASCII ref
REVERT: a823f91dba patch from Jitse Niesen: fix ascii quick ref matlab operator '
REVERT: 3642d0eff1 fix install of IterativeSolvers module
REVERT: 05b37e00a1 add the ASCII quick reference made by Kier
REVERT: aee5316c85 fix typo in FindTaucs.cmake
REVERT: 3a0119c3ea add tests showing bug in unitOrthogonal such that we don't forget it!
REVERT: cb05b7aad1 * fix Quaternion::setFromTwoVectors (thanks to "benv" from the forum) * extend PartialRedux::cross() to any matrix sizes with automatic   vectorization when possible * unit tests: add "geo_" prefix to all unit tests related to the   geometry module and start splitting the big "geometry.cpp" tests to   multiple smaller ones (also include new tests)
REVERT: 4109f362f7 fix assertion issue in slice vectorization
REVERT: 90333d3c29 update vectorization_logic unit test wrt previous sum/redux change
REVERT: a9db450cd0 no reason for 3 vec_mins, 2 are enough apparently in ei_predux_min
REVERT: 80018909a8 modified ei_predux_min/max to actually use altivec instructions
REVERT: 85d221924d compilation fix for SuperLU 3.1
REVERT: f8f594bf38 fix m = m*m with m sparse (gug found by Frederik Heinz)
REVERT: 996afcd2da fix bug in MapBase found by myguel
REVERT: 9ca41a35f0 * exit Sum.h, exit Prod.h, welcome vectorization of redux() ! * add vectorization for minCoeff and maxCoeff
REVERT: 015182434d update of the Array module doc
REVERT: 503cdeadd6 some ICC fixes
REVERT: f43be3488e add ei_predux_mul for AltiVec
REVERT: 9951b7d9a8 * add ei_predux_mul internal function * apply Ricard Marxer's prod() patch with fixes for the vectorized path
REVERT: 8c57af0078 fix ICC internal compilation error
REVERT: fedf97bced added an experimental IterativeSolvers module (currently in unsupported) with a constrained conjugate gradient algorithm adapted from GMM++/ITL. This algorithm is needed for Step.
REVERT: b139c02768 various minor fixes in Sparse module
REVERT: 25f79de65c fix doxygen \ingroup for the array module
REVERT: 2a6326f098 add select snippet
REVERT: cfa17681ab - add diagonal * sparse product as an expression - split sparse_basic unit test - various fixes in sparse module
REVERT: 21e0524720 add DiagonalMatrix setZero and resize functions
REVERT: 31c643ebe1 add "remap" snippet using placement new
REVERT: 2149290388 documentation about inheriting from Eigen::Matrix
REVERT: 49ee847658 fixed preserve_mask definition for AltiVec (needed __vector keyword)
REVERT: 2cff96ec20 should be __powerpc__ instead of __ppc__
REVERT: 4977f0c810 remove remaining debug stuff in Reverse.h
REVERT: bdc44b5f23 fix build
REVERT: c7e26cb85f forgot to commit the deletion of StdVector directory
REVERT: c334bbf5aa more fixes in StdVector, sorry for the noise
REVERT: bcd90bd815 disable vector::resize() workaround for gcc < 4.1 (they already use a const reference)
REVERT: a5fa3ddf62 arf... s/_MSVC_VER/_MSC_VER
REVERT: b5ac4326e5 little fix in new StdVector
REVERT: c1ac9dfbd7 * allow Matrix to be resized to 0 (solve a lot of troubles with   some containers) * new workaround for std::vector which is supposed to work for any   classes having EIGEN_MAKE_ALIGNED_OPERATOR_NEW as discussed on ML
REVERT: a7f40ee690 force the use of debug version of QtCore unless it is not available
REVERT: 7bd4b90ea1 eventually MSVC does not like my /O2 flags (incompatibility with other option set by default)
REVERT: 95343707d0  s/cholesky/llt in precompiled lib and BTL
REVERT: 847258867f add bench_reverse, draft of a reverse vectorization for AltiVec, make global Scaling function static
REVERT: 06fa076a3c Add vectorization of Reverse (was more tricky than I thought) and simplify the index based functions
REVERT: 6f3a0a764a Reverse::coeff*(int) functions are for vector only
REVERT: 3b37366e3e apply Ricard patch for Reverse with minor modifications
REVERT: 2d66b8ddd9 add optimization flag for MSVC and heavy tests remove unsupported namespace
REVERT: 642bbbd618 add snippet for sub/super diagonal fix a few doc issues
REVERT: 081521a612 update doc of DiagonalCoeffs
REVERT: 4f3b8069dd Add sub/super-diagonal expression (read/write) as a trivial extension of DiagonalCoeffs. The current API is simply:   m.diagonal<1>() => 1st super diagonal   m.diagonal<-2>() => the 2nd sub diagonal I'll add a code snippet once we agree on this API.
REVERT: 9ace3b7771 undo an unecessary change in cache-friendly product made for MSVC
REVERT: be6b4baa7b remove explicit fortran dependency in FindCholmod
REVERT: 2e59f75bcc forgot to commit changes in  main CMakeLists.txt (add unsupported folder)
REVERT: 4fe39d8e89 add custom FindBLAS FindLAPACK working for c++ compiler fix issues in Cholmod/Taucs supports
REVERT: 966e111507 fix various Taucs and Cholmod issues (they have not been tested for a while)
REVERT: 7c7b78fb1f bugfix in LDLt for size==1
REVERT: 2fdf6860b0 forgot to add EigenTesting.cmake file
REVERT: 546d4bb942 oops, #ifdef instead of #if ---> bug
REVERT: 2e8aac683c forgot to update this unit test...
REVERT: dfe7536a84 disable alignment altogether outside of the platforms which potentially have SSE or AltiVec This should remove most portability issues to other platforms where data alignment issues (including overloading operator new and new[]) can be tricky, and where data alignment is not needed in the first place.
REVERT: 5e1e5e9f83 nothing interesting to see
REVERT: de6ee44937 extend unsupported/README.txt file
REVERT: 2bd5fc22f0 setup the unsupported directory structure. The unsupported module documentation is automatically generated in:   build/doc/unsupported/ with bidirectional cross references. I leave a class Foo in AdolcForward module to illustrate the cross-reference behavior. I will remove it in the next commit.
REVERT: c8a2045bab * classify and sort the doxygen "related pages"   by tweaking the filename and adding 2 categories:    Troubleshooting and Advanced * use the EXCLUDE_SYMBOLS to clean the class list   (insteaded of a homemade bash script) * remove the broken "exemple list" * re-structure the unsupported directory as mentionned in the ML and   integrate the doc as follow:   - snippets of the unsupported directory are directly imported from the     main snippets/CMakefile.txt (no need to duplicate code)   - add a top level "Unsupported modules" group   - unsupported modules have to defined their own sub group and nest it     using \ingroup Unsupported_modules   - then a pair of //@{ //@} will put everything in the submodule   - this is just a proposal !
REVERT: 6bece57408 update cholesky benchmark
REVERT: fea90094d7 Add full pivoting to LDLT decomposition.
REVERT: d3ec4567c0 add a short unsupported/readme file
REVERT: 66bc997933 add unsupported/ directory with a first contribution from myself: a header file providing support for adolc's adouble type in forward mode. (adolc is an automatic differentiation library)
REVERT: 95e30ccde9 Add Matrix::resizeLike(other) convenience function and test.
REVERT: f1100b0ee7 call it "Eigen 2.0.50-unstable" to make things clear, and update EIGEN_MINOR_VERSION to 50
REVERT: d92eed1270 * label Cholesky and solveTriangular.* as experimental * improve Experimental.dox * update urls from /api/ to /dox/
REVERT: 1afef28a85 the BSD's don't have aligned malloc after all
REVERT: df77f48b17 fix tutorial abs/abs2 (thanks to Keir)
REVERT: 9ddaf2ac29 forgot to commit QR_solve snippet
REVERT: b6fc5cbe70 add missing inline keywords
REVERT: c6e58b7a52 fix duplicated geometry module in the doc
REVERT: b8ec6f13bf fix MSVC internal compilation error
REVERT: ae662aabd8 reduce epsilon in QR
REVERT: da5fc707ea fix MSVC stupid warnings
REVERT: 231d655d45 more MSVC fixes, and more code factorization in Geometry module
REVERT: fa4224c679 add MatrixBase::stableNorm() avoiding over/under-flow using it in QR reduced the error of Keir test from 1e-12 to 1e-24 but that's much more expensive !
REVERT: 9ab8df0526 * make sum and redux honor EvalBeforeNestingBit too * fix MSVC issues (hopefully)
REVERT: 9b8a78a89d make dot() honor EvalBeforeNestingBit
REVERT: cccf452056 various updates in the (still messy) sparse benchmarks
REVERT: b8578664b9 fix overflow in sparse product
REVERT: 82ccfd4234 add EIGEN_NO_AUTOMATIC_RESIZING if defined, already initialized matrices won't be automatically resized in assignments uninitialized matrices may still be initialized
REVERT: 779de0acea Big change in DiagonalMatrix and Geometry/Scaling: * previous DiagonalMatrix expression is now DiagonalMatrixWrapper * DiagonalMatrix class is now for storage * add the DiagonalMatrixBase class to factorize code of the   two previous classes * remove Scaling class (it is now a global function) * add UniformScaling helper class   (don't use it directly, use the Scaling function) * add the Scaling global function to simplify the creation   of scaling objects There is still a lot to do, in particular about DiagonalProduct for which the goal is to get rid of the "if()" in the coeff() function. At least it is not worse than before ! Also need to uptade the tutorial and add more doc.
REVERT: cbb4d8ac92 Patch from Frank fixing stupid MSVC internal crash
REVERT: cb60079920 move EIGEN_DEPRECATED to the begining of the function (pb with MSVC)
REVERT: eee9239213 QR: add isInjective(), isSurjective(),     mark isFullRank() deprecated,     add solve() (mix of Keir's patch and LU::solve()) => there is big problem with complex which are not working
REVERT: 2ba33c3571 LLT: makes the non positive definite test less strict, but we still need something better.
REVERT: daf6f2a62b add support for read/write sub sets of inner vectors (sparse module)
REVERT: 45f185a220 now these tests succeed with 10,000 repeats
REVERT: 7087e538eb fix my previous commit with EIGEN_EMPTY macro bug
REVERT: c4aad30dc7 fix type mismatch caught by new static assert
REVERT: 6e8a09c3ed fix "empty macro arguments are undefined in ISO C90 and ISO C++98" warning found by gcc-svn
REVERT: 6abe794f91 FindUmfPack: add AMD and COLAMD libraries only if they are found
REVERT: 758b04e81d check GSL version in cmake files
REVERT: 5627e0dcfb centralize those static asserts more upstream, reduces duplication and ensures they can't be bypassed (e.g. until now it was possible to bypass the static assert on sizes)
REVERT: 0624940a62 add a missing static assertion on the scalar types
REVERT: e6a55bf029 fix doc for norm() and squaredNorm(): these are not only for vectors
REVERT: 4a84609e9b small fix related to GSL cmake stuff
REVERT: 471442b825 fix msvc warnings (useful ones again) reported by gael on CDash
REVERT: 8c7923fb02 documentation update/improvement
REVERT: 9b12f31b0f compute the rank on the fly rather than at the end, and stop early in the case of non-full rank (so big optimization in case the rank is low)
REVERT: 0e401a7fd5 fix MatrixNase::fillrand bug
REVERT: 3912b6f738 make these functions inline, thanks to Mek
REVERT: 0fc86714a3 forgot to backport an update to Mainpage.dox
REVERT: cae71ea635 * mark Geometry as experimental * install QtAlignedMalloc * finish the renaming Regression->LeastSquares * install LeastSquares directory (!!!) * misc dox fixes
REVERT: eea50b4767 disable unordered_map for ICC
REVERT: 4e8ac4896e * solveTriangularInPlace(): take a const ref and const_cast it, to allow passing temporary xprs. * improvements, simplifications in LU::solve() * remove remnant of old norm2()
REVERT: 80a857c29f Optimization in LU::solve: when rows<=cols, no need to compute the L matrix Remove matrixL() and matrixU() methods: they were tricky, returning a Part, and matrixL() was useless for non-square LU. Also they were untested. This is the occasion to simplify the docs (class_LU.cpp) removing the most confusing part. I think that it's better to let the user do his own cooking with Part's.
REVERT: dab0581e2e add partial count redux (adapted patch from Ricard Marxer)
REVERT: 6b58d16ec0 add fill() function as an alias for setConstant
REVERT: 6ef9b4b2b9 eventually it turns out that our current EIGEN_WORK_AROUND_QT_BUG_CALLING_WRONG_OPERATOR_NEW_FIXED_IN_QT_4_5 is the right way to go for allowing placement new on a class having overloaded operator new. Qt 4.5 won't add the :: prefix. (I still do not understand how you can distinghish a placement new from an overloaded operator new taking an allocator as argument...)
REVERT: dc222d5c84 sparse module: makes -= and += operator working Question 1: why are *=scalar and /=scalar working right away ? Same weirdness in DynamicSparseMatrix where operators += and -= work wihout   having to redefine them ???
REVERT: f9f915acaf very minor update in test/CMakeLists.txt
REVERT: 57e9eab7cc fix a few remaining warnings and fix commainitializer unit test with MSVC
REVERT: 633419b42f * fix compilation with gcc 3.4 * add an option to disable Qt testing
REVERT: 78800af6f2 add computeRotationScaling and computeScalingRotation in SVD add convenience functions in Transform reimplement Transform::rotation() to use that add unit-test
REVERT: 3c6e8d7dfd add polar decomposition on both sides, in SVD, with test
REVERT: 0a13ca1314 I hope this one fix the issue with MSVC and sparse module
REVERT: 2a6da8f84d fix a bunch of warnings (actual issues) reported by Frank
REVERT: 282578cbf1 perhaps fix a compilation issue in the sparse module with MSVC
REVERT: 8f1ea13b14 fix warnings
REVERT: 35d349ba1d sparse module: * add row(i), col(i) functions * add prune() function to remove small coefficients
REVERT: 57fd7afb0b update sparse matrix tutorial (far to be satisfactory yet)
REVERT: bb086a0ac3 * remove set(), revert to old behavior where = resizes * try to be clever in matrix ctors and operator=: be lazy when we can, always allow   to copy rowvector into columnvector, check the template parameters,   try to factor the code better * add missing copy ctor in UnalignedType * fix bug in the traits of DiagonalProduct * renaming: EIGEN_TUNE_FOR_CPU_CACHE_SIZE * update the dox a little
REVERT: b5e69f1281 don't claim googlehash is there when only qt4 has been found :)
REVERT: be302b9be8 lu test:don't fail
REVERT: b48d6acd62 * complete the support of QVector via a QtAlignedMalloc header * add a unit test for QVector which shows the issue with QVector::fill
REVERT: 3e8a718fd2 * QR: add a rank() method and improve the accuracy of the rank * computation * Array: add a count() method and rename AllAndAny.h file to   BooleanRedux.h
REVERT: 812818586a fix bug in the computation of rank very difficult to catch in unit-tests because this is very noisy
REVERT: 9fb79a47a9 forgot to include the update of the qr test
REVERT: d1f4172c07 quick bugfix in QR::isFullRank() (not 100% sure about the reference value for the comparison to 0)
REVERT: 9edc7bae01 I assume these files where supposed to be installed
REVERT: 6b14913f8a optimize A * v product for A sparse and row major
REVERT: ead023940b add a flexible sparse matrix class designed for fast matrix assembly
REVERT: 825924bbeb * clarify the situation with experimental parts * remove all what was marked deprecated
REVERT: f662733d9f #error if min or max is defined
REVERT: 93424d6261 add a compilation test in FindGoogleHash.cmake to catch configuration issues when multiple compilers are used on the same system.
REVERT: 8a85acf66c revert bad commit
REVERT: 7ea1fdfc73 add a smart realloc algorithm when filling a sparse matrix
REVERT: 3be5eaaec9 bugfix in Map by Keir Mierle
REVERT: 17e693e226 add ublas vector of vector in sparse setter bench
REVERT: 00c4be64c6 update documentation (thanks Kenneth)
REVERT: fbe4d66dff add a sparse setter bench
REVERT: e4608e0d7f patch from Ricard Marxer: add doc example for select()
REVERT: 08c45db6b5 Rewrite the vectorized meta unroller of sum to reduce instruction dependency => significant speed up
REVERT: 87bd11d099 typo found by Ben Axelrod CCMAIL:baxelrod@coroware.com
REVERT: 77095deacb * Started a tutorial page for sparse matrix. * Updated Mainpage.dox's directives used by kde's scripts
REVERT: 3d86295e1a Add a data() function in Map and Block
REVERT: 203fc37a97 Sparse module: add support for sparse selfadjoint * dense
REVERT: 3aab92369d Sparse module: add row/col methods to the iterators
REVERT: 99bb9764dd Sparse module: bugfix in SparseMatrix::resize(), now the indices are correctly initialized to 0.
REVERT: 3f34a4a972 Sparse module: * add a MappedSparseMatrix class (like Eigen::Map but for sparse   matrices) * rename SparseArray to CompressedStorage
REVERT: 842c8985c3 two compilation fixes
REVERT: 458ad96cd9 Sparse module: * improved performance of mat*=scalar * bug fix in cwise*
REVERT: a71023b85e add a sparse * dense_vector bench
REVERT: 52ce7539b5 Add support for sparse * dense and dense * sparse matrix/vector products
REVERT: 41cc4a1018 Big rewrite in the Sparse module: SparseMatrixBase no longer inherits MatrixBase. That means a lot of features which were available for sparse matrices via the dense (and super slow) implemention are no longer available. All features which make sense for sparse matrices (aka can be implemented efficiently) will be implemented soon, but don't expect to see an API as rich as for the dense path. Other changes: * no block(), row(), col() anymore. * instead use .innerVector() to get a col or row vector of a matrix. * .segment(), start(), end() will be back soon, not sure for block() * faster cwise product
REVERT: 046eba4a78 s/EIGEN_WORK_DIRECTORY/EIGEN_WORK_DIR in testsuite script
REVERT: 10fa8b115b add EIGEN_FUNCTORS_PLUGIN
REVERT: b136c6548a add EIGEN_CWISE_PLUGIN support for extending class Cwise
REVERT: a942c404c6 fix a couple of doxygen issues
REVERT: 0d7021464e add NetBSD to the list of OSes on which malloc is guaranteed to be 16 byte aligned, after discussion with Mark Davies.
REVERT: 77835a9591 hm it seems cmake does not understand CYGWIN (=> UNIX)
REVERT: 4304910d9f improved a bit the testsuite script
REVERT: 7ff2bcac52 just a stub for the householder stuff we did with keir yesterday...
REVERT: cc333fc86f * minor dox tweaks * pretext to bump to beta6
REVERT: a12e0eb262 * make std::vector specializations also for Transform and for Quaternion * update test_stdvector * Quaternion() does nothing (instead of bug) * update test_geometry * some renaming
REVERT: 2d321e4cd2 make ei_traist<Select> honors nested types
REVERT: 844c6d4a6a bugfix in ei_unaligned_type copy ctor
REVERT: d8c22b834a fix a warning in test/alignedbox
REVERT: 6d8e86586e remove stupid output in test/meta
REVERT: 0c127385a6 disable/enable msvc headers are allowed to be included multiple times
REVERT: 0ebc831d4c muuuch improved documentation for the unaligned array assert. also split into several pages for better reusability (more generally useful than just for this assert)
REVERT: 01f07fcf0c bug fix in ei_stack_free
REVERT: dc163575f4 * move cwise *= and /= to Core (like * and /) * tidy the StdVector module * fix warnings (especially a | instead of ||) in stdvector test
REVERT: a3d4a83f82 add a clean configuration summary for the unit tests (useful to analyze the dashboards)
REVERT: 27f1939d13 another warning fix
REVERT: 87e4249b91 bugfix in ei_handmade_aligned_free for null pointers
REVERT: 44adfc1e30 make the testsuite works on windows with nmake
REVERT: 89fd27e99a fix a warning in test/sparse.h
REVERT: 334aacc024 add the possiblity to disable Fortran (workaround cmake's bug
REVERT: 0b5b82c1da update testsuite script
REVERT: c6cb88c7f5 simplify some ei_traits<> using inheritance (less loc and slight compilation speed up)
REVERT: 58cd65b81a extend stdvector test with more push_back...
REVERT: 6dc6c144b4 forgot to commit updated test
REVERT: 7dcdc9c0ed add cwise operator *= and /=. Keir says hi!!
REVERT: 55705fb524 updating FindEigen2.cmake for proper search order
REVERT: d375de9f3a add missing newline at EOF
REVERT: 72d8a76219 EIGEN_NO_MALLOC must also block traditional unaligned malloc
REVERT: fdfafe3de6 fix potential compilation issue on MSVC + no vectorization
REVERT: dd194d0e20 make the std::vector fix work also with dynamic size Eigen objects, e.g. std::vector<VectorXd> update unit test
REVERT: f29553283c remove ei_new_allocator remove corresponding part of test_dynalloc
REVERT: 60599559f4 Based on code + help from Alex Stapleton: *Add Eigen/StdVector header. Including it #includes<vector> and "Core" and generates a partial specialization of std::vector<T> for T=Eigen::Matrix<...> that will work even with vectorizable fixed-size Eigen types (working around a design issue in the c++ STL) *Add unit-test
REVERT: 15585fd0bc oops, fix compilation (sorry for all that noise!)
REVERT: c15b3ab4f5 (previous commit was bad)
REVERT: b6c3abe4d3 overloaded operator delete should call ei_conditinal_aligned_free, not ei_aligned_free
REVERT: ac978bbc73 ei_aligned_delete was running through the various paths in the wrong order
REVERT: a8f66f1274 * implement handmade aligned malloc, fast but always wastes 16 bytes of memory.   only used as fallback for now, needs benchmarking.   also notice that some malloc() impls do waste memory to keep track of alignment   and other stuff (check msdn's page on malloc). * expand test_dynalloc to cover low level aligned alloc funcs. Remove the old   #ifdef EIGEN_VECTORIZE... * rewrite the logic choosing an aligned alloc, some new stuff:   * malloc() already aligned on freebsd and windows x64 (plus apple already)   * _mm_malloc() used only if EIGEN_VECTORIZE   * posix_memalign: correct detection according to man page (not necessarily     linux specific), don't attempt to declare it if the platform didn't declare it     (there had to be a reason why it didn't declare it, right?)
REVERT: 2dcedc151f * Added aligned_allocator for using 16-byte aligned types with STL containers.  There is still a compile-time problem with STL containers that have a standard-conformant resize() method, but this should resolve the original user issue which was storing aligned objects in a std::map.
REVERT: ec32965e79 add missing inline keywords (compilation error) spotted by timvdm
REVERT: fc0fd1b4c6 change the day switch time to 5:00 UTC
REVERT: 80909e6979 add a ctest testsuite.cmake script to simplify the generation of nightly builds
REVERT: 3a273246d7 add EIGEN_WORK_AROUND_QT_BUG_CALLING_WRONG_OPERATOR_NEW_FIXED_IN_QT_4_5 an ugly hack that allows people to do QVector<Vector4f> with Qt <= 4.4 the Qt bug this is working around is fixed by Gael in Qt 4.5
REVERT: 875b01dc1c EIGEN_MAKE_ALIGNED_OPERATOR_NEW didn't actually need to get the class name as parameter
REVERT: f3f5ca9903 the big memory changes. the most important changes are: ei_aligned_malloc now really behaves like a malloc  (untyped, doesn't call ctor) ei_aligned_new is the typed variant calling ctor EIGEN_MAKE_ALIGNED_OPERATOR_NEW now takes the class name as parameter
REVERT: cfa13f98dd fix a bug -- bad read found by valgrind
REVERT: b00869f970 Add cdash.org support: * the dashboard is there: http://my.cdash.org/index.php?project=Eigen * now you can run the tests from the top build dir   and submit report like that (from the top build dir):   ctest -D Experimental * todo:  - add some nighlty builds (I'll add a few on my computer)  - add valgrind memory checks, performances tests, compilation time tests, etc.
REVERT: a265f797e2 add BLAS dependency in FindSuperLU.cmake
REVERT: 482391bdd5 bugfix in sum
REVERT: 56551be372 Add a vectorization_logic unit test for assign and sum. Need to add dot and more tests, but it seems I've already found some room for improvement in sum.
REVERT: 4c12d493b5 Sparse module: * extend unit tests * add support for generic sum reduction and dot product * optimize the cwise()* : this is a special case of CwiseBinaryOp where   we only have to process the coeffs which are not null for *both* matrices.   Perhaps there exist some other binary operations like that ?
REVERT: 748eeac222 * re-enabled deprecation warning on msvc now that eigen isn't using functions microsoft deems deprecated
REVERT: ef1d2fe77c fine tuning in dot() and sum(), and prepare for the sparse versions...
REVERT: a616937ea9 add custom implementation of hypot
REVERT: 4f26276da8 * disabled deprecation warning under msvc that was being triggered due to microsoft deprecating portable functions in favor of non-portable ones ( ex: hypot() deprecated in favor of _hypot() )
REVERT: 36f3a27de7 remove non standard hypotf function call
REVERT: 9ff2211ab6 more Scalar conversions fixes
REVERT: b370e8877a two scalar conversion fixes
REVERT: 988cfcc14f remove the Matrix_ prefix
REVERT: 76b19a688c call methods from the eigen namespace with prepended Eigen:: in define
REVERT: 82299390c8 * suppressed some minor warnings
REVERT: 179dfe630a * introduce macros to replace inheritance for operator new overloading   (former solution still available and tested)   This plays much better with classes that already have base classes --   don't force the user to mess with multiple inheritance, which gave   much trouble with MSVC. * Expand the unaligned assert dox page * Minor fixes in the lazy evaluation dox page
REVERT: b57cfc79e8 ...so the placement new is really trivial:)
REVERT: 41f17b6e12 oops, placement new should take a void*
REVERT: f2befe18c9 we also had to overload the placement new... issue uncovered by Tim when doing QVector<Vector3d>...
REVERT: b766dedc3d forgot to install the LeastSquares header
REVERT: 66d732577f release beta5, fix a doc typo
REVERT: a044ef51a1 gaaaaaaaaaaaaaaaaaah can't believe that 3 people wasted so much time because of a missing & !!!!! and this time MSVC didn't catch it so it was really copying the vector on the stack at an unaligned location!
REVERT: 9ce76b0a09 problem solved, we really want public inheritance and it is only automatic when the _child_ class is a struct.
REVERT: b1342118a9 the empty base class optimization is not standard. Most compilers implement a basic form of it; however MSVC won't implement it if there is more than one empty base class. For that reason, we shouldn't give Matrix two empty base classes, since sizeof(Matrix) must be optimal. So we overload operator new and delete manually rather than inheriting an empty struct for doing that.
REVERT: cd2cb63e18 *fix compilation with MSVC 2005 in the Transform::construct_from_matrix *fix warnings with MSVC 2005: converting M_PI to float gives loss-of-precision warnings
REVERT: 1cc632e66d didn't meant to commit the fortran check. but anyway, unfortunately it doesn't work the way iot should. the test fails and cmake will terminate if it doesn't find a fortran compiler
REVERT: b966c76a87 inherit from ei_with_aligned_operator_new even with disabled vectorization
REVERT: a1420f1da3 *add PartialRedux::cross() with unit test *add transform-from-matrices test *undo an unwanted change in Matrix
REVERT: b328cabe06 fix compilation on apple: _mm_malloc was undefined. the fix is to just use malloc since on apple it already returns aligned ptrs
REVERT: 3b844a3cda fix segfault due to non-aligned packets
REVERT: e4f09d187e oops forgot important parentheses
REVERT: dbb8179366 Fix bug in Matrix, in determining whether to overload operator new with an aligned one, introduced in r905543
REVERT: a2b1daec6b * fix a unused variable warning * if svnversion returns prose such as "exported" then discard that
REVERT: 943e622d6e * require CMake 2.6.2 everywhere, Alexander Neundorf says it'd make it easier to have a uniform requirement in kdesupport for when he makes fixes. * add eigen versioning macros
REVERT: cf2cd3b7c0 rename Regression --> LeastSquares
REVERT: e33fd98e54 * the 4th template param of Matrix is now Options. One bit for storage order, one bit for enabling/disabling auto-alignment. If you want to disable, do: Matrix<float,4,1,Matrix_DontAlign> The Matrix_ prefix is the only way I can see to avoid ambiguity/pollution. The old RowMajor, ColMajor constants are deprecated, remain for now. * this prompted several improvements in matrix_storage. ei_aligned_array renamed to ei_matrix_array and moved there. The %16==0 tests are now much more centralized in 1 place there. * unalignedassert test: updated * update FindEigen2.cmake from KDElibs * determinant test: use VERIFY_IS_APPROX to fix false positives; add testing of 1 big matrix
REVERT: 0305bad683 * In LU solvers: no need anymore to use row-major matrices * Matrix: always inherit WithAlignedOperatorNew, regardless of vectorization or not * rename ei_alloc_stack to ei_aligned_stack_alloc * mixingtypes test: disable vectorization as SSE intrinsics don't allow mixing types and we just get compile errors there.
REVERT: dac47665ff Added a SparseVector class (not tested yet)
REVERT: bb0a49e291 fix the nomalloc test: it didn't catch the ei_stack_alloc in cachefriendlyproduct, that should be banned as well as depending on the platform they can give a malloc, and they could happen even with (large enough) fixed size matrices. Corresponding fix in Product.h: cachefriendly is now only used for dynamic matrices -- fixedsize, no matter how large, doesn't use the cachefriendly product. We don't need to care (in my opinion) about performance for large fixed size, as large fixed size is a bad idea in the first place and it is more important to be able to guarantee clearly that fixed size never causes a malloc.
REVERT: 72478f144c add unit-test checking the assertion on unaligned arrays -- checking that it's triggered when and only when it should.
REVERT: a6c0a438b8 * make WithAlignedOperatorNew always align even when vectorization is disabled * make ei_aligned_malloc and ei_aligned_free honor custom operator new and delete
REVERT: dbc3e8d80d Sparse module, add an assertion and make the use of CHOLMOD's solve method the default.
REVERT: 778683034a Sparse module:  * enable complex support for the CHOLMOD LLT backend    using CHOLMOD's triangular solver  * quick fix for complex support in SparseLLT::solve
REVERT: eda290c6f9 fix bug discovered by Frank: ei_alloc_stack must really return aligned pointers
REVERT: fdafc777f7 one last compilation fix ...
REVERT: 41a0d5fd77 unless i find more failures in the tests, this will be beta3... * fixes for mistakes (especially in the cast() methods in Geometry) revealed by the new "mixing types" test * dox love, including a section on coeff access in core and an overview in geometry
REVERT: 1d0c16082a * add unit-tests to check allowed and forbiddent mixing of different scalar types * fix issues in Product revealed by this test * in Dot.h forbid mixing of different types (at least for now, might allow real.dot(complex) in the future).
REVERT: 0ca411d3a0 unfuck v.cwise()*w where v is real and w is complex
REVERT: 82f8f09cca * the Upper->UpperTriangular change * finally get ei_add_test right
REVERT: b1ae859ef8 fix nasty little bug in ei_add_test
REVERT: 11d7b8d176 add matrix * transform product
REVERT: 1934cb8887 * fix a test giving some false positives * add coverage for various operator*=
REVERT: b4d52ffe9b Transform*Transform should return Transform unit test compiles again
REVERT: ef3bffa0c0 * fix a vectorization issue in Product * use _mm_malloc/_mm_free on other platforms than linux of MSVC (eg., cygwin, OSX) * replace a lot of inline keywords by EIGEN_STRONG_INLINE to compensate for   poor MSVC inlining
REVERT: 648b92ff4d various MSVC fixes in BTL
REVERT: eb0db166f7 * extractRotation ---> rotation * expand the geometry/Transform tests, after Mek's reports * fix my own stupidity in eigensolver test
REVERT: 00c2a792d7 SelfAdjointEigenSolver: add operatorSqrt() and operatorInverseSqrt()
REVERT: 4550106f47 * more MSVC warning fixes from Kenneth Riddile * actually GCC 4.3.0 has a bug, "deprecated" placed at the end   of a function prototype doesn't have any effect, moving them to   the start of the function prototype makes it actually work! * finish porting the cholesky unit-test to the new LLT/LDLT,   after the above fix revealed a deprecated warning
REVERT: 39fff4d72a * forgot to svn add 2 files * idea of Keir Mierle: make the static assert error msgs UPPERCASE
REVERT: 7827ba6709 Patch by Kenneth Riddile: disable MSVC warnings, reenable them outside of Eigen, and add a MSVC-friendly path in StaticAssert.
REVERT: 8aa4adf563 * fix in IO.h, a useless copy was made because of assignment from   Derived to MatrixBase. * the optimization of eval() for Matrix now consists in a partial   specialization of ei_eval, which returns a reference type for Matrix.   No overriding of eval() in Matrix anymore. Consequence: careful,   ei_eval is no longer guaranteed to give a plain matrix type!   For that, use ei_plain_matrix_type, or the PlainMatrixType typedef. * so lots of changes to adapt to that everywhere. Hope this doesn't   break (too much) MSVC compilation. * add code examples for the new image() stuff. * lower a bit the precision for floats in the unit tests as   we were already doing some workarounds in inverse.cpp and we got some   failed tests.
REVERT: f1df6edc99 Macros: add MSVC paths, add an important comment on EIGEN_ALIGN_128
REVERT: c648f4ebcd improved MSVC support in cmake files (SSE)
REVERT: c4bf9b7a54 somehow we had forgotten this very important static assertion...
REVERT: 5a7e53fbcc oops I commited bad stuff in the previous commit
REVERT: 3f4aa119b4 more MSVC cmake fixes
REVERT: ff53fe31ba some cmake fixes for windows and GSL
REVERT: d92d6f2d35 fix non standard non-const std::complex::real/imag issue
REVERT: 6d18c01e2e fix bad typos, thanks to Kenneth Riddile
REVERT: f89e9bef8d LU class: * add image() and computeImage() methods, with unit test * fix a mistake in the definition of KernelResultType * fix and improve comments
REVERT: 547f46636e found one bug in the previous ++ changes
REVERT: 75d0a5b718 * replace postfix ++ by prefix ++ wherever that makes sense in Eigen/ * fix some "unused variable" warnings in the tests; there remains a libstdc++ "deprecated" warning which I haven't looked much into
REVERT: 31d46d04a2 actually honor EIGEN_STACK_ALLOCATION. Can set it to 0 to disable stack alloc which guarantees that bad alloc throws exceptions if they are enabled.
REVERT: 1fe7e1c9c8 * throw bad_alloc if exceptions are enabled, after patch by Kenneth Riddile * disable vectorization on MSVC 2005, as it doesn't have all the required intrinsics. require 2008.
REVERT: 272ebc06f7 Hopefully fix compilation of SSE Packetmath with MSVC.
REVERT: 2ba0506a9b Finally work around enough of MSVC preprocessor dumbness so that it actually detects SSE2
REVERT: 7f1c237d94 only enable the "unaligned array" assert if vectorization is enabled. if vectorization is disabled, WithAlignedOperatorNew is empty!
REVERT: e0000f9295 * fix a bug I introduced in WithAlignedOperatorNew * add an important comment
REVERT: 183947a789 use ei_aligned_malloc and ei_aligned_free also in WithAlignedOperatorNew, so this too should now work with MSVC.
REVERT: 0d00333af7 small optimization (for MSVC) and simplification of ei_alligned_malloc
REVERT: 9f365ba1b2 work around the braindead msvc preprocessor
REVERT: bc8192b3cf Fix detection of SSE2 with MSVC.
REVERT: 818ca98bf8 Fix memory alignment (hence vectorization) on MSVC thanks to help from Armin Berres.
REVERT: 258df8d1b6 oops, forget to remove a line
REVERT: f250b3fbe1 more warning fixes by Armin Berres
REVERT: 36ece97191 compilation fix thanks to Dennis Schridde
REVERT: b0a96b00b6 one more warning fix, thanks to Armin Berres
REVERT: 7c1620c4e4 * fix a couple of warnings (patch from Armin Berres) * allow Map to map null data
REVERT: a1c567d63b Sparse module: add a more flexible SparseMatrix::fillrand() function which allows to fill a matrix with random inner coordinates (makes sense only when a very few coeffs are inserted per col/row)
REVERT: 393f84730c bugfix in DiagonalProduct: a "DiagonalProduct<SomeXpr>" expression is now evaluated as a "DiagonalProduct<Matrix<SomeXpr::Eval> >". Note that currently this only happens in DiagonalProduct.
REVERT: 21e1bec381 fix compilation issue for 64bit systems (pointer <=> size_t)
REVERT: 2b2ffdc760 fix minor mistake in the inside eigen example
REVERT: 11c1b28a7e * call it beta2 * improvements in Matrix documentation * document copyCoeff and copyPacket even if it's hidden from doxygen
REVERT: 4ba0b3d4be * complete the change norm2->squaredNorm in PartialRedux * somehow the NICE_RANDOM stuff wasn't being used anymore and   tests were sometimes failing again. Fixed by #including Eigen/Array   instead of cherry-picking just Random.h. * little fixes in the unaligned assert page
REVERT: 24695458b0 * add Transform explicit constructors taking translation/scaling/rotation * add Transform::operator= taking rotation.   An old remnant was left commented out. Why was it disabled? * slight optimization in operator= taking translation * slight optimization (perhaps) in the new memory assertion
REVERT: 48b1e3697b actually this message is probably more effective at making people read the web page...
REVERT: af7da61d69 Make deluxe assertion with deluxe error message with link to deluxe web page for this very nasty bug (unaligned member in dynamically allocated struct) that our friends at Krita just encountered:
REVERT: 503160fcb8 hide internal stuff from doxygen by using #ifndef EIGEN_PARSED_BY_DOXYGEN.
REVERT: 14fdb34ad9 Use an aligned IOFormat in the docs
REVERT: 519d614f49 * improvements in the tutorial: triangular matrices, linear algebra * minor fixes in Part and StaticAssert * EulerAngles: remove the FIXME as I think the current version is fine
REVERT: 497071b73f * fix compile error when C++0x is enabled: static_assert() needs ;   thanks to devurandom for reporting * remove redundant ; in ei_internal_assert * minor fixes in InsideEigenExample.dox
REVERT: 58bb7bb845 bugfix in matrix to Euler-angles function
REVERT: 71051ef274 Add a generic matrix to Euler-angles function. Perhaps the prototype of this function could be improved, see comments in the code
REVERT: cf38f29d49 add big "what happens inside eigen" tutorial for people interested in Eigen internals
REVERT: 99c84f298a split off the lazy evaluation part from the quickstartguide; actually by mistake i had already committed part of that change so i commit the rest even if it's not much, so building docs from trunk works again.
REVERT: 927c33990f * Much better, consistent error msgs when mixing different scalar types: - in matrix-matrix product, static assert on the two scalar types to be the same. - Similarly in CwiseBinaryOp. POTENTIALLY CONTROVERSIAL: we don't allow anymore binary   ops to take two different scalar types. The functors that we defined take two args   of the same type anyway; also we still allow the return type to be different.   Again the reason is that different scalar types are incompatible with vectorization.   Better have the user realize explicitly what mixing different numeric types costs him   in terms of performance.   See comment in CwiseBinaryOp constructor. - This allowed to fix a little mistake in test/regression.cpp, mixing float and double - Remove redundant semicolon (;) after static asserts
REVERT: 5ab700ef89 -add quotes around the configured directories so build dirs with spaces produce some errors less
REVERT: 07943b458f prefix all Eigen cmake variable with EIGEN_ and switched to lowercase for all cmake files
REVERT: 5ee352ed7d clean FindUmfpack.cmake wrt enable_language(Fortran)
REVERT: ad21d190cc -use the cmake-provided Eigen_(SOURCE|BINARY)_DIR variables instead of setting own versions (EIGEN_(SOURCE|BINARY)_DIR
REVERT: 2824024b31 add internal documentation
REVERT: 08cf4e7a3d Update e-mail address
REVERT: 13382bf2cc doc: add a "non stable" warning for parts which are not part of the stable API yet and a couple of other minor doc updates...
REVERT: 392a203099 tutorial: extend casting section with set
REVERT: 05316073ce tutorial: add the cast function
REVERT: a1b79bdf96 tutorial: add array module warnings when needed
REVERT: 9b8dba7443 * add Gael a (c) line in IO.h * let user change default format by defining EIGEN_DEFAULT_IO_FORMAT * improve docs a little
REVERT: e0587c20cf * add .imag() function * fix a very old bug in EigenSolver that I had completely forgotten   (thanks to Timothy to refresh my mind) * fix doc of Matrix::Map
REVERT: 37005d4916 Several improvements in sparse module: * add a LDL^T factorization with solver using code from T. Davis's LDL   library (LPGL2.1+) * various bug fixes in trianfular solver, matrix product, etc. * improve cmake files for the supported libraries * split the sparse unit test * etc.
REVERT: d0d8762969 Remove executable here too
REVERT: c8e9e397d9 Remove executable attribute
REVERT: fcdfa78704 refinements in Matrix doc
REVERT: 2f362f09b8 Matrix documentation rework
REVERT: e7588c115d add lpNorm<p>() method to MatrixBase, implemented in Array module, with specializations for cases p=1,2,Eigen::Infinity.
REVERT: d4b0907b05 Add Matrix::Map() and Matrix::AlignedMap() static methods
REVERT: 9decbf8983 norm2() renamed to squaredNorm(), kept as deprecated for now.
REVERT: faf1299b34 add Eigen namespace in front of Transpose (I needed that to add a Transpose function, sorry for this little inconvenience)
REVERT: 85b8bd5edf add transposeInPlace (not optimized yet for rectangular matrix)
REVERT: de63ca3b82 add the possibility to extend Matrix outside Eigen, just like MatrixBase
REVERT: d96abdc750 add Eigen namespace in EIGEN_STATIC_ASSERT
REVERT: 73e9c1bbcc add Eigen namespace in EIGEN_INHERIT_ASSIGNMENT_OPERATOR
REVERT: 1c9edc0567 unit-tests: link to external libs only for the tests which require them
REVERT: 06f8236048 fix compilation with gcc 4.3
REVERT: 5d9eeee768 Add an axis aligned box in the geometry module. Some naming questions: - for "extend" we could also think of: "expand", "union", "add" - same for "clamp": "crop", "intersect" - same for "contains": "isInside", "intersect" => ah "intersect" is conflicting, so that eliminates this one !
REVERT: fb02da5999 Add isApprox in Geometry module's classes. Complete unit tests wrt previous commits.
REVERT: 4af0a2033f oops forgot the inline keyword (though for gcc it was implicit)
REVERT: 4c43da6f8f Add smart cast functions and ctor with scalar conversion (explicit) to all classes of the Geometry module. By smart I mean that if current type == new type, then it returns a const reference to *this => zero overhead
REVERT: 226fc1ccb6 improve assertion checking in product
REVERT: 7c589c87a8 bugfix in Quaternion found by Daniel Stonier
REVERT: 63040ae27e some cleaning and doc in ParametrizedLine and HyperPlane Just a thought: what about ParamLine instead of the verbose ParametrizedLine ?
REVERT: ec7de733b1 As discussed on ML:  * remove the automatic resizing feature of operator =  * add function Matrix::set() to be used when the previous    behavior is wanted  * the default constructor of dynamic-size matrices now    creates a "null" matrix (data=0, rows = cols = 0)    instead of a 1x1 matrix  * fix UnixX typos ;)
REVERT: b18ec850b8 compilation fix for ICC
REVERT: 19bfbbb134 sparse module:  - remove some useless stuff => let's focus on a single sparse matrix format  - finalize the new RandomSetter
REVERT: ec0274af11 add the bench file for the RandomSetter
REVERT: 7fa0a5a672 sparse module: add a RandomSetter based on a user defined map implementation as described on the wiki (one map per N column) Here's some bench results for the 4 currently supported map impl: std::map =>             18.3385 (581 MB) gnu::hash_map =>        6.52574 (555 MB) google::dense =>        2.87982 (315 MB) google::sparse =>       15.7441 (165 MB) This is the time is second (and memory consumption) to insert/lookup 10 million of coeffs with random coords inside a 10000^2 matrix, with one map per packet of 64 columns => google::dense really rocks ! Note I use for the key value the index of the column in the packet (between 0 and 63) times the number of rows and I used the default hash function.... so maybe there is room for improvement here....
REVERT: f1a46f887d remove debug message in FindCholmod.cmake
REVERT: b39a0913da * sparse LU: add extraction of L,U,P, and Q, as well as determinant              for both backends. * extended a bit the sparse unit tests
REVERT: bf071873f1 add unit tests for sparse LU and fix a couple of warnings
REVERT: fb73a68ec5 * add cmake files to find (optional) supported libraries * add unit tests for sparse cholesky
REVERT: 4f9ef4b744 UmfPack support: add support for complex<double>
REVERT: b04088635d sparse module: add support for umfpack, the sparse direct LU solver from suitesparse (as cholmod). It seems to be even faster than SuperLU and it was much simpler to interface ! Well, the factorization is faster, but for the solve part, SuperLU is quite faster. On the other hand the solve part represents only a fraction of the whole procedure. Moreover, I bench random matrices that does not represents real cases, and I'm not sure at all I use both libraries with their best settings !
REVERT: 341c317670 sparse module: some trivial bugfixes
REVERT: af6fbd449e add/update some benchmark files used to test/compare sparse module features
REVERT: 3681e084ec sparse module: add preliminary support for direct sparse LU solver using SuperLU. Calling SuperLU was very painful, but it was worth it, it seems to be damn fast !
REVERT: fe244670af sparse module: added some documentation for the LLT solver
REVERT: 30326a9f50 sparse module: much much faster transposition code
REVERT: b3e06baf73 fix some documentation issues
REVERT: 54c515b7d5 Started the third chapter of the tutorial on linear solvers. It is only a first draft and I think it should be reorganized a bit in 2 parts: 1 - a compact table summarizing the main API and its use     (this is what would expect an "expert" user) 2 - a discussion about the various algorithm in Eigen to guide the newbies in linear algebra Currently I mixed the discussion with the API, but it is still better than nothing !
REVERT: d9fa3be670 add my copyright in MatrixBase.h
REVERT: faad5044fa Big API change in Cholesky module:  * rename Cholesky to LLT  * rename CholeskyWithoutSquareRoot to LDLT  * rename MatrixBase::cholesky() to llt()  * rename MatrixBase::choleskyNoSqrt() to ldlt()  * make {LLT,LDLT}::solve() API consistent with other modules
REVERT: a9339037c8 Solve the issue found by Timothy in solveTriangular:   => row-major rhs are now evaluated to a column-major      temporary before the computations. Add solveInPlace in Cholesky*
REVERT: b24e38e749 fix typos
REVERT: 3f0663535e note that norm2() is *not* an l2 norm as it is in other APIs
REVERT: f3606c1760 SVN_SILENT pendantic
REVERT: 672552221e Clear up the docs some.  I'd also suggest making Dynamic the default template parameter for matrices.
REVERT: d5537ebc95 very little fixes: cast literals to Scalar, rephrase some doc, add some const (maybe completely useless but at least doesn't hurt)
REVERT: 784abf13e2 Sparse module: refactoring of the cholesky factorization, now the backends are well separated from the default impl, etc.
REVERT: a790b22f7c Sparse module: enable support for incomplete cholesky factorization in CHOLMOD backend.
REVERT: 98610a047d Sparse module: removed some extra copies using markAsRValue()
REVERT: 3d6d95c271 Sparse module: add experimental support for TAUCS and CHOLMOD with:  * bidirectionnal mapping  * full cholesky factorization
REVERT: 430d23ee77 extend sparse unit tests with transpose and matrix product
REVERT: 536ef1257b Cleaned a bit the sparse cholesky code
REVERT: 50a9b6f661 Sparse module:  * several fixes (transpose, matrix product, etc...)  * Added a basic cholesky factorization  * Added a low level hybrid dense/sparse vector class    to help writing code involving intensive read/write    in a fixed vector. It is currently used to implement    the matrix product itself as well as in the Cholesky    factorization.
REVERT: 5042be67fa add EigenSolver::eigenvectors() method for non symmetric matrices. However, for matrices larger than 5, it seems there is constantly a quite large error for a very few coefficients. I don't what's going on, but that's certainely not due to numerical issues only. (also note that the test with the pseudo eigenvectors fails the same way)
REVERT: 3c9712d250 Fixes in Eigensolver:  * eigenvectors => pseudoEigenvectors  * added pseudoEigenvalueMatrix  * clear the documentation  * added respective unit test Still missing: a proper eigenvectors() function.
REVERT: 4ba0761b90 block(int,int)->segment
REVERT: 2c362be43c remove apidox_preprocessing script which is not used anymore
REVERT: 01a15bd481 resurrected root/Mainpage.dox, the directives are needed by kde's scripts
REVERT: 49c96e9c81 block => segment in the tutorial
REVERT: 95636fa820 small dox fixes
REVERT: fa85da9b1e * block() for vectors ---> segment() * documentation improvements, especially in quickstart guide
REVERT: bd05eb342e add normalization functions to Quaternion and fix compilation issue with custom types
REVERT: 1242913cea * fix issues with "long double" type (useful to enforce the use of x87 registers) * extend the documentation on "extending Eigen"
REVERT: 7bf522b09d move CommaInitializer out of MatrixBase and documment it (because of .finished())
REVERT: 1f14366f76 fix doc compilation
REVERT: a342d82ed4 * Quaternion: added dot product and angularDistance functions. The latter is               based on the former. * opengl_demo: makes IcoSphere better (vertices are instanciated only once) and                removed the generation of a big geometry for the fancy spheres...
REVERT: 5c8d484fbd opengl demo, now working:  - quaternion vs euler angles interpolation (though the Euler angle version looks a bit too bad)  - navigation using either a mapping from 2D screen coordinates to 3D points on a sphere    or the standard approach mapping mouse displacements as rotations around camera's axes.
REVERT: da2b6ec3ad various stuff in opengl demos such as a better model, stable trackball for the fly navigation mode, and started to put some GUI elements...
REVERT: 6045bbbfd4 fix a numerical instability in Quaternion::slerp
REVERT: a2e870ea61 add the missing templated version of block for sub-vectors
REVERT: 170631d68e 2 typos
REVERT: 64e78bc545 started a small OpenGL demo making use of Eigen's geometry features
REVERT: 8c3c8c430f fix stupid numerical stability issue in SVD::solve (though it is not yet as stable as LU with full pivoting)
REVERT: b7d3bc959f fix warning
REVERT: deedb8af2e * Extend a bit ParametrizedLine and move it to a separate file,   add unit-tests for it. * remove "using namespace std" in test/main.h such that the compilation   bug found today in SVD won't happen again.
REVERT: 986a02f58f Fix bugs reported by Timothy Hunter:  * CholeskyWithoutSqrt with 1x1 matrices  * .part<Diagonal>() Updated unit tests to handle these cases
REVERT: c4aecead94 Add coeff-wise comparisons to scalar operators. You can now write:    mat.cwise() < 2 instead of:    mat.cwise() < MatrixType::Constant(mat.rows(), mat.cols(), 2)
REVERT: 16bac7b1bb Add a Select expression in the Array module which mimics a coeff-wise ?: operator. Example:   mat = (mat.cwise().abs().cwise() < Ones()).select(0,mat); replaces all small values by 0. (the scalar version is "s = abs(s)<1 ? 0 : s")
REVERT: d6af82b946 trivial compilation fix in SVD
REVERT: cce66a2d14 Bugfix regarding alignent in Assign.h (updated map unit test to detect this bug) Anyway: LinearVectorization+CompleteUnrolling actually uses the InnerVectorization unrollers, so these two cases could be merged to a single one...
REVERT: 137ee50309 compilation fixes with MSVC
REVERT: 3ce63213c1 not yet
REVERT: 3090898c14 Solve a big issue with data alignment and dynamic allocation: * add a WithAlignedOperatorNew class with overloaded operator new * make Matrix (and Quaternion, Transform, Hyperplane, etc.) use it   if needed such that "*(new Vector4) = xpr" does not failed anymore. * Please: make sure your classes having fixed size Eigen's vector   or matrice attributes inherit WithAlignedOperatorNew * add a ei_new_allocator STL memory allocator to use with STL containers.   This allocator really calls operator new on your types (unlike GCC's   new_allocator). Example:   std::vector<Vector4f> data(10);   will segfault if the vectorization is enabled, instead use:   std::vector<Vector4f,ei_new_allocator<Vector4f> > data(10); NOTE: you only have to worry if you deal with fixed-size matrix types with "sizeof(matrix_type)%16==0"...
REVERT: 3b0a1805d5 resurrected sparse triangular solver
REVERT: 3e799a669b Extended sparse unit-test: nested blocks and InnerIterators. Block specialization for sparse matrices. InnerIterators for Blocks and fixes in CoreIterators.
REVERT: ddeb99dbba if EIGEN_NICE_RANDOM is defined, the random functions will return numbers with few bits left of the comma and for floating-point types will never return zero. This replaces the custom functions in test/main.h, so one does not anymore need to think about that when writing tests.
REVERT: f569dab5c6 remove the conceptualy broken "NoShear" transformation traits, and rename NonAfine => Projective, GenericAffine => Affine, NoScaling => Isometry
REVERT: d25205121a QTransform conversion and doc
REVERT: 70af97fc91 update of the geometry tutorial
REVERT: 461917c719 same thing with EIGEN_BINARY_DIR. Now the doc generation works from kdesupport.
REVERT: ebc7646b04 also use EIGEN_SOURCE_DIR here. according to grep this was the last place to change.
REVERT: fc6ee55568 fix cmakelists: wrong assumption on CMAKE_SOURCE_DIR. One can now use EIGEN_SOURCE_DIR for that use, guaranteed to point to eigen2/ directory.
REVERT: ccf62da3ca * Add Hyperplane::transform(Matrix/Transform) * Fix compilations with gcc 3.4, ICC and doxygen * Fix krazy directives (hopefully)
REVERT: 0832cd7af3 The discussed changes to Hyperplane, the ParametrizedLine class, and the API update in Regression...
REVERT: a7536b74f0 add uniform scale/prescale functions in Tranform
REVERT: db8cd48ee6 Split Rotation.h to Rotation2D.h and RotationBase.h, and more code factorization based on RotationBase. Added notes about the main aim of the Translation and Scaling classes.
REVERT: 2e3b43eccb * added a RotationBase class following the CRT pattern   This allow code factorization and generic template specialization   of functions * added any_rotation * {Translation,Scaling,Transform} products methods * rewrite of the actually broken ToRoationMatrix helper class to   a global ei_toRotationMatrix function.
REVERT: 053d795eed api.kde.org is still bugged, let's do another try...
REVERT: 056f4c41cd * rename TranformationKnowledge to TransformTraits * apply the same principle to extractRotation and fix it to   extract a rotation corresponding to a positive scaling
REVERT: 447132ebf1 update Transform::inverse() to take an optional argument stating whether the transformation is:    NonAffine, Affine (default), contains NoShear, contains NoScaling that allows significant speed improvements. If you like it, this concept could be applied to Transform::extractRotation (or to a more advanced decomposition function) and to Hyperplane::transformed() and maybe to some other places... e.g., I think a Transform::normalMatrix() function would not harm and warn user that the transformation of normals is not that trivial (I saw this mistake much too often)
REVERT: 503999910f Add Scaling and Translation class as discussed on ML, still missing: * handling Quaternion, AngleAxis and Rotation2D, 2 options here:  1- make all of them inheriting a common base class Rotation such that we can     have a single version of operator* for all the rotation type (they all get converted to a matrix)  2- write a version for all type (so 3 rotations types * 3 for Transform,Translation and Scaling) * real documentation
REVERT: 2105ed5b8c minor doc fixes
REVERT: 7f6fb750bb in doc for kde: fix project name and number, add the amssymb latex package
REVERT: 547c6a24d5 tweak root/Mainpage.dox to make it compatible with kde's doxygen.sh script plus some hacks to compile the examples from doxygen... Hopefully, api.kde.org/eigen2 will be beautiful by tomorrow....
REVERT: b1561adb43 typos in bench/
REVERT: 923e1c280f some hyperplane changes: - the coefficients are stored in a single vector - added transformation methods - removed Line* typedef since in 2D this is really an hyperplane   and not really a line... - HyperPlane => Hyperplane
REVERT: a54e40a53d doc and use sed to clean the class hierarchy instead of preprocessor directives.
REVERT: c69c9255f5 spelling + some krazy directives
REVERT: 0298032fcd remove CoreDeclaration from the documentation
REVERT: eacbe27bd3 * Add an HyperPlane class in the Geometry module   with its respective unit-test.   Feel free to discuss the API on the ML. * Some bugfix in unitOrthogonal found by the hyperplane unit test.
REVERT: a8764916b6 CoreDeclarations was removed
REVERT: 353479da62 * temporarily remove doxygen customization, we'll see if that fix api.kde.org   but I no hope, that would be too simple ! * added Rotation2D typedefs * remove CoreDeclarations header file
REVERT: a35e457525 doc + quick bug fix in Matrix ctor
REVERT: c695288c09 Missing inline keywords in AltiVec/PacketMath were making Avogadro fail to compile (duplicate symbols).
REVERT: 59169c2235 * missing cmake make_directory command * show svn revision number if available * fix warnings about unused argc/argv
REVERT: ef797a8ce7 remove double ;
REVERT: fa2b3cb615 improvements in geometry tutorial
REVERT: e71cb40925 #undef vector after including altivec.h
REVERT: 2cd661a7e5 replace vector by __vector to prevent conflict with std::vector
REVERT: d4f3d6480a * remove debug code commited by mistake in Assign * keep going on the doc: added a short geometry tutorial
REVERT: e676ae3fc2 * move memory related stuff to util/Memory.h * clean ugly doxygen inheritence of expressions * keep improving the documentation... slowly !
REVERT: c0f8e90aff BTL:added trisolve action file
REVERT: 3b8ab965a7 * patch from Konstantinos Margaritis: bugfix in Altivec version of ei_pdiv   and various cleaning in Altivec code. Altivec vectorization have been re-enabled   in CoreDeclaration * added copy constructors in non empty functors because I observed weird behavior with   std::complex<>
REVERT: 1040d5d4a5 various updates in BTL
REVERT: 17f6028270 bugfix in test/packetmath.h
REVERT: c85a1608cc Various doc improvements... including a owl in the API doc header.
REVERT: bc867b1ee8 Shut up two bogus gcc 4.3 warnings
REVERT: f20f5222cf Fix a bug discovered in Avogadro: the AngleAxis*Matrix and the newer AngleAxis*Vector products were wrong because they returned the product _expression_    toRotationMatrix()*other; and toRotationMatrix() died before that expression would be later evaluated. Here it would not have been practical to NestByValue as this is a whole matrix. So, let them simply evaluate and return the result by value.
REVERT: 3005f6ac01 arf, of course a meta-selector was required here
REVERT: f4eac1435f allow constructing Transform from small-matrix (like fromPosOrientScale but with trivial Pos and Scale)
REVERT: f06961f4ce argh, gael you're more clever than i remembered. diagonal product is optimized. so, i almost revert, just reordering to reduce # of load/store.
REVERT: 8f80649c35 optimization: spare the 3x3 matrix product in fromPositionOrientationScale
REVERT: 2968f9805f add AngleAxis::operator*(const Vector3&)
REVERT: 3df7b12611 add data() methods to Transform
REVERT: b4d251e1c1 forgot to install Regression public header
REVERT: b0d366b22b Documentation: fill the placeholders, add a custom CSS file, add a reference to the tutorial in the main page.
REVERT: 15b37bdb9a Rename someOrthogonal to unitOrthogonal. Fix a bug in it, with dyn-size vectors of size <=3. Update doc and test to reflect that it always returns a unit vector.
REVERT: 32167bf526 nothing to see here
REVERT: d6d5a2dbc8 bugfix in Product and ei_L2_block_traits
REVERT: dac22cdda2 temporary fix of the pèrevious commit
REVERT: e6dbca7d18 * split Meta.h to Meta.h (generic meta programming) and XprHelper.h (relates to eigen mechanism) * added a meta.cpp unit test * EIGEN_TUNE_FOR_L2_CACHE_SIZE now represents L2 block size in Bytes (whence the ei_meta_sqrt...) * added a CustomizeEigen.dox page * added a TOC to QuickStartGuide.dox
REVERT: fdba55957a * add documentation of the cool (?) "print with format" feature * move the ioformat.cpp test to a documentation example * rename IoFormat => IOFormat
REVERT: 8507b869e8 need to commit this file before changing its name
REVERT: 6e375f777c cmake fix
REVERT: 60e4afd47e forgot to commit a file
REVERT: d06ae27edf * remove LargeBit and related stuff * replaced the Flags template parameter of Matrix by StorageOrder   and move it back to the 4th position such that we don't have to   worry about the two Max* template parameters * extended EIGEN_USING_MATRIX_TYPEDEFS with the ei_* math functions
REVERT: 4246c96fca * bug fixes in:  Dot, generalized eigen problem, singular matrix detetection in Cholesky * fix all numerical instabilies in the unit tests, now all tests can be run 2000 times   with almost zero failures.
REVERT: 5c3457fdd6 compile fix for code like Vector3d::Random().x()
REVERT: 09a37d19c1 extended cwise unit tests to cover all Cwise API
REVERT: ab5442d805 bugfix from Timothy Hunter s/ei_div/ei_pdiv
REVERT: 9031f5c998 s/Affine/Linear, thanks to Thomas Vaughan
REVERT: 7d939597ef * bugfix in SolveTriangular found by Timothy Hunter (did not compiled for very small fixed size matrices) * bugfix in Dot unroller * added special random generator for the unit tests and reduced the tolerance threshold by an order of magnitude   this fixes issues with sum.cpp but other tests still failed sometimes, this have to be carefully checked...
REVERT: 69d5d50622 patch from Konstantinos Margaritis: Altivec vectorization is resurrected !
REVERT: 7e3e9a27f8 added SparseSetter doc
REVERT: 30abfa0e91 fix a number of compiler errors and warnings with gcc 4.3. There was a missing #include<algorithm> so I'm not sure how it compiled at all for you :)
REVERT: e4f107cdc0 Reimplement fitHyperplane such that the fit is done in a total LS sense (use eigen decomposition). Added optional feedback on the stability of the actual fit (think about fitting a 3D plane on data lying on a line...)
REVERT: ac6c386eef - remove the ASM macro as in fact Gael had been removing all the remaining   asm("...") from the code while fixing MSVC compat (so your changes crossed   one another). - move the pragma warning to CoreDeclarations, it's the right place to do early   platform checks.
REVERT: e9fb941b5c extend sparse unit test and more bugfix, major todo: finilize the SparseSetter
REVERT: 049027dc4e *patch by Daniel Gomez:  - bugfix in SparseMatrix  - add a sparse unit test * renamed Transform::affine => linear
REVERT: f098b40e51 patch by Patrick Spendrin: fix MSVC compatibility
REVERT: ace1d8d67e disable the vectorization of div for AltiVec
REVERT: e08b77cc4d * Add the possibility to customize the output of matrices, e.g.:    IoFormat OctaveFmt(4, AlignCols, ", ", ";\n", "", "", "[", "]");    cout << mat.format(OctaveFmt);   The first "4" is the precision.   Documentation missing. * Some compilation fixes
REVERT: bee8f35833 add resize() methods to Map, doing nothing but assertions. This is useful in Krita where I call lu().solve() with a Map object as result. As solve() resizes the result, this was needed.
REVERT: d6adfdb1ce added Sub matrices section and a couple of cross ref to the API doc
REVERT: 4f4e9f6950 Add a packetmath unit test, re-enable the comma-initializer unit test, and bug fix in PacketMath/SSE
REVERT: 8a2790cbaa Fix bugs in Sum.h, add unit-test
REVERT: c8157fbe28 * Fix CMakeLists.txt issue with SVD * Fix on stack memory allocation issues
REVERT: a06971d6f9 minor bugfix found using gcc-4.0
REVERT: 0de61ce816 doc fixes, and extended Basic Linear Algebra and Reductions sections
REVERT: 8697e67722 some updated of the quick start guide
REVERT: 90b86b93d4 * it's \returns not \Returns * add some explanations in the typedefs page * expand a bit the new QuickStartGuide. Some placeholders (not a pb since it's not even yet linked to from other pages). The point I want to make is that it's super important to have fully compilable short programs (even with compile instructions for the first one) not just small snippets, at least at the beginning. Let's start with examples of compilable programs.
REVERT: ae6966506a fix a few typos
REVERT: e0ea0262b1 * Added .all() and .any() members to PartialRedux * Bug fixes in euler angle snippet, Assign and MapBase * Started a "quick start guide" (draft state)
REVERT: efc2b25c65 missing SVD header file
REVERT: 7a68b0a323 Added a SVD module:  - the decompostion code has been adfapted from JAMA  - handles non square matrices of size MxN with M>=N  - does not work for complex matrices  - includes a solver where the parts corresponding to zero singular values are set to zero
REVERT: 76689ee5eb * fix bug found by Boudewijn Rempt: no CMakeLists in arch/ subdir * fix warning in SolveTriangular
REVERT: edf625e975 Various compilation fixes for MSVC 9. All tests compile but some still fail at runtime in ei_aligned_free() (even without vectorization).
REVERT: 9352e6abd1 * doc improvements in Cwise and PartialRedux:   - 33 new snippets   - unfuck doxygen output in Cwise (issues with function macros)   - more see-also links from outside, making Cwise more discoverable * rename matrixNorm() to operatorNorm(). There are many matrix norms   (the L2 is another one) but only one is called the operator norm.   Risk of confusion with keyword operator is not too scary after all.
REVERT: 527590f320 * revert the previous interface change in solveTriangular (pointer vs reference) * remove the cast operators in the Geometry module: they are replaced by constructors   and new operator= in Matrix * extended the operations supported by Rotation2D * rewrite in solveTriangular:   - merge the Upper and Lower specializations   - big optimization of the path for row-major triangular matrices
REVERT: 71b5dc7a82 only use alloca on linux. Use malloc on other platforms. Needed for mingw compatibility.
REVERT: 97181242a5 *add operator()(int) for vectors, synonymous to operator[](int).  I don't see any reason not to allow it, it doesn't add much code, and  it makes porting from eigen1 easier. *expand tests/basicstuff to first test coefficient access methods
REVERT: 677be65d89 fix compilation of unit-tests when cmake is run on kdesupport/ parent directory
REVERT: 845306aae3 *make Eigen2 install to prefix/include/eigen2/Eigen *Add FindEigen2.cmake module in kdelibs
REVERT: 6619aa6146 bugfix in CholeskyWithoutSquareRoot::solve found by Timothy Hunter
REVERT: 2383764d82 updated tutorial
REVERT: daba816ade Copy eigen2 into kdesupport, alongside eigen1 for now, co-installable, will remove eigen1 once no code uses it anymore (soon).
REVERT: 0e6b25d952 change solveTriangularInPlace() to take a pointer as input (as discussed on IRC). extended the documentation of the triangular solver.
REVERT: d9b010f2b8 last small fixes, this is alpha6, eigen2 is now ready for eigen1 apps to port to.
REVERT: c88540e557 Complete LU documentation
REVERT: abc4c5674f * add Regression module, from eigen1, improved, with doc and unit-test. * fix .normalized() so that Random().normalized() works; since the return type became complicated to write down i just let it return an actual vector, perhaps not optimal. * add Sparse/CMakeLists.txt. I suppose that it was intentional that it didn't have CMakeLists, but in <=2.0 releases I'll just manually remove Sparse.
REVERT: 5daa502d5e Renamed allowAligned() => forceAligned() and added the constants ForceAligned and AsRequested for the PacketAccess parameter of MapBase. Updated respective documentation.
REVERT: 80831a3b98 renamed inverseProduct => solveTriangular
REVERT: c486757bca * add LU unit-test. Seems like we have very good numerical stability! * some cleanup, and grant me a copyright line on the determinant test.
REVERT: f618bdbb20 * Big change in Block and Map:   - added a MapBase base xpr on top of which Map and the specialization     of Block are implemented   - MapBase forces both aligned loads (and aligned stores, see below) in expressions     such as "x.block(...) += other_expr" * Significant vectorization improvement:  - added a AlignedBit flag meaning the first coeff/packet is aligned,    this allows to not generate extra code to deal with the first unaligned part  - removed all unaligned stores when no unrolling  - removed unaligned loads in Sum when the input as the DirectAccessBit flag * Some code simplification in CacheFriendly product * Some minor documentation improvements
REVERT: 5ab9590756 * reimplement the general case of inverse() on top of LU. Advantages:   - removes much code   - 2.5x faster (even though LU uses complete pivoting contrary to what inverse used to do!)   - there _were_ numeric stability problems with the partial pivoting approach of inverse(), with 200x200 matrices inversion failed almost half of the times (overflow). Now these problems are solved thanks to complete pivoting.
REVERT: 1459636eaf *implement LU solver (solves any rectangular system) *in test/CMakeLists : modify EI_ADD_TEST so that 2nd argument is additional compiler flags. used to add -O2 to test_product_large so it doesn't take forever.
REVERT: fc965ee7e3 * fix bug in SwapWrapper : store the wrapped expression by reference * optimize setIdentity: when the matrix is large enough it is better to   setZero() and overwrite the diagonal * start of LU solver, disabled for now
REVERT: 35f7658eb5 forgot to remove that old code
REVERT: 228f7ac694 - add kernel computation using the triangular solver - take advantage of the fact that our LU dec sorts the eigenvalues of U in decreasing order - add meta selector in determinant
REVERT: 2db8d578f5 LU: remove partial-pivoting path (moderately useful since it's does not allow to easily get the rank), fix a bug (which could have been triggered by matrices having coefficients of very different magnitudes). Part: add an assert to prevent hard to find bugs Swap: update comments
REVERT: e6adeedd76 New implementation of Swap as discussed, reusing Assign. Makes LU run 10% faster overall.
REVERT: 82ec25d1a2 introduce copyCoeff and copyPacket methods in MatrixBase, used by Assign, in preparation for new Swap impl reusing Assign code. remove last remnant of old Inverse class in Transform.
REVERT: 1827b9a3a0 Add partial pivoting runtime option to LU.
REVERT: 2613345bd4 further big perf improvement in Inverse
REVERT: 0bac2a4f48 big performance improvement in inverse and LU
REVERT: 6863dfefa0 Add a LU decomposition action in BTL and various cleaning in BTL. For instance all per plot settings have been moved to a single file, go_mean now takes an optional second argument "tiny" to generate plots for tiny matrices, and output of comparison information wrt to previous benchs (if any).
REVERT: cf51832ac4 * LU decomposition, supporting all rectangular matrices, with full pivoting for better numerical stability. For now the only application is determinant. * New determinant unit-test. * Disable most of Swap.h for now as it makes LU fail (mysterious). Anyway Swap needs a big overhaul as proposed on IRC. * Remnants of old class Inverse removed. * Some warnings fixed.
REVERT: 266fcf2f89 fix two perf issues in product. fix positive definite test in Cholesky. remove #include <cstring> in CoreDeclaration.
REVERT: af01ae402b fix compile errors with gcc 4.3: unresolved func call to ei_cache_friendly_product, and undeclared memcpy
REVERT: 481e4b31c8 Added a ei_palign function align a packet from two others. This allows much faster code dealing with unligned as in the updated matrix-vector product functions.
REVERT: 8d6305f2f4 Optimizations:  * faster matrix-matrix and matrix-vector products (especially for not aligned cases)  * faster tridiagonalization (make it using our matrix-vector impl.) Others:  * fix Flags of Map  * split the test_product to two smaller ones
REVERT: 4859166bb5 removed the packet specializations of some functors (GCC generates better code without those "optimizations")
REVERT: 8e7387561f Several compilation fixes for MSVC and NVCC, basically: - added explicit enum to int conversion where needed - if a function is not defined as declared and the return type is "tricky"   then the type must be typedefined somewhere. A "tricky return type" can be:   * a template class with a default parameter which depends on another template parameter   * a nested template class, or type of a nested template class
REVERT: 81d559c1ae BTL: - added tridiagonalization and hessenberg decomposition bench      - added GOTO library
REVERT: 2947240aeb fix some internal asserts in CacheFrinedlyProduct
REVERT: 2c95a57e39 forgot to include this file in previous commit
REVERT: d6187456b8 * updated benchmark files according to recent renamings * various improvements in BTL including trisolver and cholesky bench
REVERT: 3bcf76b0aa Fix a couple issues introduced in the previous commit: * removed DirectAccessBit from Part * use a template specialization in inverseProduct() to transform a Part xpr to a Flagged xpr
REVERT: 432e3b554c * Rewrite the triangular solver so that we can take advantage of our efficient matrix-vector products:     => up to 6 times faster ! * Added DirectAccessBit to Part * Added an exemple of a cwise operator * Renamed perpendicular() => someOrthogonal() (geometry module) * Fix a weired bug in ei_constant_functor: the default copy constructor did not copy   the imaginary part when the single member of the class is a complex...
REVERT: 8f45fbb6c7 bugfix in some internal asserts of CacheFriendlyProduct
REVERT: 1a1ed25937 update the inverse test a little make use of static asserts in Map fix 2 warnings in CacheFriendlyProduct: unused var 'Vectorized'
REVERT: 9751f6971f * Fix some complex alignment issues in the cache friendly matrix-vector products. * Minor update of the cores of the Cholesky algorithms to make them more friendly   wrt to matrix-vector products => speedup x5 !
REVERT: 8d8014f487 Add .perpendicular() function in Geometry module (adapted from Eigen1) Documentation:  * add an overview for each module.  * add an example for .all() and Cwise::operator<
REVERT: b92de61d8b Fix compilation issues with icc and g++ < 4.1. Those include:  - conflicts with operator * overloads  - discard the use of ei_pdiv for interger    (g++ handles operators on __m128* types, this is why it worked)  - weird behavior of icc in fixed size Block() constructor complaining    the initializer of m_blockRows and m_blockCols were missing while    we are in fixed size (maybe this hide deeper problem since this is a    recent one, but icc gives only little feedback)
REVERT: bafac9e50d * Merge Extract and Part to the Part expression.   Renamed "MatrixBase::extract() const" to "MatrixBase::part() const" * Renamed static functions identity, zero, ones, random with an upper case   first letter: Identity, Zero, Ones and Random.
REVERT: 60f677cb7f Various documentation improvements, in particualr in Cholesky and Geometry module. Added doxygen groups for Matrix typedefs and the Geometry module
REVERT: e6885b20cb Add cholesky's members to MatrixBase Various documentation improvements including new snippets (AngleAxis and Cholesky)
REVERT: a118b5fadd Added an automatically generated list of selected examples in the documentation. Added the custom gemetry_module tag, and use it.
REVERT: db83ae593d Added MatrixBase::Unit*() static function to easily create unit/basis vectors. Removed EulerAngles, addes typdefs for Quaternion and AngleAxis, and added automatic conversions from Quaternion/AngleAxis to Matrix3 such that:  Matrix3f m = AngleAxisf(0.2,Vector3f::UnitX) * AngleAxisf(0.2,Vector3f::UnitY); just works.
REVERT: 53b68388c3 Complete rewrite of partial reduction according to mailing list discussions.
REVERT: 13c6233018 add some static asserts, use them, fix gcc 4.3 warning in Product.h.
REVERT: 3e5d092bc2 * Fix a couple of issues related to the recent cache friendly products * Improve the efficiency of matrix*vector in unaligned cases * Trivial fixes in the destructors of MatrixStorage * Removed the matrixNorm in test/product.cpp (twice faster and   that assumed the matrix product was ok while checking that !!)
REVERT: 52c0b0997c * big rework of Inverse.h:   - remove all invertibility checking, will be redundant with LU   - general case: adapt to matrix storage order for better perf   - size 4 case: handle corner cases without falling back to gen case.   - rationalize with selectors instead of compile time if   - add C-style computeInverse() * update inverse test. * in snippets, default cout precision to 3 decimal places * add some cmake module from kdelibs to support btl with cmake 2.4
REVERT: 60b02fd0cc trivial fix in EulerAngles constructor
REVERT: 8cb9296d52 enhancements of the plot generator: - removed the ugly X11 and PNG gnuplots terminals - use enhanced postscript terminal - use imagemagick to generate the png files (with compression) - disable the fortran impl by default since it is as meaningless as a "C impl" - update line settings
REVERT: e72ca71e2a Optimization: added super efficient rowmajor * vector product (and vector * colmajor). It basically performs 4 dot products at once reducing loads of the vector and improving instructions scheduling. With 3 cache friendly algorithms, we now handle all product configurations with outstanding perf for large matrices.
REVERT: 94a3f89278 SVN_SILENT trivial fix
REVERT: fd35dd7129 fix a cmake issue in FindTvmet and FindMKL
REVERT: 5a54d0e078 another occurence of that little cmake fix
REVERT: cbbfec901d * Optimization: added a specialization of Block for xpr with DirectAccessBit * some simplifications and fixes in cache friendly products
REVERT: 8bb7650014 little cmake fix
REVERT: 60d159d4c6 disable MKL check and fortran for cmake <2.6
REVERT: a197351180 various improvements of the plot generator in BTL
REVERT: 1209955a4d various minor updates in the benchmark suite like non inlining of some functions as well as the experimental C code used to design efficient eigen's matrix vector products.
REVERT: 1fcb836751 Add a *very efficient* evaluation path for both col-major matrix * vector and vector * row-major products. Currently, it is enabled only is the matrix has DirectAccessBit flag and the product is "large enough". Added the respective unit tests in test/product/cpp.
REVERT: b99a28bc05 resurrected tvmet, added mt4, intel's MKL and handcoded vectorized backends in the benchmark suite
REVERT: b27dabfe52 some performance fixes in Assign.h reported by Gael. Some doc update in Cwise.
REVERT: 5196135ddb in BTL: a specific bench/action can be selected at runtime, e.g.:   BTL_CONFIG="-a ata" ctest -V -R eigen   run the all benchmarks having "ata" in their name for all   libraries matching the regexp "eigen"
REVERT: 22ce3bdb9b * added optimized paths for matrix-vector and vector-matrix products   (using either a cache friendly strategy or re-using dot-product   vectorized implementation) * add LinearAccessBit to Transpose
REVERT: 292e6b7649 raah, results were corrupted by overflow. Now slice vectorization is about a +25% speedup which is still nice as i expected zero or even negative benefit.
REVERT: a4ca31d119 add benchmark for slice vectorization... expected it to be little or zero benefit... turns out to be 20x speedup. Something is wrong.
REVERT: 4beba324e6 imported a reworked version of BTL (Benchmark for Templated Libraries). the modifications to initial code follow: * changed build system from plain makefiles to cmake * added eigen2 (4 versions: vec/novec and fixed/dynamic), GMM++, MTL4 interfaces * added "transposed matrix * vector" product action * updated blitz interface to use condensed products instead of hand coded loops * removed some deprecated interfaces * changed default storage order to column major for all libraries * new generic bench timer strategy which is supposed to be more accurate * various code clean-up
REVERT: b55df3a3b3 * added a lazyAssign overload skipping .lazy() such that c = (<xpr>).lazy() such that   lazyAssign overloads of <xpr> are automatically called (this also reduces assign instansiations)
REVERT: 1a6e5d40de I forgot that the previous commit needed minor changes outside the bench folder
REVERT: 275f3ba20e add Cholesky and eigensolver benchmark
REVERT: 392a5d2ee1 - many updates after Cwise change - fix compilation in product.cpp with std::complex - fix bug in MatrixBase::operator!=
REVERT: 231b637e39 the big Array/Cwise rework as discussed on the mailing list. The new API can be seen in Eigen/src/Core/Cwise.h.
REVERT: 721d0739bf fix issues in previously added additionnal product tests
REVERT: 6015b7a2d1 * do the ActualPacketAccesBit change as discussed on list * add comment in Product.h about CanVectorizeInner * fix typo in test/product.cpp
REVERT: cc688e1a52 * fix compilation issue in Product * added some tests for product and swap * overload .swap() for dynamic-sized matrix of same size
REVERT: c291c59804 * resurected Flagged::_expression used to optimize m+=(a*b).lazy()   (equivalent to the GEMM blas routine) * added a GEMM benchmark
REVERT: d2747b5136 * fix error in divergence test, now it is even faster * add comments in render() in case anyone ever reads that :P
REVERT: c8678f1628 interleaved rendering balances the load better
REVERT: ab2edc9591 * multi-threaded rendering * increased number of iterations, with more iterations done before testing divergence. results in x2 speedup from vectorization.
REVERT: 2ec740b64b - use double precision to store the position / zoom / other stuff - some temporary fix to get a +50% improvement from vectorization until   we have vectorisation for comparisons and redux
REVERT: 3fc440b2ea * added an in-place version of inverseProduct which   might be twice faster fot small fixed size matrix * added a sparse triangular solver (sparse version   of inverseProduct) * various other improvements in the Sparse module
REVERT: 6238216d67 fix little bug in computation of max_iter
REVERT: a0598e895b improve greatly mandelbrot demo: - much better coloring - determine max number of iterations and choice between float and double   at runtime based on zoom level - do draft renderings with increasing resolution before final rendering
REVERT: 1d97a4d3ef * added innerSize / outerSize functions to MatrixBase * added complete implementation of sparse matrix product   (with a little glue in Eigen/Core) * added an exhaustive bench of sparse products including GMM++ and MTL4   => Eigen outperforms in all transposed/density configurations !
REVERT: 7402ef8eaa add mandelbrot demo
REVERT: dd813c3141 fix breakage from my last commit
REVERT: c22daff856 * update CMakeLists, only build instantiations if TEST_LIB is defined * allow default Matrix constructor in dynamic size, defaulting to (1, 1), this is convenient in mandelbrot example.
REVERT: 0354301dc2 fix a couple of issues in the new Map.h
REVERT: 2de1ef5bdf * rework Map, allow vectorization * rework PacketMath and DummyPacketMath, make these actual template specializations instead of just overriding by non-template inline functions * introduce ei_ploadt and ei_pstoret, make use of them in Map and Matrix * remove Matrix::map() methods, use Map constructors instead.
REVERT: 259999f580 various work on the Sparse module: * added some glue to Eigen/Core (SparseBit, ei_eval, Matrix) * add two new sparse matrix types:    HashMatrix: based on std::map (for random writes)    LinkedVectorMatrix: array of linked vectors    (for outer coherent writes, e.g. to transpose a matrix) * add a SparseSetter class to easily set/update any kind of matrices, e.g.:    { SparseSetter<MatrixType,RandomAccessPattern> wrapper(mymatrix);      for (...) wrapper->coeffRef(rand(),rand()) = rand(); } * automatic shallow copy for RValue * and a lot of mess ! plus: * remove the remaining ArrayBit related stuff * don't use alloca in product for very large memory allocation
REVERT: 6e81bedda5 change derived classes methods from "private:_method()" to "public:method()" i.e. reimplementing the generic method() from MatrixBase. improves compilation speed by 7%, reduces almost by half the call depth of trivial functions, making gcc errors and application backtraces nicer...
REVERT: 7bb17e5a99 * add bench/benchVecAdd.cpp by Gael, fix crash (ei_pload on non-aligned) * introduce packet(int), make use of it in linear vectorized paths   --> completely fixes the slowdown noticed in benchVecAdd. * generalize coeff(int) to linear-access xprs * clarify the access flag bits * rework api dox in Coeffs.h and util/Constants.h * improve certain expressions's flags, allowing more vectorization * fix bug in Block: start(int) and end(int) returned dyn*dyn size * fix bug in Block: just because the Eval type has packet access   doesn't imply the block xpr should have it too.
REVERT: 573e0e47b1 make use of ei_pmadd in dot-product: will further improve performance on architectures having a packed-mul-add assembly instruction.
REVERT: b7c9f8badf * vectorize dot product, copying code from sum. * make the conj functor vectorizable: it is just identity in real case,   and complex doesn't use the vectorized path anyway. * fix bug in Block: a 3x1 block in a 4x4 matrix (all fixed-size)   should not be vectorizable, since in fixed-size we are assuming   the size to be a multiple of packet size. (Or would you prefer   Vector3d to be flagged "packetaccess" even though no packet access   is possible on vectors of that type?) * rename:   isOrtho for vectors ---> isOrthogonal   isOrtho for matrices ---> isUnitary * add normalize() * reimplement normalized with quotient1 functor
REVERT: b2d13c3634 * add ei_pdiv intrinsic, make quotient functor vectorizable * add vdw benchmark from Tim's real-world use case
REVERT: ba4e6820e8 optimize linear vectorization both in Assign and Sum (optimal amortized perf)
REVERT: b04afa481f add experimental code for sparse matrix:  - uses the common "Compressed Column Storage" scheme  - supports every unary and binary operators with xpr template    assuming binaryOp(0,0) == 0 and unaryOp(0) = 0 (otherwise a sparse    matrix doesnot make sense)  - this is the first commit, so of course, there are still several shorcommings !
REVERT: 060df2a196 quick temporary fix for a perf issue we just identified with vectorization.... now the sum benchmark runs 3x faster with vectorization than without.
REVERT: 13739c1840 add benchmark for sum
REVERT: 43284fddf2 split sum away from redux and vectorize it. (could come back to redux after it has been vectorized, and could serve as a starting point for that) also make the abs2 functor vectorizable (for real types).
REVERT: 64563518da * implement slice vectorization. Because it uses unaligned   packet access, it is not certain that it will bring a performance   improvement: benchmarking needed. * improve logic choosing slice vectorization. * fix typo in SSE packet math, causing crash in unaligned case. * fix bug in Product, causing crash in unaligned case. * add TEST_SSE3 CMake option.
REVERT: b53d230e5a forgot to add the unit test array.cpp
REVERT: 720b85166d work on rotations in the Geometry module:  - convertions are done trough constructors and operator=  - added a EulerAngles class
REVERT: ec7c3523b1 Override MatrixBase::eval() since matrices don't need to be evaluated, it is enough to just read them.
REVERT: c33099ad14 * added a pseudo expression Array giving access to:    - matrix-scalar addition/subtraction operators, e.g.:        m.array() += 0.5;    - matrix/matrix comparison operators, e.g.:       if (m1.array() < m2.array()) {} * fix compilation issues with Transform and gcc < 4.1
REVERT: fdbdfee2d2 move "enum" back to "const int" int ei_assign_impl: in fact, casting enums to int is enough to get compile time constants with ICC.
REVERT: 1c1ef8d7a0 * more cleaning in Product * make Matrix2f (and similar) vectorized using linear path * fix a couple of warnings and compilation issues with ICC and gcc 3.3/3.4   (cannot get Transform compiles with gcc 3.3/3.4, see the FIXME)
REVERT: 9ff27d9fe9 * refactoring of Product:   * use ProductReturnType<>::Type to get the correct Product xpr type   * Product is no longer instanciated for xpr types which are evaluated   * vectorization of "a.transpose() * b" for the normal product (small and fixed-size matrix)   * some cleanning * removed ArrayBase
REVERT: 73897a60bc fix two bugs dicovered by the previous commit.
REVERT: 02c6bf4d36 * Block: row and column expressions in the inner direction   now have the Like1D flag.
REVERT: e4dcea3db2 aaargh.
REVERT: b110740715 fix bug in computation of unrolling limit: div instead of mul
REVERT: 62f9f096a9 * Big rework of Assign.h: ** Much better organization ** Fix a few bugs ** Add the ability to unroll only the inner loop ** Add an unrolled path to the Like1D vectorization. Not well tested. ** Add placeholder for sliced vectorization. Unimplemented.
REVERT: 40f58f4efc Added an extensible mechanism to support any kind of rotation representation in Transform via the template static class ToRotationMatrix. Added a lightweight AngleAxis class (similar to Rotation2D).
REVERT: 024c510e6f * split Product to a DiagonalProduct template specialization   to optimize matrix-diag and diag-matrix products without   making Product over complicated. * compilation fixes in Tridiagonalization and HessenbergDecomposition   in the case of 2x2 matrices. * added an Orientation2D small class with similar interface than Quaternion   (used by Transform to handle 2D and 3D orientations seamlessly) * added a couple of features in Transform.
REVERT: 338881cff9 Started a Transform class in the Geometry module to represent homography. Fix indentation in Quaternion.h
REVERT: 4d1bb3cacb * Added a generalized eigen solver for the selfadjoint case.   (as new members to SelfAdjointEigenSolver)   The QR module now depends on Cholesky. * Fix Transpose to correctly preserve the *TriangularBit.
REVERT: d5e9f93165 Add QR and Cholesky module instantiations in the lib. To try it with the unit tests set the cmake variable TEST_LIB to ON.
REVERT: 81d7f8f0c8 * even though the _Flags default to the corrected value, still correct   them in the ei_traits, so that they're guaranteed even if the user   specified his own non-default flags (like before).
REVERT: 297827e160 * make the _Flags template parameter of Matrix default to the corrected   flags. This ensures that unless explicitly messed up otherwise,   a Matrix type is equal to its own Eval type. This seriously reduces   the number of types instantiated. Measured +13% compile speed, -7%   binary size.
REVERT: 995ab47775 Added a Hessenberg decomposition class for both real and complex matrices. This is the first step towards a non-selfadjoint eigen solver. Notes:  - We might consider merging Tridiagonalization and Hessenberg toghether ?  - Or we could factorize some code into a Householder class (could also be shared with QR)
REVERT: fca0270336 * rewrite of the QR decomposition:   - works for complex   - allows direct access to the matrix R * removed the scale by the matrix dimensions in MatrixBase::isMuchSmallerThan(scalar)
REVERT: 1df8a01ac8 * remove Cross product expression: MatrixBase::cross() now returns a temporary   which is even better optimized by the compiler. * Quaternion no longer inherits MatrixBase. Instead it stores the coefficients   using a Matrix<> and provides only relevant methods.
REVERT: 15855e3626 * move some compile time "if" to their respective unroller (assign and dot) * fix a couple of compilation issues when unrolling is disabled * reduce default unrolling limit to a more reasonable value
REVERT: e7e33d6028 Updated fuzzy comparisons to use L2 norm as all my experiments tends to show L2 norm works very well here. (the legacy implementation is still available via a preprocessor token  to allow further experiments if needed...)
REVERT: 5d381fb6a4 fix a compilation issue in non debug mode
REVERT: 6d42da43c7 fix some compile errors with gcc 4.3, some warnings, some documentation
REVERT: c4f60faf05 add an optimized path for the tridiagonalization of a 3x3 matrix. (useful for plane fitting, and covariance analysis of 3D data)
REVERT: 47376a4157 added a static assertion mechanism (see notes in Core/util/StaticAssert.h for details)
REVERT: e4177b933d hack to to make the nomalloc unit test compiles with -pedantic
REVERT: ffb9bd95ff update of the eigeinsolver unit test to check complex
REVERT: 6debc0acba fix eigenvectors computations :)
REVERT: 221a6a592c * add CommaInitializer::finished to allow the use of (Matrix3() << v0, v1, v2).finished()   as an argument of a function. Other possibilities for the name could be "end" or "matrix" ?? * various update in Quaternion, in particular I added a lot of FIXME about the API options,   these have to be discussed and fixed.
REVERT: fd3d071338 improved Quaternion class:  - Euler angles and angle axis conversions,  - stable spherical interpolation  - documentation  - update the respective unit test
REVERT: e4c7f79d70 fix building of examples
REVERT: a320f59311 add a geometry unit test and fix a couple of typo in Quaternion.h
REVERT: b86a38c803 - get the doc of the enums in MatrixBase right - get the doc of the flags in Constants right - finally give up with SEPARATE_MEMBER_PAGES: it triggers too big   Doxygen bugs, and produces too many small pages. So we have one   huge page for MatrixBase at currently 300kb and going up, so the   solution especially for users with low bandwidth will be to provide   an archive of the html documentation.
REVERT: 4144188392 * start of the Geometry module with a cross product and quaternion expressions   (haven't tried them yet) * applied the meta selector rule to MatrixBase::swap()
REVERT: acbc63ba21 big changes in Doxygen configuration; work around bug with doxygen parsing of initialized enum values showing the last word the initializer instead of the actual enum value's name; add some more docs.
REVERT: 02bcd7a9f3 work around Doxygen bug triggered by r814874, which caused many classes to disappear from the docs.
REVERT: 18fbbdc2ff doc improvements: fix linking in Mainpage.dox, improved Doxyfile.in
REVERT: f53b6a0ba1 added unit tests for sizeof and dynamic memory allocation
REVERT: b33310da6d Added the computation of eigen vectors in the symmetric eigen solver. However the eigen vectors are not correct yet, but I really cannot find the problem.
REVERT: 423d037d88 since m*m.adjoint() is positive, so are its eigenvalues, so no need for cwiseAbs()
REVERT: b4ff1e8b3e - add MatrixBase::eigenvalues() convenience method - add MatrixBase::matrixNorm(); in the non-selfadjoint case, we reduce to the   selfadjoint case by using the "C*-identity" a.k.a. 	norm of x = sqrt(norm of x * x.adjoint())
REVERT: 5014e71429 fix a couple of issues making the eigensolver test compile and run without aborting on an assert. Had to fix a stupid bug in Block -- very strange we hadn't hit it before.
REVERT: 03f64457ef Rewrite from scratch of the eigen solver for symmetric matrices which now supports selfadjoint matrix. The implementation follows Golub's famous book.
REVERT: 75edcce284 * added a Tridiagonalization class for selfadjoint matrices * added MatrixBase::real() * added the ability to extract a selfadjoint matrix from the   lower or upper part of a matrix, e.g.:     m.extract<Upper|SelfAdjoint>()   will ignore the strict lower part and return a selfadjoint.   This is compatible with ZeroDiag and UnitDiag.
REVERT: 880d8d5884 meagre outcome for so much time spent! * fix inverse() bug discovered by Gael's test * fix warnings introduced by the new Diagonal stuff * update Doxyfile to v1.5.6
REVERT: 7f2d1c144a added a unit test for Inverse discovered that m1 == m1.inverse().inverse() fails though m1.inverse()*m1 == I
REVERT: 2cdb6bcabe added an *optional* Eigen2 dynamic library. it allows the possiblity to save some compilation time by linking to it *and* defining the token EIGEN_EXTERN_INSTANCIATIONS
REVERT: e8bbe6c075 added optimized matrix times diagonal matrix product via Diagonal flag shortcut.
REVERT: 12efa71c23 moved purely "array" related stuff to a new module Array. This include:  - cwise Pow,Sin,Cos,Exp...  - cwise Greater and other comparison operators  - .any(), .all() and partial reduction  - random
REVERT: b696f7dd7f updated EigenSolver to use .coeff / .coeffRef
REVERT: 1552259cf2 simply a bit the basic product moving dynamic loops to the corresponding special case of the unrollers. the latter ones are therefore re-named *product_impl.
REVERT: 46d7beb050 * replace compile-time-if by meta-selector in Assign.h   as it speed up compilation. * fix minor typo introduced in the previous commit
REVERT: 82ca1ac4e0 Added ArrayBit to get the ability to manipulate a Matrix like a simple scalar. In particular this flag changes the behavior of operator* to a coeff wise product.
REVERT: f02c413029 now the unit-tests (hence all of Eigen) don't depend on Qt at all anymore.
REVERT: da291d1196 many small fixes and documentation improvements, this should be alpha5.
REVERT: 42b28af3b9 * updated the assignement operator macro so that overloads   in MatrixBase work * removed product_selector and cleaned Product.h a bit * cleaned Assign.h a bit
REVERT: f001c0621b * change Flagged to take into account NestByValue only * bugfix in Assign and cache friendly product (weird that worked before) * improved argument evaluation in Product
REVERT: e64d678dab * added _*coeffRef members in NestedByValue * added ConjugateReturnType and AdjointReturnType that are type-defined to Derived&   and Transpose<Derived> if the scalar type is not complex: this avoids abusive copies in   the cache friendly Product
REVERT: 6f64790e54 hehe, the complicated nesting scheme in Flagged in the previous commit was a sign that we were doing something wrong. In fact, having NestByValue as a special case of Flagged was wrong, and the previous commit, while not buggy, was inefficient because then when the resulting NestByValue xpr was nested -- hence copied -- the original xpr which was already nested by value was copied again; hence instead of 1 copy we got 3 copies. The solution was to ressuscitate the old Temporary.h (renamed NestByValue.h) as it was the right approach.
REVERT: 6246073ac6 * find the proper way of nesting the expression in Flagged:   finally that's more subtle than just using ei_nested, because when   flagging with NestByValueBit we want to store the expression by value   already, regardless of whether it already had the NestByValueBit set. * rename temporary() ----> nestByValue() * move the old Product.h to disabled/, replace by what was ProductWIP.h * tweak -O and -g flags for tests and examples * reorder the tests -- basic things go first * simplifications, e.g. in many methoeds return derived() and count on   implicit casting to the actual return type. * strip some not-really-useful stuff from the heaviest tests
REVERT: 2d81e4c6e5 * fix the QR module to use extract/part instead of the previous triangular stuff * added qr and eigensolver tests * fix a compilation warning in Matrix copy constructor
REVERT: 4eeb50e462 part 2 of big change: rename Triangular.h -> Extract.h (svn required to commit that separately)
REVERT: ab0c0adc5e - introduce Part and Extract classes, splitting and extending the former   Triangular class - full meta-unrolling in Part - move inverseProduct() to MatrixBase - compilation fix in ProductWIP: introduce a meta-selector to only do   direct access on types that support it. - phase out the old Product, remove the WIP_DIRTY stuff. - misc renaming and fixes
REVERT: 46ab120c9f some documentation fixes (Cwise* and Cholesky)
REVERT: d6c5d3c192 * improved product performance:  - fallback to normal product for small dynamic matrices  - overloaded "c += (a * b).lazy()" to avoid the expensive and useless temporary and setZero()    in such very common cases. * fix a couple of issues with the flags
REVERT: 92756bfff6 restored the product test
REVERT: 3767971c3e remove Like1DArrayBit in Transpose
REVERT: db527de5b5 update of the testing framework: replaced the QTestLib framework my custom macros and a (optional) custom script to run the tests from ctest.
REVERT: 45ef7c37ab Fix compilation issues with MSVC and NVCC. Added a few typedef of complex return types in MatrixBase (Needed by MSVC)
REVERT: 3911b50391 Introduce generic Flagged xpr, remove already Lazy.h and Temporary.h Rename DefaultLostFlagMask --> HerediraryBits
REVERT: 80c1da5f64 * Clean a bit the eigenvalue solver: if the matrix is known to be   selfadjoint at compile time, then it returns real eigenvalues. * Fix a couple of bugs with the new product.
REVERT: c01e68318b -fix certain #includes -fix CMakeLists, public headers weren't getting installed
REVERT: 03379af37a * Added several cast to int of the enums (needed for some compilers) * Fix a mistake in CwiseNullary. * Added a CoreDeclarions header that declares only the forward declarations   and related basic stuffs.
REVERT: 242c95696c put inline keywords everywhere appropriate. So we don't need anymore to pass -finline-limit=1000 to gcc to get good performance. By the way some cleanup.
REVERT: af9dce6b59 updated product test to carefully test all scalar types and fix an issue in the triangular test
REVERT: 0648f95a28 * Draft of a eigenvalues solver   (does not support complex and does not re-use the QR decomposition)
REVERT: e2147e82bb move arch-specific code to arch/SSE and arch/AltiVec subdirs. rename the noarch PacketMath.h to DummyPacketMath.h
REVERT: 786bfbb2ba * Give Konstantinos a copyright line * Fix compilation of Inverse.h with vectorisation * Introduce EIGEN_GNUC_AT_LEAST(x,y) macro doing future-proof (e.g. gcc v5.0) check * Only use ProductWIP if vectorisation is enabled * rename EIGEN_ALWAYS_INLINE -> EIGEN_INLINE with fall-back to inline keyword * some cleanup/indentation
REVERT: 0d407c52d9 only include SSE3 headers if compiling with SSE3 support
REVERT: 91447077fe removed "sort brief" in doxygen documentation
REVERT: 117009392d * Added ReferencableBit flag to known if coeffRef is available.   (needed by the new product implementation) * Make the packet* members template to support aligned and unaligned   access. This makes Block vectorizable. Combined with ReferencableBit,   we should be able to determine at runtime (in some specific cases) if   an aligned vectorization is possible or not. * Improved the new product implementation to robustly handle all cases,   it now passes all the tests. * Renamed the packet version ei_predux to ei_preduxp to avoid name collision.
REVERT: beaa76dcea * split PacketMath.h to SSE and Altivec specific files * improved the flexibility of the new product implementation,   now all sizes seems to be properly handled.
REVERT: c4c853218f * Started support for unaligned vectorization. * Introduce a new highly optimized matrix-matrix product for large   matrices. The code is still highly experimental and it is activated   only if you define EIGEN_WIP_PRODUCT at compile time.   Currently the third dimension of the product must be a factor of   the packet size (x4 for floats) and the right handed side matrix   must be column major.   Moreover, currently c = a*b; actually computes c += a*b !!   Therefore, the code is provided for experimentation purpose only !   These limitations will be fixed soon or later to become the default   product implementation.
REVERT: 5ca322f659 * Patch by Konstantinos Margaritis: AltiVec vectorization. * Fix several warnings, temporarily disable determinant test.
REVERT: c2d48fe5fc slighly improved the cache friendly product to use mul-add only
REVERT: ac900ac389 added packet mul-add function (ei_pmad) and updated Product to use it. this change nothing for current SSE architecture but might be helpful for altivec/cell and up comming AMD processors.
REVERT: 6c0845b3b6 Removed ei_pload1, use posix_memalign to allocate aligned memory, and make Product ok when only one side is vectorizable (and the product is still vectorized)
REVERT: 73fbf0b96c added a test for triangular matrices
REVERT: 155a0d3af0 Make products always eval into expressions. Improves performance in benchmark. Still not as fasts as explicit eval(), strangely.
REVERT: 0f7f50914c fix flag and cost computations for nested expressions
REVERT: 83709b146d nullary xpr are now vectorized
REVERT: 8ab5c89218 Enable vectorization of product with dynamic matrices, extended cache optimal product to work in any row/column major situations, and a few bugfixes (forgot to add the Cholesky header, vectorization of CwiseBinary)
REVERT: 0832d8be14 some cleaning in Cholesky and removed evil ei_sqrt of complex
REVERT: 6525836ed9 * added ei_sqrt for complex * updated Cholesky to support complex * correct result_type for abs and abs2 functors
REVERT: e8b53d7df8 added Cholesky module
REVERT: 9a8cc919a9 Fixed a couple of issues introduced in previous commits. Added a test for Triangular.
REVERT: e1ecb59960 Added triangular assignement, e.g.:  m.upper() = a+b; only updates the upper triangular part of m. Note that:  m = (a+b).upper(); updates all coefficients of m (but half of the additions will be skiped)
REVERT: ad6bd4d753 Added Triangular expression to extract upper or lower (strictly or not) part of a matrix. Triangular also provide an optimised method for forward and backward substitution. Further optimizations regarding assignments and products might come later.
REVERT: 2153da6c30 fix a bug in determinant of 4x4 matrices and a small type issue in Inverse
REVERT: 571dd7d5f4 added a tough test to check the determinant that currently fails
REVERT: a5ebaca595 Various fixes in:  - vector to vector assign  - PartialRedux  - Vectorization criteria of Product  - returned type of normalized  - SSE integer mul
REVERT: 00b916fa5d Make the explicit vectorization much more flexible:  - support dynamic sizes  - support arbitrary matrix size when the matrix can be seen as a 1D array    (except for fixed size matrices where the size in Bytes must be a factor of 16,     this is to allow compact storage of a vector of matrices) Note that the explict vectorization is still experimental and far to be completely tested.
REVERT: b88061cb5f forgot to add a file in the previous commit
REVERT: 65cf7770a0 Fix a couple of issue with the vectorization. In particular, default ei_p* functions are provided to handle not suported types seemlessly.
REVERT: 946beab660 give up on OpenMP... for now
REVERT: 1f5eab3b09 - add _packetCoeff() to Inverse, allowing vectorization. - let Inverse take template parameter MatrixType instead   of ExpressionType, in order to reduce executable code size   when taking inverses of xpr's. - introduce ei_corrected_matrix_flags : the flags template   parameter to the Matrix class is only a suggestion. This   is also useful in ei_eval.
REVERT: c055336bdf +5% optimization in 4x4 inverse: -only evaluate block expressions for which that is beneficial -don't check for invertibility unless requested
REVERT: 70ece02485 for 4x4 matrices implement the special algorithm that Markos proposed, falling back to the general algorithm in the bad case.
REVERT: 20fabc4225 - optimized determinant calculations for small matrices (size <= 4)   (only 30 muls for size 4) - rework the matrix inversion: now using cofactor technique for size<=3,   so the ugly unrolling is only used for size 4 anymore, and even there   I'm looking to get rid of it.
REVERT: c18b165c48 when evaluating an xpr, the result can now be vectorizable even if the xpr itself wasn't vectorizable.
REVERT: e704045e8b * Start of the LU module, with matrix inversion already there and   fully optimized. * Even if LargeBit is set, only parallelize for large enough objects   (controlled by EIGEN_PARALLELIZATION_TRESHOLD).
REVERT: ed2c83ac08 * Add fixed-size template versions of corner(), start(), end(). * Use them to write an unrolled path in echelon.cpp, as an   experiment before I do this LU module. * For floating-point types, make ei_random() use an amplitude   of 1.
REVERT: 6767d7ef77 - cleaner use of OpenMP (no code duplication anymore)   using a macro and _Pragma. - use OpenMP also in cacheOptimalProduct and in the   vectorized paths as well - kill the vector assignment unroller. implement in   operator= the logic for assigning a row-vector in   a col-vector. - CMakeLists support for building tests/examples   with -fopenmp and/or -msse2 - updates in bench/, especially replace identity()   by ones() which prevents underflows from perturbing   bench results.
REVERT: 2455e4b93e Merge Gael's experimental OpenMP parallelization support into Assign.h.
REVERT: 71e449273a added a vectorized version of Product::_cacheOptimalProduct, added the possibility to disable the vectorization using EIGEN_DONT_VECTORIZE (some architectures has SSE support by default)
REVERT: eba7f3ab2a * add typedefs for matrices/vectors with LargeBit * add -pedantic to CXXFLAGS * cleanup intricated expressions with && and ||   which gave warnings because of "missing" parentheses * fix compile error in NumTraits, apparently discovered   by -pedantic
REVERT: d6ae3540f7 split those files in util/ some more renaming
REVERT: 227d397259 * rename XprCopy -> Nested * rename OperatorEquals -> Assign * move Util.h and FwDecl.h to a util/ subdir
REVERT: d55acd7c09 fix priority operator bugs in the computation of the VectorizableBit flag, now benchmark.cpp is properly vectorized
REVERT: 3b9ea7fe28 a better bugfix in ei_matrix_operator_equals_packet_unroller
REVERT: df52255e22 bugfix in ei_matrix_operator_equals_packet_unroller
REVERT: 444811d957 Added initial experimental support for explicit vectorization. Currently only the following platform/operations are supported:  - SSE2 compatible architecture  - compiler compatible with intel's SSE2 intrinsics  - float, double and int data types  - fixed size matrices with a storage major dimension multiple of 4 (or 2 for double)  - scalar-matrix product, component wise: +,-,*,min,max  - matrix-matrix product only if the left matrix is vectorizable and column major    or the right matrix is vectorizable and row major, e.g.:    a.transpose() * b is not vectorized with the default column major storage. To use it you must define EIGEN_VECTORIZE and EIGEN_INTEL_PLATFORM.
REVERT: 87408eebaf finish making use of CoeffReadCost and the new XprCopy everywhere seems appropriate to me.
REVERT: e295cb2b7a - merge ei_xpr_copy and ei_eval_if_needed_before_nesting - make use of CoeffReadCost to determine when to unroll the loops,   for now only in Product.h and in OperatorEquals.h performance remains the same: generally still not as good as before the big changes.
REVERT: c20d78e091 fix compilation (finish removal of EIGEN_UNROLLED_LOOPS)
REVERT: f9b39bd227 fixes as discussed with Gael on IRC. Mainly, in Fuzzy.h, and Dot.h, use ei_xpr_copy to evaluate args when needed. Had to introduce an ugly trick with ei_unref as when the XprCopy type is a reference one can't directly access member typedefs such as Scalar.
REVERT: 2766fff3e4  * make use of the EvalBeforeNestingBit and EvalBeforeAssigningBit    in ei_xpr_copy and operator=, respectively.  * added Matrix::lazyAssign() when EvalBeforeAssigningBit must be skipped    (mainly internal use only)  * all expressions are now stored by const reference  * added Temporary xpr: .temporary() must be called on any temporary expression    not directly returned by a function (mainly internal use only)  * moved all functors in the Functors.h header  * added some preliminaries stuff for the explicit vectorization
REVERT: 1b4f7620d0  * added cwise comparisons  * added "all" and "any" special redux operators  * added support bool matrices  * added support for cost model of STL functors via ei_functor_traits   (By default ei_functor_traits query the functor member Cost)
REVERT: de775827f4 current state of the mess. One line fails in the tests, and useless copies are made when evaluating nested expressions. Changes: - kill LazyBit, introduce EvalBeforeNestingBit and EvalBeforeAssigningBit - product and random don't evaluate immediately anymore - eval() always evaluates - change the value of Dynamic to some large positive value,   in preparation of future simplifications
REVERT: 872c515b31 More clever evaluation of arguments: now it occurs in earlier, in operator*, before the Product<> type is constructed. This resets template depth on each intermediate evaluation, and gives simpler code. Introducing ei_eval_if_expensive<Derived, n> which evaluates Derived if it's worth it given that each of its coeffs will be accessed n times. Operator* uses this with adequate values of n to evaluate args exactly when needed.
REVERT: 76dedba652 fix a compilation issue with gcc-3.3 and ei_result_of
REVERT: 233458d6d4 -new: recursive costs system, useful to determine automatically  when to evaluate arguments and when to meta-unroll. -use it in Product to determine when to eval args. not yet used  to determine when to unroll. for now, not used anywhere else but  that'll follow. -fix badness of my last commit
REVERT: bf941cd002 - remove Eval/EvalOMP (moving them to a disabled/ subdir in order   to preserve SVN history). They are made useless by the new   ei_eval_unless_lazy. - introduce a generic Eval member typedef so one can do e.g.   T t; U u; Product<T, U>::Eval m; m = t*u;
REVERT: 8ec2028913 Make use of the LazyBit, introduce .lazy(), remove lazyProduct.
REVERT: 56da4156c5 * introducte recursive Flags system for the expressions  -- currently 3 flags: RowMajor, Lazy and Large  -- only RowMajor actually used for now * many minor improvements
REVERT: e99fe50165 * fix compilation with gcc-4.0 which doesn't like "using" too much * add Eigen:: in some macros to allow using them from outside   of namespace Eigen Problems and solutions communicated by Gael.
REVERT: 56efaccc1d look at that subtle difference in Product.h... the cacheOptimal is only good for large enough matrices. When taking a block in a fixed-size (hence small) matrix, the SizeAtCompileTime is Dynamic hence that's not a good indicator. This example shows that the good indicator is MaxSizeAtCompileTime. Result: +10% speed in echelon.cpp
REVERT: 9364fb8ce7 * add Gael copyright lines on 2 more files * macro renaming: EIGEN_NDEBUG becomes EIGEN_NO_DEBUG   as this is much better (and similar to Qt) and   EIGEN_CUSTOM_ASSERT becomes EIGEN_USE_CUSTOM_ASSERT * protect Core header by a EIGEN_CORE_H
REVERT: b3881bcf92 * #define EIGEN_NDEBUG now also disables asserts. Useful   to disable eigen's asserts without disabling one's own program's   asserts. Notice that Eigen code should now use ei_assert()   instead of assert(). * Remove findBiggestCoeff() as it's now almost redundant. * Improve echelon.cpp: inner for loop replaced by xprs. * remove useless "(*this)." here and there. I think they were   first introduced by automatic search&replace. * fix compilation in Visitor.h (issue triggered by echelon.cpp) * improve comment on swap().
REVERT: 8fe8a336ca  * support for matrix-scalar quotient with integer scalar types.  * added cache efficient matrix-matrix product.    - provides a huge speed-up for large matrices.    - currently it is enabled when an explicit unrolling is not possible.
REVERT: 61200389b6 * cleanup: in public api docs, don't put \sa links to \internal things.   (the global funcs in MathFunctions.h and Fuzzy.h don't count as internal). * Mainpage.dox. Add a few prospective Eigen users; change the recommended   -finline-limit from 10000 to 1000. The reason is: it could be harmful to have   a too big value here, couldn't it? (e.g. exceedingly large executables, cache   misses). Looking at gcc, a value of 900 would exactly mean "determine the inlining   of all functions as if they were marked with 'inline' keyword". So a value of   1000 seems a reasonable round number. In the benchmark that motivated this   (TestEigenSolvers) a value of 400 is enough on my system.
REVERT: 03027247c2 update to fix compilation
REVERT: e564709d45  * Added a generic *redux* mini framework allowing custom redux operations    as well as partial redux (vertical or horizontal redux).    Includes shortcuts for: sum, minCoeff and maxCoeff.    There is no shortcut for the partial redux.
REVERT: 8ec62ba5a9 - introduce sum() returning the sum of the coeffs of a vector - reimplement trace() as just diagonal().sum() - apidoc fixes
REVERT: a5a8b88eb0 - expand MathFunctions.h to provide more functions, like exp, log... - add cwiseExp(), cwiseLog()...    --> for example, doing a gamma-correction on a bitmap image stored as        an array of floats is a simple matter of:          Eigen::Map<VectorXf> m = VectorXf::map(bitmap,size);          m = m.cwisePow(gamma); - apidoc improvements, reorganization of the \name's - remove obsolete examples - remove EIGEN_ALWAYS_INLINE on lazyProduct(), it seems useless.
REVERT: 0e4a248d4b get rid of MatrixRef, simplifications.
REVERT: 75d5aa9050 small fix of VERIFY_ASSERT in debug mode
REVERT: 401491b02b a lot of renaming internal classes: AaBb -> ei_aa_bb IntAtRunTimeIfDynamic -> ei_int_if_dynamic unify UNROLLING_LIMIT (there was no reason to have operator= use a higher limit) etc...
REVERT: 1b4b168b5f fixed an issue with VERIFY_ASSERT
REVERT: ce975b5774 Removed Column and Row in favor of Block
REVERT: 9450e858f7 fix compilation (forgot to update that file after last big change)
REVERT: a71d8ab36c generalized ei_traits<>. Finally the importing macro is named EIGEN_BASIC_PUBLIC_INTERFACE because it does not only import the ei_traits, it also makes the base class a friend, etc.
REVERT: f03d396463 big change: MatrixBase only takes one template parameter "Derived", the template parameter "Scalar" is removed. This is achieved by introducting a template <typename Derived> struct Scalar to achieve a forward-declaration of the Scalar typedefs.
REVERT: 9ec0ab183e  * basic support for multicore CPU via a .evalOMP() which    internaly uses OpenMP if enabled at compile time.  * added a bench/ folder with a couple benchmarks and benchmark tools.
REVERT: c834813d0a Extended the comma initializer to support xpr on the right side:   Matrix3i mat; Vector2i vec(33,66);   mat << vec.transpose(), 99,          vec, Matrix2i::random();
REVERT: f741b91f39 * Added support for a comma initializer: mat.block(i,j,2,2) << 1, 2, 3, 4;   If the number of coefficients does not match the matrix size, then an assertion is raised.   No support for xpr on the right side for the moment.
REVERT: 38d8b67ad5  * coefficient wise operators are more generic, with controllable result type.    - compatible with current STL's functors as well as with the extention proposal (TR1)  * thanks to the above, Cast and ScalarMultiple have been removed  * benchmark_suite is more flexible (compiler and matrix size)
REVERT: 9835521257  * Fix a compilation issue with large fixed-size matrices: the unrollers were always instanciated.  * the unrolling limits are configurable at compile time.
REVERT: 5076259ae1 renaming: ref() --> asArg()
REVERT: 39910c2881  * Eigen compiles with any GCC versions from, at least, 3.3 without the previous ugly hack :)  * Renamed the scalar functors with the "Scalar" prefix (instead of "Cwise")
REVERT: fd21c51a91 Removed trailling spaces.
REVERT: 3de7c2eb2b  * Added generic unary operators (replace Opposite and Conjugate)  * functor templates are not template template parameter anymore    (this allows to make templated functors !)  * Main page: extented compiler discussion  * A small hack to support gcc 3.4 and 4.0 (see the main page)  * Fix a cast type issue in Cast  * Various doxygen updates (mainly Cwise stuff and added doxygen groups    in MatrixBase to split the huge memeber list, still not perfect though)  * Updated Gael's email address
REVERT: 547f407a1c release alpha4, Gael edition
REVERT: e8105cfeda Patch by Gael Guennebaud: coeff-wise binary operators. This unifies + and - and moreover this patch introduces coeff-wise * and / based on this. Also, corresponding test.
REVERT: 3dfe33f892 Patch by Gael Guennebaud: unify fixed-size and dynamic-size Block expressions, update documentation.
REVERT: 615a1454a2 -merge patch from Gael Guennebaud adding NumTraits for long long  and long double. -define scalar-multiple operators only for the current Scalar type;  thanks to Gael for expaining how to make the compiler understand  when automatic casting is needed. -take ScalarMultiple take only 1 template param, again.  We lose some flexibility especially when dealing with complex numbers,  but we gain a lot of extensibility to new scalar types.
REVERT: 9f3a179550 Patch by Gael Guennebaud: Rework the matrix storage to ensure optimal sizeof in all cases, while keeping the decoupling of matrix sizes versus storage sizes. Also fixing (recently introduced) bugs caused by unwanted reallocations of the buffers.
REVERT: d891d694f0 Relicense --> dual-license LGPL3+/GPL2+
REVERT: c90aace2c1 prefix global functions with ei_ as previous solution was rather fragile. also fix compilation with g++ 4.3.
REVERT: d75eae3577 alpha 3.1. in this commit: - finally get the Eval stuff right. get back to having Eval as   a subclass of Matrix with limited functionality, and then,   add a typedef MatrixType to get the actual matrix type. - add swap(), findBiggestCoeff() - bugfix by Ramon in Transpose - new demo: doc/echelon.cpp
REVERT: 1a8aeede9e Eval is now implemented like the other expression types, it no longer inherits Matrix. Remove the typedefs I added in Matrix.
REVERT: 2dcc9891bf re-optimize Matrix::resize(), add some comments
REVERT: 448e359cca cleanup in Eval; instead introduce convenient typedefs in Matrix for naming special related matrix types: RowType, ColumnType, BlockType
REVERT: 064e5f7b64 final fixes and updates for alpha3
REVERT: 4b2168c371 documentation update for alpha 3
REVERT: 86582be427 big improvement of the block-manipulation API - reduction of sizeof(Block) for vector types - variants of block() and fixedBlock() for vector blocks - convenience methods start() and end() for vectors - convenience method corner() for matrices
REVERT: 09f4fa8878 renaming: Block -> FixedBlock DynBlock -> Block indeed, previous commit solves the main issue with DynBlock so is should now be the more commonly used one.
REVERT: c8b983fff9 big architecture change dissociating "actual" dimensions from "maximum possible" dimension. The advantage is that evaluating a dynamic-sized block in a fixed-size matrix no longer causes a dynamic memory allocation. Other new thing: IntAtRunTimeIfDynamic allows storing an integer at zero cost if it is known at compile time.
REVERT: 41cf46adc1 one bugfix and one optimization
REVERT: 24c5a4e186 rework Identity API: no longer restricted to square matrices
REVERT: f77e6ffe91 -add set...() methods and their documentation; remove Generic -use row-major traversal when the number of columns is fixed  and the number of rows is dynamic -other minor changes
REVERT: 3bf2df7926 reorganization/cleanup
REVERT: 9256685667 switch to enums everywhere
REVERT: 6e6474ddcb TODO is now on techbase
REVERT: c9396dd555 revert most of previous commit. It really is better to forbid default constructor for dynamic-size matrices. Now why do I feel like a beheaded chicken running around?
REVERT: e903f3e3ea Revert to allowing default Matrix constructor even for dynamic size (which is then set to 1). Discussion with jonasp made me remember why we did so in Eigen1. Also add default constructor to Eval
REVERT: 48af476cb1 Ready for alpha2 release. - complete documentation - add TODO - update copyright years
REVERT: e9a897eb9d move default parameter values from function definition to function declaration. doxygen likes it and this fixes compilation on ICC.
REVERT: d803456e1b - move: DerivedTraits becomes MatrixBase::Traits - the static constants are private again in the Derived classes - more documentation and code snippets - new isDiagonal() method
REVERT: 9c2b4a79f4 remove all the _Order mechanics, now we are always traversing matrices in column-major order, even if storage is row-major. Benchmark showed that adapting the traversal order to the storage order brought no benefit.
REVERT: f06e756ba7 Patch by Gael Guennebaud, making Eigen compatible with the Intel compiler (icc).
REVERT: 6dfe97571e - make MatrixBase and all expressions aware of their preferred traversal order.   Honor this preference in operator=. - add several methods to the API - rework API for diagonal matrices - add benchmarking code
REVERT: 9461500a0a more documentation, 12 more code snippets
REVERT: 23f9c7371f cleanup: remove copy contructors when the compiler is able to generate a satisfactory default copy constructor; remove useless static_cast's; some misc cleanup.
REVERT: 397b81afab part 2 of the reorganization. Benefits/changes: 1) Eigen2 co-installable with Eigen1 without conflict, without affecting programs including either. 2) #include<Eigen/Core> without the .h without conflict with the Core/ directory 3) Uniformize coding style of the CMakeLists.
REVERT: 2b397825f6 move Core/ to a src/ subdir, in preparation for following changes
REVERT: e27d718e44 matrix storage order can now also be row-dominant (choosable for each matrix separately) map() moves from MatrixBase to Matrix much more documentation/examples/snippets
REVERT: c886400e8e more changes in ScalarMultiple, reintroduce FloatingPoint in NumTraits, improve examples
REVERT: b6e2b46488 in ScalarMultiple, make the factor type independent from the matrix scalar type. This is an optimization for complex matrices, allowing to do only a real multiplication when a complex multiplication is not needed, e.g. in normalized().
REVERT: 576dd6e4a0 - eigen2 now fully enforces constness! found a way to achieve that   with minimal code duplication. There now are only two (2)   const_cast remaining in the whole source code. - eigen2 now fully allows copying a row-vector into a column-vector.   added a unit-test for that. - split unit tests, improve docs, various improvements.
REVERT: 693a4b75ee - rework the coefficients API - make vectors use a separate loop unroller, so that copying a row-vector into a col-vector is now possible - add much more documentation - misc improvements
REVERT: c9c1b0daac everything works, make now runs doxygen once and only once, after all the required files have been generated.
REVERT: f290f9dc2f now we also have a examples/ directory for self-contained examples, and this is already used to document DynBlock
REVERT: f6fde27dcf will svn finally let me remove this dir?
REVERT: 0969c1b2b0 now cmake takes snippets of code, completes them into compilable sources, builds them, executes them and stores their output in files.
REVERT: b00f7085b5 renaming (commit in order to avoid svn breakage)
REVERT: 3eaccec631 first version of CMakeLists auto-generating examples outputs
REVERT: 0a160138dd move the documentation to doc/, add dummy documentation to srcdir/ compiling to an explanation of how to generate the docs
REVERT: 6fc332a2af rename src/ to Eigen/ so that we're able to #include<Eigen/Core.h> in the examples instead of ugly things like #include"../../src/Core.h"
REVERT: 8d617e0d2b more documentation and examples, add Doxyfile and Mainpage.dox and also the benchmark program
REVERT: 69b18ed201 - make RowsAtCompileTime and ColsAtCompileTime public in MatrixBase and private in derived types - initial documentation in MatrixBase
REVERT: 834aecb458 enforce constness in map(), do only one const_cast, and improve API
REVERT: abe48dfda0 split the coeffs accessors/mutators into a separate Coeffs.h file
REVERT: d89eabafe8 Improve the "map" API and corresponding Matrix constructors
REVERT: eb05c0225a Eval is read-only, don't generate any assignment operator
REVERT: 5a150ee945 add matrix constructor taking an array. update unit-tests.
REVERT: 5a94593e79 add constructors and accessors/mutators specific to small vectors. Add corresponding unit-test.
REVERT: ab80c5435e some more cleanup and reorganisation
REVERT: b465985edf Some cleanup and renaming.
REVERT: 973a63c452 -add Ones, DiagonalMatrix, DiagonalCoeffs -expand and improve unit-tests -various renaming and improvements
REVERT: 225b2aedb6 expand unit-tests and fix const-qualifaction bugs thus discovered
REVERT: 317c26e0fc Split the global math functions out of NumTraits.h
REVERT: 49f99b4208 use a more c++-ish way of preventing the compiler from generating default operator= when it's not wanted. Thanks to Christian Mayer for the tip.
REVERT: 0b57bc6ab4 1) remove EIGEN_UNUSED, instead use non-named arguments. 2) use T instead of const T& when that makes more sense Thanks to Christian Mayer a.k.a Mekhzolan for the tips.
REVERT: 1219b8f86e revert most of my previous commit. forcing the compiler to inline only increased its memory usage.
REVERT: 08f38cfae2 play with inlining to get better performance when the compiler is not asked to optimize
REVERT: 9cec21633a oops, forgot to commit that change
REVERT: 7671d875bf rename CopyHelper into OperatorEquals, get rid of the auxiliary _copy_helper() method, and make sure copies are always done in column-dominant order
REVERT: d9155bae48 Expand and improve unit-tests
REVERT: f4b5e43be9 rework asserts system so as to minimize the impact of debugging code on performance
REVERT: 72bc362f27 fix bugs in Block/DynBlock
REVERT: 2ae3be7edf specialize for Size==0 in order to catch user bugs and not clutter the compiler output with an infinite recursion. Also add a #define switch for loop unrolling.
REVERT: 1a63aa0267 rework the random numbers API
REVERT: 925ac29148 had forgotten to 'svn add' that file...
REVERT: 8aa04cf97a big reorganisation of asserts, so that: 0) asserts are only done in the public API, except for a few ones explicitly    named eigen_internal_assert. 1) internal asserts are disabled unless EIGEN_INTERNAL_DEBUGGING is defined.    This limits the impact of debugging on performance. 2) no 'unused argument' warnings anymore when compiling with -DNDEBUG
REVERT: 950458f477 remove useless default argument values
REVERT: 18d4a2799c and here is the fixed-size Block class
REVERT: bf182497fa rename Block to DynBlock and rework API to make place for upcoming fixed-size Block matrix. Also some cleanup.
REVERT: faec8009c1 Rework the unit-tests to use lower precision, so as to eliminate false positives. Also some cleanup in the fuzzy compares.
REVERT: cee25f22ea Test application now takes 'seed' and 'repeat' command-line args
REVERT: 8ccfb96ac5 Much more convenient, less over-engineered NumTraits. Done during this KDE-Edu weekend.
REVERT: a44cda2fc8 add more unit-tests (covering transpose, conjugate, adjoint, dot product...)
REVERT: c68b923619 rename Object -> MatrixBase
REVERT: b29021cab6 Matrix(int) constructor is only for vectors.
REVERT: c3011025e9 Matrix(int,int) constructor no longer takes default arguments. Instead, introduce Matrix() and Matrix(int); however, dynamic dimensions are required to be specified in the constructor (we no longer default to 1)
REVERT: ed6f6ca6d1 - improve and comment the "BasicStuff" test. - adjust behavior of Matrix(int,int) constructor - s/EI_/EIGEN_/
REVERT: 9997ae137b Fix damage done by automatic search-and-replace
REVERT: 98ae3305e9 add cast<newtype>() function to casts the scalars to another type.
REVERT: 5fcb16110e clarify the situation with EI_INHERIT_ASSIGNMENT_OPERATORS
REVERT: 06283c4f3f make shameless use of const_cast to reduce code redundancy. This means Eigen2 gives up enforcing constness. I really tried to enforce it, but it really was much hassle because our expression templates can be lvalues (not only rvalues) and so much code had to be written twice.
REVERT: 4762a731d6 Merge WrapArray into FromArray. Less code. The downside is that we're using one more const_cast. But I think that anyway trying to maintain const strictness in Eigen2 is not worth the hassle.
REVERT: e91611a1ba add fromArray() and wrapArray().
REVERT: e0284ae477 restrict identity() to square matrices; small change helping g++ optimize.
REVERT: 27c32e5dc7 add zero() and identity() static methods, update unit-tests
REVERT: 2e84e47574 remove support for type std::complex<int>. Simplify NumTraits accordingly.
REVERT: 9607e32682 mark more methods as const. also rename, Numeric.h->NumTraits.h
REVERT: 60f2d383dd implement the first _real_ unit-tests, testing the results for correctness instead of just checking compilation.
REVERT: a57f9c475b add unary operator-(), computing the opposite.
REVERT: eb2aed6e5a split MatrixOps.h into 3 files; rename ScalarOps.h; remove useless #includes.
REVERT: cf55eac3fd some renaming in the fuzzy compares, and in the multiplications
REVERT: 76a796590d rework the numeric traits now that we're using a namespace and no prefix
REVERT: 1b8f837b1e SVN_SILENT:
REVERT: 5df2ab240b simplify the new USING_EIGEN_DATA_TYPES macro
REVERT: 83d498fe43 Democracy 1 - 0 Dictatorship
REVERT: 445b96aae9 fix big bug in loop unrolling
REVERT: ecf6a3047e fix dot product, add norm/norm2/normalized add fuzzy compares for matrices/vectors add random matrix/vector generation
REVERT: c0f421cb30 add norm() and norm2(); some polishing
REVERT: 44838f5018 reverse certain inner loops. Now the benchmark runs in 3.5s instead of 5.5s before!
REVERT: e9da58a6e5 add dot product, extend meta unrolling everywhere
REVERT: e532b04493 reorganize meta loop unrolling, add Trace (meta-unrolled), fix compilation issues in the conjugation/adjunction stuff
REVERT: d894e592d7 reorganization of headers, part 2/2...
REVERT: 3fd5648c85 reorganisation of headers, commit 1/2....

Change-Id: I576ca03dd586c4ad2e85caeab5ac657362869bdc
git-subtree-dir: third_party/eigen
git-subtree-split: 3147391d946bb4b6c68edd901f2add6ac1f31f8c
Signed-off-by: Austin Schuh <austin.linux@gmail.com>
diff --git a/cmake/ComputeCppCompilerChecks.cmake b/cmake/ComputeCppCompilerChecks.cmake
new file mode 100644
index 0000000..1807485
--- /dev/null
+++ b/cmake/ComputeCppCompilerChecks.cmake
@@ -0,0 +1,50 @@
+cmake_minimum_required(VERSION 3.4.3)
+
+if(CMAKE_COMPILER_IS_GNUCXX)
+  if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.8)
+    message(FATAL_ERROR "host compiler - gcc version must be > 4.8")
+  endif()
+elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
+  if (${CMAKE_CXX_COMPILER_VERSION} VERSION_LESS 3.6)
+    message(FATAL_ERROR "host compiler - clang version must be > 3.6")
+  endif()
+endif()
+
+if(MSVC)
+  set(ComputeCpp_STL_CHECK_SRC __STL_check)
+  file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${ComputeCpp_STL_CHECK_SRC}.cpp
+    "#include <ios>\n"
+    "int main() { return 0; }\n")
+  execute_process(
+    COMMAND ${ComputeCpp_DEVICE_COMPILER_EXECUTABLE}
+            ${COMPUTECPP_DEVICE_COMPILER_FLAGS}
+            -isystem ${ComputeCpp_INCLUDE_DIRS}
+            -o ${ComputeCpp_STL_CHECK_SRC}.sycl
+            -c ${ComputeCpp_STL_CHECK_SRC}.cpp
+    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+    RESULT_VARIABLE ComputeCpp_STL_CHECK_RESULT
+    ERROR_QUIET
+    OUTPUT_QUIET)
+  if(NOT ${ComputeCpp_STL_CHECK_RESULT} EQUAL 0)
+    # Try disabling compiler version checks
+    execute_process(
+      COMMAND ${ComputeCpp_DEVICE_COMPILER_EXECUTABLE}
+              ${COMPUTECPP_DEVICE_COMPILER_FLAGS}
+              -D_ALLOW_COMPILER_AND_STL_VERSION_MISMATCH
+              -isystem ${ComputeCpp_INCLUDE_DIRS}
+              -o ${ComputeCpp_STL_CHECK_SRC}.cpp.sycl
+              -c ${ComputeCpp_STL_CHECK_SRC}.cpp
+      WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+      RESULT_VARIABLE ComputeCpp_STL_CHECK_RESULT
+      ERROR_QUIET
+      OUTPUT_QUIET)
+    if(NOT ${ComputeCpp_STL_CHECK_RESULT} EQUAL 0)
+      message(STATUS "Device compiler cannot consume hosted STL headers. Using any parts of the STL will likely result in device compiler errors.")
+    else()
+    message(STATUS "Device compiler does not meet certain STL version requirements. Disabling version checks and hoping for the best.")
+      list(APPEND COMPUTECPP_DEVICE_COMPILER_FLAGS -D_ALLOW_COMPILER_AND_STL_VERSION_MISMATCH)
+    endif()
+  endif()
+  file(REMOVE ${CMAKE_CURRENT_BINARY_DIR}/${ComputeCpp_STL_CHECK_SRC}.cpp
+              ${CMAKE_CURRENT_BINARY_DIR}/${ComputeCpp_STL_CHECK_SRC}.cpp.sycl)
+endif(MSVC)