4166 Commits

Author SHA1 Message Date
Gael Guennebaud
6a3c451c1c Permits call to explicit ctor. 2016-07-18 12:02:20 +02:00
Gael Guennebaud
db9b154193 Add missing non-const reverse method in VectorwiseOp. 2016-07-16 15:19:28 +02:00
Gael Guennebaud
a96a7ce3f7 Move CUDA's special functions to SpecialFunctions module. 2016-07-11 18:39:11 +02:00
Gael Guennebaud
fd60966310 merge 2016-07-11 18:11:47 +02:00
Konstantinos Margaritis
ef05463fcf Merged kmargar/eigen/tip into default, Altivec/VSX port should be working ok now. 2016-07-10 16:11:46 +03:00
Konstantinos Margaritis
9f7caa7e7d minor fixes for big endian altivec/vsx 2016-07-10 07:05:10 -03:00
Gael Guennebaud
2f7e2614e7 bug #1232: refactor special functions as a new SpecialFunctions module, currently in unsupported/. 2016-07-08 11:13:55 +02:00
Gael Guennebaud
66917299a9 Add debug output 2016-07-06 22:27:15 +02:00
Gael Guennebaud
c3b23d7dbf Fix support of Intel's VML 2016-07-06 14:07:32 +02:00
Gael Guennebaud
8ec4d6480d Fix compilation with recent updates of icc 2016 2016-07-06 14:07:14 +02:00
Gael Guennebaud
367ef66af3 Re-enable some specializations for Assignment<.,Product<>> 2016-07-05 22:58:14 +02:00
Gael Guennebaud
ec02af1047 Fix template resolution. 2016-07-04 17:37:33 +02:00
Gael Guennebaud
91b3039013 Change the semantic of the last template parameter of Assignment from "Scalar" to "SFINAE" only.
The previous "Scalar" semantic was obsolete since we allow for different scalar types in the source and destination expressions.
On can still specialize on scalar types through SFINAE and/or assignment functor.
2016-07-04 11:02:00 +02:00
Gael Guennebaud
0fa9e4a15c Fix performance regression in dgemm introduced by changeset 5d51a7f12c69138ed2a43df240bdf27a5313f7ce 2016-07-02 17:35:08 +02:00
Gael Guennebaud
672076db5d Fix performance regression introduced in changeset e56aabf205a1e8f581dd8a46d7d46ce79c45e158
.
Register blocking sizes are better handled by the cache size heuristics.
The current code introduced very small blocks, for instance for 9x9 matrix,
thus killing performance.
2016-07-02 15:40:56 +02:00
Justin Carpentier
6126886a67 Use complete nested namespace Eigen::internal 2016-06-28 20:09:25 +02:00
Benoit Jacob
328c5d876a Undo changes in AltiVec --- I don't have any way to test there. 2016-06-28 11:15:25 -04:00
Benoit Jacob
38fb606052 Avoid global variables with static constructors in NEON/Complex.h 2016-06-28 11:12:49 -04:00
Gael Guennebaud
d476cadbb8 bug #1247: fix regression in compilation of pow(integer,integer), and add respective unit tests. 2016-06-25 10:12:06 +02:00
Gael Guennebaud
c50c73cae2 Fix missing specialization. 2016-06-24 23:10:39 +02:00
Gael Guennebaud
cd577a275c Relax promote_scalar_arg logic to enable promotion to Expr::Scalar if conversion to Expr::Literal fails.
This is useful to cancel expression template at the scalar level, e.g. with AutoDiff<AutoDiff<>>.
This patch also defers calls to NumTraits in cases for which types are not directly compatible.
2016-06-24 11:28:54 +02:00
Gael Guennebaud
deb45ad4bc bug #1245: fix compilation with msvc 2016-06-24 09:52:25 +02:00
Gael Guennebaud
55fc04e8b5 Fix operator priority 2016-06-23 15:36:42 +02:00
Gael Guennebaud
7c6561485a merge PR 194 2016-06-23 15:29:57 +02:00
Konstantinos Margaritis
be107e387b fix compilation with clang 3.9, fix performance with pset1, use vector operators instead of intrinsics in some cases 2016-06-23 10:19:05 -03:00
Gael Guennebaud
76faf4a965 Introduce a NumTraits<T>::Literal type to be used for literals, and
improve mixing type support in operations between arrays and scalars:
 - 2 * ArrayXcf is now optimized in the sense that the integer 2 is properly promoted to a float instead of a complex<float> (fix a regression)
 - 2.1 * ArrayXi is now forbiden (previously, 2.1 was converted to 2)
 - This mechanism should be applicable to any custom scalar type, assuming NumTraits<T>::Literal is properly defined (it defaults to T)
