Commit Graph

4597 Commits

Author SHA1 Message Date
Gael Guennebaud
8cc9232b9a bug #774: fix a numerical issue producing unwanted reflections. 2016-02-11 15:32:56 +01:00
Gael Guennebaud
2d35c0cb5f Merged in rmlarsen/eigen (pull request PR-163)
Implement complete orthogonal decomposition in Eigen.
2016-02-11 15:12:34 +01:00
Benoit Steiner
33e2373f01 Merged in nnyby/eigen/nnyby/doc-grammar-fix-linearly-space-linearly-1443742971203 (pull request PR-138)
[doc] grammar fix: "linearly space" -> "linearly spaced"
2016-02-10 23:29:59 -08:00
Benoit Steiner
6d8b1dce06 Avoid implicit cast from double to float. 2016-02-10 18:07:11 -08:00
Rasmus Munk Larsen
b6fdf7468c Rename inverse -> pseudoInverse. 2016-02-10 13:03:07 -08:00
Benoit Jacob
9d6f1ad398 I'm told to use __EMSCRIPTEN__ by an Emscripten dev. 2016-02-10 12:48:34 -05:00
Benoit Steiner
bfb3fcd94f Optimized implementation of the tanh function for SSE 2016-02-10 08:52:30 -08:00
Benoit Steiner
2d523332b3 Optimized implementation of the hyperbolic tangent function for AVX 2016-02-10 08:48:05 -08:00
Benoit Jacob
e6ee18d6b4 Make the GCC workaround for sqrt GCC-only; detect Emscripten as non-GCC 2016-02-10 11:11:49 -05:00
Benoit Jacob
964a95bf5e Work around Emscripten bug - https://github.com/kripken/emscripten/issues/4088 2016-02-10 10:37:22 -05:00
Benoit Steiner
970751ece3 Disabling the nvcc warnings in addition to the clang warnings when clang is used as a frontend for nvcc 2016-02-09 20:55:50 -08:00
Rasmus Munk Larsen
bb8811c655 Enable inverse() method for computing pseudo-inverse. 2016-02-09 20:35:20 -08:00
Benoit Steiner
5cc0dd5f44 Fixed the code that disables the use of variadic templates when compiling with nvcc on ARM devices. 2016-02-09 10:32:01 -08:00
Benoit Steiner
24d291cf16 Worked around nvcc crash when compiling Eigen on Tegra X1 2016-02-09 02:34:02 +00:00
Rasmus Munk Larsen
53f60e0afc Make applyZAdjointOnTheLeftInPlace protected. 2016-02-08 09:01:43 -08:00
Rasmus Munk Larsen
414efa47d3 Add missing calls to tests of COD.
Fix a few mistakes in 3.2 -> 3.3 port.
2016-02-08 08:50:34 -08:00
Gael Guennebaud
c2bf2f56ef Remove custom unaligned loads for SSE. They were only useful for core2 CPU. 2016-02-08 14:29:12 +01:00
Gael Guennebaud
a4c76f8d34 Improve inlining 2016-02-08 11:33:02 +01:00
Rasmus Munk Larsen
16ec450ca1 Nevermind. 2016-02-06 17:54:01 -08:00
Rasmus Munk Larsen
019fff9a00 Add my name to copyright notice in ColPivHouseholder.h, mostly for previous work on stable norm downdate formula. 2016-02-06 17:48:42 -08:00
Rasmus Munk Larsen
86d6201d7b Merge. 2016-02-06 16:36:56 -08:00
Rasmus Munk Larsen
d904c8ac8f Implement complete orthogonal decomposition in Eigen. 2016-02-06 16:32:00 -08:00
Gael Guennebaud
c6a12d1dc6 Fix warning with gcc < 4.8 2016-02-06 18:06:51 +01:00
Gael Guennebaud
5b2d287878 bug #779: allow non aligned buffers for buffers smaller than the requested alignment. 2016-02-05 21:46:39 +01:00
Gael Guennebaud
e8e1d504d6 Add an explicit assersion on the alignment of the pointer returned by std::malloc 2016-02-05 21:38:16 +01:00
Gael Guennebaud
62a1c911cd Remove posix_memalign, _mm_malloc, and _aligned_malloc special paths. 2016-02-05 21:24:35 +01:00
Benoit Steiner
bcdcdace48 Pulled latest updates from trunk 2016-02-04 08:56:49 -08:00
Gael Guennebaud
659fc9c159 Remove dead code 2016-02-04 09:55:09 +01:00
Gael Guennebaud
d5d7798b9d Improve heuritics for switching between coeff-based and general matrix product implementation. 2016-02-04 09:53:47 +01:00
Benoit Steiner
f535378995 Added support for vectorized type casting of int to char. 2016-02-03 18:58:29 -08:00
Benoit Steiner
727ff26960 Disable 2 more nvcc warning messages 2016-02-03 16:01:37 -08:00
Benoit Steiner
bcbde37a11 Made sure the code compiles when EIGEN_HAS_C99_MATH isn't defined 2016-02-03 14:53:08 -08:00
Benoit Steiner
f933f69021 Added a few comments 2016-02-03 14:12:18 -08:00
Benoit Steiner
5d82e47ef6 Properly disable nvcc warning messages in user code. 2016-02-03 14:10:06 -08:00
Benoit Steiner
d7742d22e4 Revert the nvcc messages to their default severity instead of the forcing them to be warnings 2016-02-03 13:47:28 -08:00
Benoit Steiner
ac26e1aaf3 Pulled latest updates from trunk 2016-02-03 12:52:20 -08:00
Benoit Steiner
492fe7ce02 Silenced some unhelpful warnings generated by nvcc. 2016-02-03 12:51:19 -08:00
Gael Guennebaud
b70db60e4d Merged in rmlarsen/eigen (pull request PR-161)
Change Eigen's ColPivHouseholderQR to use  numerically stable norm downdate formula
2016-02-03 21:37:06 +01:00
Rasmus Munk Larsen
5fb04ab2da Fix bad line break. Don't repeat Kahan matrix test since it is deterministic. 2016-02-03 10:12:10 -08:00
Rasmus Munk Larsen
d9a6f86cc0 Make the array of directly compute column norms a member to avoid allocation in computeInPlace. 2016-02-03 09:55:30 -08:00
Gael Guennebaud
70dc14e4e1 bug #1161: fix division by zero for huge scalar types 2016-02-03 18:25:41 +01:00
Damien R
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). 2016-02-03 18:07:25 +01:00
Gael Guennebaud
eb6d9aea0e Clarify error message when writing to a read-only sparse-sub-matrix. 2016-02-03 16:58:23 +01:00
Rasmus Munk Larsen
00f9ef6c76 merging. 2016-02-01 11:10:30 -08:00
Gael Guennebaud
ff1157bcbf bug #694: document that SparseQR::matrixR is not sorted. 2016-02-01 16:09:34 +01:00
Gael Guennebaud
ec469700dc bug #557: make InnerIterator of sparse storage types more versatile by adding default-ctor, copy-ctor/assignment 2016-02-01 15:04:33 +01:00
Gael Guennebaud
6e0a86194c Fix integer path for num_steps==1 2016-02-01 15:00:04 +01:00
Gael Guennebaud
e1d219e5c9 bug #698: fix linspaced for integer types. 2016-02-01 14:25:34 +01:00
Gael Guennebaud
2c3224924b Fix warning and replace min/max macros by calls to mini/maxi 2016-02-01 10:23:45 +01:00
Benoit Steiner
3f1ee45833 Fixed compilation errors triggered by duplicate inline declaration 2016-01-31 10:48:49 -08:00
Gael Guennebaud
d142165942 bug #667: declare several critical functions as FORECE_INLINE to make ICC happier.
<g.gael@free.fr> HG: branch 'default' HG: changed Eigen/src/Core/ArrayBase.h HG: changed Eigen/src/Core/AssignEvaluator.h HG: changed
Eigen/src/Core/CoreEvaluators.h HG: changed Eigen/src/Core/CwiseUnaryOp.h HG: changed Eigen/src/Core/DenseBase.h HG: changed Eigen/src/Core/MatrixBase.h
2016-01-31 16:34:10 +01:00
Gael Guennebaud
1bc207c528 backout changeset d4a9e61569
: the extended SparseView is not needed anymore
2016-01-30 14:43:21 +01:00
Gael Guennebaud
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.
2016-01-30 14:39:50 +01:00
Gael Guennebaud
699634890a bug #946: generalize Cholmod::solve to handle any rhs expression 2016-01-29 23:02:22 +01:00
Gael Guennebaud
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. 2016-01-29 22:09:45 +01:00
Gael Guennebaud
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. 2016-01-29 22:07:56 +01:00
Gael Guennebaud
d8d37349c3 bug #696: enable zero-sized block at compile-time by relaxing the respective assertion 2016-01-29 12:44:49 +01:00
Gael Guennebaud
e8ccc06fe5 merge 2016-01-29 09:40:38 +01:00
Benoit Steiner
d3f533b395 Fixed compilation warning 2016-01-28 20:09:45 -08:00
Abhijit Kundu
3fde202215 Making ceil() functor generic w.r.t packet type 2016-01-28 21:27:00 -05:00
Rasmus Munk Larsen
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.
This change also adds additional checks for non-increasing diagonal in R11 to existing unit tests, and adds a new unit test with the Kahan matrix, which consistently fails for the original code.

