5#include <metal_integer>
12constant
float inf = metal::numeric_limits<float>::infinity();
139 template <
typename T>
153 template <
typename T>
173 template <
typename T>
175 return static_cast<T
>(
erf(
static_cast<float>(x)));
180 template <
typename T>
182 return static_cast<T
>(
erfinv(
static_cast<float>(x)));
187 template <
typename T>
199 template <
typename T>
201 return static_cast<T
>(
expm1f(
static_cast<float>(x)));
206 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>
291 template <
typename T>
298 template <
typename T>
305 template <
typename T>
316 template <
typename T>
319 return (x < 0) ? 1 - y : y;
324 template <
typename T>
326 return (x > T(0)) - (x < T(0));
343 template <
typename T>
357 template <
typename T>
371 template <
typename T>
378 template <
typename T>
385 template <
typename T>
392 template <
typename T>
401 float t1 = tan_a * tanh_b;
402 float denom = 1. + t1 * t1;
403 return {(tan_a - tanh_b * t1) / denom, (tanh_b + tan_a * t1) / denom};
408 template <
typename T>
417 float t1 = tanh_a * tan_b;
418 float denom = 1. + t1 * t1;
419 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
constexpr float inf
Definition math.h:9
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
T operator()(T x)
Definition unary_ops.h:90
Definition unary_ops.h:95
int16_t operator()(int16_t x)
Definition unary_ops.h:105
bool operator()(bool x)
Definition unary_ops.h:133
uint32_t operator()(uint32_t x)
Definition unary_ops.h:125
int8_t operator()(int8_t x)
Definition unary_ops.h:101
T operator()(T x)
Definition unary_ops.h:97
int64_t operator()(int64_t x)
Definition unary_ops.h:113
uint64_t operator()(uint64_t x)
Definition unary_ops.h:129
uint8_t operator()(uint8_t x)
Definition unary_ops.h:117
uint16_t operator()(uint16_t x)
Definition unary_ops.h:121
int32_t operator()(int32_t x)
Definition unary_ops.h:109
Definition unary_ops.h:166
complex64_t operator()(complex64_t x)
Definition unary_ops.h:167
Definition unary_ops.h:138
complex64_t operator()(complex64_t x)
Definition unary_ops.h:145
T operator()(T x)
Definition unary_ops.h:140
Definition unary_ops.h:152
T operator()(T x)
Definition unary_ops.h:154
complex64_t operator()(complex64_t x)
Definition unary_ops.h:159
Definition unary_ops.h:172
T operator()(T x)
Definition unary_ops.h:174
Definition unary_ops.h:179
T operator()(T x)
Definition unary_ops.h:181
Definition unary_ops.h:186
complex64_t operator()(complex64_t x)
Definition unary_ops.h:192
T operator()(T x)
Definition unary_ops.h:188
Definition unary_ops.h:198
T operator()(T x)
Definition unary_ops.h:200
Definition unary_ops.h:205
int8_t operator()(int8_t x)
Definition unary_ops.h:211
int16_t operator()(int16_t x)
Definition unary_ops.h:215
int32_t operator()(int32_t x)
Definition unary_ops.h:219
uint16_t operator()(uint16_t x)
Definition unary_ops.h:231
uint64_t operator()(uint64_t x)
Definition unary_ops.h:239
uint32_t operator()(uint32_t x)
Definition unary_ops.h:235
int64_t operator()(int64_t x)
Definition unary_ops.h:223
bool operator()(bool x)
Definition unary_ops.h:243
uint8_t operator()(uint8_t x)
Definition unary_ops.h:227
T operator()(T x)
Definition unary_ops.h:207
Definition unary_ops.h:248
T operator()(T x)
Definition unary_ops.h:250
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:262
T operator()(T x)
Definition unary_ops.h:264
Definition unary_ops.h:255
T operator()(T x)
Definition unary_ops.h:257
Definition unary_ops.h:283
T operator()(T x)
Definition unary_ops.h:285
Definition unary_ops.h:290
T operator()(T x)
Definition unary_ops.h:292
Definition unary_ops.h:297
T operator()(T x)
Definition unary_ops.h:299
Definition unary_ops.h:304
T operator()(T x)
Definition unary_ops.h:306
complex64_t operator()(complex64_t x)
Definition unary_ops.h:310
Definition unary_ops.h:384
T operator()(T x)
Definition unary_ops.h:386
Definition unary_ops.h:315
T operator()(T x)
Definition unary_ops.h:317
Definition unary_ops.h:323
T operator()(T x)
Definition unary_ops.h:325
uint32_t operator()(uint32_t x)
Definition unary_ops.h:329
complex64_t operator()(complex64_t x)
Definition unary_ops.h:333
Definition unary_ops.h:342
T operator()(T x)
Definition unary_ops.h:344
complex64_t operator()(complex64_t x)
Definition unary_ops.h:349
Definition unary_ops.h:356
T operator()(T x)
Definition unary_ops.h:358
complex64_t operator()(complex64_t x)
Definition unary_ops.h:363
Definition unary_ops.h:377
T operator()(T x)
Definition unary_ops.h:379
Definition unary_ops.h:370
T operator()(T x)
Definition unary_ops.h:372
Definition unary_ops.h:391
T operator()(T x)
Definition unary_ops.h:393
complex64_t operator()(complex64_t x)
Definition unary_ops.h:398
Definition unary_ops.h:407
complex64_t operator()(complex64_t x)
Definition unary_ops.h:414
T operator()(T x)
Definition unary_ops.h:409
float imag
Definition complex.h:22
float real
Definition complex.h:21