2016-06-23 14:27:20 +02:00
Gael Guennebaud
a3f7edf7e7 Biug 1242: fix comma init with empty matrices. 2016-06-23 10:25:04 +02:00
Konstantinos Margaritis
8c34b5a0e3 mostly cleanups and modernizing code 2016-06-19 16:13:17 -03:00
Konstantinos Margaritis
b410d46482 mostly cleanups and modernizing code 2016-06-19 16:12:52 -03:00
Konstantinos Margaritis
b80379bda0 fixed pexp<Packet2d>, was failing tests 2016-06-19 16:11:58 -03:00
Benoit Steiner
b055590e91 Made log1p_impl usable inside a GPU kernel 2016-06-16 11:37:40 -07:00
Gael Guennebaud
eb91345d64 Move scalar/expr to ArrayBase and fix documentation 2016-06-15 15:22:03 +02:00
Gael Guennebaud
4794834397 Propagate functor to ScalarBinaryOpTraits 2016-06-15 09:58:49 +02:00
Gael Guennebaud
c55035b9c0 Include the cost of stores in unrolling of triangular expressions. 2016-06-15 09:57:33 +02:00
Gael Guennebaud
4e7c3af874 Cleanup useless helper: internal::product_result_scalar 2016-06-15 00:04:10 +02:00
Gael Guennebaud
101ea26f5e Include the cost of stores in unrolling (also fix infinite unrolling with expression costing 0 like Constant) 2016-06-15 00:01:16 +02:00
Gael Guennebaud
76236cdea4 merge 2016-06-14 15:33:47 +02:00
Gael Guennebaud
1004c4df99 Cleanup unused functors. 2016-06-14 15:27:28 +02:00
Gael Guennebaud
70dad84b73 Generalize expr/expr and scalar/expr wrt scalar types. 2016-06-14 15:26:37 +02:00
Gael Guennebaud
62134082aa Update AutoDiffScalar wrt to scalar-multiple. 2016-06-14 15:06:35 +02:00
Gael Guennebaud
396d9cfb6e Generalize expr.pow(scalar), pow(expr,scalar) and pow(scalar,expr).
Internal: scalar_pow_op (unary) is removed, and scalar_binary_pow_op is renamed scalar_pow_op.
2016-06-14 14:10:07 +02:00
Gael Guennebaud
a8c08e8b8e Implement expr+scalar, scalar+expr, expr-scalar, and scalar-expr as binary expressions, and generalize supported scalar types.
The following functors are now deprecated: scalar_add_op, scalar_sub_op, and scalar_rsub_op.
2016-06-14 12:06:10 +02:00
Gael Guennebaud
bcc0f38f98 Add unittesting plugins to scalar_product_op and scalar_quotient_op to help chaking that types are properly propagated. 2016-06-14 11:31:27 +02:00
Gael Guennebaud
f5b1c73945 Set cost of constant expression to 0 (the cost should be amortized through the expression) 2016-06-14 11:29:06 +02:00
Gael Guennebaud
deb8306e60 Move MatrixBase::operaotr*(UniformScaling) as a free function in Scaling.h, and fix return type. 2016-06-14 11:28:03 +02:00
Gael Guennebaud
64fcfd314f Implement scalar multiples and division by a scalar as a binary-expression with a constant expression.
This slightly complexifies the type of the expressions and implies that we now have to distinguish between scalar*expr and expr*scalar to catch scalar-multiple expression (e.g., see BlasUtil.h), but this brings several advantages:
- it makes it clear on each side the scalar is applied,
- it clearly reflects that we are dealing with a binary-expression,
- the complexity of the type is hidden through macros defined at the end of Macros.h,
- distinguishing between "scalar op expr" and "expr op scalar" is important to support non commutative fields (like quaternions)
- "scalar op expr" is now fully equivalent to "ConstantExpr(scalar) op expr"
- scalar_multiple_op, scalar_quotient1_op and scalar_quotient2_op are not used anymore in officially supported modules (still used in Tensor)
2016-06-14 11:26:57 +02:00
Gael Guennebaud
3c12e24164 Add bind1st_op and bind2nd_op helpers to turn binary functors into unary ones, and implement scalar_multiple2 and scalar_quotient2 on top of them. 2016-06-13 16:18:59 +02:00
Gael Guennebaud
7a9ef7bbb4 Add default template parameters for the second scalar type of binary functors.
This enhences backward compatibility.
2016-06-13 16:17:23 +02:00
Gael Guennebaud
5fdd703629 Enable mixing types in numext::pow 2016-06-10 15:58:04 +02:00
Gael Guennebaud
2e238bafb6 Big 279: enable mixing types for comparisons, min, and max. 2016-06-10 15:05:43 +02:00