Benchmark timings on Intel(R) Xeon(R) CPU E5-1650 v3 @ 3.50GHz. Code compiled with AVX & FMA. I just ran on square matrices of 3 difference sizes.

Benchmark               Time(ns)     CPU(ns) Iterations
-------------------------------------------------------
Before:
BM_EigencolPivQR/64        53677       53627      12890
BM_EigencolPivQR/512    15265408    15250784         46
BM_EigencolPivQR/4k  15403556228 15388788368          2

After (non-vectorized version):
Benchmark               Time(ns)     CPU(ns) Iterations  Degradation
--------------------------------------------------------------------
BM_EigencolPivQR/64        63736       63669      10844         18.5%
BM_EigencolPivQR/512    16052546    16037381         43          5.1%
BM_EigencolPivQR/4k  15149263620 15132025316          2         -2.0%

Performance-wise there seems to be a ~18.5% degradation for small (64x64) matrices, probably due to the cost of more O(min(m,n)^2) sqrt operations that are not needed for the unstable formula.
2016-01-28 15:07:26 -08:00
Gael Guennebaud
b908e071a8 bug #178: get rid of some const_cast in SparseCore 2016-01-28 22:11:18 +01:00
Gael Guennebaud
c1d900af61 bug #178: remove additional const on nested expression, and remove several const_cast. 2016-01-28 21:43:20 +01:00
Gael Guennebaud
f50bb1e6f3 Fix compilation with gcc 2016-01-28 13:25:26 +01:00
Gael Guennebaud
ddf64babde merge 2016-01-28 13:21:48 +01:00
Gael Guennebaud
df15fbc452 bug #1158: PartialReduxExpr is a vector expression, and it thus must expose the LinearAccessBit flag 2016-01-28 13:16:30 +01:00
Gael Guennebaud
9bcadb7fd1 Disable stupid MSVC warning 2016-01-28 12:14:16 +01:00
Gael Guennebaud
b4d87fff4a Fix MSVC warning. 2016-01-28 12:12:30 +01:00
Gael Guennebaud
2bad3e78d9 bug #96, bug #1006: fix by value argument in result_of. 2016-01-28 12:12:06 +01:00
Benoit Steiner
291069e885 Fixed some compilation problems with nvcc + clang 2016-01-27 15:37:03 -08:00
Gael Guennebaud
4865e1e732 Update link to suitesparse. 2016-01-27 22:48:40 +01:00
Eugene Brevdo
c8d94ae944 digamma special function: merge shared code.
Moved type-specific code into a helper class digamma_impl_maybe_poly<Scalar>.
2016-01-27 09:52:29 -08:00
Gael Guennebaud
9c8f7dfe94 bug #1156: fix several function declarations whose arguments were passed by value instead of being passed by reference 2016-01-27 18:34:42 +01:00
Gael Guennebaud
9aa6fae123 bug #1154: move to dynamic scheduling for spmv products. 2016-01-27 18:03:51 +01:00
Gael Guennebaud
9801c959e6 Fix tri = complex * real product, and add respective unit test. 2016-01-27 17:12:25 +01:00
Gael Guennebaud
21b5345782 Add meta_least_common_multiple helper. 2016-01-27 17:11:39 +01:00
Gael Guennebaud
fecea26d93 Extend doc on shifting strategy 2016-01-27 15:55:15 +01:00
Gael Guennebaud
cfa21f8123 Remove dead code. 2016-01-26 23:33:15 +01:00
Gael Guennebaud
6850eab33b Re-enable blocking on rows in non-l3 blocking mode. 2016-01-26 23:32:48 +01:00
Gael Guennebaud
aa8c6a251e Make sure that micro-panel-size is smaller than blocking sizes (otherwise we might get a buffer overflow) 2016-01-26 23:31:48 +01:00
Gael Guennebaud
5b0a9ee003 Make sure that block sizes are smaller than input matrix sizes. 2016-01-26 23:30:24 +01:00
Christoph Hertzberg
44d4674955 bug #1153: Don't rely on __GXX_EXPERIMENTAL_CXX0X__ to detect C++11 support 2016-01-26 16:45:33 +01:00
Gael Guennebaud
8328caa618 bug #51: add block preallocation mechanism to selfadjoit*matrix product. 2016-01-25 22:06:42 +01:00
Gael Guennebaud
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. 2016-01-25 17:16:33 +01:00
Gael Guennebaud
b114e6fd3b Improve documentation. 2016-01-25 11:56:25 +01:00
Gael Guennebaud
869b4443ac Add SparseVector::conservativeResize() method. 2016-01-25 11:55:39 +01:00
Gael Guennebaud
acf6f7af6b Merged in larsmans/eigen (pull request PR-156)
Documentation fixes
2016-01-24 22:28:49 +01:00
Lars Buitinck
cc482e32f1 Method is called visit, not visitor 2016-01-24 15:50:59 +01:00
Gael Guennebaud
1cf85bd875 bug #977: add stableNormalize[d] methods: they are analogues to normalize[d] but with carefull handling of under/over-flow 2016-01-23 22:40:11 +01:00
Gael Guennebaud
369d6d1ae3 Add link to reference paper. 2016-01-23 22:16:03 +01:00
Gael Guennebaud
0caa4b1531 bug #1150: make IncompleteCholesky more robust by iteratively increase the shift until the factorization succeed (with at most 10 attempts). 2016-01-23 22:13:54 +01:00
Gael Guennebaud
5358c38589 bug #1095: add Cholmod*::logDeterminant/determinant (from patch of Joshua Pritikin) 2016-01-22 16:05:29 +01:00
Gael Guennebaud
06971223ef Unify std::numeric_limits and device::numeric_limits within numext namespace 2016-01-22 15:02:21 +01:00
Gael Guennebaud
ee37eb4eed bug #977: avoid division by 0 in normalize() and normalized(). 2016-01-21 20:43:42 +01:00
Gael Guennebaud
7cae8918c0 Fix compilation on old gcc+AVX 2016-01-21 20:30:32 +01:00
Gael Guennebaud
8dca9f97e3 Add numext::sqrt function to enable custom optimized implementation.
This changeset add two specializations for float/double on SSE. Those
are mostly usefull with GCC for which std::sqrt add an extra and costly
check on the result of _mm_sqrt_*. Clang does not add this burden.

