Array Operations#
Defines
-
LIBRAPID_BINARY_FUNCTOR(NAME_, OP_)
-
LIBRAPID_BINARY_COMPARISON_FUNCTOR(NAME_, OP_)
-
LIBRAPID_UNARY_KERNEL_GETTER
-
LIBRAPID_BINARY_KERNEL_GETTER
-
LIBRAPID_UNARY_SHAPE_EXTRACTOR
-
LIBRAPID_BINARY_SHAPE_EXTRACTOR
-
LIBRAPID_UNARY_FUNCTOR(NAME, OP)
-
IS_ARRAY_OP
-
IS_ARRAY_OP_ARRAY
-
IS_ARRAY_OP_WITH_SCALAR
-
template<typename ShapeType, typename StorageType>
struct DescriptorExtractor<array::ArrayContainer<ShapeType, StorageType>> - #include <operations.hpp>
Extracts the Descriptor type of an ArrayContainer object. In this case, the Descriptor is Trivial
- Template Parameters
ShapeType – The shape type of the ArrayContainer
StorageType – The storage type of the ArrayContainer
-
template<typename T, typename S>
struct DescriptorExtractor<array::GeneralArrayView<T, S>> - #include <operations.hpp>
Extracts the Descriptor type of an ArrayView object
- Template Parameters
T – The Array type of the ArrayView
-
template<typename Descriptor, typename Functor, typename ...Args>
struct DescriptorExtractor<::librapid::detail::Function<Descriptor, Functor, Args...>> - #include <operations.hpp>
Extracts the Descriptor type of a Function object
- Template Parameters
Descriptor – The descriptor of the Function
Functor – The functor type of the Function
Args – The argument types of the Function
Public Types
-
using Type = Descriptor
-
template<>
struct TypeInfo<::librapid::detail::Plus> - #include <operations.hpp>
Public Static Functions
-
template<typename T1, typename T2>
static inline constexpr const char *getKernelNameImpl(std::tuple<T1, T2> args)
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename First, typename Second>
static inline auto getShapeImpl(const std::tuple<First, Second> &tup)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "plus"
-
static constexpr const char *filename = "arithmetic"
-
static constexpr const char *kernelName = "addArrays"
-
static constexpr const char *kernelNameScalarRhs = "addArraysScalarRhs"
-
static constexpr const char *kernelNameScalarLhs = "addArraysScalarLhs"
-
template<typename T1, typename T2>
-
template<>
struct TypeInfo<::librapid::detail::Minus> - #include <operations.hpp>
Public Static Functions
-
template<typename T1, typename T2>
static inline constexpr const char *getKernelNameImpl(std::tuple<T1, T2> args)
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename First, typename Second>
static inline auto getShapeImpl(const std::tuple<First, Second> &tup)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "minus"
-
static constexpr const char *filename = "arithmetic"
-
static constexpr const char *kernelName = "subArrays"
-
static constexpr const char *kernelNameScalarRhs = "subArraysScalarRhs"
-
static constexpr const char *kernelNameScalarLhs = "subArraysScalarLhs"
-
template<typename T1, typename T2>
-
template<>
struct TypeInfo<::librapid::detail::Multiply> - #include <operations.hpp>
Public Static Functions
-
template<typename T1, typename T2>
static inline constexpr const char *getKernelNameImpl(std::tuple<T1, T2> args)
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename First, typename Second>
static inline auto getShapeImpl(const std::tuple<First, Second> &tup)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "multiply"
-
static constexpr const char *filename = "arithmetic"
-
static constexpr const char *kernelName = "mulArrays"
-
static constexpr const char *kernelNameScalarRhs = "mulArraysScalarRhs"
-
static constexpr const char *kernelNameScalarLhs = "mulArraysScalarLhs"
-
template<typename T1, typename T2>
-
template<>
struct TypeInfo<::librapid::detail::Divide> - #include <operations.hpp>
Public Static Functions
-
template<typename T1, typename T2>
static inline constexpr const char *getKernelNameImpl(std::tuple<T1, T2> args)
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename First, typename Second>
static inline auto getShapeImpl(const std::tuple<First, Second> &tup)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "divide"
-
static constexpr const char *filename = "arithmetic"
-
static constexpr const char *kernelName = "divArrays"
-
static constexpr const char *kernelNameScalarRhs = "divArraysScalarRhs"
-
static constexpr const char *kernelNameScalarLhs = "divArraysScalarLhs"
-
template<typename T1, typename T2>
-
template<>
struct TypeInfo<::librapid::detail::LessThan> - #include <operations.hpp>
Public Static Functions
-
template<typename T1, typename T2>
static inline constexpr const char *getKernelNameImpl(std::tuple<T1, T2> args)
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename First, typename Second>
static inline auto getShapeImpl(const std::tuple<First, Second> &tup)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "less than"
-
static constexpr const char *filename = "arithmetic"
-
static constexpr const char *kernelName = "lessThanArrays"
-
static constexpr const char *kernelNameScalarRhs = "lessThanArraysScalarRhs"
-
static constexpr const char *kernelNameScalarLhs = "lessThanArraysScalarLhs"
-
template<typename T1, typename T2>
-
template<>
struct TypeInfo<::librapid::detail::GreaterThan> - #include <operations.hpp>
Public Static Functions
-
template<typename T1, typename T2>
static inline constexpr const char *getKernelNameImpl(std::tuple<T1, T2> args)
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename First, typename Second>
static inline auto getShapeImpl(const std::tuple<First, Second> &tup)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "greater than"
-
static constexpr const char *filename = "arithmetic"
-
static constexpr const char *kernelName = "greaterThanArrays"
-
static constexpr const char *kernelNameScalarRhs = "greaterThanArraysScalarRhs"
-
static constexpr const char *kernelNameScalarLhs = "greaterThanArraysScalarLhs"
-
template<typename T1, typename T2>
-
template<>
struct TypeInfo<::librapid::detail::LessThanEqual> - #include <operations.hpp>
Public Static Functions
-
template<typename T1, typename T2>
static inline constexpr const char *getKernelNameImpl(std::tuple<T1, T2> args)
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename First, typename Second>
static inline auto getShapeImpl(const std::tuple<First, Second> &tup)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "less than or equal"
-
static constexpr const char *filename = "arithmetic"
-
static constexpr const char *kernelName = "lessThanEqualArrays"
-
static constexpr const char *kernelNameScalarRhs = "lessThanEqualArraysScalarRhs"
-
static constexpr const char *kernelNameScalarLhs = "lessThanEqualArraysScalarLhs"
-
template<typename T1, typename T2>
-
template<>
struct TypeInfo<::librapid::detail::GreaterThanEqual> - #include <operations.hpp>
Public Static Functions
-
template<typename T1, typename T2>
static inline constexpr const char *getKernelNameImpl(std::tuple<T1, T2> args)
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename First, typename Second>
static inline auto getShapeImpl(const std::tuple<First, Second> &tup)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "greater than or equal"
-
static constexpr const char *filename = "arithmetic"
-
static constexpr const char *kernelName = "greaterThanEqualArrays"
-
static constexpr const char *kernelNameScalarRhs = "greaterThanEqualArraysScalarRhs"
-
static constexpr const char *kernelNameScalarLhs = "greaterThanEqualArraysScalarLhs"
-
template<typename T1, typename T2>
-
template<>
struct TypeInfo<::librapid::detail::ElementWiseEqual> - #include <operations.hpp>
Public Static Functions
-
template<typename T1, typename T2>
static inline constexpr const char *getKernelNameImpl(std::tuple<T1, T2> args)
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename First, typename Second>
static inline auto getShapeImpl(const std::tuple<First, Second> &tup)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "element wise equal"
-
static constexpr const char *filename = "arithmetic"
-
static constexpr const char *kernelName = "elementWiseEqualArrays"
-
static constexpr const char *kernelNameScalarRhs = "elementWiseEqualArraysScalarRhs"
-
static constexpr const char *kernelNameScalarLhs = "elementWiseEqualArraysScalarLhs"
-
template<typename T1, typename T2>
-
template<>
struct TypeInfo<::librapid::detail::ElementWiseNotEqual> - #include <operations.hpp>
Public Static Functions
-
template<typename T1, typename T2>
static inline constexpr const char *getKernelNameImpl(std::tuple<T1, T2> args)
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename First, typename Second>
static inline auto getShapeImpl(const std::tuple<First, Second> &tup)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "element wise not equal"
-
static constexpr const char *filename = "arithmetic"
-
static constexpr const char *kernelName = "elementWiseNotEqualArrays"
-
static constexpr const char *kernelNameScalarRhs = "elementWiseNotEqualArraysScalarRhs"
-
static constexpr const char *kernelNameScalarLhs = "elementWiseNotEqualArraysScalarLhs"
-
template<typename T1, typename T2>
-
template<>
struct TypeInfo<::librapid::detail::Neg> - #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "negate"
-
static constexpr const char *filename = "negate"
-
static constexpr const char *kernelName = "negateArrays"
-
template<typename ...Args>
-
template<>
struct TypeInfo<::librapid::detail::Sin> - #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "sin"
-
static constexpr const char *filename = "trigonometry"
-
static constexpr const char *kernelName = "sinArrays"
-
template<typename ...Args>
-
template<>
struct TypeInfo<::librapid::detail::Cos> - #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "cos"
-
static constexpr const char *filename = "trigonometry"
-
static constexpr const char *kernelName = "cosArrays"
-
template<typename ...Args>
-
template<>
struct TypeInfo<::librapid::detail::Tan> - #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "tan"
-
static constexpr const char *filename = "trigonometry"
-
static constexpr const char *kernelName = "tanArrays"
-
template<typename ...Args>
-
template<>
struct TypeInfo<::librapid::detail::Asin> - #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "arcsin"
-
static constexpr const char *filename = "trigonometry"
-
static constexpr const char *kernelName = "asinArrays"
-
template<typename ...Args>
-
template<>
struct TypeInfo<::librapid::detail::Acos> - #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "arcos"
-
static constexpr const char *filename = "trigonometry"
-
static constexpr const char *kernelName = "acosArrays"
-
template<typename ...Args>
-
template<>
struct TypeInfo<::librapid::detail::Atan> - #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "arctan"
-
static constexpr const char *filename = "trigonometry"
-
static constexpr const char *kernelName = "atanArrays"
-
template<typename ...Args>
-
template<>
struct TypeInfo<::librapid::detail::Sinh> - #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "hyperbolic sine"
-
static constexpr const char *filename = "trigonometry"
-
static constexpr const char *kernelName = "sinhArrays"
-
template<typename ...Args>
-
template<>
struct TypeInfo<::librapid::detail::Cosh> - #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "hyperbolic cosine"
-
static constexpr const char *filename = "trigonometry"
-
static constexpr const char *kernelName = "coshArrays"
-
template<typename ...Args>
-
template<>
struct TypeInfo<::librapid::detail::Tanh> - #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "hyperbolic tangent"
-
static constexpr const char *filename = "trigonometry"
-
static constexpr const char *kernelName = "tanhArrays"
-
template<typename ...Args>
-
template<>
struct TypeInfo<::librapid::detail::Asinh> - #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "hyperbolic arcsine"
-
static constexpr const char *filename = "trigonometry"
-
static constexpr const char *kernelName = "asinhArrays"
-
template<typename ...Args>
-
template<>
struct TypeInfo<::librapid::detail::Acosh> - #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "hyperbolic arccosine"
-
static constexpr const char *filename = "trigonometry"
-
static constexpr const char *kernelName = "acoshArrays"
-
template<typename ...Args>
-
template<>
struct TypeInfo<::librapid::detail::Atanh> - #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "hyperbolic arctangent"
-
static constexpr const char *filename = "trigonometry"
-
static constexpr const char *kernelName = "atanhArrays"
-
template<typename ...Args>
-
template<>
struct TypeInfo<::librapid::detail::Exp> - #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "exponent"
-
static constexpr const char *filename = "expLogPow"
-
static constexpr const char *kernelName = "expArrays"
-
template<typename ...Args>
-
template<>
struct TypeInfo<::librapid::detail::Exp2> - #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "exponent base 2"
-
static constexpr const char *filename = "expLogPow"
-
static constexpr const char *kernelName = "exp2Arrays"
-
template<typename ...Args>
-
template<>
struct TypeInfo<::librapid::detail::Exp10> - #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "exponent base 10"
-
static constexpr const char *filename = "expLogPow"
-
static constexpr const char *kernelName = "exp10Arrays"
-
template<typename ...Args>
-
template<>
struct TypeInfo<::librapid::detail::Log> - #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "logarithm"
-
static constexpr const char *filename = "expLogPow"
-
static constexpr const char *kernelName = "logArrays"
-
template<typename ...Args>
-
template<>
struct TypeInfo<::librapid::detail::Log2> - #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "logarithm base 2"
-
static constexpr const char *filename = "expLogPow"
-
static constexpr const char *kernelName = "log2Arrays"
-
template<typename ...Args>
-
template<>
struct TypeInfo<::librapid::detail::Log10> - #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "logarithm base 10"
-
static constexpr const char *filename = "expLogPow"
-
static constexpr const char *kernelName = "log10Arrays"
-
template<typename ...Args>
-
template<>
struct TypeInfo<::librapid::detail::Sqrt> - #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "square root"
-
static constexpr const char *filename = "expLogPow"
-
static constexpr const char *kernelName = "sqrtArrays"
-
template<typename ...Args>
-
template<>
struct TypeInfo<::librapid::detail::Cbrt> - #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "cube root"
-
static constexpr const char *filename = "expLogPow"
-
static constexpr const char *kernelName = "cbrtArrays"
-
template<typename ...Args>
-
template<>
struct TypeInfo<::librapid::detail::Abs> - #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "absolute value"
-
static constexpr const char *filename = "abs"
-
static constexpr const char *kernelName = "absArrays"
-
template<typename ...Args>
-
template<>
struct TypeInfo<::librapid::detail::Floor> - #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "floor"
-
static constexpr const char *filename = "floorCeilRound"
-
static constexpr const char *kernelName = "floorArrays"
-
template<typename ...Args>
-
template<>
struct TypeInfo<::librapid::detail::Ceil> - #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "ceiling"
-
static constexpr const char *filename = "floorCeilRound"
-
static constexpr const char *kernelName = "ceilArrays"
-
template<typename ...Args>
-
namespace librapid
Functions
-
template<class VAL>
auto sin(VAL &&val) -> detail::Function<typetraits::DescriptorType_t<VAL>, detail::Sin, VAL> Calculate the sine of each element in the array.
\(R = \{ R_0, R_1, R_2, ... \} \) \text{ where } \(R_i = \sin(A_i)\)
- Template Parameters
VAL – Type of the input
- Parameters
val – The input array or function
- Returns
Sine function object
-
template<class VAL>
auto cos(VAL &&val) -> detail::Function<typetraits::DescriptorType_t<VAL>, detail::Cos, VAL> Calculate the cosine of each element in the array.
\(R = \{ R_0, R_1, R_2, ... \} \) \text{ where } \(R_i = \cos(A_i)\)
- Template Parameters
VAL – Type of the input
- Parameters
val – The input array or function
- Returns
Cosine function object
-
template<class VAL>
auto tan(VAL &&val) -> detail::Function<typetraits::DescriptorType_t<VAL>, detail::Tan, VAL> Calculate the tangent of each element in the array.
\(R = \{ R_0, R_1, R_2, ... \} \) \text{ where } \(R_i = \tan(A_i)\)
- Template Parameters
VAL – Type of the input
- Parameters
val – The input array or function
- Returns
Tangent function object
-
template<class VAL>
auto asin(VAL &&val) -> detail::Function<typetraits::DescriptorType_t<VAL>, detail::Asin, VAL> Calculate the arcsine of each element in the array.
\(R = \{ R_0, R_1, R_2, ... \} \) \text{ where } \(R_i = \sin^{-1}(A_i)\)
- Template Parameters
VAL – Type of the input
- Parameters
val – The input array or function
- Returns
Arcsine function object
-
template<class VAL>
auto acos(VAL &&val) -> detail::Function<typetraits::DescriptorType_t<VAL>, detail::Acos, VAL> Calculate the arccosine of each element in the array.
\(R = \{ R_0, R_1, R_2, ... \} \) \text{ where } \(R_i = \cos^{-1}(A_i)\)
- Template Parameters
VAL – Type of the input
- Parameters
val – The input array or function
- Returns
Arccosine function object
-
template<class VAL>
auto atan(VAL &&val) -> detail::Function<typetraits::DescriptorType_t<VAL>, detail::Atan, VAL> Calculate the arctangent of each element in the array.
\(R = \{ R_0, R_1, R_2, ... \} \) \text{ where } \(R_i = \tan^{-1}(A_i)\)
- Template Parameters
VAL – Type of the input
- Parameters
val – The input array or function
- Returns
Arctangent function object
-
template<class VAL>
auto sinh(VAL &&val) -> detail::Function<typetraits::DescriptorType_t<VAL>, detail::Sinh, VAL> Calculate the hyperbolic sine of each element in the array.
\(R = \{ R_0, R_1, R_2, ... \} \) \text{ where } \(R_i = \sinh(A_i)\)
- Template Parameters
VAL – Type of the input
- Parameters
val – The input array or function
- Returns
Hyperbolic sine function object
-
template<class VAL>
auto cosh(VAL &&val) -> detail::Function<typetraits::DescriptorType_t<VAL>, detail::Cosh, VAL> Calculate the hyperbolic cosine of each element in the array.
\(R = \{ R_0, R_1, R_2, ... \} \) \text{ where } \(R_i = \cosh(A_i)\)
- Template Parameters
VAL – Type of the input
- Parameters
val – The input array or function
- Returns
Hyperbolic cosine function object
-
template<class VAL>
auto tanh(VAL &&val) -> detail::Function<typetraits::DescriptorType_t<VAL>, detail::Tanh, VAL> Calculate the hyperbolic tangent of each element in the array.
\(R = \{ R_0, R_1, R_2, ... \} \) \text{ where } \(R_i = \tanh(A_i)\)
- Template Parameters
VAL – Type of the input
- Parameters
val – The input array or function
- Returns
Hyperbolic tangent function object
-
template<class VAL>
auto asinh(VAL &&val) -> detail::Function<typetraits::DescriptorType_t<VAL>, detail::Asinh, VAL> Calculate the hyperbolic arcsine of each element in the array.
\(R = \{ R_0, R_1, R_2, ... \} \) \text{ where } \(R_i = \sinh^{-1}(A_i)\)
- Template Parameters
VAL – Type of the input
- Parameters
val – The input array or function
- Returns
Hyperbolic sine function object
-
template<class VAL>
auto acosh(VAL &&val) -> detail::Function<typetraits::DescriptorType_t<VAL>, detail::Acosh, VAL> Calculate the hyperbolic arccosine of each element in the array.
\(R = \{ R_0, R_1, R_2, ... \} \) \text{ where } \(R_i = \cosh^{-1}(A_i)\)
- Template Parameters
VAL – Type of the input
- Parameters
val – The input array or function
- Returns
Hyperbolic cosine function object
-
template<class VAL>
auto atanh(VAL &&val) -> detail::Function<typetraits::DescriptorType_t<VAL>, detail::Atanh, VAL> Calculate the hyperbolic arctangent of each element in the array.
\(R = \{ R_0, R_1, R_2, ... \} \) \text{ where } \(R_i = \tanh^{-1}(A_i)\)
- Template Parameters
VAL – Type of the input
- Parameters
val – The input array or function
- Returns
Hyperbolic tangent function object
-
template<class VAL>
auto exp(VAL &&val) -> detail::Function<typetraits::DescriptorType_t<VAL>, detail::Exp, VAL> Raise e to the power of each element in the array.
\(R = \{ R_0, R_1, R_2, ... \} \) \text{ where } \(R_i = e^{A_i}\)
- Template Parameters
VAL – Type of the input
- Parameters
val – The input array or function
- Returns
Exponential function object
-
template<class VAL>
auto exp2(VAL &&val) -> detail::Function<typetraits::DescriptorType_t<VAL>, detail::Exp2, VAL> Raise 2 to the power of each element in the array.
\(R = \{ R_0, R_1, R_2, ... \} \) \text{ where } \(R_i = 2^{A_i}\)
- Template Parameters
VAL – Type of the input
- Parameters
val – The input array or function
- Returns
Exponential function object
-
template<class VAL>
auto exp10(VAL &&val) -> detail::Function<typetraits::DescriptorType_t<VAL>, detail::Exp10, VAL> Raise 10 to the power of each element in the array.
\(R = \{ R_0, R_1, R_2, ... \} \) \text{ where } \(R_i = 10^{A_i}\)
- Template Parameters
VAL – Type of the input
- Parameters
val – The input array or function
- Returns
Exponential function object
-
template<class VAL>
auto log(VAL &&val) -> detail::Function<typetraits::DescriptorType_t<VAL>, detail::Log, VAL> \(R = \{ R_0, R_1, R_2, ... \} \) \text{ where } \(R_i = \ln(A_i)\)
- Template Parameters
VAL – Type of the input
- Parameters
val – The input array or function
- Returns
Natural logarithm function object
-
template<class VAL>
auto log10(VAL &&val) -> detail::Function<typetraits::DescriptorType_t<VAL>, detail::Log10, VAL> Compute the base 10 logarithm of each element in the array.
\(R = \{ R_0, R_1, R_2, ... \} \) \text{ where } \(R_i = \log_{10}(A_i)\)
- Template Parameters
VAL – Type of the input
- Parameters
val – The input array or function
- Returns
Base 10 logarithm function object
-
template<class VAL>
auto log2(VAL &&val) -> detail::Function<typetraits::DescriptorType_t<VAL>, detail::Log2, VAL> Compute the base 2 logarithm of each element in the array.
\(R = \{ R_0, R_1, R_2, ... \} \) \text{ where } \(R_i = \log_{2}(A_i)\)
- Template Parameters
VAL – Type of the input
- Parameters
val – The input array or function
- Returns
Base 2 logarithm function object
-
template<class VAL>
auto sqrt(VAL &&val) -> detail::Function<typetraits::DescriptorType_t<VAL>, detail::Sqrt, VAL> Compute the square root of each element in the array.
\(R = \{ R_0, R_1, R_2, ... \} \) \text{ where } \(R_i = \sqrt{A_i}\)
- Template Parameters
VAL – Type of the input
- Parameters
val – The input array or function
- Returns
Square root function object
-
template<class VAL>
auto cbrt(VAL &&val) -> detail::Function<typetraits::DescriptorType_t<VAL>, detail::Cbrt, VAL> Compute the cube root of each element in the array.
\(R = \{ R_0, R_1, R_2, ... \} \) \text{ where } \(R_i = \sqrt[3]{A_i}\)
- Template Parameters
VAL – Type of the input
- Parameters
val – The input array or function
- Returns
Cube root function object
-
template<class VAL>
auto abs(VAL &&val) -> detail::Function<typetraits::DescriptorType_t<VAL>, detail::Abs, VAL> Compute the absolute value of each element in the array.
\(R = \{ R_0, R_1, R_2, ... \} \) \text{ where } \(R_i = |A_i|\)
- Template Parameters
VAL – Type of the input
- Parameters
val – The input array or function
- Returns
Absolute value function object
-
template<class VAL>
auto floor(VAL &&val) -> detail::Function<typetraits::DescriptorType_t<VAL>, detail::Floor, VAL> Compute the floor of each element in the array.
\(R = \{ R_0, R_1, R_2, ... \} \) \text{ where } \(R_i = \lfloor A_i \rfloor\)
- Template Parameters
VAL – Type of the input
- Parameters
val – The input array or function
- Returns
Floor function object
-
template<class VAL>
auto ceil(VAL &&val) -> detail::Function<typetraits::DescriptorType_t<VAL>, detail::Ceil, VAL> Compute the ceiling of each element in the array.
\(R = \{ R_0, R_1, R_2, ... \} \) \text{ where } \(R_i = \lceil A_i \rceil\)
- Template Parameters
VAL – Type of the input
- Parameters
val – The input array or function
- Returns
Ceiling function object
-
namespace array
Functions
-
template<class LHS, class RHS>
auto operator+(LHS &&lhs, RHS &&rhs) Element-wise array addition.
Performs element-wise addition on two arrays. They must both be the same size and of the same data type.
- Template Parameters
LHS – Type of the LHS element
RHS – Type of the RHS element
- Parameters
lhs – The first array
rhs – The second array
- Returns
The element-wise sum of the two arrays
-
template<class LHS, class RHS>
auto operator-(LHS &&lhs, RHS &&rhs) Element-wise array subtraction.
Performs element-wise subtraction on two arrays. They must both be the same size and of the same data type.
- Template Parameters
LHS – Type of the LHS element
RHS – Type of the RHS element
- Parameters
lhs – The first array
rhs – The second array
- Returns
The element-wise difference of the two arrays
-
template<class LHS, class RHS>
auto operator*(LHS &&lhs, RHS &&rhs) Element-wise array multiplication.
Performs element-wise multiplication on two arrays. They must both be the same size and of the same data type.
- Template Parameters
LHS – Type of the LHS element
RHS – Type of the RHS element
- Parameters
lhs – The first array
rhs – The second array
- Returns
The element-wise product of the two arrays
-
template<class LHS, class RHS>
auto operator/(LHS &&lhs, RHS &&rhs) Element-wise array division.
Performs element-wise division on two arrays. They must both be the same size and of the same data type.
- Template Parameters
LHS – Type of the LHS element
RHS – Type of the RHS element
- Parameters
lhs – The first array
rhs – The second array
- Returns
The element-wise division of the two arrays
-
template<class LHS, class RHS>
auto operator<(LHS &&lhs, RHS &&rhs) Element-wise array comparison, checking whether a < b for all a, b in input arrays.
Performs an element-wise comparison on two arrays, checking if the first value is less than the second. They must both be the same size and of the same data type.
- Template Parameters
LHS – Type of the LHS element
RHS – Type of the RHS element
- Parameters
lhs – The first array
rhs – The second array
- Returns
The element-wise comparison of the two arrays
-
template<class LHS, class RHS>
auto operator>(LHS &&lhs, RHS &&rhs) Element-wise array comparison, checking whether a > b for all a, b in input arrays.
Performs an element-wise comparison on two arrays, checking if the first value is greater than the second. They must both be the same size and of the same data type.
- Template Parameters
LHS – Type of the LHS element
RHS – Type of the RHS element
- Parameters
lhs – The first array
rhs – The second array
- Returns
The element-wise comparison of the two arrays
-
template<class LHS, class RHS>
auto operator<=(LHS &&lhs, RHS &&rhs) Element-wise array comparison, checking whether a <= b for all a, b in input arrays.
Performs an element-wise comparison on two arrays, checking if the first value is less than or equal to the second. They must both be the same size and of the same data type.
- Template Parameters
LHS – Type of the LHS element
RHS – Type of the RHS element
- Parameters
lhs – The first array
rhs – The second array
- Returns
The element-wise comparison of the two arrays
-
template<class LHS, class RHS>
auto operator>=(LHS &&lhs, RHS &&rhs) Element-wise array comparison, checking whether a >= b for all a, b in input arrays.
Performs an element-wise comparison on two arrays, checking if the first value is greater than or equal to the second. They must both be the same size and of the same data type.
- Template Parameters
LHS – Type of the LHS element
RHS – Type of the RHS element
- Parameters
lhs – The first array
rhs – The second array
- Returns
The element-wise comparison of the two arrays
-
template<class LHS, class RHS>
auto operator==(LHS &&lhs, RHS &&rhs) Element-wise array comparison, checking whether a == b for all a, b in input arrays.
Performs an element-wise comparison on two arrays, checking if the first value is equal to the second. They must both be the same size and of the same data type.
- Template Parameters
LHS – Type of the LHS element
RHS – Type of the RHS element
- Parameters
lhs – The first array
rhs – The second array
- Returns
The element-wise comparison of the two arrays
-
template<class LHS, class RHS>
auto operator!=(LHS &&lhs, RHS &&rhs) Element-wise array comparison, checking whether a != b for all a, b in input arrays.
Performs an element-wise comparison on two arrays, checking if the first value is not equal to the second. They must both be the same size and of the same data type.
- Template Parameters
LHS – Type of the LHS element
RHS – Type of the RHS element
- Parameters
lhs – The first array
rhs – The second array
- Returns
The element-wise comparison of the two arrays
-
template<class VAL>
auto operator-(VAL &&val) Negate each element in the array.
- Template Parameters
VAL – Type to negate
- Parameters
val – The input array or function
- Returns
Negation function object
-
template<class LHS, class RHS>
-
namespace detail
Functions
-
template<typename desc, typename Functor, typename ...Args>
auto makeFunction(Args&&... args) Construct a new function object with the given functor type and arguments.
-
template<typename T, LibRapidType... ValidTypes>
constexpr bool isType()
-
template<typename VAL>
constexpr bool isArrayOp()
-
template<typename LHS, typename RHS>
constexpr bool isArrayOpArray()
-
template<typename LHS, typename RHS>
constexpr bool isArrayOpWithScalar()
Variables
- template<typename VAL> IsArrayOp = isArrayOp<VAL>()
- template<typename LHS, typename RHS> IsArrayOpArray = isArrayOpArray<LHS, RHS>()
- template<typename LHS, typename RHS> IsArrayOpWithScalar = isArrayOpWithScalar<LHS, RHS>()
-
struct Abs
- #include <operations.hpp>
-
struct Acos
- #include <operations.hpp>
-
struct Acosh
- #include <operations.hpp>
-
struct Asin
- #include <operations.hpp>
-
struct Asinh
- #include <operations.hpp>
-
struct Atan
- #include <operations.hpp>
-
struct Atanh
- #include <operations.hpp>
-
struct Cbrt
- #include <operations.hpp>
-
struct Ceil
- #include <operations.hpp>
-
struct Cos
- #include <operations.hpp>
-
struct Cosh
- #include <operations.hpp>
-
struct Divide
- #include <operations.hpp>
-
struct ElementWiseEqual
- #include <operations.hpp>
-
struct ElementWiseNotEqual
- #include <operations.hpp>
-
struct Exp
- #include <operations.hpp>
-
struct Exp10
- #include <operations.hpp>
-
struct Exp2
- #include <operations.hpp>
-
struct Floor
- #include <operations.hpp>
-
struct GreaterThan
- #include <operations.hpp>
-
struct GreaterThanEqual
- #include <operations.hpp>
-
struct LessThan
- #include <operations.hpp>
-
struct LessThanEqual
- #include <operations.hpp>
-
struct Log
- #include <operations.hpp>
-
struct Log10
- #include <operations.hpp>
-
struct Log2
- #include <operations.hpp>
-
struct Minus
- #include <operations.hpp>
-
struct Multiply
- #include <operations.hpp>
-
struct Neg
- #include <operations.hpp>
-
struct Plus
- #include <operations.hpp>
-
struct Sin
- #include <operations.hpp>
-
struct Sinh
- #include <operations.hpp>
-
struct Sqrt
- #include <operations.hpp>
-
struct Tan
- #include <operations.hpp>
-
struct Tanh
- #include <operations.hpp>
-
template<typename desc, typename Functor, typename ...Args>
-
namespace typetraits
Typedefs
-
template<typename ...Args>
using DescriptorType_t = typename DescriptorType<Args...>::Type A simplification of the DescriptorType to reduce code size
See also
- Template Parameters
Args – Input types
-
template<typename T>
struct DescriptorExtractor - #include <operations.hpp>
Extracts the Descriptor type of the provided type.
- Template Parameters
T – The type to extract the descriptor from
- template<typename ShapeType, typename StorageType> ArrayContainer< ShapeType, StorageType > >
- #include <operations.hpp>
Extracts the Descriptor type of an ArrayContainer object. In this case, the Descriptor is Trivial
- Template Parameters
ShapeType – The shape type of the ArrayContainer
StorageType – The storage type of the ArrayContainer
- template<typename T, typename S> GeneralArrayView< T, S > >
- #include <operations.hpp>
Extracts the Descriptor type of an ArrayView object
- Template Parameters
T – The Array type of the ArrayView
- template<typename Descriptor, typename Functor, typename... Args> Function< Descriptor, Functor, Args... > >
- #include <operations.hpp>
Extracts the Descriptor type of a Function object
- Template Parameters
Descriptor – The descriptor of the Function
Functor – The functor type of the Function
Args – The argument types of the Function
Public Types
-
using Type = Descriptor
-
template<typename Descriptor1, typename Descriptor2>
struct DescriptorMerger - #include <operations.hpp>
Merge together two Descriptor types. Two trivial operations will result in another trivial operation, while any other combination will result in a Combined operation.
- Template Parameters
Descriptor1 – The first descriptor
Descriptor2 – The second descriptor
-
template<typename Descriptor1>
struct DescriptorMerger<Descriptor1, Descriptor1> - #include <operations.hpp>
Public Types
-
using Type = Descriptor1
-
using Type = Descriptor1
-
template<typename First, typename ...Rest>
struct DescriptorType - #include <operations.hpp>
Return the combined Descriptor type of the provided types
Allows a number of Descriptor types to be merged together into a single Descriptor type. The Descriptors used are extracted from the
of the provided types.- Template Parameters
First – The first type to merge
Rest – The remaining types
First – The first type to merge
Rest – The remaining types
Public Types
-
using FirstType = std::decay_t<First>
-
using FirstDescriptor = typename DescriptorExtractor<FirstType>::Type
-
using RestDescriptor = decltype(impl::descriptorExtractor<Rest...>())
-
using Type = typename DescriptorMerger<FirstDescriptor, RestDescriptor>::Type
- template<> Abs >
- #include <operations.hpp>
- template<> Acos >
- #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "arcos"
-
static constexpr const char *filename = "trigonometry"
-
static constexpr const char *kernelName = "acosArrays"
-
template<typename ...Args>
- template<> Acosh >
- #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "hyperbolic arccosine"
-
static constexpr const char *filename = "trigonometry"
-
static constexpr const char *kernelName = "acoshArrays"
-
template<typename ...Args>
- template<> Asin >
- #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "arcsin"
-
static constexpr const char *filename = "trigonometry"
-
static constexpr const char *kernelName = "asinArrays"
-
template<typename ...Args>
- template<> Asinh >
- #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "hyperbolic arcsine"
-
static constexpr const char *filename = "trigonometry"
-
static constexpr const char *kernelName = "asinhArrays"
-
template<typename ...Args>
- template<> Atan >
- #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "arctan"
-
static constexpr const char *filename = "trigonometry"
-
static constexpr const char *kernelName = "atanArrays"
-
template<typename ...Args>
- template<> Atanh >
- #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "hyperbolic arctangent"
-
static constexpr const char *filename = "trigonometry"
-
static constexpr const char *kernelName = "atanhArrays"
-
template<typename ...Args>
- template<> Cbrt >
- #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "cube root"
-
static constexpr const char *filename = "expLogPow"
-
static constexpr const char *kernelName = "cbrtArrays"
-
template<typename ...Args>
- template<> Ceil >
- #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "ceiling"
-
static constexpr const char *filename = "floorCeilRound"
-
static constexpr const char *kernelName = "ceilArrays"
-
template<typename ...Args>
- template<> Cos >
- #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "cos"
-
static constexpr const char *filename = "trigonometry"
-
static constexpr const char *kernelName = "cosArrays"
-
template<typename ...Args>
- template<> Cosh >
- #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "hyperbolic cosine"
-
static constexpr const char *filename = "trigonometry"
-
static constexpr const char *kernelName = "coshArrays"
-
template<typename ...Args>
- template<> Divide >
- #include <operations.hpp>
Public Static Functions
-
template<typename T1, typename T2>
static inline constexpr const char *getKernelNameImpl(std::tuple<T1, T2> args)#
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename First, typename Second>
static inline auto getShapeImpl(const std::tuple<First, Second> &tup)#
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "divide"
-
static constexpr const char *filename = "arithmetic"
-
static constexpr const char *kernelName = "divArrays"
-
static constexpr const char *kernelNameScalarRhs = "divArraysScalarRhs"#
-
static constexpr const char *kernelNameScalarLhs = "divArraysScalarLhs"#
-
template<typename T1, typename T2>
- template<> ElementWiseEqual >
- #include <operations.hpp>
Public Static Functions
-
template<typename T1, typename T2>
static inline constexpr const char *getKernelNameImpl(std::tuple<T1, T2> args)
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename First, typename Second>
static inline auto getShapeImpl(const std::tuple<First, Second> &tup)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "element wise equal"
-
static constexpr const char *filename = "arithmetic"
-
static constexpr const char *kernelName = "elementWiseEqualArrays"
-
static constexpr const char *kernelNameScalarRhs = "elementWiseEqualArraysScalarRhs"
-
static constexpr const char *kernelNameScalarLhs = "elementWiseEqualArraysScalarLhs"
-
template<typename T1, typename T2>
- template<> ElementWiseNotEqual >
- #include <operations.hpp>
Public Static Functions
-
template<typename T1, typename T2>
static inline constexpr const char *getKernelNameImpl(std::tuple<T1, T2> args)
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename First, typename Second>
static inline auto getShapeImpl(const std::tuple<First, Second> &tup)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "element wise not equal"
-
static constexpr const char *filename = "arithmetic"
-
static constexpr const char *kernelName = "elementWiseNotEqualArrays"
-
static constexpr const char *kernelNameScalarRhs = "elementWiseNotEqualArraysScalarRhs"
-
static constexpr const char *kernelNameScalarLhs = "elementWiseNotEqualArraysScalarLhs"
-
template<typename T1, typename T2>
- template<> Exp >
- #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "exponent"
-
static constexpr const char *filename = "expLogPow"
-
static constexpr const char *kernelName = "expArrays"
-
template<typename ...Args>
- template<> Exp10 >
- #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "exponent base 10"
-
static constexpr const char *filename = "expLogPow"
-
static constexpr const char *kernelName = "exp10Arrays"
-
template<typename ...Args>
- template<> Exp2 >
- #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "exponent base 2"
-
static constexpr const char *filename = "expLogPow"
-
static constexpr const char *kernelName = "exp2Arrays"
-
template<typename ...Args>
- template<> Floor >
- #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "floor"
-
static constexpr const char *filename = "floorCeilRound"
-
static constexpr const char *kernelName = "floorArrays"
-
template<typename ...Args>
- template<> GreaterThan >
- #include <operations.hpp>
Public Static Functions
-
template<typename T1, typename T2>
static inline constexpr const char *getKernelNameImpl(std::tuple<T1, T2> args)
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename First, typename Second>
static inline auto getShapeImpl(const std::tuple<First, Second> &tup)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "greater than"
-
static constexpr const char *filename = "arithmetic"
-
static constexpr const char *kernelName = "greaterThanArrays"
-
static constexpr const char *kernelNameScalarRhs = "greaterThanArraysScalarRhs"
-
static constexpr const char *kernelNameScalarLhs = "greaterThanArraysScalarLhs"
-
template<typename T1, typename T2>
- template<> GreaterThanEqual >
- #include <operations.hpp>
Public Static Functions
-
template<typename T1, typename T2>
static inline constexpr const char *getKernelNameImpl(std::tuple<T1, T2> args)
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename First, typename Second>
static inline auto getShapeImpl(const std::tuple<First, Second> &tup)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "greater than or equal"
-
static constexpr const char *filename = "arithmetic"
-
static constexpr const char *kernelName = "greaterThanEqualArrays"
-
static constexpr const char *kernelNameScalarRhs = "greaterThanEqualArraysScalarRhs"
-
static constexpr const char *kernelNameScalarLhs = "greaterThanEqualArraysScalarLhs"
-
template<typename T1, typename T2>
- template<> LessThan >
- #include <operations.hpp>
Public Static Functions
-
template<typename T1, typename T2>
static inline constexpr const char *getKernelNameImpl(std::tuple<T1, T2> args)
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename First, typename Second>
static inline auto getShapeImpl(const std::tuple<First, Second> &tup)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "less than"
-
static constexpr const char *filename = "arithmetic"
-
static constexpr const char *kernelName = "lessThanArrays"
-
static constexpr const char *kernelNameScalarRhs = "lessThanArraysScalarRhs"
-
static constexpr const char *kernelNameScalarLhs = "lessThanArraysScalarLhs"
-
template<typename T1, typename T2>
- template<> LessThanEqual >
- #include <operations.hpp>
Public Static Functions
-
template<typename T1, typename T2>
static inline constexpr const char *getKernelNameImpl(std::tuple<T1, T2> args)
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename First, typename Second>
static inline auto getShapeImpl(const std::tuple<First, Second> &tup)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "less than or equal"
-
static constexpr const char *filename = "arithmetic"
-
static constexpr const char *kernelName = "lessThanEqualArrays"
-
static constexpr const char *kernelNameScalarRhs = "lessThanEqualArraysScalarRhs"
-
static constexpr const char *kernelNameScalarLhs = "lessThanEqualArraysScalarLhs"
-
template<typename T1, typename T2>
- template<> Log >
- #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "logarithm"
-
static constexpr const char *filename = "expLogPow"
-
static constexpr const char *kernelName = "logArrays"
-
template<typename ...Args>
- template<> Log10 >
- #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "logarithm base 10"
-
static constexpr const char *filename = "expLogPow"
-
static constexpr const char *kernelName = "log10Arrays"
-
template<typename ...Args>
- template<> Log2 >
- #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "logarithm base 2"
-
static constexpr const char *filename = "expLogPow"
-
static constexpr const char *kernelName = "log2Arrays"
-
template<typename ...Args>
- template<> Minus >
- #include <operations.hpp>
Public Static Functions
-
template<typename T1, typename T2>
static inline constexpr const char *getKernelNameImpl(std::tuple<T1, T2> args)
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename First, typename Second>
static inline auto getShapeImpl(const std::tuple<First, Second> &tup)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "minus"
-
static constexpr const char *filename = "arithmetic"
-
static constexpr const char *kernelName = "subArrays"
-
static constexpr const char *kernelNameScalarRhs = "subArraysScalarRhs"
-
static constexpr const char *kernelNameScalarLhs = "subArraysScalarLhs"
-
template<typename T1, typename T2>
- template<> Multiply >
- #include <operations.hpp>
Public Static Functions
-
template<typename T1, typename T2>
static inline constexpr const char *getKernelNameImpl(std::tuple<T1, T2> args)
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename First, typename Second>
static inline auto getShapeImpl(const std::tuple<First, Second> &tup)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "multiply"
-
static constexpr const char *filename = "arithmetic"
-
static constexpr const char *kernelName = "mulArrays"
-
static constexpr const char *kernelNameScalarRhs = "mulArraysScalarRhs"
-
static constexpr const char *kernelNameScalarLhs = "mulArraysScalarLhs"
-
template<typename T1, typename T2>
- template<> Neg >
- #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "negate"
-
static constexpr const char *filename = "negate"
-
static constexpr const char *kernelName = "negateArrays"
-
template<typename ...Args>
- template<> Plus >
- #include <operations.hpp>
Public Static Functions
-
template<typename T1, typename T2>
static inline constexpr const char *getKernelNameImpl(std::tuple<T1, T2> args)
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename First, typename Second>
static inline auto getShapeImpl(const std::tuple<First, Second> &tup)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "plus"
-
static constexpr const char *filename = "arithmetic"
-
static constexpr const char *kernelName = "addArrays"
-
static constexpr const char *kernelNameScalarRhs = "addArraysScalarRhs"
-
static constexpr const char *kernelNameScalarLhs = "addArraysScalarLhs"
-
template<typename T1, typename T2>
- template<> Sin >
- #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "sin"
-
static constexpr const char *filename = "trigonometry"
-
static constexpr const char *kernelName = "sinArrays"
-
template<typename ...Args>
- template<> Sinh >
- #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "hyperbolic sine"
-
static constexpr const char *filename = "trigonometry"
-
static constexpr const char *kernelName = "sinhArrays"
-
template<typename ...Args>
- template<> Sqrt >
- #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "square root"
-
static constexpr const char *filename = "expLogPow"
-
static constexpr const char *kernelName = "sqrtArrays"
-
template<typename ...Args>
- template<> Tan >
- #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "tan"
-
static constexpr const char *filename = "trigonometry"
-
static constexpr const char *kernelName = "tanArrays"
-
template<typename ...Args>
- template<> Tanh >
- #include <operations.hpp>
Public Static Functions
-
template<typename ...Args>
static inline constexpr const char *getKernelName(std::tuple<Args...> args)
-
template<typename ...Args>
static inline auto getShape(const std::tuple<Args...> &args)
Public Static Attributes
-
static constexpr const char *name = "hyperbolic tangent"
-
static constexpr const char *filename = "trigonometry"
-
static constexpr const char *kernelName = "tanhArrays"
-
template<typename ...Args>
-
namespace impl#
Functions
-
template<typename ...Rest>
constexpr auto descriptorExtractor() A
constexpr
function which supports the DescriptorType for multi-type inputs- Template Parameters
Rest –
- Returns
-
template<typename ...Rest>
-
template<typename ...Args>
-
template<class VAL>