Commit Graph

3612 Commits

Author SHA1 Message Date
Gael Guennebaud
e3ba5329ff Implement evaluators for sparse Block. 2014-06-25 09:58:26 +02:00
Gael Guennebaud
17f119689e implement evaluator for SparseVector 2014-06-25 09:58:03 +02:00
Christoph Hertzberg
755be9016a Workaround clang error introduced by 3117036b80
:
"template argument for non-type template parameter is treated as function type 'bool (bool)'"
2014-06-23 22:33:36 +02:00
Christoph Hertzberg
3117036b80 Fix bug #826: Allow initialization of 1x1 Arrays/Matrices by passing a value. 2014-06-23 11:15:42 +02:00
Christoph Hertzberg
1c3843bf86 Fix bug #729: Use alloca if it is defined 2014-06-23 11:04:12 +02:00
Gael Guennebaud
3849cc65ee Implement binaryop and transpose evaluators for sparse matrices 2014-06-23 10:40:03 +02:00
Gael Guennebaud
7fa87a8b12 Backport changes from old to new expression engines 2014-06-20 16:17:57 +02:00
Gael Guennebaud
b29b81a1f4 merge with default branch 2014-06-20 15:55:44 +02:00
Gael Guennebaud
47585c8ab2 merge 2014-06-20 15:49:07 +02:00
Gael Guennebaud
c415b627a7 Started to move the SparseCore module to evaluators: implemented assignment and cwise-unary evaluator 2014-06-20 15:42:13 +02:00
Gael Guennebaud
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.
2014-06-20 15:39:38 +02:00
Gael Guennebaud
963d338922 Fix bug #827: improve accuracy of quaternion to angle-axis conversion 2014-06-20 15:09:42 +02:00
Gael Guennebaud
98ef44fe55 Add assertion and warning on the requirements of SparseQR and COLAMDOrdering 2014-06-20 14:43:47 +02:00
Jitse Niesen
55453c51e8 Add documentation and very simple test for array atan(). 2014-06-19 15:07:42 +01:00
Roger Martin
eb49100de9 Add component-wise atan() function (see bug #80). 2014-06-19 14:55:14 +01:00
Mark Borgerding
afb1a8c124 fixed warning: -Wunused-local-typedefs 2014-06-17 18:25:56 -04:00
Gael Guennebaud
c06ec0f464 Fix Jacobi preconditioner with zero diagonal entries 2014-06-17 23:47:30 +02:00
Gael Guennebaud
ed37c44765 Enable LinearAccessBit in Block expression for inner-panels 2014-06-06 11:02:20 +02:00
Gael Guennebaud
0f1e321dd4 Fic bug #819: include path of details.h 2014-06-04 11:58:01 +02:00
Jitse Niesen
eb56461ac2 Fix doc'n of FullPivLU re permutation matrices (bug #815). 2014-05-31 23:05:18 +01:00
Christoph Hertzberg
9aa3dc4e21 Merged in benoitsteiner/eigen-fixes (pull request PR-62)
Made it possible to call the assignment operator on an Eigen::Block from a CUDA kernel.
2014-05-08 17:06:28 +02:00
Benoit Steiner
881aab14b4 Made it possible to call the assignment operator on an Eigen::Block from a CUDA kernel. 2014-05-07 13:34:46 -07:00
Christoph Hertzberg
9217de8bf2 Missed to remove IACA_END in previous commit 2014-05-05 15:10:18 +02:00
Christoph Hertzberg
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
2014-05-05 15:06:37 +02:00
Christoph Hertzberg
b4beba72a2 Fix bug #807: Missing scalar type cast in umeyama() 2014-05-05 14:23:52 +02:00
Christoph Hertzberg
b5e3d76aa5 Fixed bug #806: Missing scalar type cast in Quaternion::setFromTwoVectors() 2014-05-05 14:22:27 +02:00
Benjamin Chretien
0b7f95a03f Fix typo in SparseMatrix assert. 2014-05-03 12:41:37 +02:00
Gael Guennebaud
d67aa1549b Add missing add_subdirectory directive 2014-05-03 10:46:11 +02:00
Gael Guennebaud
07986189b7 Fix bug #803: avoid char* to int* conversion 2014-05-01 23:03:54 +02:00
Gael Guennebaud
e7ef26fa44 TRMM: Make sure we have enough memory in rhs block to enforce alignment. 2014-04-25 23:36:22 +02:00
Gael Guennebaud
450d0c3de0 Make sure that calls to broadcast4 are 16 bytes aligned 2014-04-25 22:25:48 +02:00
Gael Guennebaud
f9d2f3903e Product kernel: skip loop on columns if there is no remaining rows 2014-04-25 16:54:30 +02:00
Gael Guennebaud
6f64b0b487 Fix sizeof unit test 2014-04-25 14:05:54 +02:00
Gael Guennebaud
c20e3641de Fix for mixed products 2014-04-25 13:22:34 +02:00
Gael Guennebaud
2dbfd83424 Implement pbroadcast4 on altivec 2014-04-25 02:46:57 -07:00
Gael Guennebaud
c9788d55b9 Disable 3pX4 kernel on Altivec: despite this platform has 32 registers, this version seems significantly slower. 2014-04-25 11:48:22 +02:00
Gael Guennebaud
4def7b1fa5 Fix ptranspose overload prototypes for NEON 2014-04-25 11:15:13 +02:00
Gael Guennebaud
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)
2014-04-25 11:06:03 +02:00
Gael Guennebaud
3d8d0f6269 Enable vectorization of pack_rhs with a column-major RHS.
Rename and generalize Kernel<*> to PacketBlock<*,N>.
2014-04-25 10:56:18 +02:00
Gael Guennebaud
b0e19db1cf Enable fused madd for Altivec 2014-04-24 23:17:18 +02:00
Gael Guennebaud
8d85ce88e1 Implement ptranspose on altivec and fix pgather/pscatter 2014-04-24 05:47:53 -07:00
Benoit Steiner
4eb92e5647 Fixed the NEON implementation of predux_max<Packet4i>. 2014-04-23 18:23:07 -07:00
Benoit Steiner
ccb4dec719 Created a NEON version of the ptranspose packet primitives 2014-04-23 18:22:10 -07:00
Gael Guennebaud
82b09fcb91 Add Altivec implementation of pgather/pscatter (not tested) 2014-04-23 13:09:26 +02:00
Gael Guennebaud
ecbd67a15a Fix EIGEN_MAKE_UNALIGNED_ARRAY_ASSERT macro 2014-04-22 17:03:57 +02:00
Gael Guennebaud
934ce93886 merge with default branch 2014-04-22 17:00:38 +02:00
Gael Guennebaud
5c5231ab71 Workaround gcc's default ABI not being able to distinghish between vector types of different sizes. 2014-04-22 16:03:19 +02:00
Gael Guennebaud
2606abed53 Fix 128bit packet size assumptions in unit tests. 2014-04-18 21:14:40 +02:00
Gael Guennebaud
a7d20038df Fix alignment assertion. 2014-04-18 17:06:31 +02:00
Gael Guennebaud
3454b4e5f1 Fix calls to lazy products (lazy product does not like matrices with 0 length) 2014-04-18 17:06:03 +02:00
Gael Guennebaud
94684721bd Smarter block size computation 2014-04-18 15:35:34 +02:00
Gael Guennebaud
1388f4f9fd Fix typo (was working with clang\!) 2014-04-18 11:43:13 +02:00
Gael Guennebaud
6d665d446b Fixes for fixed sizes and non vectorizable types 2014-04-17 23:26:34 +02:00
Gael Guennebaud
2c3c95990d merge 2014-04-17 22:50:49 +02:00
Benoit Steiner
6d6df90c9a Implemented the pgather/pscatter packet primitives for the arm/NEON architecture 2014-04-17 12:28:01 -07:00
Gael Guennebaud
9746396d1b Optimize AVX pset1 for complexes and ploaddup 2014-04-17 20:51:04 +02:00
Gael Guennebaud
11fbdcbc38 Fix and optimize mixed products 2014-04-17 16:04:30 +02:00
Gael Guennebaud
0fa8290366 Optimize ploaddup for AVX 2014-04-17 16:02:27 +02:00
Gael Guennebaud
d936ddc3d1 Fallback to lazy products for very small ones. 2014-04-16 23:15:42 +02:00
Gael Guennebaud
de8336a9bc Enable alloca on MAC OSX 2014-04-16 23:14:58 +02:00
Jitse Niesen
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.
2014-04-16 18:16:36 +01:00
Gael Guennebaud
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.
2014-04-16 17:05:11 +02:00
Jitse Niesen
b30706bd5c Fix typo in Inverse.h 2014-04-15 22:51:46 +01:00
Mark Borgerding
e0dbb68c2f Check IMKL version for compatibility with Eigen 2014-04-15 13:57:03 -04:00
Jitse Niesen
59f5f155c2 Port products with permutation matrices to evaluators. 2014-04-15 15:21:38 +01:00
Gael Guennebaud
3c66bb136b bug #793: detect NaN and INF in EigenSolver instead of aborting with an assert. 2014-04-14 22:00:27 +02:00
Gael Guennebaud
7098e6d976 Add isfinite overload for complexes. 2014-04-14 21:57:49 +02:00
Benoit Steiner
feaf7c7e6d Optimized SSE unaligned loads and stores when compiling a 64bit target with a recent version of gcc (ie gcc 4.8). 2014-04-14 10:44:17 -07:00
Gael Guennebaud
148acf8e4f bug #790: fix overflow in real_2x2_jacobi_svd 2014-04-14 13:52:16 +02:00
Gael Guennebaud
0587db8bf5 bug #793: fix overflow in EigenSolver and add respective regression unit test 2014-04-14 11:43:08 +02:00
Benoit Steiner
1b333c89c9 Updated my previous fix to avoid introducing a compilation warning on ARM platforms. 2014-04-10 17:43:13 -07:00
Benoit Steiner
a1fcf599fa Silenced a compilation warning produced by nvcc. 2014-04-10 11:19:37 -07:00
Jitse Niesen
a91a7a1964 doc: Add references to Cholesky methods in SelfAdjointView. 2014-04-07 14:14:48 +01:00
Benoit Steiner
b446ff037e Deleted some dead code. 2014-04-04 14:12:24 -07:00
Christoph Hertzberg
096af59799 Fix bug #784: Assert if assigning a product to a triangularView does not match the size. 2014-04-04 17:48:37 +02:00
Benoit Steiner
8044b00a7f bug #782: Workaround for gcc <= 4.4 compilation error on the NEON PacketMath code. 2014-04-03 23:41:47 +02:00
Gael Guennebaud
8d0441052e Finally, prefetching seems to help getting more stable performance 2014-03-31 10:42:19 +02:00
Gael Guennebaud
1c0728043a Workaround alignment warnings 2014-03-30 22:43:47 +02:00
Gael Guennebaud
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
2014-03-30 21:57:05 +02:00
Benoit Steiner
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. 2014-03-28 12:11:23 -07:00
Gael Guennebaud
10aa14592a Add a mechanism to recursively access to half-size packet types 2014-03-28 10:18:04 +01:00
Gael Guennebaud
8d2bb2c20d merge with default branch 2014-03-28 09:24:18 +01:00
Gael Guennebaud
c94fde118a Enable vectorization of gemv for PacketSize>4 through unaligned loads (still better than no vectorization) 2014-03-28 09:11:06 +01:00
Benoit Steiner
51e85c936d Merged latest changes from parent. 2014-03-27 18:32:15 -07:00
Benoit Steiner
8a94cb3edd Implemented the SSE version of the gather and scatter packet primitives. 2014-03-27 18:29:01 -07:00
Benoit Steiner
7f3162f707 Implemented the AVX version of the gather and scatter packet primitives. 2014-03-27 17:42:25 -07:00
Benoit Steiner
ee86679096 Introduced pscatter/pgather packet primitives. They will be used to optimize the loop peeling code of the block-panel matrix multiplication kernel. 2014-03-27 16:03:03 -07:00
Gael Guennebaud
58fe2fc2b2 enforce the use of vfmadd231ps for pmadd (gcc and clang stupidely generates the other fmadd variants plus some register moves...) 2014-03-27 23:38:50 +01:00
Benoit Steiner
729363114f Fixed compilation error when FMA instructions are enabled. 2014-03-27 11:20:41 -07:00
Benoit Steiner
1697d7a179 Silenced "unused variable" warnings when compiling with FMA. 2014-03-27 11:00:47 -07:00
Benoit Steiner
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. 2014-03-27 10:38:41 -07:00
Benoit Steiner
b776458ccb Vectorized the packing of a row-major matrix used as the left hand side argument in a matrix-matrix product. 2014-03-27 10:02:24 -07:00
Benoit Steiner
c4902a3d01 Implemented the AVX version of the ptranspose packet primitive. 2014-03-27 09:34:51 -07:00
Gael Guennebaud
052aedd394 Implement pcplflip, palign, predux and the likes from AVC/complexes 2014-03-27 14:47:00 +01:00
Gael Guennebaud
fb03b56647 Fix warning 2014-03-27 11:38:35 +01:00
Mark Borgerding
9ce0d78513 immintrin.h did not come until intel version 11 2014-03-26 22:26:07 -04:00
Benoit Steiner
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.
2014-03-26 19:03:07 -07:00
Benoit Steiner
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). 2014-03-26 17:35:18 -07:00
Benoit Steiner
e45a6bed45 Specialized the pload1 packet primitive for Packet8f and Packet4d in order to take advantage of the vbroadcastss and vbroadcastsd instructions whenever possible. 2014-03-26 15:58:13 -07:00
Benoit Steiner
cc73164aa8 Merged latest updates from the parent branch 2014-03-26 15:23:59 -07:00
Gael Guennebaud
f0a4c9d5ab Update gebp kernel to process a panle of 4 columns at once for the remaining ones. 2014-03-26 23:22:36 +01:00
Gael Guennebaud
8be011e776 Remove remaining bits of the dead working buffer 2014-03-26 23:14:44 +01:00
Benoit Steiner
a078f442a3 Vectorized the multiplication and division of complex numbers using AVX instructions. 2014-03-26 15:11:18 -07:00
Benoit Steiner
cf1a7bfbe1 Used AVX instructions to vectorize the complex version of the pfirst and ploaddup packet primitives.
Silenced a few compilation warnings.
2014-03-26 12:03:31 -07:00
Gael Guennebaud
bc401eb6fa Implement new 1 packet x 8 gebp kernel 2014-03-26 18:53:00 +01:00
Gael Guennebaud
b286a1e75c add pbroadcast2/4 generic intrinsics 2014-03-26 16:46:36 +01:00
Benoit Steiner
6bf3cc2732 Use AVX instructions to vectorize pset1<Packet2cd>, pset1<Packet4cf>, preverse<Packet2cd>, and preverse<Packet4cf> 2014-03-25 09:00:43 -07:00
Benoit Steiner
7ae9b0805d Used AVX instructions to vectorize the predux_min<Packet8f>, predux_min<Packet4d>, predux_max<Packet8f>, and predux_max<Packet4d> packet primitives. 2014-03-24 13:33:40 -07:00
Benoit Steiner
72707a8664 Made sure that EIGEN_ALIGN is defined when EIGEN_DONT_VECTORIZE is set to true to prevent build failures when vectorization is disabled. 2014-03-21 11:40:29 -07:00
Benoit Steiner
8a0845ebd7 Merged latest changes from the parent 2014-03-18 12:58:08 -07:00
Christoph Hertzberg
35a2c9cde7 clang does not accept this without template keyword 2014-03-14 16:48:29 +01:00
Gael Guennebaud
bb4b67cf39 Relax Ref such that Ref<MatrixXf> accepts a RowVectorXf which can be seen as a degenerate MatrixXf(1,N) 2014-03-13 18:04:19 +01:00
Gael Guennebaud
0a6c472335 A bit of cleaning 2014-03-13 15:44:20 +01:00
Christoph Hertzberg
2db792852f Silence stupid parenthesis warnings for old GCC versions (<= 4.6.x) 2014-03-13 12:58:57 +01:00
Gael Guennebaud
aceae8314b Resurect EvalBeforeNestingBit to control nested_eval 2014-03-12 20:25:36 +01:00
Gael Guennebaud
f74ed34539 Fix regressions in redux_evaluator flags and evaluator<Block> flags 2014-03-12 18:14:08 +01:00
Gael Guennebaud
5e26b7cf9d Extend evaluation traits debuging info 2014-03-12 18:13:18 +01:00
Gael Guennebaud
74b1d79d77 merge default and evaluator branches 2014-03-12 16:24:25 +01:00
Gael Guennebaud
0b362e0c9a This file is not needed anymore 2014-03-12 16:18:54 +01:00
Gael Guennebaud
a6be1952f4 Fix a few regression when moving the flags 2014-03-12 16:18:34 +01:00
Christoph Hertzberg
2379ccffcb bug #755: CommaInitializer produced wrong assertions in absence of ReturnValueOptimization. 2014-03-12 13:48:09 +01:00
Christoph Hertzberg
88aa18df64 bug #759: Removed hard-coded double-math from Quaternion::angularDistance.
Some documentation improvements
2014-03-12 13:43:19 +01:00
Gael Guennebaud
0bd5671b9e Fix Eigenvalues module 2014-03-12 13:35:44 +01:00
Gael Guennebaud
8dd3b716e3 Move evaluation related flags from traits to evaluator and fix evaluators of MapBase and Replicate 2014-03-12 13:34:11 +01:00
Gael Guennebaud
7eefdb948c Migrate JacobiSVD to Solver 2014-03-11 13:43:46 +01:00
Gael Guennebaud
082f7ddc37 Port Cholesky module to evaluators 2014-03-11 13:33:44 +01:00
Christoph Hertzberg
bbc0ada12a Avoid stupid "enumeral mismatch in conditional expression" warnings in GCC 2014-03-11 12:18:32 +01:00
Gael Guennebaud
9be72cda2a Port QR module to Solve/Inverse 2014-03-11 11:47:32 +01:00
Gael Guennebaud
ae40583965 Fix CoeffReadCost issues 2014-03-11 11:47:14 +01:00
Gael Guennebaud
5806e73800 It is not clear what XprType::Nested should be, so let's use nested<Xpr>::type as much as possible 2014-03-11 11:44:11 +01:00
Gael Guennebaud
2bf63c6b4a Even ReturnByValue should not evaluate when assembling the expression 2014-03-11 11:42:07 +01:00
Gael Guennebaud
da6ec81282 Move CoeffReadCost mechanism to evaluators 2014-03-10 23:24:40 +01:00
Gael Guennebaud
354bd8a428 Hide legacy dense assignment routines with EIGEN_TEST_EVALUATORS 2014-03-10 09:30:58 +01:00
Gael Guennebaud
5c0f294098 Fix evaluators unit test (i.e., when only EIGEN_ENABLE_EVALUATORS is defined 2014-03-10 09:28:00 +01:00
Abraham Bachrach
804ef2350d Move the Base typedef's from private to public scope
Move the Quaternion::Base typedef from private to public scope so that one may
create child classes of Quaternion.

NOTE: This matches the semantics of MatrixBase.
2014-03-09 16:56:44 -07:00
Benoit Steiner
8eac97138a Merged latest changes from the main trunk 2014-02-24 13:59:43 -08:00
Benoit Steiner
1dd176b0b0 Pulled latest changes from the Eigen main trunk 2014-02-24 13:56:01 -08:00
Benoit Steiner
131027ee0a Merged eigen/eigen into default 2014-02-24 13:54:07 -08:00
Benoit Steiner
db7d49efbb Added support for FMA instructions 2014-02-24 13:45:32 -08:00
Gael Guennebaud
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. 2014-02-24 18:13:49 +01:00
Gael Guennebaud
21fecd5252 Workaround clang ABI change with unsed arguments (ugly fix) 2014-02-24 17:12:17 +01:00
Christoph Hertzberg
3e439889e0 Specify what non-resizeable objects are in transposeInPlace and adjointInPlace (cf bug #749) 2014-02-24 13:12:10 +01:00
Gael Guennebaud
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() 2014-02-24 11:49:30 +01:00
Gael Guennebaud
1e0c2f6ddb Hide some deprecated classes. 2014-02-24 11:41:19 +01:00
Gael Guennebaud
c98881e130 By-pass ProductBase for triangular and selfadjoint products and get rid of ProductBase 2014-02-23 22:51:13 +01:00
Gael Guennebaud
d67548f345 Get rid of GeneralProduct<> for GemvProduct 2014-02-21 17:13:28 +01:00
Gael Guennebaud
6c7ab50811 Get rid of GeneralProduct<> for GemmProduct 2014-02-21 16:43:03 +01:00
Gael Guennebaud
728c3d2cb9 Get rid of GeneralProduct for outer-products, and get rid of ScaledProduct 2014-02-21 16:27:24 +01:00
Gael Guennebaud
af31b6c37a Generalize evaluator<Inverse<>> such that there is no need to specialize it 2014-02-21 15:22:08 +01:00
Gael Guennebaud
93125e372d Port LU module to evaluators (except image() and kernel()) 2014-02-20 15:26:15 +01:00
Gael Guennebaud
b2e1453e1e Some bit flags and internal structures are deprecated 2014-02-20 15:25:06 +01:00
Gael Guennebaud
9621333545 Fix dimension of Solve expression 2014-02-20 15:24:21 +01:00
Gael Guennebaud
5f6ec95291 Propagate LvalueBit flag to TriangularView 2014-02-20 15:24:00 +01:00
Gael Guennebaud
ecd2c8f37b Add general Inverse<> expression with evaluator 2014-02-20 14:18:24 +01:00
Gael Guennebaud
5960befc20 More int versus Index fixes 2014-02-19 21:42:29 +01:00
Gael Guennebaud
2eee6eaf3c Fix mixing scalar types with evaluators 2014-02-19 16:30:17 +01:00
Gael Guennebaud
95b0a6707b evaluator<Replicate> must evaluate its argument to avoid redundant evaluations 2014-02-19 14:51:46 +01:00
Gael Guennebaud
b1ab6a8e0b Add missing assertion in swap() 2014-02-19 14:06:35 +01:00
Gael Guennebaud
61cff28618 Disable Flagged and ForceAlignedAccess 2014-02-19 14:05:56 +01:00
Gael Guennebaud
68e8ddaf94 Fix vectorization logic wrt assignment functors 2014-02-19 13:26:07 +01:00
Gael Guennebaud
3a735a6cf1 Fix lazy evaluation in Ref 2014-02-19 13:17:41 +01:00
Gael Guennebaud
ccc41128fb Add a Solve expression for uniform treatment of solve() methods. 2014-02-19 11:33:29 +01:00
Gael Guennebaud
b3a07eecc5 Fix CoeffReadCost of products to handle Dynamic costs 2014-02-19 11:32:04 +01:00
Gael Guennebaud
c16b80746a isApprox must honors nested_eval 2014-02-19 11:30:58 +01:00
Benoit Steiner
cbd7e98174 Merged the latest version of the code from eigen/eigen 2014-02-18 18:51:24 -08:00
Benoit Steiner
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.
2014-02-18 18:06:44 -08:00
Gael Guennebaud
5b78780def Add evaluator shortcut for triangular ?= product 2014-02-18 17:43:16 +01:00
Gael Guennebaud
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.
2014-02-18 16:57:25 +01:00
Gael Guennebaud
463554c254 Merge with default branch 2014-02-18 15:45:39 +01:00
Gael Guennebaud
82c066b3c4 Cleaning 2014-02-18 15:44:32 +01:00
Gael Guennebaud
0543cb51b5 Product::coeff method are also OK for lazy products (including diagonal products) 2014-02-18 14:51:41 +01:00
Gael Guennebaud
99e27916cf Fix all()/any() for evaluators 2014-02-18 14:26:25 +01:00
Gael Guennebaud
37a1d736bf _MatrixTypeNested must be public in sparse Block 2014-02-18 13:35:24 +01:00
Gael Guennebaud
06545058bb Temporary workaround for permutations 2014-02-18 13:33:04 +01:00
Gael Guennebaud
7002aa858f Support Product::coeff(0,0) even for dynamic matrices 2014-02-18 13:32:30 +01:00
Gael Guennebaud
8cfb138e73 Finally, the simplest remains to deffer resizing at the latest 2014-02-18 13:31:44 +01:00
Gael Guennebaud
1b5de5a37b Add evaluator for Ref 2014-02-18 13:30:16 +01:00
Gael Guennebaud
a08cba6b5f Move is_diagonal to XprHelper, forward declare Ref 2014-02-18 11:03:59 +01:00
Gael Guennebaud
573c587e3d New design for handling automatic transposition 2014-02-18 10:53:14 +01:00
Gael Guennebaud
551bf5c66a Get rid of DiagonalProduct 2014-02-18 10:52:26 +01:00
Gael Guennebaud
2d136d3d7f Get rid of SeflCwiseBinaryOp 2014-02-18 10:52:00 +01:00
Gael Guennebaud
873401032b Fix scalar * product optimization when 'product' includes a selfadjoint matrix 2014-02-17 19:00:45 +01:00
Gael Guennebaud
d595fd31f5 Deal with automatic transposition in call_assignment, fix a few shortcomings 2014-02-17 16:11:55 +01:00
Gael Guennebaud
bffa15142c Add evaluator support for diagonal products 2014-02-17 16:10:55 +01:00
Gael Guennebaud
3573a10712 Fix support for row (resp. column) of a column-major (resp. row-major) sparse matrix 2014-02-17 13:46:17 +01:00
Gael Guennebaud
4b6b3f310f Fix a few Index to int buggy conversions 2014-02-15 09:35:23 +01:00
Gael Guennebaud
cd606bbc94 Fix infinite loop in sparselu 2014-02-14 23:10:16 +01:00
Gael Guennebaud
0508af4287 Merged in martinhofernandes/eigen (pull request PR-40)
Better fix for bug #503
2014-02-14 15:31:39 +01:00
Gael Guennebaud
97965dde9b alloca is not necessarily alligned on windows 2014-02-14 00:04:38 +01:00
Gael Guennebaud
0b1430ae10 Fix propagation of index type 2014-02-13 23:58:28 +01:00
Gael Guennebaud
3291580630 Fix bug #740: overflow issue in stableNorm 2014-02-13 15:44:01 +01:00
Jitse Niesen
7ea6ef8969 Fix documentation of MatrixBase::applyOnTheLeft (bug #739)
Add examples; move methods from EigenBase.h to MatrixBase.h
2014-02-12 14:03:39 +00:00
Gael Guennebaud
31c63ef0b4 fix compilation of Transform * UniformScaling 2014-02-12 13:37:23 +01:00
Jitse Niesen
ff8d81762d Fix bug #736: LDLT isPositive returns false for a positive semidefinite matrix
Add unit test covering this case.
2014-02-06 11:06:06 +00:00
Hauke Heibel
6c527bd811 Fixed assignment from QMatrix to Transform for compact storage. 2014-02-04 07:02:34 +01:00
Benoit Steiner
64a85800bd Added support for AVX to Eigen. 2014-01-29 11:43:05 -08:00
Gael Guennebaud
94acccc126 Fix Random().normalized() by introducing a nested_eval helper (recall that the old nested<> class is deprecated) 2014-01-26 15:35:44 +01:00
Gael Guennebaud
34694d8828 Fix evaluator<Replicate> for fixed size objects 2014-01-26 15:34:26 +01:00
Gael Guennebaud
ee1c55f923 Add missing template keyword 2014-01-26 14:55:25 +01:00
Gael Guennebaud
f54e62e4a9 Port evaluation from selfadjoint to full to evaluators 2014-01-26 12:18:36 +01:00
Gael Guennebaud
5fa7262e4c Refactor triangular assignment 2014-01-25 23:02:14 +01:00
Gael Guennebaud
fef534f52e fix scalar * prod in evaluators unit test 2014-01-25 19:06:07 +01:00
Gael Guennebaud
a7621809fe Remove useless register keyword, and optimize predux_min/max for SSE4 2014-01-25 16:54:13 +01:00
Gael Guennebaud
deab937d45 NVCC: fix closed-form eigenvalue decomposition, workaround gcc4.7/nvcc5.5 issue 2014-01-24 12:50:29 +01:00
Christoph Hertzberg
66f1c56aab sparse_solve_retval_base::defaultEvalTo created extremely oversized temporary matrices in some cases 2014-01-19 03:04:51 +01:00
Martinho Fernandes
4c08385b74 Merged eigen/eigen into default 2014-01-10 11:22:24 +01:00
Martinho Fernandes
4ccff2d028 Placement new must use void* to avoid user-specific overloads. 2014-01-10 11:20:40 +01:00
Martinho Fernandes
3a4616d6e3 Add C++11 allocator overloads to avoid implicit conversions. 2014-01-10 11:02:11 +01:00
Gael Guennebaud
92190a1caf Add an example showing how to use C++11 random distributions 2014-01-07 20:23:35 +01:00
Gael Guennebaud
ac409f51f1 Document the fact that Random and setRandom are not reentrant (so not thread-safe) 2014-01-07 20:17:59 +01:00
Benoit Steiner
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. 2014-01-02 16:18:32 -08:00
Christoph Hertzberg
60cd361ebe Fix bug #222. Make temporary matrix column-major independently of EIGEN_DEFAULT_TO_ROW_MAJOR 2014-03-26 17:48:30 +01:00
Gael Guennebaud
c8bfbf4a7e Merged in prclibo/eigen (pull request PR-49)
fixed a template type conversion bug in AngleAxis found by Pei Luo
2014-03-25 10:54:40 +01:00
Gael Guennebaud
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.
2014-03-20 16:03:46 +01:00
Bo Li
e3fb190edf merged incoming udpates 2014-03-20 22:11:13 +08:00
Bo Li
cfd3d6ce9c fixed a template type conversion bug in AngleAxis found by Pei Luo 2014-03-20 22:05:40 +08:00
Gael Guennebaud
c39a3fa7a1 Makes gcc to generate a pshufd instruction for pset1 2014-03-20 10:14:26 +01:00
Gael Guennebaud
2a564695f0 Simpler and hopefully more future-proof fix for bug #503 (aligned_allocator with c++11) 2014-03-19 13:28:50 +01:00
Jitse Niesen
a58325ac2f Minor corrections in QR docs. 2013-12-31 18:06:28 +00:00
Gael Guennebaud
548216b7ca QuaternionBase::slerp was documented twice and one explanation was ambiguous. 2014-01-12 11:09:06 +01:00
Christoph Hertzberg
bbf373bbe9 Applied patch from Richard JW Roberts, resolving bug #704 2013-12-21 22:14:03 +01:00
Christoph Hertzberg
1200bd2ef0 Grafted from 5725:cdedc9e90d21099e8b3191f95425680ebe710d6f
and resolved conflicts
2013-12-21 21:46:27 +01:00
Christoph Hertzberg
8a49dd5626 Fixed typos in comments 2013-12-19 11:55:17 +01:00
Benoit Steiner
ce99b502ce Use vectorization when packing row-major rhs matrices. (bug #717) 2013-12-17 10:49:43 -08:00
Gael Guennebaud
ba2f79e680 Fix selfadjoint_matrix_vector_product for complex with packet size > 2 (e.g., AVX) 2014-03-07 23:18:20 +01:00
Gael Guennebaud
72461be962 Fix typo and formating 2014-03-07 23:13:14 +01:00
Christoph Hertzberg
d5cc083782 Fixed bug #754. Only inserted (!defined(_WIN32_WCE)) analog to alloc and free implementation (not tested, but should be correct). 2014-03-05 14:50:00 +01:00
Gael Guennebaud
7313f32efa Help MSVC to inline some trivial functions 2014-03-04 17:24:00 +01:00
Christoph Hertzberg
04e1e38eed bug #289: Removed useless static keywords 2014-03-04 15:10:29 +01:00
Gael Guennebaud
76d2ca27e5 Fix PaStiX support for Pastix 5.2 2014-02-28 13:11:39 +01:00
Gael Guennebaud
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. 2014-02-26 10:12:27 +01:00
Christoph Hertzberg
6b6071866b Make pivoting HouseholderQR compatible with custom scalar types 2014-02-25 18:55:16 +01:00
Gael Guennebaud
d357bbd9c0 Fix a few regression regarding temporaries and products 2013-12-14 22:53:47 +01:00
Gael Guennebaud
27c068e9d6 Make selfqdjoint products use evaluators 2013-12-13 18:09:07 +01:00
Gael Guennebaud
e94fe4cc3e fix resizing in noalias for blocks, and make -=/+= use evaluators 2013-12-13 18:06:58 +01:00
Gael Guennebaud
2ca0ccd2f2 Add support for triangular products with evaluators 2013-12-07 17:17:47 +01:00
Gael Guennebaud
8d8acc3ab4 Move inner product special functions to a base class to avoid ambiguous calls 2013-12-04 22:58:19 +01:00
Gael Guennebaud
6c5e915e9a Enable use of evaluators for noalias and lazyProduct, add conversion to scalar for inner products 2013-12-03 17:17:53 +01:00
Gael Guennebaud
f0b82c3ab9 Make reductions compatible with evaluators 2013-12-02 17:54:38 +01:00
Gael Guennebaud
6f1a0479b3 fix a typo triangular assignment 2013-12-02 17:54:15 +01:00
Gael Guennebaud
b5fd774775 Fix flags of Product<> 2013-12-02 17:53:26 +01:00
Gael Guennebaud
34ca81b1bf Add direct assignment of products 2013-12-02 16:37:58 +01:00
Gael Guennebaud
7f917807c6 Fix product evaluator when TEST_EVALUATOR in not ON 2013-12-02 16:19:14 +01:00
Gael Guennebaud
8af1ba5346 Make swap unit test work with evaluators 2013-12-02 15:07:45 +01:00
Gael Guennebaud
c6f7337032 Get rid of call_dense_swap_loop 2013-12-02 14:44:13 +01:00
Gael Guennebaud
626821b0e3 Add evaluator/assignment to TriangularView expressions 2013-12-02 14:06:17 +01:00
Gael Guennebaud
27ca9437a1 Fix usage of Dense versus DenseShape 2013-12-02 14:05:34 +01:00
Gael Guennebaud
d0261bd26c Fix swap in DenseBase 2013-11-30 10:42:23 +01:00
Christoph Hertzberg
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).
2013-11-29 19:42:11 +01:00
Gael Guennebaud
c15c65990f First step toward the generalization of evaluators to triangular, sparse and other fancyness.
Remove product_tag template parameter to Product.
2013-11-29 17:50:59 +01:00