5#include <metal_integer> 
   43  metal::enable_if_t<metal::is_integral_v<T> & !metal::is_signed_v<T>, T>
 
   48  metal::enable_if_t<metal::is_integral_v<T> & metal::is_signed_v<T>, T>
 
   51    if (r != 0 && (r < 0 != y < 0)) {
 
 
   57  metal::enable_if_t<!metal::is_integral_v<T>, T> 
operator()(T x, T y) {
 
   59    if (r != 0 && (r < 0 != y < 0)) {
 
 
 
  100  template <
typename T>
 
 
  107  template <
typename T>
 
 
  114  template <
typename T>
 
 
  121  template <
typename T>
 
  124      return metal::numeric_limits<T>::quiet_NaN();
 
  126    constexpr T inf = metal::numeric_limits<T>::infinity();
 
  129    return (minval == -inf || maxval == inf)
 
 
 
  136  template <
typename T>
 
  137  metal::enable_if_t<metal::is_integral_v<T>, T> 
operator()(T x, T y) {
 
 
  141  template <
typename T>
 
  142  metal::enable_if_t<!metal::is_integral_v<T>, T> 
operator()(T x, T y) {
 
  146    return x > y ? x : y;
 
 
  154    return x > y ? x : y;
 
 
 
  159  template <
typename T>
 
  160  metal::enable_if_t<metal::is_integral_v<T>, T> 
operator()(T x, T y) {
 
 
  164  template <
typename T>
 
  165  metal::enable_if_t<!metal::is_integral_v<T>, T> 
operator()(T x, T y) {
 
  169    return x < y ? x : y;
 
 
  177    return x < y ? x : y;
 
 
 
  182  template <
typename T>
 
 
  189  template <
typename T>
 
 
  200  template <
typename T>
 
  201  metal::enable_if_t<!metal::is_integral_v<T>, T> 
operator()(T base, T exp) {
 
 
  205  template <
typename T>
 
  206  metal::enable_if_t<metal::is_integral_v<T>, T> 
operator()(T base, T exp) {
 
 
  223    auto phase = y.
imag * x_ln_r + y.
real * x_theta;
 
 
 
  229  template <
typename T>
 
 
  236  template <
typename T>
 
 
  243  template <
typename T>
 
 
  250  template <
typename T>
 
 
  257  template <
typename T>
 
 
  264  template <
typename T>
 
 
  271  template <
typename T>
 
 
  278  template <
typename T>
 
 
  285  template <
typename T>
 
 
  292  template <
typename T>
 
 
Definition binary_ops.h:8
 
T operator()(T x, T y)
Definition binary_ops.h:10
 
Definition binary_ops.h:284
 
T operator()(T y, T x)
Definition binary_ops.h:286
 
Definition binary_ops.h:249
 
T operator()(T x, T y)
Definition binary_ops.h:251
 
Definition binary_ops.h:256
 
T operator()(T x, T y)
Definition binary_ops.h:258
 
Definition binary_ops.h:263
 
T operator()(T x, T y)
Definition binary_ops.h:265
 
Definition binary_ops.h:291
 
metal::array< T, 2 > operator()(T x, T y)
Definition binary_ops.h:293
 
Definition binary_ops.h:34
 
T operator()(T x, T y)
Definition binary_ops.h:36
 
Definition binary_ops.h:70
 
bool operator()(T x, T y)
Definition binary_ops.h:72
 
Definition binary_ops.h:15
 
T operator()(T x, T y)
Definition binary_ops.h:17
 
bfloat16_t operator()(bfloat16_t x, bfloat16_t y)
Definition binary_ops.h:29
 
half operator()(half x, half y)
Definition binary_ops.h:25
 
float operator()(float x, float y)
Definition binary_ops.h:21
 
Definition binary_ops.h:99
 
bool operator()(T x, T y)
Definition binary_ops.h:101
 
Definition binary_ops.h:92
 
bool operator()(T x, T y)
Definition binary_ops.h:94
 
Definition binary_ops.h:270
 
T operator()(T x, T y)
Definition binary_ops.h:272
 
Definition binary_ops.h:113
 
bool operator()(T x, T y)
Definition binary_ops.h:115
 
Definition binary_ops.h:106
 
bool operator()(T x, T y)
Definition binary_ops.h:108
 
Definition binary_ops.h:120
 
T operator()(T x, T y)
Definition binary_ops.h:122
 
Definition binary_ops.h:235
 
T operator()(T x, T y)
Definition binary_ops.h:237
 
Definition binary_ops.h:242
 
T operator()(T x, T y)
Definition binary_ops.h:244
 
Definition binary_ops.h:135
 
metal::enable_if_t<!metal::is_integral_v< T >, T > operator()(T x, T y)
Definition binary_ops.h:142
 
metal::enable_if_t< metal::is_integral_v< T >, T > operator()(T x, T y)
Definition binary_ops.h:137
 
complex64_t operator()(complex64_t x, complex64_t y)
Definition binary_ops.h:150
 
Definition binary_ops.h:158
 
metal::enable_if_t<!metal::is_integral_v< T >, T > operator()(T x, T y)
Definition binary_ops.h:165
 
complex64_t operator()(complex64_t x, complex64_t y)
Definition binary_ops.h:173
 
metal::enable_if_t< metal::is_integral_v< T >, T > operator()(T x, T y)
Definition binary_ops.h:160
 
Definition binary_ops.h:181
 
T operator()(T x, T y)
Definition binary_ops.h:183
 
Definition binary_ops.h:77
 
bool operator()(T x, T y)
Definition binary_ops.h:79
 
bool operator()(complex64_t x, complex64_t y)
Definition binary_ops.h:83
 
Definition binary_ops.h:188
 
bool operator()(complex64_t x, complex64_t y)
Definition binary_ops.h:194
 
bool operator()(T x, T y)
Definition binary_ops.h:190
 
Definition binary_ops.h:199
 
complex64_t operator()(complex64_t x, complex64_t y)
Definition binary_ops.h:219
 
metal::enable_if_t<!metal::is_integral_v< T >, T > operator()(T base, T exp)
Definition binary_ops.h:201
 
metal::enable_if_t< metal::is_integral_v< T >, T > operator()(T base, T exp)
Definition binary_ops.h:206
 
Definition binary_ops.h:41
 
metal::enable_if_t< metal::is_integral_v< T > &metal::is_signed_v< T >, T > operator()(T x, T y)
Definition binary_ops.h:49
 
metal::enable_if_t<!metal::is_integral_v< T >, T > operator()(T x, T y)
Definition binary_ops.h:57
 
metal::enable_if_t< metal::is_integral_v< T > &!metal::is_signed_v< T >, T > operator()(T x, T y)
Definition binary_ops.h:44
 
complex64_t operator()(complex64_t x, complex64_t y)
Definition binary_ops.h:65
 
Definition binary_ops.h:277
 
T operator()(T x, T y)
Definition binary_ops.h:279
 
Definition binary_ops.h:228
 
T operator()(T x, T y)
Definition binary_ops.h:230
 
float imag
Definition complex.h:22
 
float real
Definition complex.h:21