In this changeset, only DenseBase::norm() makes use of it.
2016-01-21 20:18:51 +01:00
Gael Guennebaud
34340458cb bug #1151: remove useless critical section 2016-01-21 14:29:45 +01:00
Gael Guennebaud
ed8ade9c65 bug #1149: fix Pastix*::*parm() 2016-01-20 19:01:24 +01:00
Gael Guennebaud
4c5e96aab6 bug #1148: silent Pastix by default 2016-01-20 18:56:17 +01:00
Gael Guennebaud
db237d0c75 bug #1145: fix PastixSupport LLT/LDLT wrappers (missing resize prior to calls to selfAdjointView) 2016-01-20 18:49:01 +01:00
Gael Guennebaud
0b7169d1f7 bug #1147: fix compilation of PastixSupport 2016-01-20 18:15:59 +01:00
Gael Guennebaud
234a1094b7 Add static assertion to y(), z(), w() accessors 2016-01-20 09:18:44 +01:00
Eugene Brevdo
6a75e7e0d5 Digamma cleanup
* Added permission from cephes author to use his code
* Cleanup in ArrayCwiseUnaryOps
2016-01-15 16:32:21 -08:00
Benoit Steiner
bbdabbb379 Made the blas utils usable from within a cuda kernel 2016-01-11 17:26:56 -08:00
Gael Guennebaud
8b9dc9f0df bug #1144: fix regression in x=y+A*x (aliasing), and move evaluator_traits::AssumeAliasing to evaluator_assume_aliasing. 2016-01-09 08:30:38 +01:00
Gael Guennebaud
ee738321aa rm remaining debug code 2016-01-06 14:49:40 +01:00
Christoph Hertzberg
54bf582303 bug #1143: Work-around gcc bug 2016-01-06 11:59:24 +01:00
Gael Guennebaud
715f6f049f Improve inline documentation of SparseCompressedBase and its derived classes 2016-01-03 21:56:30 +01:00
Gael Guennebaud
8b0d1eb0f7 Fix numerous doxygen shortcomings, and workaround some clang -Wdocumentation warnings 2016-01-01 21:45:06 +01:00
Gael Guennebaud
9900782e88 Mark AlignedBit and EvalBeforeNestingBit with deprecated attribute, and remove the remaining usages of EvalBeforeNestingBit. 2015-12-30 16:47:49 +01:00
Gael Guennebaud
70404e07c2 Workaround clang -Wdocumentation warning about "/*<" 2015-12-30 16:46:45 +01:00
Gael Guennebaud
addb7066e8 Workaround "empty paragraph" warning with clang -Wdocumentation 2015-12-30 16:45:44 +01:00
Gael Guennebaud
eadc377b3f Add missing doc of Derived template parameter 2015-12-30 16:43:19 +01:00
Gael Guennebaud
29bb599e03 Fix numerous doxygen issues in auto-link generation 2015-12-30 16:04:24 +01:00
Gael Guennebaud
25f2b8d824 bug #1141: add missing initialization of CholmodBase::m_*IsOk 2015-12-29 15:50:11 +01:00
Eugene Brevdo
f2471f31e0 Modify constants in SpecialFunctions to lowercase (avoid name conflicts). 2015-12-28 17:48:38 -08:00
Eugene Brevdo
afb35385bf Change PI* to M_PI* in SpecialFunctions to avoid possible breakage
with external DEFINEs.
2015-12-28 17:34:06 -08:00
Eugene Brevdo
cef81c9084 Merged eigen/eigen into default 2015-12-24 21:17:33 -08:00
Eugene Brevdo
f7362772e3 Add digamma for CPU + CUDA. Includes tests. 2015-12-24 21:15:38 -08:00
Gael Guennebaud
d2e288ae50 Workaround compilers that do not even define _mm256_set_m128. 2015-12-24 16:53:43 +01:00
Benoit Steiner
3504ae47ca Made it possible to run the lgamma, erf, and erfc functors on a CUDA gpu. 2015-12-21 15:20:06 -08:00
Benoit Steiner
a6c243617b Fixed a typo in previous change. 2015-12-21 09:05:45 -08:00
Benoit Steiner
51be91f15e Added support for CUDA architectures that don's support for 3.5 capabilities 2015-12-21 08:42:58 -08:00
Benoit Steiner
6d777e1bc7 Fixed a typo. 2015-12-18 19:25:50 -08:00
Gael Guennebaud
3abd8470ca bug #1140: remove custom definition and use of _mm256_setr_m128 2015-12-18 14:18:59 +01:00
Gael Guennebaud
9f9de1aaa9 bump to 3.3-beta1 2015-12-16 21:48:48 +01:00
Gael Guennebaud
ae8b217a01 Update doc to make it clear that only SuperLU 4.x is supported 2015-12-16 10:47:03 +01:00
Gael Guennebaud
140f3a02a8 Fix MKL wrapper for ComplexSchur 2015-12-11 23:31:21 +01:00
Gael Guennebaud
4483c0fdf6 Fix unused variable warning. 2015-12-11 23:29:53 +01:00
Gael Guennebaud
774dba87c8 merge 2015-12-11 23:28:44 +01:00
Gael Guennebaud
c884a8e7f4 merge 2015-12-11 23:07:33 +01:00
Gael Guennebaud
b60a8967f5 bug #1134: fix JacobiSVD pre-allocation
(grafted from f22036f5f8
)
2015-12-11 11:59:11 +01:00
Gael Guennebaud
ca39b1546e Merged in ebrevdo/eigen (pull request PR-148)
Add special functions to eigen: lgamma, erf, erfc.
2015-12-11 11:52:09 +01:00
Gael Guennebaud
82152f2ae6 bug #1132: add EIGEN_MAPBASE_PLUGIN 2015-12-11 11:43:49 +01:00
Gael Guennebaud
4519fd5d40 Fix MKL compilation issue 2015-12-11 11:11:38 +01:00
Gael Guennebaud
7385e6e2ef Remove useless explicit 2015-12-11 11:11:19 +01:00
Gael Guennebaud
bcb4f126a7 Fix compilation of PardisoSupport 2015-12-11 11:11:00 +01:00
Gael Guennebaud
30b5c4cd14 Remove useless "explicit", and fix inline/static order. 2015-12-11 10:59:39 +01:00
Gael Guennebaud
79c1e6d0a6 Fix compilation of MKL support. 2015-12-11 10:55:07 +01:00
Gael Guennebaud
c684a07eba merge 2015-12-11 10:06:38 +01:00
Benoit Steiner
b820b097b8 Created EIGEN_HAS_C99_MATH define as Gael suggested. 2015-12-10 13:52:05 -08:00
Gael Guennebaud
df6f54ff63 Fix storage order of PartialRedux 2015-12-10 22:24:58 +01:00
Mark Borgerding
22dd368ea0 sign(complex) compiles for GPU 2015-12-10 16:14:29 -05:00
Benoit Steiner
58e06447de Silence a compilation warning 2015-12-10 13:11:36 -08:00
Benoit Steiner
48877a6933 Only implement the lgamma, erf, and erfc functions when using a compiler compliant with the C99 specification. 2015-12-10 13:09:49 -08:00
Gael Guennebaud
7ad1aaec1d bug #1103: fix neon vectorization of pmul(Packet1cd,Packet1cd) 2015-12-10 16:06:33 +01:00
Benoit Steiner
53b196aa5f Simplified the implementation of lgamma, erf, and erfc 2015-12-08 14:17:34 -08:00
Benoit Steiner
e535450573 Cleanup 2015-12-08 14:06:39 -08:00
Benoit Steiner
b1ae39794c Simplified the code a bit 2015-12-07 16:46:35 -08:00
Benoit Steiner
73b68d4370 Fixed a couple of typos
Cleaned up the code a bit.
2015-12-07 16:38:48 -08:00
Eugene Brevdo
fa4f933c0f Add special functions to Eigen: lgamma, erf, erfc.
Includes CUDA support and unit tests.
2015-12-07 15:24:49 -08:00
Gael Guennebaud
ad3d68400e Add matrix-free solver example 2015-12-07 12:33:38 +01:00
Gael Guennebaud
b37036afce Implement wrapper for matrix-free iterative solvers 2015-12-07 12:23:22 +01:00
Benoit Steiner
e25e3a041b Added rsqrt() method to the Array class: this method computes the coefficient-wise inverse square root much more efficiently than calling sqrt().inverse(). 2015-12-03 18:16:35 -08:00
Benoit Steiner
c41e9e4bd0 Merged in Unril/eigen-1/Unril/fixes-internal-compiler-error-while-comp-1449156092576 (pull request PR-147)
Fixes internal compiler error while compiling with VC2015 Update1 x64.
2015-12-03 14:26:14 -08:00
Gael Guennebaud
1562e13aba Add missing Rotation2D::operator=(Matrix2x2) 2015-12-03 22:25:26 +01:00
Nikolay Fedorov
944647c0aa Fixes internal compiler error while compiling with VC2015 Update1 x64. 2015-12-03 15:21:43 +00:00
Benoit Steiner
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.
2015-12-02 17:21:33 -08:00
Gael Guennebaud
c5b86893e7 bug #1123: add missing documentation of angle() and axis() 2015-12-01 14:45:08 +01:00
Gael Guennebaud
0bb12fa614 Add LU::transpose().solve() and LU::adjoint().solve() API. 2015-12-01 14:38:47 +01:00
Rasmus Munk Larsen
1663d15da7 Add internal method _solve_impl_transposed() to LU decomposition classes that solves A^T x = b or A^* x = b. 2015-11-30 13:39:24 -08:00
Gael Guennebaud
6c02cbbb0f Fix matrix to quaternion (and angleaxis) conversion for matrix expression. 2015-12-01 09:45:56 +01:00
Gael Guennebaud
1d906d883d Fix degenerate cases in syrk and trsm 2015-11-30 22:20:31 +01:00
Gael Guennebaud
afa11d646d Fix UmfPackLU ctor for exppressions 2015-11-27 22:04:22 +01:00
Gael Guennebaud
6bdeb8cfbe bug #918, umfpack: add access to umfpack return code and parameters 2015-11-27 21:58:36 +01:00
Gael Guennebaud
3f32f5ec22 ArrayBase::sign: add unit test and fix doc 2015-11-27 16:27:53 +01:00
Gael Guennebaud
1261d020c3 bug #1120, superlu: mem_usage_t is now uniquely defined, so let's use it. 2015-11-27 10:39:09 +01:00
Gael Guennebaud
ca001d7c2a Big 1009, part 2/2: add static assertion on LinearAccessBit in coeff(index)-like methods. 2015-11-27 10:06:47 +01:00
Gael Guennebaud
91a7059459 bug #1009, part 1/2: make sure vector expressions expose LinearAccessBit flag. 2015-11-27 10:06:07 +01:00
Mark Borgerding
7ddcf97da7 added scalar_sign_op (both real,complex) 2015-11-24 17:15:07 -05:00
Gael Guennebaud
f9fff67a56 Disable "decorated name length exceeded, name was truncated" MSVC warning. 2015-11-23 15:03:24 +01:00
Gael Guennebaud
f3dca16a1d bug #1117: workaround unused-local-typedefs warning when EIGEN_NO_STATIC_ASSERT and NDEBUG are both defined. 2015-11-23 14:07:52 +01:00
Gael Guennebaud
82bd4e546a Merged in dr15jones/eigen (pull request PR-146)
Use a class constructor to initialize CPU cache sizes
2015-11-22 22:50:31 +01:00
Gael Guennebaud
35c17a3fc8 Use overload instead of template full specialization to please old MSVC 2015-11-22 22:09:57 +01:00
Gael Guennebaud
b265979a70 Make FullPivLU::solve use rank() instead of nonzeroPivots(). 2015-11-21 15:03:04 +01:00
Chris Jones
4946d758c9 Use a class constructor to initialize CPU cache sizes
Using a static instance of a class to initialize the values for
the CPU cache sizes guarantees thread-safe initialization of the
values when using C++11. Therefore under C++11 it is no longer
necessary to call Eigen::initParallel() before calling any eigen
functions on different threads.
2015-11-20 19:58:08 +01:00
Gael Guennebaud
027a846b34 Use .data() instead of &coeffRef(0). 2015-11-20 15:30:10 +01:00
Gael Guennebaud
4fc36079e7 Fix overload instantiation for clang 2015-11-20 15:29:03 +01:00
Gael Guennebaud
5c9c0dca4d Add missing using statement to enable fast Array<complex> / real operations. (was ok for Matrix only) 2015-11-20 14:51:36 +01:00
Gael Guennebaud
e1b27bcb0b Workaround MSVC missing overloads of std::fpclassify for integral types 2015-11-20 13:55:34 +01:00
Gael Guennebaud
e52d4f8d8d Add is_integral<> type traits 2015-11-20 13:54:28 +01:00
Benoit Steiner
7d1cedd0fe Added numeric limits for unsigned integers 2015-11-18 17:17:44 -08:00
Benoit Jacob
4926251f13 bug #1115: enable static alignment on ARM outside of old-GCC 2015-11-18 10:55:23 -05:00
Benoit Steiner
bf792f59e3 Only enable the use of constexpr with nvcc if we're using version 7.5 or above 2015-11-13 12:24:22 -08:00
Benoit Steiner
1e1755352d Made it possible to compute atan, tanh, sinh and cosh on GPU 2015-11-12 20:19:38 -08:00
Benoit Steiner
e4d45f3440 Only enable the use of const expression when nvcc is called with the -std=c++11 option 2015-11-12 18:18:35 -08:00
Benoit Steiner
8037826367 Simplified more of the IndexList code. 2015-11-12 17:19:45 -08:00
Gael Guennebaud
dfbb889fe9 Fix missing Dynamic versus HugeCost changes 2015-11-12 12:09:48 +01:00
Gael Guennebaud
e701cb2c7c Update EIGEN_FAST_MATH doc 2015-11-12 12:09:19 +01:00
Benoit Steiner
4f471146fb Allow the vectorized version of the Binary and the Nullary functors to run on GPU 2015-11-11 15:19:00 -08:00
Gael Guennebaud
e73ef4f25e bug #1109: use noexcept instead of throw for C++11 compilers 2015-12-10 14:21:23 +01:00
Gael Guennebaud
145ad5d800 Use more explicit names. 2015-12-10 12:03:38 +01:00
Gael Guennebaud
75f0fe3795 Fix usage of "Index" as a compile time integral. 2015-12-10 12:01:06 +01:00
Gael Guennebaud
f248249c1f bug #1113: fix name conflict with C99's "I". 2015-12-10 11:57:57 +01:00
Gael Guennebaud
fbe18d5507 Forbid the creation of SparseCompressedBase object 2015-12-09 15:47:32 +01:00
Gael Guennebaud
dc73430d4b bug #1074: forbid the creation of PlainObjectBase object by making its ctor protected 2015-12-09 15:47:08 +01:00
Gael Guennebaud
1257fbd2f9 Fix sign-unsigned issue in enum 2015-12-09 10:06:42 +01:00
Gael Guennebaud
4549549992 Fix and clarify documentation of Transform wrt operator*(MatrixBase) 2015-12-08 16:21:49 +01:00
Gael Guennebaud
543bd28a24 Fix Alignment in coeff-based product, and enable unaligned vectorization 2015-12-08 11:28:05 +01:00
Benoit Steiner
d27e4f1cba Added missing EIGEN_DEVICE_FUNC statements 2015-11-06 09:23:58 -08:00
Benoit Steiner
ed1962b464 Reimplement the tensor comparison operators by using the scalar_cmp_op functors. This makes them more cuda friendly. 2015-11-06 09:18:43 -08:00
Gael Guennebaud
bfd6ee64f3 bug #1105: fix default preallocation when moving from compressed to uncompressed mode 2015-11-06 15:05:37 +01:00
Gael Guennebaud
ae87f094eb Fix "," in non SSE4 mode 2015-11-05 12:08:36 +01:00
Gael Guennebaud
90323f1751 Fix AVX round/ceil/floor, and fix respective unit test 2015-11-04 22:15:57 +01:00
Gael Guennebaud
3dd24bdf99 Merged in aavenel/eigen (pull request PR-142)
Add round, ceil and floor for SSE4.1/AVX (Bug #70)
2015-11-04 18:26:38 +01:00
Gael Guennebaud
902750826b Add support for dense.cwiseProduct(sparse)
This also fixes a regression regarding (dense*sparse).diagonal()
2015-11-04 17:42:07 +01:00
Gael Guennebaud
f6b1deebab Fix compilation of sparse-triangular to dense assignment 2015-11-04 17:02:32 +01:00
Benoit Steiner
36cd6daaae Made the CUDA implementation of ploadt_ro compatible with cuda implementations older than 3.5 2015-11-03 16:36:30 -08:00
Gael Guennebaud
29a94c8055 compilation issue 2015-11-02 16:11:59 +01:00
Alexandre Avenel
38832e0791 Merge 2015-11-01 10:55:42 +01:00
Alexandre Avenel
d46e2c10a6 Add round, ceil and floor for SSE4.1/AVX (Bug #70) 2015-11-01 10:49:27 +01:00
Gael Guennebaud
c0352197a1 bug #1099: add missing incude for CUDA 2015-10-31 18:06:28 +01:00
Gael Guennebaud
b32948c642 bug #1102: fix multiple definition linking issue 2015-10-30 22:25:59 +01:00
Gael Guennebaud
ddaaa2d381 bug #1101: typo 2015-10-30 12:02:52 +01:00
Gael Guennebaud
0e6cb08f92 Fix shadow warning 2015-10-30 11:44:22 +01:00
Gael Guennebaud
27c56bf60f Workaround compilation issue with MSVC<=2013 2015-10-30 10:57:11 +01:00
Benoit Steiner
ac142773a7 Don't call internal::check_rows_cols_for_overflow twice in PlainObjectBase::resize since this is extremely expensive for small arrays 2015-10-29 13:13:39 -07:00
Gael Guennebaud
7cfbe35e49 Fix duplicated declaration 2015-10-29 21:05:52 +01:00
Gael Guennebaud
568d488a27 Fusion the two similar specialization of Sparse2Dense Assignment.
This change also fixes a compilation issue with MSVC<=2013.
2015-10-29 13:16:15 +01:00
Gael Guennebaud
7a5f83ca60 Add overloads for real times sparse<complex> operations.
This avoids real to complex conversions, and also fixes a compilation issue with MSVC.
2015-10-29 03:55:39 -07:00
Gael Guennebaud
c688cc28d6 fix copy/paste typo 2015-10-28 20:20:05 +01:00
Gael Guennebaud
6759a21e49 CUDA support: define more accurate min/max values for device::numeric_limits of float and double using values from cfloat header 2015-10-28 16:49:15 +01:00
Gael Guennebaud
28ddb5158d Enable std::isfinite/nan/inf on MSVC 2013 and newer and clang. Fix isinf for gcc4.4 and older msvc with fast-math. 2015-10-28 16:27:20 +01:00
Gael Guennebaud
8531304858 Simplify cost computations based on HugeCost being smaller that unrolling limit 2015-10-28 13:39:02 +01:00
Gael Guennebaud
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)
2015-10-28 11:42:14 +01:00
Gael Guennebaud
e3031d7bfa bug #1008: improve handling of fast-math mode for older gcc versions. 2015-10-27 16:43:23 +01:00
Gael Guennebaud
2475a1de48 bug #1008: stabilize isfinite/isinf/isnan/hasNaN/allFinite functions for fast-math mode. 2015-10-27 15:39:50 +01:00
Gael Guennebaud
699c33e76a merge 2015-10-27 11:10:11 +01:00
Gael Guennebaud
8c66b6bc61 Simplify evaluator::Flags for Map<> 2015-10-27 11:06:42 +01:00
Gael Guennebaud
12f50a4697 Fix assign vectorization logic with respect to fixed outer-stride 2015-10-27 11:04:19 +01:00
Gael Guennebaud
73f692d16b Fix ambiguous instantiation 2015-10-27 11:01:37 +01:00
Gael Guennebaud
0fc8954282 Improve readibility of EIGEN_DEBUG_ASSIGN mode. 2015-10-27 10:38:49 +01:00
Gael Guennebaud
e6f8c5c325 Add support to directly evaluate the product of two sparse matrices within a dense matrix. 2015-10-26 18:20:00 +01:00
Gael Guennebaud
a5324a131f bug #1092: fix iterative solver ctors for expressions as input 2015-10-26 16:16:24 +01:00
Gael Guennebaud
f93654ae16 bug #1098: fix regression introduced when generalizing some compute() methods in changeset 7031a851d4
.
2015-10-26 16:00:25 +01:00
Gael Guennebaud
4704bdc9c0 Make the IterativeLinearSolvers module compatible with MPL2-only mode
by defaulting to COLAMDOrdering and NaturalOrdering for ILUT and ILLT respectively.
2015-10-26 15:17:52 +01:00
Gael Guennebaud
47d44c2f37 Add missing licence header to some top header files 2015-10-26 11:46:05 +01:00
Gael Guennebaud
8a211bb1a9 bug #1088: fix setIdenity for non-compressed sparse-matrix 2015-10-25 22:01:58 +01:00
Gael Guennebaud
ac6b2266b9 Fix SparseMatrix::insert/coeffRef for non-empty compressed matrix 2015-10-25 22:00:38 +01:00
nnyby
ccc7b0ffea [doc] grammar fix: "linearly space" -> "linearly spaced" 2015-10-01 23:43:06 +00:00
Gael Guennebaud
75a60d3ac0 bug #1075: fix AlignedBox::sample for runtime dimension 2015-09-30 11:44:02 +02:00
Gael Guennebaud
781e8c38bd merge 2015-09-29 11:12:43 +02:00
Gael Guennebaud
b2b8c1d41e Fix performance regression in sparse * dense product where "sparse" is an expression 2015-09-29 11:11:40 +02:00
Benoit Steiner
d46bacb6bb Call numext::mini instead of std::min in several places. 2015-09-28 10:40:41 -07:00
Gael Guennebaud
ceafed519f Add support for permutation * homogenous 2015-09-28 16:56:11 +02:00
Gael Guennebaud
02e940fc9f bug #1071: improve doc on lpNorm and add example for some operator norms 2015-09-28 11:55:36 +02:00
Gael Guennebaud
8c1ee3629f Add support for row/col-wise lpNorm() 2015-09-28 11:36:00 +02:00
Gael Guennebaud
75861f6650 bug #1069: fix AVX support on MSVC (use of non portable C-style cast) 2015-09-28 10:08:26 +02:00
Gael Guennebaud
d16797cfc0 Fix bug #1067: naming conflict 2015-09-19 21:44:14 +02:00
Gael Guennebaud
9d993c709b Fix typo in Vectowise::any() 2015-09-16 22:31:19 +02:00