Basic functions¶
-
template<class
X>
real_batch_type_t<X>xsimd::abs(const simd_base<X> &rhs)¶ Computes the absolute values of each scalar in the batch
rhs.- Return
the asbolute values of
rhs.- Parameters
rhs: batch of integer or floating point values.
-
template<class
X>
batch_type_t<X>xsimd::fabs(const simd_base<X> &rhs)¶ Computes the absolute values of each scalar in the batch
rhs.- Return
the asbolute values of
rhs.- Parameters
rhs: batch floating point values.
-
template<class
B>
batch_type_t<B>xsimd::fmod(const simd_base<B> &x, const simd_base<B> &y)¶ Computes the floating-point remainder of the division operation
x/y.The floating-point remainder of the division operation
x/ycalculated by this function is exactly the valuex - n*y, wherenisx/ywith its fractional part truncated. The returned value has the same sign asxand is less thanyin magnitude.- Return
the floating-point remainder of the division.
- Parameters
x: batch of floating point values.y: batch of floating point values.
-
template<class
B>
batch_type_t<B>xsimd::remainder(const simd_base<B> &x, const simd_base<B> &y)¶ Computes the IEEE remainder of the floating point division operation
x/y.The IEEE floating-point remainder of the division operation
x/ycalculated by this function is exactly the valuex - n*y, where the value n is the integral value nearest the exact valuex/y. When|n-x/y| = 0.5, the value n is chosen to be even. In contrast to fmod, the returned value is not guaranteed to have the same sign asx. If the returned value is 0, it will have the same sign asx.- Return
the IEEE remainder remainder of the floating point division.
- Parameters
x: batch of floating point values.y: batch of floating point values.
-
template<class
X>
batch_type_t<X>xsimd::fma(const simd_base<X> &x, const simd_base<X> &y, const simd_base<X> &z)¶ Computes
(x*y) + zin a single instruction when possible.- Return
the result of the fused multiply-add operation.
- Parameters
x: a batch of integer or floating point values.y: a batch of integer or floating point values.z: a batch of integer or floating point values.
-
template<class
X>
batch_type_t<X>xsimd::fms(const simd_base<X> &x, const simd_base<X> &y, const simd_base<X> &z)¶ Computes
(x*y) - zin a single instruction when possible.- Return
the result of the fused multiply-sub operation.
- Parameters
x: a batch of integer or floating point values.y: a batch of integer or floating point values.z: a batch of integer or floating point values.
-
template<class
X>
batch_type_t<X>xsimd::fnma(const simd_base<X> &x, const simd_base<X> &y, const simd_base<X> &z)¶ Computes
-(x*y) + zin a single instruction when possible.- Return
the result of the fused negated multiply-add operation.
- Parameters
x: a batch of integer or floating point values.y: a batch of integer or floating point values.z: a batch of integer or floating point values.
-
template<class
X>
batch_type_t<X>xsimd::fnms(const simd_base<X> &x, const simd_base<X> &y, const simd_base<X> &z)¶ Computes
-(x*y) - zin a single instruction when possible.- Return
the result of the fused negated multiply-sub operation.
- Parameters
x: a batch of integer or floating point values.y: a batch of integer or floating point values.z: a batch of integer or floating point values.
-
template<class
X>
batch_type_t<X>xsimd::min(const simd_base<X> &lhs, const simd_base<X> &rhs)¶ Returns the smaller values of the batches
lhsandrhs.- Return
a batch of the smaller values.
- Parameters
lhs: a batch of integer or floating point values.rhs: a batch of integer or floating point values.
-
template<class
X>
batch_type_t<X>xsimd::max(const simd_base<X> &lhs, const simd_base<X> &rhs)¶ Returns the larger values of the batches
lhsandrhs.- Return
a batch of the larger values.
- Parameters
lhs: a batch of integer or floating point values.rhs: a batch of integer or floating point values.
-
template<class
B>
batch_type_t<B>xsimd::fdim(const simd_base<B> &x, const simd_base<B> &y)¶ Computes the positive difference between
xandy, that is,max(0, x-y).- Return
the positive difference.
- Parameters
x: batch of floating point values.y: batch of floating point values.
Warning
doxygenfunction: Unable to resolve multiple matches for function “sadd” with arguments ((const simd_base<B>&, const simd_base<B>&)) in doxygen xml output for project “xsimd” from directory: ../xml. Potential matches:
- batch_type sadd(const batch_type &lhs, const batch_type &rhs)
- template<class X> batch_type_t<X> sadd(const simd_base<X> &lhs, const simd_base<X> &rhs)
- template<class X> batch_type_t<X> sadd(const simd_base<X> &lhs, const typename simd_batch_traits<X>::value_type &rhs)
- template<class X> batch_type_t<X> sadd(const typename simd_batch_traits<X>::value_type &lhs, const simd_base<X> &rhs)
- template<typename T, class = typename std::enable_if<std::is_scalar<T>::value>::type> T sadd(const T &lhs, const T &rhs)
Warning
doxygenfunction: Unable to resolve multiple matches for function “ssub” with arguments ((const simd_base<B>&, const simd_base<B>&)) in doxygen xml output for project “xsimd” from directory: ../xml. Potential matches:
- batch_type ssub(const batch_type &lhs, const batch_type &rhs)
- template<class X> batch_type_t<X> ssub(const simd_base<X> &lhs, const simd_base<X> &rhs)
- template<class X> batch_type_t<X> ssub(const simd_base<X> &lhs, const typename simd_batch_traits<X>::value_type &rhs)
- template<class X> batch_type_t<X> ssub(const typename simd_batch_traits<X>::value_type &lhs, const simd_base<X> &rhs)
- template<typename T, class = typename std::enable_if<std::is_scalar<T>::value>::type> T ssub(const T &lhs, const T &rhs)
-
template<class
B>
batch_type_t<B>xsimd::clip(const simd_base<B> &x, const simd_base<B> &lo, const simd_base<B> &hi)¶ Clips the values of the batch
xbetween those of the batchesloandhi.- Return
the result of the clipping.
- Parameters
x: batch of floating point values.lo: batch of floating point values.hi: batch of floating point values.