Operations that are based on floating point arithmetic, but can be applied to arbitrary input and output types.
These functions take an input of arbitrary type, convert it to a floating point type, perform an operation in floating point arithmetic, and convert the result to an output of arbitrary type.
|
template<typename Tout , typename Tin , typename Tfloat = BigEnoughFloat<Tout, Tin>, size_t SIMD_WIDTH> |
static void | simd::faddmul (const Vec< Tin, SIMD_WIDTH > vecsIn[numInVecs< Tout, Tin >()], dont_deduce< Tfloat > off, dont_deduce< Tfloat > fac, Vec< Tout, SIMD_WIDTH > vecsOut[numOutVecs< Tout, Tin >()]) |
| Adds a floating point constant to the elements of Vec's, then multiplies with a floating point constant in floating point arithmetic.
|
|
template<size_t DIM, size_t NVEC, typename Tout , typename Tin , size_t SIMD_WIDTH> |
static void | simd::fdivMsigmoidmul (const Vec< Tin, SIMD_WIDTH > vecsNum[DIM][NVEC], const Vec< Tin, SIMD_WIDTH > vecsDenom[DIM][NVEC], const double w[DIM], const double w0[DIM], double fac, Vec< Tout, SIMD_WIDTH > vecsOut[numOutVecs< Tout, Tin >()]) |
| Special function used in MinWarping.
|
|
template<typename Tout , typename Tin , typename Tfloat = BigEnoughFloat<Tout, Tin>, size_t SIMD_WIDTH> |
static void | simd::fdivmul (const Vec< Tin, SIMD_WIDTH > vecsNum[numInVecs< Tout, Tin >()], const Vec< Tin, SIMD_WIDTH > vecsDenom[numInVecs< Tout, Tin >()], dont_deduce< Tfloat > fac, Vec< Tout, SIMD_WIDTH > vecsOut[numOutVecs< Tout, Tin >()]) |
| Divides Vec's element-wise, then multiplies with a constant factor in floating point arithmetic.
|
|
template<typename Tout , typename Tin , typename Tfloat = BigEnoughFloat<Tout, Tin>, size_t SIMD_WIDTH> |
static void | simd::fmul (const Vec< Tin, SIMD_WIDTH > vecsIn[numInVecs< Tout, Tin >()], dont_deduce< Tfloat > fac, Vec< Tout, SIMD_WIDTH > vecsOut[numOutVecs< Tout, Tin >()]) |
| Multiplies Vec's element-wise with a floating point constant in floating point arithmetic.
|
|
template<typename Tout , typename Tin , typename Tfloat = BigEnoughFloat<Tout, Tin>, size_t SIMD_WIDTH> |
static void | simd::fmuladd (const Vec< Tin, SIMD_WIDTH > vecsIn[numInVecs< Tout, Tin >()], dont_deduce< Tfloat > fac, dont_deduce< Tfloat > off, Vec< Tout, SIMD_WIDTH > vecsOut[numOutVecs< Tout, Tin >()]) |
| Multiplies the elements of Vec's with a floating point constant, then adds a floating point constant in floating point arithmetic.
|
|
template<typename Tout , typename Tin , typename Tfloat = BigEnoughFloat<Tout, Tin>, size_t SIMD_WIDTH> |
static void | simd::fwaddmul (const Vec< Tin, SIMD_WIDTH > vecsIn1[numInVecs< Tout, Tin >()], const Vec< Tin, SIMD_WIDTH > vecsIn2[numInVecs< Tout, Tin >()], dont_deduce< Tfloat > w, dont_deduce< Tfloat > fac, Vec< Tout, SIMD_WIDTH > vecsOut[numOutVecs< Tout, Tin >()]) |
| Linearly interpolates Vec's element-wise with a constant weight and then scales by a constant factor in floating point arithmetic.
|
|