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