Remove const from return-by-value types (issue #1087)

libeigen/eigen!2144

Closes #1087

Co-authored-by: Rasmus Munk Larsen <rmlarsen@gmail.com>
This commit is contained in:
Rasmus Munk Larsen
2026-02-18 03:10:11 -08:00
parent 3108f6360e
commit bdec88009d
22 changed files with 123 additions and 128 deletions

View File

@@ -338,14 +338,14 @@ class MatrixBase : public DenseBase<Derived> {
/////////// LU module ///////////
template <typename PermutationIndex = DefaultPermutationIndex>
inline const FullPivLU<PlainObject, PermutationIndex> fullPivLu() const;
inline FullPivLU<PlainObject, PermutationIndex> fullPivLu() const;
template <typename PermutationIndex = DefaultPermutationIndex>
inline const PartialPivLU<PlainObject, PermutationIndex> partialPivLu() const;
inline PartialPivLU<PlainObject, PermutationIndex> partialPivLu() const;
template <typename PermutationIndex = DefaultPermutationIndex>
inline const PartialPivLU<PlainObject, PermutationIndex> lu() const;
inline PartialPivLU<PlainObject, PermutationIndex> lu() const;
EIGEN_DEVICE_FUNC inline const Inverse<Derived> inverse() const;
EIGEN_DEVICE_FUNC inline Inverse<Derived> inverse() const;
template <typename ResultType>
inline void computeInverseAndDetWithCheck(
@@ -361,18 +361,18 @@ class MatrixBase : public DenseBase<Derived> {
/////////// Cholesky module ///////////
inline const LLT<PlainObject> llt() const;
inline const LDLT<PlainObject> ldlt() const;
inline LLT<PlainObject> llt() const;
inline LDLT<PlainObject> ldlt() const;
/////////// QR module ///////////
inline const HouseholderQR<PlainObject> householderQr() const;
inline HouseholderQR<PlainObject> householderQr() const;
template <typename PermutationIndex = DefaultPermutationIndex>
inline const ColPivHouseholderQR<PlainObject, PermutationIndex> colPivHouseholderQr() const;
inline ColPivHouseholderQR<PlainObject, PermutationIndex> colPivHouseholderQr() const;
template <typename PermutationIndex = DefaultPermutationIndex>
inline const FullPivHouseholderQR<PlainObject, PermutationIndex> fullPivHouseholderQr() const;
inline FullPivHouseholderQR<PlainObject, PermutationIndex> fullPivHouseholderQr() const;
template <typename PermutationIndex = DefaultPermutationIndex>
inline const CompleteOrthogonalDecomposition<PlainObject, PermutationIndex> completeOrthogonalDecomposition() const;
inline CompleteOrthogonalDecomposition<PlainObject, PermutationIndex> completeOrthogonalDecomposition() const;
/////////// Eigenvalues module ///////////

View File

@@ -19,7 +19,7 @@ namespace internal {
template <typename Scalar>
struct scalar_random_op {
inline const Scalar operator()() const { return random<Scalar>(); }
inline Scalar operator()() const { return random<Scalar>(); }
};
template <typename Scalar>

View File

@@ -219,8 +219,8 @@ class SelfAdjointView : public TriangularBase<SelfAdjointView<MatrixType_, UpLo>
/////////// Cholesky module ///////////
const LLT<PlainObject, UpLo> llt() const;
const LDLT<PlainObject, UpLo> ldlt() const;
LLT<PlainObject, UpLo> llt() const;
LDLT<PlainObject, UpLo> ldlt() const;
/////////// Eigenvalue module ///////////

View File

@@ -111,7 +111,7 @@ class SolverBase : public EigenBase<Derived> {
/** \returns an expression of the solution x of \f$ A x = b \f$ using the current decomposition of A.
*/
template <typename Rhs>
inline const Solve<Derived, Rhs> solve(const MatrixBase<Rhs>& b) const {
inline Solve<Derived, Rhs> solve(const MatrixBase<Rhs>& b) const {
internal::solve_assertion<internal::remove_all_t<Derived>>::template run<false>(derived(), b);
return Solve<Derived, Rhs>(derived(), b.derived());
}

View File

@@ -244,7 +244,7 @@ class TriangularView
}
template <typename Other>
EIGEN_DEVICE_FUNC inline const Solve<TriangularView, Other> solve(const MatrixBase<Other>& other) const {
EIGEN_DEVICE_FUNC inline Solve<TriangularView, Other> solve(const MatrixBase<Other>& other) const {
return Solve<TriangularView, Other>(*this, other.derived());
}

View File

@@ -305,7 +305,7 @@ struct scalar_cmp_op<LhsScalar, RhsScalar, cmp_NEQ, UseTypedComparators> : binar
*/
template <typename Scalar>
struct scalar_hypot_op<Scalar, Scalar> : binary_op_base<Scalar, Scalar> {
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar operator()(const Scalar& x, const Scalar& y) const {
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar operator()(const Scalar& x, const Scalar& y) const {
// This functor is used by hypotNorm only for which it is faster to first apply abs
// on all coefficients prior to reduction through hypot.
// This way we avoid calling abs on positive and real entries, and this also permits
@@ -342,7 +342,7 @@ struct scalar_pow_op : binary_op_base<Scalar, Exponent> {
}
template <typename Packet>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Packet packetOp(const Packet& a, const Packet& b) const {
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(const Packet& a, const Packet& b) const {
return generic_pow(a, b);
}
};
@@ -368,12 +368,12 @@ struct scalar_difference_op : binary_op_base<LhsScalar, RhsScalar> {
#ifdef EIGEN_SCALAR_BINARY_OP_PLUGIN
scalar_difference_op(){EIGEN_SCALAR_BINARY_OP_PLUGIN}
#endif
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const result_type
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE result_type
operator()(const LhsScalar& a, const RhsScalar& b) const {
return a - b;
}
template <typename Packet>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Packet packetOp(const Packet& a, const Packet& b) const {
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(const Packet& a, const Packet& b) const {
return internal::psub(a, b);
}
};
@@ -417,12 +417,12 @@ struct scalar_quotient_op : binary_op_base<LhsScalar, RhsScalar> {
#ifdef EIGEN_SCALAR_BINARY_OP_PLUGIN
scalar_quotient_op(){EIGEN_SCALAR_BINARY_OP_PLUGIN}
#endif
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const result_type
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE result_type
operator()(const LhsScalar& a, const RhsScalar& b) const {
return a / b;
}
template <typename Packet>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Packet packetOp(const Packet& a, const Packet& b) const {
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(const Packet& a, const Packet& b) const {
return internal::pdiv(a, b);
}
};
@@ -646,12 +646,12 @@ struct scalar_absolute_difference_op : binary_op_base<LhsScalar, RhsScalar> {
#ifdef EIGEN_SCALAR_BINARY_OP_PLUGIN
scalar_absolute_difference_op(){EIGEN_SCALAR_BINARY_OP_PLUGIN}
#endif
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const result_type
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE result_type
operator()(const LhsScalar& a, const RhsScalar& b) const {
return numext::absdiff(a, b);
}
template <typename Packet>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Packet packetOp(const Packet& a, const Packet& b) const {
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(const Packet& a, const Packet& b) const {
return internal::pabsdiff(a, b);
}
};
@@ -704,12 +704,12 @@ struct bind1st_op : BinaryOp {
EIGEN_DEVICE_FUNC explicit bind1st_op(const first_argument_type& val) : m_value(val) {}
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const result_type operator()(const second_argument_type& b) const {
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE result_type operator()(const second_argument_type& b) const {
return BinaryOp::operator()(m_value, b);
}
template <typename Packet>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Packet packetOp(const Packet& b) const {
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(const Packet& b) const {
return BinaryOp::packetOp(internal::pset1<Packet>(m_value), b);
}
@@ -726,12 +726,12 @@ struct bind2nd_op : BinaryOp {
EIGEN_DEVICE_FUNC explicit bind2nd_op(const second_argument_type& val) : m_value(val) {}
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const result_type operator()(const first_argument_type& a) const {
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE result_type operator()(const first_argument_type& a) const {
return BinaryOp::operator()(a, m_value);
}
template <typename Packet>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Packet packetOp(const Packet& a) const {
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(const Packet& a) const {
return BinaryOp::packetOp(a, internal::pset1<Packet>(m_value));
}

View File

@@ -20,9 +20,9 @@ namespace internal {
template <typename Scalar>
struct scalar_constant_op {
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE scalar_constant_op(const Scalar& other) : m_other(other) {}
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar operator()() const { return m_other; }
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar operator()() const { return m_other; }
template <typename PacketType>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const PacketType packetOp() const {
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packetOp() const {
return internal::pset1<PacketType>(m_other);
}
const Scalar m_other;
@@ -39,9 +39,9 @@ struct functor_traits<scalar_constant_op<Scalar>> {
template <typename Scalar>
struct scalar_zero_op {
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE scalar_zero_op() = default;
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar operator()() const { return Scalar(0); }
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar operator()() const { return Scalar(0); }
template <typename PacketType>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const PacketType packetOp() const {
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packetOp() const {
return internal::pzero<PacketType>(PacketType());
}
};
@@ -51,7 +51,7 @@ struct functor_traits<scalar_zero_op<Scalar>> : functor_traits<scalar_constant_o
template <typename Scalar>
struct scalar_identity_op {
template <typename IndexType>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar operator()(IndexType row, IndexType col) const {
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar operator()(IndexType row, IndexType col) const {
return row == col ? Scalar(1) : Scalar(0);
}
};
@@ -75,7 +75,7 @@ struct linspaced_op_impl<Scalar, /*IsInteger*/ false> {
m_flip(numext::abs(high) < numext::abs(low)) {}
template <typename IndexType>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar operator()(IndexType i) const {
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar operator()(IndexType i) const {
if (m_flip)
return (i == 0) ? m_low : Scalar(m_high - RealScalar(m_size1 - i) * m_step);
else
@@ -83,7 +83,7 @@ struct linspaced_op_impl<Scalar, /*IsInteger*/ false> {
}
template <typename Packet, typename IndexType>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Packet packetOp(IndexType i) const {
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(IndexType i) const {
// Principle:
// [low, ..., low] + ( [step, ..., step] * ( [i, ..., i] + [0, ..., size] ) )
Packet low = pset1<Packet>(m_low);
@@ -119,7 +119,7 @@ struct linspaced_op_impl<Scalar, /*IsInteger*/ true> {
m_use_divisor(num_steps > 1 && (numext::abs(high - low) + 1) < num_steps) {}
template <typename IndexType>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar operator()(IndexType i) const {
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar operator()(IndexType i) const {
if (m_use_divisor)
return m_low + convert_index<Scalar>(i) / m_divisor;
else
@@ -155,12 +155,12 @@ struct linspaced_op {
: impl((num_steps == 1 ? high : low), high, num_steps) {}
template <typename IndexType>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar operator()(IndexType i) const {
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar operator()(IndexType i) const {
return impl(i);
}
template <typename Packet, typename IndexType>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Packet packetOp(IndexType i) const {
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(IndexType i) const {
return impl.template packetOp<Packet>(i);
}
@@ -175,7 +175,7 @@ struct equalspaced_op {
EIGEN_DEVICE_FUNC equalspaced_op(const Scalar& start, const Scalar& step) : m_start(start), m_step(step) {}
template <typename IndexType>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar operator()(IndexType i) const {
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar operator()(IndexType i) const {
return m_start + m_step * static_cast<Scalar>(i);
}
template <typename Packet, typename IndexType>

View File

@@ -24,9 +24,9 @@ namespace internal {
*/
template <typename Scalar>
struct scalar_opposite_op {
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar operator()(const Scalar& a) const { return numext::negate(a); }
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar operator()(const Scalar& a) const { return numext::negate(a); }
template <typename Packet>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Packet packetOp(const Packet& a) const {
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(const Packet& a) const {
return internal::pnegate(a);
}
};
@@ -43,9 +43,9 @@ struct functor_traits<scalar_opposite_op<Scalar>> {
template <typename Scalar>
struct scalar_abs_op {
typedef typename NumTraits<Scalar>::Real result_type;
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const result_type operator()(const Scalar& a) const { return numext::abs(a); }
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE result_type operator()(const Scalar& a) const { return numext::abs(a); }
template <typename Packet>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Packet packetOp(const Packet& a) const {
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(const Packet& a) const {
return internal::pabs(a);
}
};
@@ -71,7 +71,7 @@ template <typename Scalar, typename = void>
struct abs_knowing_score {
typedef typename NumTraits<Scalar>::Real result_type;
template <typename Score>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const result_type operator()(const Scalar& a, const Score&) const {
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE result_type operator()(const Scalar& a, const Score&) const {
return numext::abs(a);
}
};
@@ -79,7 +79,7 @@ template <typename Scalar>
struct abs_knowing_score<Scalar, typename scalar_score_coeff_op<Scalar>::Score_is_abs> {
typedef typename NumTraits<Scalar>::Real result_type;
template <typename Scal>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const result_type operator()(const Scal&, const result_type& a) const {
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE result_type operator()(const Scal&, const result_type& a) const {
return a;
}
};
@@ -92,9 +92,9 @@ struct abs_knowing_score<Scalar, typename scalar_score_coeff_op<Scalar>::Score_i
template <typename Scalar>
struct scalar_abs2_op {
typedef typename NumTraits<Scalar>::Real result_type;
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const result_type operator()(const Scalar& a) const { return numext::abs2(a); }
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE result_type operator()(const Scalar& a) const { return numext::abs2(a); }
template <typename Packet>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Packet packetOp(const Packet& a) const {
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(const Packet& a) const {
return internal::pmul(a, a);
}
};
@@ -113,9 +113,9 @@ struct functor_traits<scalar_abs2_op<Scalar>> {
*/
template <typename Scalar>
struct scalar_conjugate_op {
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar operator()(const Scalar& a) const { return numext::conj(a); }
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar operator()(const Scalar& a) const { return numext::conj(a); }
template <typename Packet>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Packet packetOp(const Packet& a) const {
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(const Packet& a) const {
return internal::pconj(a);
}
};
@@ -143,9 +143,9 @@ struct functor_traits<scalar_conjugate_op<Scalar>> {
template <typename Scalar>
struct scalar_arg_op {
typedef typename NumTraits<Scalar>::Real result_type;
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const result_type operator()(const Scalar& a) const { return numext::arg(a); }
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE result_type operator()(const Scalar& a) const { return numext::arg(a); }
template <typename Packet>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Packet packetOp(const Packet& a) const {
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(const Packet& a) const {
return internal::parg(a);
}
};
@@ -165,11 +165,9 @@ struct functor_traits<scalar_arg_op<Scalar>> {
template <typename Scalar>
struct scalar_carg_op {
using result_type = Scalar;
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar operator()(const Scalar& a) const {
return Scalar(numext::arg(a));
}
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar operator()(const Scalar& a) const { return Scalar(numext::arg(a)); }
template <typename Packet>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Packet packetOp(const Packet& a) const {
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(const Packet& a) const {
return pcarg(a);
}
};
@@ -187,9 +185,7 @@ struct functor_traits<scalar_carg_op<Scalar>> {
template <typename Scalar, typename NewType>
struct scalar_cast_op {
typedef NewType result_type;
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const NewType operator()(const Scalar& a) const {
return cast<Scalar, NewType>(a);
}
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE NewType operator()(const Scalar& a) const { return cast<Scalar, NewType>(a); }
};
template <typename Scalar, typename NewType>
@@ -222,11 +218,11 @@ struct functor_traits<core_cast_op<SrcType, DstType>> {
*/
template <typename Scalar, int N>
struct scalar_shift_right_op {
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar operator()(const Scalar& a) const {
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar operator()(const Scalar& a) const {
return numext::arithmetic_shift_right(a);
}
template <typename Packet>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Packet packetOp(const Packet& a) const {
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(const Packet& a) const {
return internal::parithmetic_shift_right<N>(a);
}
};
@@ -242,11 +238,11 @@ struct functor_traits<scalar_shift_right_op<Scalar, N>> {
*/
template <typename Scalar, int N>
struct scalar_shift_left_op {
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar operator()(const Scalar& a) const {
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar operator()(const Scalar& a) const {
return numext::logical_shift_left(a);
}
template <typename Packet>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Packet packetOp(const Packet& a) const {
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(const Packet& a) const {
return internal::plogical_shift_left<N>(a);
}
};
@@ -329,7 +325,7 @@ struct functor_traits<scalar_imag_ref_op<Scalar>> {
*/
template <typename Scalar>
struct scalar_exp_op {
EIGEN_DEVICE_FUNC inline const Scalar operator()(const Scalar& a) const { return internal::pexp(a); }
EIGEN_DEVICE_FUNC inline Scalar operator()(const Scalar& a) const { return internal::pexp(a); }
template <typename Packet>
EIGEN_DEVICE_FUNC inline Packet packetOp(const Packet& a) const {
return internal::pexp(a);
@@ -361,7 +357,7 @@ struct functor_traits<scalar_exp_op<Scalar>> {
template <typename Scalar>
struct scalar_exp2_op {
EIGEN_DEVICE_FUNC inline const Scalar operator()(const Scalar& a) const { return internal::pexp2(a); }
EIGEN_DEVICE_FUNC inline Scalar operator()(const Scalar& a) const { return internal::pexp2(a); }
template <typename Packet>
EIGEN_DEVICE_FUNC inline Packet packetOp(const Packet& a) const {
return internal::pexp2(a);
@@ -383,7 +379,7 @@ struct functor_traits<scalar_exp2_op<Scalar>> {
*/
template <typename Scalar>
struct scalar_expm1_op {
EIGEN_DEVICE_FUNC inline const Scalar operator()(const Scalar& a) const { return numext::expm1(a); }
EIGEN_DEVICE_FUNC inline Scalar operator()(const Scalar& a) const { return numext::expm1(a); }
template <typename Packet>
EIGEN_DEVICE_FUNC inline Packet packetOp(const Packet& a) const {
return internal::pexpm1(a);
@@ -405,7 +401,7 @@ struct functor_traits<scalar_expm1_op<Scalar>> {
*/
template <typename Scalar>
struct scalar_log_op {
EIGEN_DEVICE_FUNC inline const Scalar operator()(const Scalar& a) const { return numext::log(a); }
EIGEN_DEVICE_FUNC inline Scalar operator()(const Scalar& a) const { return numext::log(a); }
template <typename Packet>
EIGEN_DEVICE_FUNC inline Packet packetOp(const Packet& a) const {
return internal::plog(a);
@@ -437,7 +433,7 @@ struct functor_traits<scalar_log_op<Scalar>> {
*/
template <typename Scalar>
struct scalar_log1p_op {
EIGEN_DEVICE_FUNC inline const Scalar operator()(const Scalar& a) const { return numext::log1p(a); }
EIGEN_DEVICE_FUNC inline Scalar operator()(const Scalar& a) const { return numext::log1p(a); }
template <typename Packet>
EIGEN_DEVICE_FUNC inline Packet packetOp(const Packet& a) const {
return internal::plog1p(a);
@@ -459,7 +455,7 @@ struct functor_traits<scalar_log1p_op<Scalar>> {
*/
template <typename Scalar>
struct scalar_log10_op {
EIGEN_DEVICE_FUNC inline const Scalar operator()(const Scalar& a) const { EIGEN_USING_STD(log10) return log10(a); }
EIGEN_DEVICE_FUNC inline Scalar operator()(const Scalar& a) const { EIGEN_USING_STD(log10) return log10(a); }
template <typename Packet>
EIGEN_DEVICE_FUNC inline Packet packetOp(const Packet& a) const {
return internal::plog10(a);
@@ -479,7 +475,7 @@ struct functor_traits<scalar_log10_op<Scalar>> {
template <typename Scalar>
struct scalar_log2_op {
using RealScalar = typename NumTraits<Scalar>::Real;
EIGEN_DEVICE_FUNC inline const Scalar operator()(const Scalar& a) const {
EIGEN_DEVICE_FUNC inline Scalar operator()(const Scalar& a) const {
return Scalar(RealScalar(EIGEN_LOG2E)) * numext::log(a);
}
template <typename Packet>
@@ -498,7 +494,7 @@ struct functor_traits<scalar_log2_op<Scalar>> {
*/
template <typename Scalar>
struct scalar_sqrt_op {
EIGEN_DEVICE_FUNC inline const Scalar operator()(const Scalar& a) const { return numext::sqrt(a); }
EIGEN_DEVICE_FUNC inline Scalar operator()(const Scalar& a) const { return numext::sqrt(a); }
template <typename Packet>
EIGEN_DEVICE_FUNC inline Packet packetOp(const Packet& a) const {
return internal::psqrt(a);
@@ -540,7 +536,7 @@ struct functor_traits<scalar_sqrt_op<bool>> {
*/
template <typename Scalar>
struct scalar_cbrt_op {
EIGEN_DEVICE_FUNC inline const Scalar operator()(const Scalar& a) const { return numext::cbrt(a); }
EIGEN_DEVICE_FUNC inline Scalar operator()(const Scalar& a) const { return numext::cbrt(a); }
template <typename Packet>
EIGEN_DEVICE_FUNC inline Packet packetOp(const Packet& a) const {
return internal::pcbrt(a);
@@ -558,7 +554,7 @@ struct functor_traits<scalar_cbrt_op<Scalar>> {
*/
template <typename Scalar>
struct scalar_rsqrt_op {
EIGEN_DEVICE_FUNC inline const Scalar operator()(const Scalar& a) const { return numext::rsqrt(a); }
EIGEN_DEVICE_FUNC inline Scalar operator()(const Scalar& a) const { return numext::rsqrt(a); }
template <typename Packet>
EIGEN_DEVICE_FUNC inline Packet packetOp(const Packet& a) const {
return internal::prsqrt(a);
@@ -593,7 +589,7 @@ struct functor_traits<scalar_cos_op<Scalar>> {
*/
template <typename Scalar>
struct scalar_sin_op {
EIGEN_DEVICE_FUNC inline const Scalar operator()(const Scalar& a) const { return numext::sin(a); }
EIGEN_DEVICE_FUNC inline Scalar operator()(const Scalar& a) const { return numext::sin(a); }
template <typename Packet>
EIGEN_DEVICE_FUNC inline Packet packetOp(const Packet& a) const {
return internal::psin(a);
@@ -610,7 +606,7 @@ struct functor_traits<scalar_sin_op<Scalar>> {
*/
template <typename Scalar>
struct scalar_tan_op {
EIGEN_DEVICE_FUNC inline const Scalar operator()(const Scalar& a) const { return numext::tan(a); }
EIGEN_DEVICE_FUNC inline Scalar operator()(const Scalar& a) const { return numext::tan(a); }
template <typename Packet>
EIGEN_DEVICE_FUNC inline Packet packetOp(const Packet& a) const {
return internal::ptan(a);
@@ -627,7 +623,7 @@ struct functor_traits<scalar_tan_op<Scalar>> {
*/
template <typename Scalar>
struct scalar_acos_op {
EIGEN_DEVICE_FUNC inline const Scalar operator()(const Scalar& a) const { return numext::acos(a); }
EIGEN_DEVICE_FUNC inline Scalar operator()(const Scalar& a) const { return numext::acos(a); }
template <typename Packet>
EIGEN_DEVICE_FUNC inline Packet packetOp(const Packet& a) const {
return internal::pacos(a);
@@ -644,7 +640,7 @@ struct functor_traits<scalar_acos_op<Scalar>> {
*/
template <typename Scalar>
struct scalar_asin_op {
EIGEN_DEVICE_FUNC inline const Scalar operator()(const Scalar& a) const { return numext::asin(a); }
EIGEN_DEVICE_FUNC inline Scalar operator()(const Scalar& a) const { return numext::asin(a); }
template <typename Packet>
EIGEN_DEVICE_FUNC inline Packet packetOp(const Packet& a) const {
return internal::pasin(a);
@@ -661,7 +657,7 @@ struct functor_traits<scalar_asin_op<Scalar>> {
*/
template <typename Scalar>
struct scalar_atan_op {
EIGEN_DEVICE_FUNC inline const Scalar operator()(const Scalar& a) const { return numext::atan(a); }
EIGEN_DEVICE_FUNC inline Scalar operator()(const Scalar& a) const { return numext::atan(a); }
template <typename Packet>
EIGEN_DEVICE_FUNC inline Packet packetOp(const Packet& a) const {
return internal::patan(a);
@@ -678,7 +674,7 @@ struct functor_traits<scalar_atan_op<Scalar>> {
*/
template <typename Scalar>
struct scalar_tanh_op {
EIGEN_DEVICE_FUNC inline const Scalar operator()(const Scalar& a) const { return numext::tanh(a); }
EIGEN_DEVICE_FUNC inline Scalar operator()(const Scalar& a) const { return numext::tanh(a); }
template <typename Packet>
EIGEN_DEVICE_FUNC inline Packet packetOp(const Packet& x) const {
return ptanh(x);
@@ -713,7 +709,7 @@ struct functor_traits<scalar_tanh_op<Scalar>> {
*/
template <typename Scalar>
struct scalar_atanh_op {
EIGEN_DEVICE_FUNC inline const Scalar operator()(const Scalar& a) const { return numext::atanh(a); }
EIGEN_DEVICE_FUNC inline Scalar operator()(const Scalar& a) const { return numext::atanh(a); }
template <typename Packet>
EIGEN_DEVICE_FUNC inline Packet packetOp(const Packet& x) const {
return patanh(x);
@@ -731,7 +727,7 @@ struct functor_traits<scalar_atanh_op<Scalar>> {
*/
template <typename Scalar>
struct scalar_sinh_op {
EIGEN_DEVICE_FUNC inline const Scalar operator()(const Scalar& a) const { return numext::sinh(a); }
EIGEN_DEVICE_FUNC inline Scalar operator()(const Scalar& a) const { return numext::sinh(a); }
template <typename Packet>
EIGEN_DEVICE_FUNC inline Packet packetOp(const Packet& a) const {
return internal::psinh(a);
@@ -748,7 +744,7 @@ struct functor_traits<scalar_sinh_op<Scalar>> {
*/
template <typename Scalar>
struct scalar_asinh_op {
EIGEN_DEVICE_FUNC inline const Scalar operator()(const Scalar& a) const { return numext::asinh(a); }
EIGEN_DEVICE_FUNC inline Scalar operator()(const Scalar& a) const { return numext::asinh(a); }
};
template <typename Scalar>
@@ -762,7 +758,7 @@ struct functor_traits<scalar_asinh_op<Scalar>> {
*/
template <typename Scalar>
struct scalar_cosh_op {
EIGEN_DEVICE_FUNC inline const Scalar operator()(const Scalar& a) const { return numext::cosh(a); }
EIGEN_DEVICE_FUNC inline Scalar operator()(const Scalar& a) const { return numext::cosh(a); }
template <typename Packet>
EIGEN_DEVICE_FUNC inline Packet packetOp(const Packet& a) const {
return internal::pcosh(a);
@@ -779,7 +775,7 @@ struct functor_traits<scalar_cosh_op<Scalar>> {
*/
template <typename Scalar>
struct scalar_acosh_op {
EIGEN_DEVICE_FUNC inline const Scalar operator()(const Scalar& a) const { return numext::acosh(a); }
EIGEN_DEVICE_FUNC inline Scalar operator()(const Scalar& a) const { return numext::acosh(a); }
};
template <typename Scalar>
@@ -795,7 +791,7 @@ template <typename Scalar>
struct scalar_inverse_op {
EIGEN_DEVICE_FUNC inline Scalar operator()(const Scalar& a) const { return Scalar(1) / a; }
template <typename Packet>
EIGEN_DEVICE_FUNC inline const Packet packetOp(const Packet& a) const {
EIGEN_DEVICE_FUNC inline Packet packetOp(const Packet& a) const {
return internal::preciprocal(a);
}
};
@@ -819,7 +815,7 @@ template <typename Scalar>
struct scalar_square_op {
EIGEN_DEVICE_FUNC inline Scalar operator()(const Scalar& a) const { return a * a; }
template <typename Packet>
EIGEN_DEVICE_FUNC inline const Packet packetOp(const Packet& a) const {
EIGEN_DEVICE_FUNC inline Packet packetOp(const Packet& a) const {
return internal::pmul(a, a);
}
};
@@ -833,7 +829,7 @@ template <>
struct scalar_square_op<bool> {
EIGEN_DEPRECATED EIGEN_DEVICE_FUNC inline bool operator()(const bool& a) const { return a; }
template <typename Packet>
EIGEN_DEPRECATED EIGEN_DEVICE_FUNC inline const Packet packetOp(const Packet& a) const {
EIGEN_DEPRECATED EIGEN_DEVICE_FUNC inline Packet packetOp(const Packet& a) const {
return a;
}
};
@@ -850,7 +846,7 @@ template <typename Scalar>
struct scalar_cube_op {
EIGEN_DEVICE_FUNC inline Scalar operator()(const Scalar& a) const { return a * a * a; }
template <typename Packet>
EIGEN_DEVICE_FUNC inline const Packet packetOp(const Packet& a) const {
EIGEN_DEVICE_FUNC inline Packet packetOp(const Packet& a) const {
return internal::pmul(a, pmul(a, a));
}
};
@@ -864,7 +860,7 @@ template <>
struct scalar_cube_op<bool> {
EIGEN_DEPRECATED EIGEN_DEVICE_FUNC inline bool operator()(const bool& a) const { return a; }
template <typename Packet>
EIGEN_DEPRECATED EIGEN_DEVICE_FUNC inline const Packet packetOp(const Packet& a) const {
EIGEN_DEPRECATED EIGEN_DEVICE_FUNC inline Packet packetOp(const Packet& a) const {
return a;
}
};
@@ -879,7 +875,7 @@ struct functor_traits<scalar_cube_op<bool>> {
*/
template <typename Scalar>
struct scalar_round_op {
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar operator()(const Scalar& a) const { return numext::round(a); }
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar operator()(const Scalar& a) const { return numext::round(a); }
template <typename Packet>
EIGEN_DEVICE_FUNC inline Packet packetOp(const Packet& a) const {
return internal::pround(a);
@@ -899,7 +895,7 @@ struct functor_traits<scalar_round_op<Scalar>> {
*/
template <typename Scalar>
struct scalar_floor_op {
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar operator()(const Scalar& a) const { return numext::floor(a); }
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar operator()(const Scalar& a) const { return numext::floor(a); }
template <typename Packet>
EIGEN_DEVICE_FUNC inline Packet packetOp(const Packet& a) const {
return internal::pfloor(a);
@@ -919,7 +915,7 @@ struct functor_traits<scalar_floor_op<Scalar>> {
*/
template <typename Scalar>
struct scalar_rint_op {
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar operator()(const Scalar& a) const { return numext::rint(a); }
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar operator()(const Scalar& a) const { return numext::rint(a); }
template <typename Packet>
EIGEN_DEVICE_FUNC inline Packet packetOp(const Packet& a) const {
return internal::print(a);
@@ -939,7 +935,7 @@ struct functor_traits<scalar_rint_op<Scalar>> {
*/
template <typename Scalar>
struct scalar_ceil_op {
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar operator()(const Scalar& a) const { return numext::ceil(a); }
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar operator()(const Scalar& a) const { return numext::ceil(a); }
template <typename Packet>
EIGEN_DEVICE_FUNC inline Packet packetOp(const Packet& a) const {
return internal::pceil(a);
@@ -959,7 +955,7 @@ struct functor_traits<scalar_ceil_op<Scalar>> {
*/
template <typename Scalar>
struct scalar_trunc_op {
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar operator()(const Scalar& a) const { return numext::trunc(a); }
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar operator()(const Scalar& a) const { return numext::trunc(a); }
template <typename Packet>
EIGEN_DEVICE_FUNC inline Packet packetOp(const Packet& a) const {
return internal::ptrunc(a);
@@ -1153,7 +1149,7 @@ struct functor_traits<scalar_bitwise_not_op<Scalar>> {
*/
template <typename Scalar>
struct scalar_sign_op {
EIGEN_DEVICE_FUNC inline const Scalar operator()(const Scalar& a) const { return numext::sign(a); }
EIGEN_DEVICE_FUNC inline Scalar operator()(const Scalar& a) const { return numext::sign(a); }
template <typename Packet>
EIGEN_DEVICE_FUNC inline Packet packetOp(const Packet& a) const {