Commit Graph

1842 Commits

Author SHA1 Message Date
Gael Guennebaud
7c6561485a merge PR 194 2016-06-23 15:29:57 +02: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
Gael Guennebaud
76236cdea4 merge 2016-06-14 15:33:47 +02:00
Gael Guennebaud
70dad84b73 Generalize expr/expr and scalar/expr wrt scalar types. 2016-06-14 15:26:37 +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
12350d3ac7 Add unit test for AlignedBox::center 2016-06-14 11:31:52 +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
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
39781dc1e2 Fix compilation of evaluator unit test 2016-06-14 11:03:26 +02:00
Gael Guennebaud
2ca2ffb65e check for mixing types in "array / scalar" expressions 2016-06-13 16:15:32 +02:00
Gael Guennebaud
a3a4714aba Add debug output. 2016-06-11 14:41:53 +02:00
Gael Guennebaud
5de8d7036b Add real.pow(complex), complex.pow(real) unit tests. 2016-06-10 15:58:22 +02:00
Gael Guennebaud
3d71d3918e Disable shortcuts for res ?= prod when the scalar types do not match exactly. 2016-06-06 23:10:55 +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
Eugene Brevdo
c53687dd14 Add randomized properties tests for betainc special function. 2016-06-05 11:10:30 -07:00
Gael Guennebaud
15890c304e Add unit test for non symmetric generalized eigenvalues 2016-06-09 16:17:27 +02:00
Christoph Hertzberg
9dd9d58273 Copied a regression test from 3.2 branch. 2016-06-08 15:36:42 +02:00
Eugene Brevdo
39baff850c Add TernaryFunctors and the betainc SpecialFunction.
TernaryFunctors and their executors allow operations on 3-tuples of inputs.
API fully implemented for Arrays and Tensors based on binary functors.

Ported the cephes betainc function (regularized incomplete beta
integral) to Eigen, with support for CPU and GPU, floats, doubles, and
half types.

Added unit tests in array.cpp and cxx11_tensor_cuda.cu


Collapsed revision
* Merged helper methods for betainc across floats and doubles.
* Added TensorGlobalFunctions with betainc().  Removed betainc() from TensorBase.
* Clean up CwiseTernaryOp checks, change igamma_helper to cephes_helper.
* betainc: merge incbcf and incbd into incbeta_cfe.  and more cleanup.
* Update TernaryOp and SpecialFunctions (betainc) based on review comments.
2016-06-02 17:04:19 -07:00
Gael Guennebaud
82293f38d6 Fix unit test. 2016-06-03 08:12:14 +02:00
Gael Guennebaud
8b6f53222b bug #1193: fix lpNorm<Infinity> for empty input. 2016-06-02 15:29:59 +02:00
Gael Guennebaud
d616a81294 Disable MSVC's "decorated name length exceeded, name was truncated" warning in unit tests. 2016-06-02 14:48:38 +02:00
Gael Guennebaud
61a32f2a4c Fix pointer to long conversion warning. 2016-06-02 14:45:45 +02:00
Gael Guennebaud
89099b0cf7 Expose log1p to Array. 2016-06-01 17:00:08 +02:00
Gael Guennebaud
2c1b56f4c1 bug #1238: fix SparseMatrix::sum() overload for un-compressed mode. 2016-05-31 10:56:53 +02:00
Christoph Hertzberg
f2c86384f4 Cleaner implementation of dont_over_optimize. 2016-05-27 11:13:38 +02:00
Gael Guennebaud
35df3a32eb Disabled GCC6's ignored-attributes warning in packetmath unit test. 2016-05-26 17:42:58 +02:00
Gael Guennebaud
db62719eda Fix some conversion warnings in unit tests. 2016-05-26 17:42:12 +02:00
Gael Guennebaud
fdcad686ee Fix numerous pointer-to-integer conversion warnings in unit tests. 2016-05-26 17:41:28 +02:00
Gael Guennebaud
f57260a997 Fix typo in dont_over_optimize 2016-05-25 11:17:53 +02:00
Gael Guennebaud
2cd32be70b Fix warning. 2016-05-25 11:15:54 +02:00
Gael Guennebaud
0fd953c217 Workaround clang/llvm bug in code generation. 2016-05-24 21:55:46 +02:00
Gael Guennebaud
e68e165a23 bug #256: enable vectorization with unaligned loads/stores.
This concerns all architectures and all sizes.
This new behavior can be disabled by defining EIGEN_UNALIGNED_VECTORIZE=0
2016-05-24 21:54:03 +02:00
Benoit Steiner
7aa5bc9558 Fixed a typo in the array.cpp test 2016-05-23 14:39:51 -07:00
Christoph Hertzberg
718521d5cf Silenced several double-promotion warnings 2016-05-22 18:17:04 +02:00
Gael Guennebaud
abd1c1af7a Make EIGEN_HAS_STD_RESULT_OF user configurable 2016-05-20 15:01:27 +02:00
Gael Guennebaud
1395056fc0 Make EIGEN_HAS_C99_MATH user configurable 2016-05-20 14:58:19 +02:00
Gael Guennebaud
48bf5ec216 Make EIGEN_HAS_RVALUE_REFERENCES user configurable 2016-05-20 14:54:20 +02:00
Gael Guennebaud
f43ae88892 Rename EIGEN_HAVE_RVALUE_REFERENCES to EIGEN_HAS_RVALUE_REFERENCES 2016-05-20 14:48:51 +02:00
Gael Guennebaud
8d6bd5691b polygamma is C99/C++11 only 2016-05-20 14:45:33 +02:00
Gael Guennebaud
0ba32f99bd Rename UniformRandom to UnitRandom. 2016-05-20 13:21:34 +02:00
Joseph Mirabel
eb0cc2573a bug #823: add static method to Quaternion for uniform random rotations. 2016-05-20 13:15:40 +02:00
Gael Guennebaud
575bc44c3f Fix unit test. 2016-05-19 22:48:16 +02:00
Gael Guennebaud
ccb408ee6a Improve unit tests of zeta, polygamma, and digamma 2016-05-19 18:34:41 +02:00
Gael Guennebaud
df9a5e13c6 Fix SelfAdjointEigenSolver for some input expression types, and add new regression unit tests for sparse and selfadjointview inputs. 2016-05-19 13:07:33 +02:00
Gael Guennebaud
a226f6af6b Add support for SelfAdjointView::diagonal() 2016-05-19 13:05:33 +02:00
Gael Guennebaud
b6b8578a67 bug #1230: add support for SelfadjointView::triangularView. 2016-05-19 11:36:38 +02:00
Gael Guennebaud
84df9142e7 bug #1231: fix compilation regression regarding complex_array/=real_array and add respective unit tests 2016-05-18 23:00:13 +02:00
Gael Guennebaud
8456bbbadb bug #1224: fix regression in (dense*dense).sparseView() by specializing evaluator<SparseView<Product>> for sparse products only. 2016-05-18 16:53:28 +02:00