Functions that implement math functions. Take care that some of the implementations will return results with less precision than what the FPU calculates.
|
Vc::Vector< T > | sqrt (const Vc::Vector< T > &v) |
| Returns the square root of v .
|
|
Vc::Vector< T > | rsqrt (const Vc::Vector< T > &v) |
| Returns the reciprocal square root of v .
|
|
Vc::Vector< T > | reciprocal (const Vc::Vector< T > &v) |
| Returns the reciprocal of v .
|
|
Vc::Vector< T > | abs (const Vc::Vector< T > &v) |
| Returns the absolute value of v .
|
|
Vc::Vector< T > | round (const Vc::Vector< T > &v) |
| Returns the closest integer to v ; 0.5 is rounded to even.
|
|
Vc::Vector< T > | log (const Vc::Vector< T > &v) |
|
Vc::Vector< T > | log2 (const Vc::Vector< T > &v) |
|
Vc::Vector< T > | log10 (const Vc::Vector< T > &v) |
|
Vc::Vector< T > | exp (const Vc::Vector< T > &v) |
|
Vc::Vector< T > | sin (const Vc::Vector< T > &v) |
|
Vc::Vector< T > | cos (const Vc::Vector< T > &v) |
|
Vc::Vector< T > | asin (const Vc::Vector< T > &v) |
|
Vc::Vector< T > | atan (const Vc::Vector< T > &v) |
|
Vc::Vector< T > | atan2 (const Vc::Vector< T > &y, const Vc::Vector< T > &x) |
| Calculates the angle given the lengths of the opposite and adjacent legs in a right triangle. More...
|
|
Vc::Vector< T > | min (const Vc::Vector< T > &x, const Vc::Vector< T > &y) |
|
Vc::Vector< T > | max (const Vc::Vector< T > &x, const Vc::Vector< T > &y) |
|
Vc::Vector< T > | frexp (const Vc::Vector< T > &x, Vc::SimdArray< int, size()> *e) |
| Convert floating-point number to fractional and integral components. More...
|
|
Vc::Vector< T > | ldexp (Vc::Vector< T > x, Vc::SimdArray< int, size()> e) |
| Multiply floating-point number by integral power of 2. More...
|
|
Vc::Mask< T > | isfinite (const Vc::Vector< T > &x) |
|
Vc::Mask< T > | isnan (const Vc::Vector< T > &x) |
|
Vc::Vector< T > | fma (Vc::Vector< T > a, Vc::Vector< T > b, Vc::Vector< T > c) |
| Multiplies a with b and then adds c , without rounding between the multiplication and the addition. More...
|
|
- Parameters
-
v | The values to apply the logarithm on. |
- Returns
- the natural logarithm of
v
.
- Note
- The single-precision implementation has an error of max. 1 ulp (mean 0.020 ulp) in the range ]0, 1000] (including denormals).
-
The double-precision implementation has an error of max. 1 ulp (mean 0.020 ulp) in the range ]0, 1000] (including denormals).
- Parameters
-
v | The values to apply the logarithm on. |
- Returns
- the base-2 logarithm of
v
.
- Note
- The single-precision implementation has an error of max. 1 ulp (mean 0.016 ulp) in the range ]0, 1000] (including denormals).
-
The double-precision implementation has an error of max. 1 ulp (mean 0.016 ulp) in the range ]0, 1000] (including denormals).
- Parameters
-
v | The values to apply the logarithm on. |
- Returns
- the base-10 logarithm of
v
.
- Note
- The single-precision implementation has an error of max. 2 ulp (mean 0.31 ulp) in the range ]0, 1000] (including denormals).
-
The double-precision implementation has an error of max. 2 ulp (mean 0.26 ulp) in the range ]0, 1000] (including denormals).
- Parameters
-
v | The values to apply the exponential function on. |
- Returns
- the exponential of
v
.
- Parameters
-
v | The values to apply the sine function on. |
- Returns
- the sine of
v
.
- Note
- The single-precision implementation has an error of max. 2 ulp (mean 0.17 ulp) in the range [-8192, 8192].
-
The double-precision implementation has an error of max. 8e6 ulp (mean 1040 ulp) in the range [-8192, 8192].
-
Vc versions before 0.7 had much larger errors.
- Parameters
-
v | The values to apply the cosine function on. |
- Returns
- the cosine of
v
.
- Note
- The single-precision implementation has an error of max. 2 ulp (mean 0.18 ulp) in the range [-8192, 8192].
-
The double-precision implementation has an error of max. 8e6 ulp (mean 1160 ulp) in the range [-8192, 8192].
-
Vc versions before 0.7 had much larger errors.
- Parameters
-
v | The values to apply the arcsine function on. |
- Returns
- the arcsine of
v
.
- Note
- The single-precision implementation has an error of max. 2 ulp (mean 0.3 ulp).
-
The double-precision implementation has an error of max. 36 ulp (mean 0.4 ulp).
- Parameters
-
v | The values to apply the arctangent function on. |
- Returns
- the arctangent of
v
.
- Note
- The single-precision implementation has an error of max. 3 ulp (mean 0.4 ulp) in the range [-8192, 8192].
-
The double-precision implementation has an error of max. 2 ulp (mean 0.1 ulp) in the range [-8192, 8192].
Calculates the angle given the lengths of the opposite and adjacent legs in a right triangle.
- Parameters
-
y | The opposite leg. |
x | The adjacent leg. |
- Returns
- the arctangent of
y
/ x
.
- Parameters
-
x | \(\mathcal{W}_\mathtt{T}\) values to compare component-wise against y . |
y | \(\mathcal{W}_\mathtt{T}\) values to compare component-wise against x . |
- Returns
- the minimum of
x
and y
.
- Parameters
-
x | \(\mathcal{W}_\mathtt{T}\) values to compare component-wise against y . |
y | \(\mathcal{W}_\mathtt{T}\) values to compare component-wise against x . |
- Returns
- the maximum of
x
and y
.
Convert floating-point number to fractional and integral components.
- Parameters
-
x | value to be split into normalized fraction and exponent |
e | the exponent to base 2 of x |
- Returns
- the normalized fraction. If
x
is non-zero, the return value is x
times a power of two, and its absolute value is always in the range [0.5,1).
-
If
x
is zero, then the normalized fraction is zero and zero is stored in e
.
-
If
x
is a NaN, a NaN is returned, and the value of *e
is unspecified.
-
If
x
is positive infinity (negative infinity), positive infinity (nega‐ tive infinity) is returned, and the value of *e
is unspecified.
Multiply floating-point number by integral power of 2.
- Parameters
-
x | value to be multiplied by 2 ^ e |
e | exponent |
- Returns
x
* 2 ^ e
- Parameters
-
x | The \(\mathcal{W}_\mathtt{T}\) values to check for finite values. |
- Returns
- a mask that tells whether the values in the vector are finite (i.e. not NaN or +/-inf).
- Parameters
-
x | The \(\mathcal{W}_\mathtt{T}\) values to check for NaN values. |
- Returns
- a mask that tells whether the values in the vector are NaN.
Multiplies a
with b
and then adds c
, without rounding between the multiplication and the addition.
- Parameters
-
a | First multiplication factor. |
b | Second multiplication factor. |
c | Summand that will be added after multiplication. |
- Returns
- The \(\mathcal{W}_\mathtt{T}\) values of
a * b + c
with higher precision due to no rounding between multiplication and addition.
- Note
- This operation may have explicit hardware support, in which case it is normally faster to use the FMA instead of separate multiply and add instructions.
-
If the target hardware does not have FMA support this function will be considerably slower than a normal a * b + c. This is due to the increased precision fusedMultiplyAdd provides.
-
The compiler normally detects opportunities for using the hardware FMA instructions from normal multiplication and addition/subtraction operators. Use this function only if you require the additional precision.