13using namespace mlx::core::simd;
16 template <typename T> \
18 return (*this)(Simd<T, 1>(x)).value; \
21#define DEFAULT_OP(Op, op) \
23 template <int N, typename T> \
24 Simd<T, N> operator()(Simd<T, N> x) { \
78 template <
int N,
typename T>
86 template <
int N,
typename T>
89 if constexpr (std::is_unsigned_v<T>) {
91 }
else if constexpr (std::is_same_v<T, complex64_t>) {
102 template <
int N,
typename T>
#define SINGLE()
Definition unary_ops.h:15
#define DEFAULT_OP(Op, op)
Definition unary_ops.h:21
Definition binary_ops.h:7
Simd< float16_t, N > sinh(Simd< float16_t, N > v)
Definition accelerate_fp16_simd.h:41
Simd< float16_t, N > atanh(Simd< float16_t, N > v)
Definition accelerate_fp16_simd.h:34
Simd< float16_t, N > log10(Simd< float16_t, N > v)
Definition accelerate_fp16_simd.h:39
Simd< T, N > rint(Simd< T, N > v)
Definition accelerate_simd.h:127
Simd< float16_t, N > tan(Simd< float16_t, N > v)
Definition accelerate_fp16_simd.h:42
Simd< T, N > abs(Simd< T, N > v)
Definition accelerate_simd.h:112
Simd< float16_t, N > acosh(Simd< float16_t, N > v)
Definition accelerate_fp16_simd.h:30
Simd< T, N > erf(Simd< T, N > x)
Definition math.h:137
Simd< T, 1 > conj(Simd< T, 1 > in)
Definition base_simd.h:85
Simd< float16_t, N > log2(Simd< float16_t, N > v)
Definition accelerate_fp16_simd.h:38
Simd< T, N > erfinv(Simd< T, N > a_)
Definition math.h:151
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 > log(Simd< float16_t, N > v)
Definition accelerate_fp16_simd.h:37
Simd< T, N > floor(Simd< T, N > v)
Definition accelerate_simd.h:113
Simd< float16_t, N > expm1(Simd< float16_t, N > v)
Definition accelerate_fp16_simd.h:36
auto imag(Simd< T, 1 > in) -> Simd< decltype(std::imag(in.value)), 1 >
Definition base_simd.h:108
Simd< float16_t, N > asin(Simd< float16_t, N > v)
Definition accelerate_fp16_simd.h:31
Simd< float16_t, N > tanh(Simd< float16_t, N > v)
Definition accelerate_fp16_simd.h:43
Simd< float16_t, N > atan(Simd< float16_t, N > v)
Definition accelerate_fp16_simd.h:33
Simd< float16_t, N > asinh(Simd< float16_t, N > v)
Definition accelerate_fp16_simd.h:32
Simd< T, N > cos(Simd< T, N > x)
Definition math.h:128
Simd< T, N > sin(Simd< T, N > x)
Definition math.h:119
auto real(Simd< T, 1 > in) -> Simd< decltype(std::real(in.value)), 1 >
Definition base_simd.h:104
Simd< float16_t, N > log1p(Simd< float16_t, N > v)
Definition accelerate_fp16_simd.h:40
Simd< T, N > ceil(Simd< T, N > v)
Definition accelerate_simd.h:120
Simd< T, N > sqrt(Simd< T, N > v)
Definition accelerate_simd.h:129
Simd< float16_t, N > acos(Simd< float16_t, N > v)
Definition accelerate_fp16_simd.h:29
Simd< T, N > rsqrt(Simd< T, N > v)
Definition accelerate_simd.h:130
Simd< float16_t, N > cosh(Simd< float16_t, N > v)
Definition accelerate_fp16_simd.h:35
Simd< T1, N > select(Simd< MaskT, N > mask, Simd< T1, N > x, Simd< T2, N > y)
Definition accelerate_simd.h:236
Definition unary_ops.h:30
Definition unary_ops.h:31
Definition unary_ops.h:32
Definition unary_ops.h:33
Definition unary_ops.h:34
Definition unary_ops.h:35
Definition unary_ops.h:36
Definition unary_ops.h:37
Definition unary_ops.h:38
Definition unary_ops.h:39
Definition unary_ops.h:40
Definition unary_ops.h:41
Definition unary_ops.h:42
Definition unary_ops.h:43
Definition unary_ops.h:44
Definition unary_ops.h:45
Definition unary_ops.h:46
Definition unary_ops.h:61
Simd< float, N > operator()(Simd< complex64_t, N > x)
Definition unary_ops.h:63
Definition unary_ops.h:49
Definition unary_ops.h:50
Definition unary_ops.h:48
Definition unary_ops.h:47
Definition unary_ops.h:51
Definition unary_ops.h:52
Definition unary_ops.h:69
Simd< float, N > operator()(Simd< complex64_t, N > x)
Definition unary_ops.h:71
Definition unary_ops.h:53
Definition unary_ops.h:57
Definition unary_ops.h:77
Simd< T, N > operator()(Simd< T, N > x)
Definition unary_ops.h:79
Definition unary_ops.h:85
Simd< T, N > operator()(Simd< T, N > x)
Definition unary_ops.h:87
Definition unary_ops.h:54
Definition unary_ops.h:55
Definition unary_ops.h:56
Definition unary_ops.h:101
Simd< T, N > operator()(Simd< T, N > x)
Definition unary_ops.h:103
Definition unary_ops.h:58
Definition unary_ops.h:59
Definition accelerate_simd.h:55