Automatic Differentiation
 
Loading...
Searching...
No Matches

◆ ADD_UNARY_FUNCTION_PASS_ZERO

#define ADD_UNARY_FUNCTION_PASS_ZERO (   fun)
Value:
template <typename T> \
class fun##_ : public elt_function_cl<fun##_<T>, double, T> { \
using base = elt_function_cl<fun##_<T>, double, T>; \
using base::arguments_; \
\
public: \
using base::rows; \
using base::cols; \
static constexpr auto view_transitivness = std::make_tuple(true); \
static const std::vector<const char*> includes; \
explicit fun##_(T&& a) : base(#fun, std::forward<T>(a)) {} \
inline auto deep_copy() const { \
auto&& arg_copy = this->template get_arg<0>().deep_copy(); \
return fun##_<std::remove_reference_t<decltype(arg_copy)>>{ \
std::move(arg_copy)}; \
} \
}; \
\
template <typename T, typename Cond \
= require_all_kernel_expressions_and_none_scalar_t<T>> \
inline fun##_<as_operation_cl_t<T>> fun(T&& a) { \
return fun##_<as_operation_cl_t<T>>(as_operation_cl(std::forward<T>(a))); \
} \
template <typename T> \
const std::vector<const char*> fun##_<T>::includes{};
T_operation && as_operation_cl(T_operation &&a)
Converts any valid kernel generator expression into an operation.
STL namespace.

Generates a class and function for an unary function, defined by OpenCL with special property that it passes trough zero.

That is \( f(0)=0 \). Such a function can have triangular view equal to its argument's.

Parameters
funfunction name

Definition at line 197 of file elt_function_cl.hpp.