38 Commits

Author SHA1 Message Date
Gael Guennebaud
27873008d4 Clean up SparseCore module regarding ReverseInnerIterator 2016-12-01 21:55:10 +01:00
Gael Guennebaud
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.
2016-11-23 12:24:48 +01:00
Gael Guennebaud
0ee92aa38e Optimize sparse<bool> && sparse<bool> to use the same path as for coeff-wise products. 2016-11-14 18:47:41 +01:00
Gael Guennebaud
f57fd78e30 Generalize coeff-wise sparse products to support different scalar types 2016-06-14 11:29:54 +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
Christoph Hertzberg
0f61343893 Workaround maybe-uninitialized warning 2016-05-11 09:00:18 +02: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
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
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
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
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
186ec1437c Cleanup EIGEN_SPARSE_PUBLIC_INTERFACE, it is now a simple alias to EIGEN_GENERIC_PUBLIC_INTERFACE 2015-10-08 22:06:49 +02:00
Gael Guennebaud
b20a55a608 Workaround wrong instanciation made by VS2010 2015-09-04 15:25:58 +02:00
Gael Guennebaud
a835dfca73 InnerIterator::index() should really return a StorageIndex 2015-09-03 14:53:51 +02:00
Gael Guennebaud
aa768add0b Since there is no reason for evaluators to be nested by reference, let's remove the evaluator<>::nestedType indirection. 2015-09-02 22:10:39 +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
763c833637 Make SparseSelfAdjointView, twists, and SparseQR more evaluator friendly 2015-06-24 17:54:09 +02:00
Gael Guennebaud
a7ae628c9f bug #1005: fix regression regarding sparse coeff-wise binary operator that did not trigger a static assertion for mismatched storage 2015-06-08 10:14:08 +02:00
Gael Guennebaud
3105986e71 bug #875: remove broken SparseMatrixBase::nonZeros and introduce a nonZerosEstimate() method to sparse evaluators for internal uses.
Factorize some code in SparseCompressedBase.
2015-04-01 22:27:34 +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
36448c9e28 Make constructors explicit if they could lead to unintended implicit conversion 2014-09-23 14:28:23 +02:00
Gael Guennebaud
0ca43f7e9a Remove deprecated code not used by evaluators 2014-09-18 15:15:27 +02:00
Gael Guennebaud
a325d1cb1e merge with default branch 2014-07-18 11:02:22 +02:00
Gael Guennebaud
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. 2014-07-17 13:34:26 +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
3c63446507 Update copyright dates 2014-07-01 13:27:35 +02:00
Gael Guennebaud
3849cc65ee Implement binaryop and transpose evaluators for sparse matrices 2014-06-23 10:40:03 +02:00
Gael Guennebaud
4f28ccdd0e Rationalize the use of Index type in iterators 2013-07-06 22:05:49 +02:00
Desire NUENTSA
cf939f154f Fix bug #596 : Recover plain SparseMatrix from SparseQR matrixQ() 2013-05-21 17:35:10 +02:00
Benoit Jacob
69124cfca2 Automatic relicensing to MPL2 using Keirs script. Manual fixup follows. 2012-07-13 14:42:47 -04:00
Jitse Niesen
3c412183b2 Get rid of include directives inside namespace blocks (bug #339). 2012-04-15 11:06:28 +01:00
Gael Guennebaud
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. 2012-02-23 11:38:18 +01:00
Gael Guennebaud
fe85b7ebc6 fix several const qualifier issues: double ones, meaningless ones, some missing ones, etc.
(note that const qualifiers are set by internall::nested)
2012-02-03 23:18:26 +01:00
Gael Guennebaud
589cc627f8 fixe one more VC10 ICE 2012-01-18 17:45:22 +01:00
Gael Guennebaud
40c0f3af57 fig bug #396: add a static assertion on the storage order of a sparse-sparse coeff-wise binary op 2011-12-15 19:23:20 +01:00
Gael Guennebaud
cda397b117 cleanning pass on the sparse modules:
- remove outdated/deprecated code
 - improve a bit the documentation
2011-11-28 16:36:37 +01:00
Gael Guennebaud
53fa851724 move sparse solvers from unsupported/ to main Eigen/ and remove the "not stable yet" warning 2011-11-12 14:11:27 +01:00