4using LdexpReturnType = CwiseUnaryOp<internal::scalar_ldexp_op<Scalar>,
const Derived>;
5using IsFiniteTypedReturnType = CwiseUnaryOp<internal::scalar_isfinite_op<Scalar, true>,
const Derived>;
14EIGEN_MAKE_CWISE_UNARY_OP(abs, internal::scalar_abs_op, AbsReturnType)
23EIGEN_MAKE_CWISE_UNARY_OP(arg, internal::scalar_arg_op, ArgReturnType)
25EIGEN_MAKE_CWISE_UNARY_OP(carg, internal::scalar_carg_op, CArgReturnType)
34EIGEN_MAKE_CWISE_UNARY_OP(abs2, internal::scalar_abs2_op, Abs2ReturnType)
47EIGEN_MAKE_CWISE_UNARY_OP(exp, internal::scalar_exp_op, ExpReturnType)
56EIGEN_MAKE_CWISE_UNARY_OP(exp2, internal::scalar_exp2_op, Exp2ReturnType)
70EIGEN_DEVICE_FUNC
constexpr inline const LdexpReturnType ldexp(
int exponent)
const {
71 return LdexpReturnType(derived(), internal::scalar_ldexp_op<Scalar>(exponent));
81EIGEN_MAKE_CWISE_UNARY_OP(expm1, internal::scalar_expm1_op, Expm1ReturnType)
93EIGEN_MAKE_CWISE_UNARY_OP(log, internal::scalar_log_op, LogReturnType)
102EIGEN_MAKE_CWISE_UNARY_OP(log1p, internal::scalar_log1p_op, Log1pReturnType)
113EIGEN_MAKE_CWISE_UNARY_OP(log10, internal::scalar_log10_op, Log10ReturnType)
120EIGEN_MAKE_CWISE_UNARY_OP(log2, internal::scalar_log2_op, Log2ReturnType)
132EIGEN_MAKE_CWISE_UNARY_OP(sqrt, internal::scalar_sqrt_op, SqrtReturnType)
143EIGEN_MAKE_CWISE_UNARY_OP(cbrt, internal::scalar_cbrt_op, CbrtReturnType)
154EIGEN_MAKE_CWISE_UNARY_OP(rsqrt, internal::scalar_rsqrt_op, RsqrtReturnType)
165EIGEN_MAKE_CWISE_UNARY_OP(sign, internal::scalar_sign_op, SignReturnType)
177EIGEN_MAKE_CWISE_UNARY_OP(cos, internal::scalar_cos_op, CosReturnType)
189EIGEN_MAKE_CWISE_UNARY_OP(sin, internal::scalar_sin_op, SinReturnType)
198EIGEN_MAKE_CWISE_UNARY_OP(tan, internal::scalar_tan_op, TanReturnType)
207EIGEN_MAKE_CWISE_UNARY_OP(atan, internal::scalar_atan_op, AtanReturnType)
216EIGEN_MAKE_CWISE_UNARY_OP(acos, internal::scalar_acos_op, AcosReturnType)
225EIGEN_MAKE_CWISE_UNARY_OP(asin, internal::scalar_asin_op, AsinReturnType)
234EIGEN_MAKE_CWISE_UNARY_OP(tanh, internal::scalar_tanh_op, TanhReturnType)
243EIGEN_MAKE_CWISE_UNARY_OP(sinh, internal::scalar_sinh_op, SinhReturnType)
252EIGEN_MAKE_CWISE_UNARY_OP(cosh, internal::scalar_cosh_op, CoshReturnType)
258EIGEN_MAKE_CWISE_UNARY_OP(atanh, internal::scalar_atanh_op, AtanhReturnType)
264EIGEN_MAKE_CWISE_UNARY_OP(asinh, internal::scalar_asinh_op, AsinhReturnType)
270EIGEN_MAKE_CWISE_UNARY_OP(acosh, internal::scalar_acosh_op, AcoshReturnType)
274EIGEN_MAKE_CWISE_UNARY_OP(logistic, internal::scalar_logistic_op, LogisticReturnType)
283EIGEN_MAKE_CWISE_UNARY_OP(inverse, internal::scalar_inverse_op, InverseReturnType)
292EIGEN_MAKE_CWISE_UNARY_OP(square, internal::scalar_square_op, SquareReturnType)
301EIGEN_MAKE_CWISE_UNARY_OP(cube, internal::scalar_cube_op, CubeReturnType)
310EIGEN_MAKE_CWISE_UNARY_OP(rint, internal::scalar_rint_op, RintReturnType)
319EIGEN_MAKE_CWISE_UNARY_OP(round, internal::scalar_round_op, RoundReturnType)
328EIGEN_MAKE_CWISE_UNARY_OP(floor, internal::scalar_floor_op, FloorReturnType)
337EIGEN_MAKE_CWISE_UNARY_OP(ceil, internal::scalar_ceil_op, CeilReturnType)
346EIGEN_MAKE_CWISE_UNARY_OP(trunc, internal::scalar_trunc_op, TruncReturnType)
349struct ArithmeticShiftRightXpr {
350 using Type = CwiseUnaryOp<internal::scalar_arithmetic_shift_right_op<Scalar, N>,
const Derived>;
364EIGEN_DEVICE_FUNC
constexpr typename ArithmeticShiftRightXpr<N>::Type arithmeticShiftRight()
const {
365 return typename ArithmeticShiftRightXpr<N>::Type(derived());
369struct LogicalShiftRightXpr {
370 using Type = CwiseUnaryOp<internal::scalar_logical_shift_right_op<Scalar, N>,
const Derived>;
383EIGEN_DEVICE_FUNC
constexpr typename LogicalShiftRightXpr<N>::Type logicalShiftRight()
const {
384 return typename LogicalShiftRightXpr<N>::Type(derived());
388struct LogicalShiftLeftXpr {
389 using Type = CwiseUnaryOp<internal::scalar_logical_shift_left_op<Scalar, N>,
const Derived>;
402EIGEN_DEVICE_FUNC
constexpr typename LogicalShiftLeftXpr<N>::Type logicalShiftLeft()
const {
403 return typename LogicalShiftLeftXpr<N>::Type(derived());
407struct ShiftRightXpr {
408 using Type =
typename ArithmeticShiftRightXpr<N>::Type;
419EIGEN_DEPRECATED_WITH_REASON(
"Use arithmeticShiftRight() instead.")
420EIGEN_DEVICE_FUNC constexpr typename ShiftRightXpr<N>::Type shiftRight()
const {
421 return arithmeticShiftRight<N>();
426 using Type =
typename LogicalShiftLeftXpr<N>::Type;
437EIGEN_DEPRECATED_WITH_REASON(
"Use logicalShiftLeft() instead.")
438EIGEN_DEVICE_FUNC constexpr typename ShiftLeftXpr<N>::Type shiftLeft()
const {
439 return logicalShiftLeft<N>();
449EIGEN_MAKE_CWISE_UNARY_OP(isNaN, internal::scalar_isnan_op, IsNaNReturnType)
458EIGEN_MAKE_CWISE_UNARY_OP(isInf, internal::scalar_isinf_op, IsInfReturnType)
467EIGEN_MAKE_CWISE_UNARY_OP(isFinite, internal::scalar_isfinite_op, IsFiniteReturnType)
468EIGEN_DEVICE_FUNC
constexpr inline const IsFiniteTypedReturnType isFiniteTyped()
const {
469 return IsFiniteTypedReturnType(derived());
479EIGEN_MAKE_CWISE_UNARY_OP(
operator!, internal::scalar_boolean_not_op, BooleanNotReturnType)
483EIGEN_MAKE_CWISE_UNARY_OP(
operator~, internal::scalar_bitwise_not_op, BitwiseNotReturnType)
496EIGEN_MAKE_CWISE_UNARY_OP(lgamma, internal::scalar_lgamma_op, LgammaReturnType)
509EIGEN_MAKE_CWISE_UNARY_OP(digamma, internal::scalar_digamma_op, DigammaReturnType)
521EIGEN_MAKE_CWISE_UNARY_OP(erf, internal::scalar_erf_op, ErfReturnType)
533EIGEN_MAKE_CWISE_UNARY_OP(erfc, internal::scalar_erfc_op, ErfcReturnType)
548EIGEN_MAKE_CWISE_UNARY_OP(ndtri, internal::scalar_ndtri_op, NdtriReturnType)
550template <
typename ScalarExponent>
551using UnaryPowReturnType =
552 std::enable_if_t<internal::is_arithmetic<typename NumTraits<ScalarExponent>::Real>::value,
553 CwiseUnaryOp<internal::scalar_unary_pow_op<Scalar, ScalarExponent>,
const Derived>>;
576template <
typename ScalarExponent>
577EIGEN_DEVICE_FUNC
constexpr EIGEN_STRONG_INLINE
const UnaryPowReturnType<ScalarExponent> pow(
578 const ScalarExponent& exponent)
const {
579 return UnaryPowReturnType<ScalarExponent>(derived(), internal::scalar_unary_pow_op<Scalar, ScalarExponent>(exponent));