aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/LU
Commit message (Collapse)AuthorAge
* Remove pset, replace with ploadu.Gravatar Antonio Sanchez2021-06-16
| | | | | | | | | We can't make guarantees on alignment for existing calls to `pset`, so we should default to loading unaligned. But in that case, we should just use `ploadu` directly. For loading constants, this load should hopefully get optimized away. This is causing segfaults in Google Maps.
* Use bit_cast to create -0.0 for floating point types to avoid compiler ↵Gravatar Rasmus Munk Larsen2021-06-11
| | | | optimization changing sign with --ffast-math enabled.
* Make vectorized compute_inverse_size4 compile with AVX.Gravatar Rasmus Munk Larsen2021-04-22
|
* Replace `-2147483648` by `-0.0f` or `-0.0` constants (this should fix #2189).Gravatar Christoph Hertzberg2021-04-07
| | | | Also, remove unnecessary `pgather` operations.
* Revert "Revert "Adds EIGEN_CONSTEXPR and EIGEN_NOEXCEPT to rows(), cols(), ↵Gravatar Steve Bronder2021-03-24
| | | | | | innerStride(), outerStride(), and size()"" This reverts commit 5f0b4a4010af4cbf6161a0d1a03a747addc44a5d.
* Revert "Adds EIGEN_CONSTEXPR and EIGEN_NOEXCEPT to rows(), cols(), ↵Gravatar David Tellenbach2021-03-05
| | | | | | | innerStride(), outerStride(), and size()" This reverts commit 6cbb3038ac48cb5fe17eba4dfbf26e3e798041f1 because it breaks clang-10 builds on x86 and aarch64 when C++11 is enabled.
* Adds EIGEN_CONSTEXPR and EIGEN_NOEXCEPT to rows(), cols(), innerStride(), ↵Gravatar Steve Bronder2021-03-04
| | | | outerStride(), and size()
* EOF newline added to InverseSize4.Gravatar Antonio Sanchez2020-11-18
| | | | | Causing build breakages due to `-Wnewline-eof -Werror` that seems to be common across Google.
* Unify Inverse_SSE.h and Inverse_NEON.h into a single generic implementation ↵Gravatar Guoqiang QI2020-11-17
| | | | using PacketMath.
* Use reinterpret_cast instead of C-style cast in Inverse_NEON.hGravatar David Tellenbach2020-10-04
|
* Don't cast away const in Inverse_NEON.h.Gravatar Rasmus Munk Larsen2020-10-02
|
* Add missing newline at the end of Inverse_NEON.hGravatar Rasmus Munk Larsen2020-09-29
|
* Disable double version of compute_inverse_size4 on Inverse_NEON.h if ↵Gravatar Rasmus Munk Larsen2020-09-17
| | | | Packet2d is not supported.
* Add Inverse_NEON.hGravatar Stephen Zheng2020-09-04
| | | | | | | | | | | Implemented fast size-4 matrix inverse (mimicking Inverse_SSE.h) using NEON intrinsics. ``` Benchmark Time CPU Time Old Time New CPU Old CPU New -------------------------------------------------------------------------------------------------------- BM_float -0.1285 -0.1275 568 495 572 499 BM_double -0.2265 -0.2254 638 494 641 496 ```
* Fix conversion warningsGravatar Gael Guennebaud2019-02-19
|
* bug #1194: implement slightly faster and SIMD friendly 4x4 determinant.Gravatar Gael Guennebaud2019-02-18
|
* Let's properly use Score instead of std::abs, and remove deprecated FIXME ( ↵Gravatar Gael Guennebaud2019-02-11
| | | | a /= b does a/b and not a * (1/b) as it was a long time ago...)
* Speed up 2x2 LU by a factor 2, and other small fixed sizes by about 10%.Gravatar Gael Guennebaud2019-02-11
| | | | Not sure that's so critical, but this does not complexify the code base much.
* Speedup PartialPivLU for small matrices by passing compile-time sizes when ↵Gravatar Gael Guennebaud2019-02-11
| | | | | | | | | | | | | | | | | | | | | 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 |
* bug #1669: fix PartialPivLU/inverse with zero-sized matrices.Gravatar Gael Guennebaud2019-01-29
|
* Make FullPivLU use conjugateIf<>Gravatar Gael Guennebaud2019-01-17
|
* PR 567: makes all dense solvers inherit SoverBase (LU,Cholesky,QR,SVD).Gravatar Patrick Peltzer2019-01-17
| | | | | | | | | | | | | 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()
* Add conjugateIf<bool> members to DesneBase, TriangularView, SelfadjointView, ↵Gravatar Gael Guennebaud2019-01-17
| | | | and make PartialPivLU use it.
* Fix StorageIndex FIXME in dense LU solversGravatar Gael Guennebaud2019-01-13
|
* bug #1644: fix warningGravatar Gael Guennebaud2018-12-11
|
* Cast to diagonalSize to RealScalar instead Scalar.Gravatar Rasmus Munk Larsen2018-08-09
|
* Cast diagonalSize() to Scalar before multiplication. Without this, automatic ↵Gravatar Rasmus Munk Larsen2018-08-09
| | | | differentiation in Ceres breaks because Scalar is a custom type that does not support multiplication by Index.
* Extend CUDA support to matrix inversion and selfadjointeigensolverGravatar Andrea Bocci2018-06-11
|
* bug #1509: fix computeInverseWithCheck for complexesGravatar Gael Guennebaud2018-04-04
|
* MIsc. source and comment typosGravatar luz.paz2018-03-11
| | | | Found using `codespell` and `grep` from downstream FreeCAD
* Adjusted the EIGEN_DEVICE_FUNC qualifiers to make sure that:Gravatar Benoit Steiner2017-03-01
| | | | | * they're used consistently between the declaration and the definition of a function * we avoid calling host only methods from host device methods.
* Fix regression in X = (X*X.transpose())/s with X rectangular by deferring ↵Gravatar Gael Guennebaud2016-10-26
| | | | resizing of the destination after the creation of the evaluator of the source expression.
* Removed EIGEN_DEVICE_FUNC qualifers for the lu(), fullPivLu(), ↵Gravatar Benoit Steiner2016-09-19
| | | | partialPivLu(), and inverse() functions since they aren't ready to run on GPU
* Added several missing EIGEN_DEVICE_FUNC qualifiersGravatar Benoit Steiner2016-09-14
|
* bug #1285: fix regression introduced in changeset ↵Gravatar Gael Guennebaud2016-09-13
| | | | 00c29c2caef8fb0c6b1d2ba5ecdf6780c0c766d4
* bug #1266: remove CUDA guards on MatrixBase::<decomposition> definitions. ↵Gravatar Gael Guennebaud2016-09-06
| | | | (those used to break old nvcc versions that we propably don't care anymore)
* Fix 4x4 inverse with non-linear destinationGravatar Gael Guennebaud2016-08-30
|
* bug #1167: simplify installation of header files using cmake's ↵Gravatar Gael Guennebaud2016-08-29
| | | | install(DIRECTORY ...) command.
* Clean references to MKL in LAPACKe support.Gravatar Gael Guennebaud2016-07-25
|
* Rename MKL filesGravatar Gael Guennebaud2016-07-25
|
* bug #173: remove dependency to MKL for LAPACKe backend.Gravatar Gael Guennebaud2016-07-25
|
* Add documentation and exemples for inplace decomposition.Gravatar Gael Guennebaud2016-07-04
|
* bug #707: add inplace decomposition through Ref<> for Cholesky, LU and QR ↵Gravatar Gael Guennebaud2016-07-04
| | | | decompositions.
* Relax mixing-type constraints for binary coefficient-wise operators:Gravatar Gael Guennebaud2016-06-06
| | | | | | | | | | - 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
* Fix/handle some int-to-long conversions.Gravatar Gael Guennebaud2016-05-26
|
* Store permutation's determinant as char.Gravatar Gael Guennebaud2016-05-26
| | | | This also fixes some long to float conversion warnings
* Handle some Index to int conversions in BLAS/LAPACK support.Gravatar Gael Guennebaud2016-05-26
|
* Cleaning pass on rcond estimator.Gravatar Gael Guennebaud2016-04-14
|
* Addresses comments on Eigen pull request PR-174.Gravatar Rasmus Munk Larsen2016-04-04
| | | | | | | | * Get rid of code-duplication for real vs. complex matrices. * Fix flipped arguments to select. * Make the condition estimation functions free functions. * Use Vector::Unit() to generate canonical unit vectors. * Misc. cleanup.
* Add matrix condition estimator module that implements the Higham/Hager ↵Gravatar Rasmus Munk Larsen2016-04-01
| | | | algorithm from http://www.maths.manchester.ac.uk/~higham/narep/narep135.pdf used in LPACK. Add rcond() methods to FullPivLU and PartialPivLU.