11#define BINARY_SINGLE()                                 \ 
   12  template <typename T>                                 \ 
   13  T operator()(T x, T y) {                              \ 
   14    return (*this)(Simd<T, 1>(x), Simd<T, 1>(y)).value; \ 
 
   17#define DEFAULT_BINARY_OP(Op, op)                       \ 
   19    template <int N, typename T>                        \ 
   20    Simd<T, N> operator()(Simd<T, N> x, Simd<T, N> y) { \ 
 
   43#define DEFAULT_BOOL_OP(Op, op)                            \ 
   45    template <int N, typename T>                           \ 
   46    Simd<bool, N> operator()(Simd<T, N> x, Simd<T, N> y) { \ 
   49    template <typename T>                                  \ 
   50    bool operator()(T x, T y) {                            \ 
   51      return (*this)(Simd<T, 1>(x), Simd<T, 1>(y)).value;  \ 
 
   63  template <
int N, 
typename T>
 
 
   74  template <
int N, 
typename T>
 
   78    auto mask = minval == -
inf || maxval == 
inf;
 
   79    auto out = maxval + 
log1p(
exp(minval - maxval));
 
 
 
   92  template <
int N, 
typename T>
 
   94    return select(condition, x, y);
 
 
 
 
#define DEFAULT_BINARY_OP(Op, op)
Definition binary_ops.h:17
 
#define DEFAULT_BOOL_OP(Op, op)
Definition binary_ops.h:43
 
#define BINARY_SINGLE()
Definition binary_ops.h:11
 
Definition binary_ops.h:7
 
Definition accelerate_fp16_simd.h:9
 
Simd< bool, N > isnan(Simd< T, N > v)
Definition accelerate_simd.h:146
 
Simd< T, N > minimum(Simd< T, N > a, Simd< T, N > b)
Definition accelerate_simd.h:215
 
Simd< float16_t, N > pow(Simd< float16_t, N > x, Simd< float16_t, N > y)
Definition accelerate_fp16_simd.h:54
 
Simd< float16_t, N > atan2(Simd< float16_t, N > x, Simd< float16_t, N > y)
Definition accelerate_fp16_simd.h:52
 
constexpr float inf
Definition math.h:9
 
Simd< T, N > maximum(Simd< T, N > a, Simd< T, N > b)
Definition accelerate_simd.h:209
 
Simd< T, N > exp(Simd< T, N > in)
Compute exp(x) in an optimizer friendly way as follows:
Definition math.h:28
 
Simd< float16_t, N > remainder(Simd< float16_t, N > x, Simd< float16_t, N > y)
Definition accelerate_fp16_simd.h:53
 
Simd< float16_t, N > log1p(Simd< float16_t, N > v)
Definition accelerate_fp16_simd.h:40
 
Simd< T1, N > select(Simd< MaskT, N > mask, Simd< T1, N > x, Simd< T2, N > y)
Definition accelerate_simd.h:236
 
Definition binary_ops.h:26
 
Definition binary_ops.h:27
 
Definition binary_ops.h:33
 
Definition binary_ops.h:34
 
Definition binary_ops.h:35
 
Definition binary_ops.h:28
 
Definition binary_ops.h:55
 
Definition binary_ops.h:57
 
Definition binary_ops.h:56
 
Definition binary_ops.h:36
 
Definition binary_ops.h:59
 
Definition binary_ops.h:58
 
Definition binary_ops.h:73
 
Simd< T, N > operator()(Simd< T, N > x, Simd< T, N > y)
Definition binary_ops.h:75
 
Definition binary_ops.h:31
 
Definition binary_ops.h:32
 
Definition binary_ops.h:39
 
Definition binary_ops.h:40
 
Definition binary_ops.h:29
 
Definition binary_ops.h:62
 
bool operator()(T x, T y)
Definition binary_ops.h:68
 
Simd< bool, N > operator()(Simd< T, N > x, Simd< T, N > y)
Definition binary_ops.h:64
 
Definition binary_ops.h:60
 
Definition binary_ops.h:41
 
Definition binary_ops.h:38
 
Definition binary_ops.h:37
 
Definition binary_ops.h:85
 
Simd< T, N > operator()(Simd< bool, N > condition, Simd< T, N > x, Simd< T, N > y)
Definition binary_ops.h:93
 
T operator()(bool condition, T x, T y)
Definition binary_ops.h:87
 
Definition binary_ops.h:30
 
Definition accelerate_simd.h:55