5#include <metal_integer>
12constant
float inf = metal::numeric_limits<float>::infinity();
132 template <
typename T>
146 template <
typename T>
166 template <
typename T>
168 return static_cast<T
>(
erf(
static_cast<float>(x)));
173 template <
typename T>
175 return static_cast<T
>(
erfinv(
static_cast<float>(x)));
180 template <
typename T>
192 template <
typename T>
194 return static_cast<T
>(
expm1f(
static_cast<float>(x)));
199 template <
typename T>
242 template <
typename T>
249 template <
typename T>
256 template <
typename T>
263 template <
typename T>
270 template <
typename T>
277 template <
typename T>
284 template <
typename T>
295 template <
typename T>
298 return (x < 0) ? 1 - y : y;
303 template <
typename T>
305 return (x > T(0)) - (x < T(0));
322 template <
typename T>
336 template <
typename T>
350 template <
typename T>
357 template <
typename T>
364 template <
typename T>
371 template <
typename T>
380 float t1 = tan_a * tanh_b;
381 float denom = 1. + t1 * t1;
382 return {(tan_a - tanh_b * t1) / denom, (tanh_b + tan_a * t1) / denom};
387 template <
typename T>
396 float t1 = tanh_a * tan_b;
397 float denom = 1. + t1 * t1;
398 return {(tanh_a + tan_b * t1) / denom, (tan_b - tanh_a * t1) / denom};
float erfinv(float a)
Definition erf.h:42
float erf(float a)
Definition erf.h:11
float expm1f(float a)
Definition expm1f.h:80
Definition unary_ops.h:15
uint8_t operator()(uint8_t x)
Definition unary_ops.h:21
uint32_t operator()(uint32_t x)
Definition unary_ops.h:29
T operator()(T x)
Definition unary_ops.h:17
complex64_t operator()(complex64_t x)
Definition unary_ops.h:41
bool operator()(bool x)
Definition unary_ops.h:37
uint64_t operator()(uint64_t x)
Definition unary_ops.h:33
uint16_t operator()(uint16_t x)
Definition unary_ops.h:25
Definition unary_ops.h:46
T operator()(T x)
Definition unary_ops.h:48
Definition unary_ops.h:53
T operator()(T x)
Definition unary_ops.h:55
Definition unary_ops.h:60
T operator()(T x)
Definition unary_ops.h:62
Definition unary_ops.h:67
T operator()(T x)
Definition unary_ops.h:69
Definition unary_ops.h:74
T operator()(T x)
Definition unary_ops.h:76
Definition unary_ops.h:81
T operator()(T x)
Definition unary_ops.h:83
Definition unary_ops.h:88
int16_t operator()(int16_t x)
Definition unary_ops.h:98
bool operator()(bool x)
Definition unary_ops.h:126
uint32_t operator()(uint32_t x)
Definition unary_ops.h:118
int8_t operator()(int8_t x)
Definition unary_ops.h:94
T operator()(T x)
Definition unary_ops.h:90
int64_t operator()(int64_t x)
Definition unary_ops.h:106
uint64_t operator()(uint64_t x)
Definition unary_ops.h:122
uint8_t operator()(uint8_t x)
Definition unary_ops.h:110
uint16_t operator()(uint16_t x)
Definition unary_ops.h:114
int32_t operator()(int32_t x)
Definition unary_ops.h:102
Definition unary_ops.h:159
complex64_t operator()(complex64_t x)
Definition unary_ops.h:160
Definition unary_ops.h:131
complex64_t operator()(complex64_t x)
Definition unary_ops.h:138
T operator()(T x)
Definition unary_ops.h:133
Definition unary_ops.h:145
T operator()(T x)
Definition unary_ops.h:147
complex64_t operator()(complex64_t x)
Definition unary_ops.h:152
Definition unary_ops.h:165
T operator()(T x)
Definition unary_ops.h:167
Definition unary_ops.h:172
T operator()(T x)
Definition unary_ops.h:174
Definition unary_ops.h:179
complex64_t operator()(complex64_t x)
Definition unary_ops.h:185
T operator()(T x)
Definition unary_ops.h:181
Definition unary_ops.h:191
T operator()(T x)
Definition unary_ops.h:193
Definition unary_ops.h:198
int8_t operator()(int8_t x)
Definition unary_ops.h:204
int16_t operator()(int16_t x)
Definition unary_ops.h:208
int32_t operator()(int32_t x)
Definition unary_ops.h:212
uint16_t operator()(uint16_t x)
Definition unary_ops.h:224
uint64_t operator()(uint64_t x)
Definition unary_ops.h:232
uint32_t operator()(uint32_t x)
Definition unary_ops.h:228
int64_t operator()(int64_t x)
Definition unary_ops.h:216
bool operator()(bool x)
Definition unary_ops.h:236
uint8_t operator()(uint8_t x)
Definition unary_ops.h:220
T operator()(T x)
Definition unary_ops.h:200
Definition unary_ops.h:255
T operator()(T x)
Definition unary_ops.h:257
Definition unary_ops.h:262
T operator()(T x)
Definition unary_ops.h:264
Definition unary_ops.h:248
T operator()(T x)
Definition unary_ops.h:250
Definition unary_ops.h:241
T operator()(T x)
Definition unary_ops.h:243
Definition unary_ops.h:269
T operator()(T x)
Definition unary_ops.h:271
Definition unary_ops.h:276
T operator()(T x)
Definition unary_ops.h:278
Definition unary_ops.h:283
T operator()(T x)
Definition unary_ops.h:285
complex64_t operator()(complex64_t x)
Definition unary_ops.h:289
Definition unary_ops.h:363
T operator()(T x)
Definition unary_ops.h:365
Definition unary_ops.h:294
T operator()(T x)
Definition unary_ops.h:296
Definition unary_ops.h:302
T operator()(T x)
Definition unary_ops.h:304
uint32_t operator()(uint32_t x)
Definition unary_ops.h:308
complex64_t operator()(complex64_t x)
Definition unary_ops.h:312
Definition unary_ops.h:321
T operator()(T x)
Definition unary_ops.h:323
complex64_t operator()(complex64_t x)
Definition unary_ops.h:328
Definition unary_ops.h:335
T operator()(T x)
Definition unary_ops.h:337
complex64_t operator()(complex64_t x)
Definition unary_ops.h:342
Definition unary_ops.h:356
T operator()(T x)
Definition unary_ops.h:358
Definition unary_ops.h:349
T operator()(T x)
Definition unary_ops.h:351
Definition unary_ops.h:370
T operator()(T x)
Definition unary_ops.h:372
complex64_t operator()(complex64_t x)
Definition unary_ops.h:377
Definition unary_ops.h:386
complex64_t operator()(complex64_t x)
Definition unary_ops.h:393
T operator()(T x)
Definition unary_ops.h:388
float imag
Definition complex.h:22
float real
Definition complex.h:21