Arithmetic operatorsΒΆ
Binary operations:
|
per slot addition |
|
per slot subtraction |
|
per slot multiply |
|
per slot division |
|
per slot modulo |
Unary operations:
|
per slot negate |
|
per slot positive |
|
per slot reciprocal |
|
per slot decrement |
|
per slot decrement, based on a mask |
|
per slot increment |
|
per slot increment, based on a mask |
Saturated arithmetic:
|
per slot saturated addition |
|
per slot saturated subtraction |
Fused operations:
|
fused multiply add |
|
fused multiply sub |
|
fused negate multiply add |
|
fused negate multiply sub |
Average computation:
|
per slot average |
|
per slot rounded average |
- template <class T, class A>
-
XSIMD_INLINE auto xsimd::add(batch< T, A > const & x, batch< T, A > const & y) Computes the sum of the batches
xandy.- Return
the sum of
xandy- Parameters
x: batch or scalar involved in the addition.y: batch or scalar involved in the addition.
- template <class T, class A>
-
XSIMD_INLINE batch<T, A> xsimd::decr(batch< T, A > const & x) Subtract 1 to batch
x.- Return
the subtraction of
xand 1.- Parameters
x: batch involved in the decrement.
- template <class T, class A, class Mask>
-
XSIMD_INLINE batch<T, A> xsimd::decr_if(batch< T, A > const & x, Mask const & mask) Subtract 1 to batch
xfor each element wheremaskis true.- Return
the subtraction of
xand 1 whenmaskis true.- Parameters
x: batch involved in the increment.mask: whether to perform the increment or not. Can be abatch_boolor abatch_bool_constant.
- template <class T, class A>
-
XSIMD_INLINE auto xsimd::div(batch< T, A > const & x, batch< T, A > const & y) Computes the division of the batch
xby the batchy.- Return
the result of the division.
- Parameters
x: scalar or batch of scalarsy: scalar or batch of scalars
- template <class T, class A>
-
XSIMD_INLINE batch<T, A> xsimd::fma(batch< T, A > const & x, batch< T, A > const & y, batch< T, A > const & 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 T, class A>
-
XSIMD_INLINE batch<T, A> xsimd::fms(batch< T, A > const & x, batch< T, A > const & y, batch< T, A > const & 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 T, class A>
-
XSIMD_INLINE batch<T, A> xsimd::fnma(batch< T, A > const & x, batch< T, A > const & y, batch< T, A > const & 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 T, class A>
-
XSIMD_INLINE batch<T, A> xsimd::fnms(batch< T, A > const & x, batch< T, A > const & y, batch< T, A > const & 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 T, class A>
-
XSIMD_INLINE batch<T, A> xsimd::incr(batch< T, A > const & x) Add 1 to batch
x.- Return
the sum of
xand 1.- Parameters
x: batch involved in the increment.
- template <class T, class A, class Mask>
-
XSIMD_INLINE batch<T, A> xsimd::incr_if(batch< T, A > const & x, Mask const & mask) Add 1 to batch
xfor each element wheremaskis true.- Return
the sum of
xand 1 whenmaskis true.- Parameters
x: batch involved in the increment.mask: whether to perform the increment or not. Can be abatch_boolor abatch_bool_constant.
- template <class T, class A>
-
XSIMD_INLINE auto xsimd::mod(batch< T, A > const & x, batch< T, A > const & y) Computes the integer modulo of the batch
xby the batchy.- Return
the result of the modulo.
- Parameters
x: batch involved in the modulo.y: batch involved in the modulo.
- template <class T, class A>
-
XSIMD_INLINE auto xsimd::mul(batch< T, A > const & x, batch< T, A > const & y) Computes the product of the batches
xandy.- Return
the result of the product.
- Template Parameters
X: the actual type of batch.
- Parameters
x: batch involved in the product.y: batch involved in the product.
- template <class T, class A>
-
XSIMD_INLINE batch<T, A> xsimd::neg(batch< T, A > const & x) Computes the opposite of the batch
x.- Return
the opposite of
x.- Parameters
x: batch involved in the operation.
- template <class T, class A>
-
XSIMD_INLINE batch<T, A> xsimd::pos(batch< T, A > const & x) No-op on
x.- Return
x.- Parameters
x: batch involved in the operation.
- template <class T, class A, class = typename std::enable_if<std::is_floating_point<T>::value, void>::type>
-
XSIMD_INLINE batch<T, A> xsimd::reciprocal(batch< T, A > const & x) Computes the approximate reciprocal of the batch
x.The maximum relative error for this approximation is less than 1.5*2^-12.
- Return
the reciprocal.
- Parameters
x: batch of floating point numbers.
- template <class T, class A>
-
XSIMD_INLINE batch<T, A> xsimd::sadd(batch< T, A > const & x, batch< T, A > const & y) Computes the saturate sum of the batch
xand the batchy.- Return
the result of the saturated addition.
- Template Parameters
X: the actual type of batch.
- Parameters
x: batch involved in the saturated addition.y: batch involved in the saturated addition.
- template <class T, class A>
-
XSIMD_INLINE batch<T, A> xsimd::ssub(batch< T, A > const & x, batch< T, A > const & y) Computes the saturate difference of the batch
xand the batchy.- Return
the result of the saturated difference.
- Template Parameters
X: the actual type of batch.
- Parameters
x: batch involved in the saturated difference.y: batch involved in the saturated difference.
- template <class T, class A>
-
XSIMD_INLINE auto xsimd::sub(batch< T, A > const & x, batch< T, A > const & y) Computes the difference between
xandy.- Return
the difference between
xandy- Template Parameters
X: the actual type of batch.
- Parameters
x: scalar or batch of scalarsy: scalar or batch of scalars