Gael Guennebaud
83309068b4
bug #1680 : improve MSVC inlining by declaring many triavial constructors and accessors as STRONG_INLINE.
2019-02-15 16:35:35 +01:00
Andrea Bocci
f7124b3e46
Extend CUDA support to matrix inversion and selfadjointeigensolver
2018-06-11 18:33:24 +02:00
luz.paz
e3912f5e63
MIsc. source and comment typos
...
Found using `codespell` and `grep` from downstream FreeCAD
2018-03-11 10:01:44 -04:00
Basil Fierz
624df50945
Adds missing EIGEN_STRONG_INLINE to support MSVC properly inlining small vector calculations
...
When working with MSVC often small vector operations are not properly inlined. This behaviour is observed even on the most recent compiler versions.
2017-10-26 22:44:28 +02:00
Gael Guennebaud
4e7c3af874
Cleanup useless helper: internal::product_result_scalar
2016-06-15 00:04:10 +02:00
Gael Guennebaud
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
2016-06-06 15:11:41 +02:00
Gael Guennebaud
8b0d1eb0f7
Fix numerous doxygen shortcomings, and workaround some clang -Wdocumentation warnings
2016-01-01 21:45:06 +01:00
Gael Guennebaud
41cc1f9033
Remove debuging prod() and lazyprod() function, plus some cleaning in noalias assignment
2015-10-07 15:41:22 +02:00
Gael Guennebaud
92b9f0e102
Cleaning pass on evaluators: remove the useless and error prone evaluator<>::type indirection.
2015-09-02 21:38:40 +02:00
Gael Guennebaud
846b227bb7
Get rid of class internal::nested<> (still have to updated Tensor module)
2015-06-19 17:56:39 +02:00
Gael Guennebaud
0c8b0e007b
Introduce a AliasFreeProduct option for Permutations and Transpositions
2015-06-19 15:38:19 +02:00
Gael Guennebaud
4a8888dfbc
Improbe compatibility of Transpositions and evaluators
2015-06-19 14:10:44 +02:00
Gael Guennebaud
d2db15016b
Fix storage order computation in traits<Product>
2015-06-19 10:36:38 +02:00
Gael Guennebaud
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.
2015-02-13 18:57:41 +01:00
Christoph Hertzberg
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.
2014-12-04 22:48:53 +01:00
Christoph Hertzberg
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.
2014-10-13 17:18:26 +02:00
Gael Guennebaud
0ca43f7e9a
Remove deprecated code not used by evaluators
2014-09-18 15:15:27 +02:00
Gael Guennebaud
c83e01f2d6
Favor column major storage for inner products
2014-09-14 19:38:49 +02:00
Gael Guennebaud
bae2e3327b
Call product_generic_impl by default, and remove lot of boilerplate code
2014-07-31 13:35:49 +02:00
Gael Guennebaud
2a251ffab0
Implement evaluator for sparse-selfadjoint products
2014-07-22 09:32:40 +02:00
Gael Guennebaud
6f846ef9c6
Split StorageKind promotion into two helpers: one for products, and one for coefficient-wise operations.
2014-07-01 17:51:53 +02:00
Gael Guennebaud
ae039dde13
Add a NoPreferredStorageOrderBit flag for expression having no preferred storage order.
...
It is currently only used in Product.
2014-06-27 15:53:51 +02:00
Jitse Niesen
59f5f155c2
Port products with permutation matrices to evaluators.
2014-04-15 15:21:38 +01:00
Gael Guennebaud
a6be1952f4
Fix a few regression when moving the flags
2014-03-12 16:18:34 +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
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
0543cb51b5
Product::coeff method are also OK for lazy products (including diagonal products)
2014-02-18 14:51:41 +01:00
Gael Guennebaud
7002aa858f
Support Product::coeff(0,0) even for dynamic matrices
2014-02-18 13:32:30 +01:00
Gael Guennebaud
d357bbd9c0
Fix a few regression regarding temporaries and products
2013-12-14 22:53: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
b5fd774775
Fix flags of Product<>
2013-12-02 17:53:26 +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
Gael Guennebaud
cc6dd878ee
Refactor dense product evaluators
2013-11-27 17:32:57 +01:00
Gael Guennebaud
76c230a84d
Add an option to test evaluators globally
2013-11-07 16:38:14 +01:00
Gael Guennebaud
e5bf4440c0
Fix "type qualifiers are meaningless here" warnings
2013-02-28 19:29:32 +01:00
Benoit Jacob
69124cfca2
Automatic relicensing to MPL2 using Keirs script. Manual fixup follows.
2012-07-13 14:42:47 -04:00
Jitse Niesen
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.
2012-06-29 13:07:21 +01:00
Gael Guennebaud
cc6dd55028
put the resurected files into the Eigen namespace
2012-06-22 16:35:20 +02:00
Gael Guennebaud
5fae6c7848
resurrect expression evaluators
2012-06-22 09:39:35 +02:00
Jitse Niesen
3db6455896
Remove evaluators for 2.1 release.
...
We plan to re-instate them when we branch 2.2 (see bug #388 ).
2011-12-14 21:23:43 +00:00
Gael Guennebaud
816541d82c
add a stupid Product<A,B> expression produced by prod(a,b), and implement a first version of its evaluator
2011-03-23 16:12:21 +01:00
Gael Guennebaud
290205dfc0
fix memory leak when a custom scalar throw an exception
2011-03-19 01:06:50 +01:00
Gael Guennebaud
fa32ce0fc5
fix alignment issue
2011-02-01 13:51:56 +01:00
Gael Guennebaud
f4a7679904
fix packing criterion
2011-02-01 10:41:12 +01:00
Gael Guennebaud
f46ace61d3
fix dynamic allocation for fixed size objects in matrix-vector product
2011-01-31 21:30:27 +01:00
Jitse Niesen
fb023b871f
Const-correctness fix for gemv_selector<OnTheRight,ColMajor,true> (bug #144 ).
2011-01-04 10:35:10 +00:00
Benoit Jacob
75b7d98665
bug #54 - really fix const correctness except in Sparse
2010-12-22 17:45:37 -05:00
Benoit Jacob
aec0782719
fix the build of eigensolver_complex test.
...
it was calling the .value() method on an inner product, and that was blocked in bad zero-sized case.
fixed by adding the .value() method to DenseBase for all 1x1 expressions, and allowing coeff accessors in ProductBase for 1x1 expressions.
2010-12-09 03:47:35 -05:00
Benoit Jacob
1be6449f2e
fix bug #127 . our product selection logic was flawed in that it used the Max-sized to determine whether the size is 1.
...
+ test.
2010-12-09 02:38:07 -05:00