23namespace vctr::expressions
25template <
size_t extent,
class SrcAType,
class SrcBType>
26requires std::totally_ordered_with<ValueType<SrcAType>, ValueType<SrcBType>>
32 VCTR_COMMON_BINARY_VEC_VEC_EXPRESSION_MEMBERS (
ElementwiseMin, srcA, srcB)
34 VCTR_FORCEDINLINE
constexpr auto operator[] (
size_t i)
const
36 return std::min (srcA[i], srcB[i]);
40 VCTR_FORWARD_PREPARE_SIMD_EVALUATION_BINARY_EXPRESSION_MEMBER_FUNCTIONS (srcA, srcB)
46 return Expression::AVX::min (srcA.getAVX (i), srcB.getAVX (i));
52 return Expression::AVX::min (srcA.getAVX (i), srcB.getAVX (i));
60 return Expression::SSE::min (srcA.getSSE (i), srcB.getSSE (i));
68 return Expression::Neon::min (srcA.getNeon (i), srcB.getNeon (i));
78template <is::anyVctrOrExpression SrcAType, is::anyVctrOrExpression SrcBType>
82 constexpr auto extent = getCommonExtent<SrcAType, SrcBType>();
Definition: ElementwiseMin.h:28
Constrains a type to have a member function getAVX (size_t) const.
Definition: ContainerAndExpressionConcepts.h:92
Constrains a type to have a member function getNeon (size_t) const.
Definition: ContainerAndExpressionConcepts.h:84
Constrains a type to have a member function getSSE (size_t) const.
Definition: ContainerAndExpressionConcepts.h:100
The main namespace of the VCTR project.
Definition: Array.h:24
constexpr void assertCommonSize(const A &a, const B &b)
Ensures that both sources have the same size.
Definition: Traits.h:256
typename detail::ValueType< std::remove_cvref_t< T > >::Type ValueType
If T is an expression template, it equals its return type, if it's a type that defines value_type as ...
Definition: Traits.h:201
constexpr auto elementwiseMin(SrcAType &&a, SrcBType &&b)
Computes the element-wise minimum of two sources.
Definition: ElementwiseMin.h:79
Definition: AVXRegister.h:28
The base class to every expression template.
Definition: ExpressionTemplate.h:37
Definition: NeonRegister.h:28
Definition: SSERegister.h:28