mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-06-04 18:54:00 +08:00
Do not generate no-op cast() and conjugate() expressions
This commit is contained in:
parent
8c2f30c790
commit
106ba7bb1a
@ -244,9 +244,11 @@ class TensorBase<Derived, ReadOnlyAccessors>
|
|||||||
}
|
}
|
||||||
|
|
||||||
EIGEN_DEVICE_FUNC
|
EIGEN_DEVICE_FUNC
|
||||||
EIGEN_STRONG_INLINE const TensorCwiseUnaryOp<internal::scalar_conjugate_op<Scalar>, const Derived>
|
EIGEN_STRONG_INLINE const typename internal::conditional<NumTraits<Scalar>::IsComplex,
|
||||||
|
TensorCwiseUnaryOp<internal::scalar_conjugate_op<Scalar>, const Derived>,
|
||||||
|
Derived>::type
|
||||||
conjugate() const {
|
conjugate() const {
|
||||||
return unaryExpr(internal::scalar_conjugate_op<Scalar>());
|
return choose(Cond<NumTraits<Scalar>::IsComplex>(), unaryExpr(internal::scalar_conjugate_op<Scalar>()), derived());
|
||||||
}
|
}
|
||||||
|
|
||||||
EIGEN_DEVICE_FUNC
|
EIGEN_DEVICE_FUNC
|
||||||
@ -339,10 +341,13 @@ class TensorBase<Derived, ReadOnlyAccessors>
|
|||||||
return cwiseMin(constant(threshold));
|
return cwiseMin(constant(threshold));
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename NewType> EIGEN_DEVICE_FUNC
|
template<typename NewType>
|
||||||
EIGEN_STRONG_INLINE const TensorConversionOp<NewType, const Derived>
|
EIGEN_DEVICE_FUNC
|
||||||
|
EIGEN_STRONG_INLINE const typename internal::conditional<internal::is_same<NewType, CoeffReturnType>::value,
|
||||||
|
Derived,
|
||||||
|
TensorConversionOp<NewType, const Derived> >::type
|
||||||
cast() const {
|
cast() const {
|
||||||
return TensorConversionOp<NewType, const Derived>(derived());
|
return choose(Cond<internal::is_same<NewType, CoeffReturnType>::value>(), derived(), TensorConversionOp<NewType, const Derived>(derived()));
|
||||||
}
|
}
|
||||||
|
|
||||||
EIGEN_DEVICE_FUNC
|
EIGEN_DEVICE_FUNC
|
||||||
@ -628,26 +633,26 @@ class TensorBase<Derived, ReadOnlyAccessors>
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <typename Dims> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
template <typename Dims> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
||||||
const TensorReductionOp<internal::AndReducer, const Dims, const TensorConversionOp<bool, const Derived> >
|
const TensorReductionOp<internal::AndReducer, const Dims, const typename internal::conditional<internal::is_same<bool, CoeffReturnType>::value, Derived, TensorConversionOp<bool, const Derived> >::type >
|
||||||
all(const Dims& dims) const {
|
all(const Dims& dims) const {
|
||||||
return cast<bool>().reduce(dims, internal::AndReducer());
|
return cast<bool>().reduce(dims, internal::AndReducer());
|
||||||
}
|
}
|
||||||
|
|
||||||
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
||||||
const TensorReductionOp<internal::AndReducer, const DimensionList<Index, NumDimensions>, const TensorConversionOp<bool, const Derived> >
|
const TensorReductionOp<internal::AndReducer, const DimensionList<Index, NumDimensions>, const typename internal::conditional<internal::is_same<bool, CoeffReturnType>::value, Derived, TensorConversionOp<bool, const Derived> >::type >
|
||||||
all() const {
|
all() const {
|
||||||
DimensionList<Index, NumDimensions> in_dims;
|
DimensionList<Index, NumDimensions> in_dims;
|
||||||
return cast<bool>().reduce(in_dims, internal::AndReducer());
|
return cast<bool>().reduce(in_dims, internal::AndReducer());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename Dims> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
template <typename Dims> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
||||||
const TensorReductionOp<internal::OrReducer, const Dims, const TensorConversionOp<bool, const Derived> >
|
const TensorReductionOp<internal::OrReducer, const Dims, const typename internal::conditional<internal::is_same<bool, CoeffReturnType>::value, Derived, TensorConversionOp<bool, const Derived> >::type >
|
||||||
any(const Dims& dims) const {
|
any(const Dims& dims) const {
|
||||||
return cast<bool>().reduce(dims, internal::OrReducer());
|
return cast<bool>().reduce(dims, internal::OrReducer());
|
||||||
}
|
}
|
||||||
|
|
||||||
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
||||||
const TensorReductionOp<internal::OrReducer, const DimensionList<Index, NumDimensions>, const TensorConversionOp<bool, const Derived> >
|
const TensorReductionOp<internal::OrReducer, const DimensionList<Index, NumDimensions>, const typename internal::conditional<internal::is_same<bool, CoeffReturnType>::value, Derived, TensorConversionOp<bool, const Derived> >::type >
|
||||||
any() const {
|
any() const {
|
||||||
DimensionList<Index, NumDimensions> in_dims;
|
DimensionList<Index, NumDimensions> in_dims;
|
||||||
return cast<bool>().reduce(in_dims, internal::OrReducer());
|
return cast<bool>().reduce(in_dims, internal::OrReducer());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user