| 469 | }; |
| 470 | |
| 471 | struct Negate { |
| 472 | template <typename T, typename Arg> |
| 473 | static constexpr enable_if_floating_value<T> Call(KernelContext*, Arg arg, Status*) { |
| 474 | return -arg; |
| 475 | } |
| 476 | |
| 477 | template <typename T, typename Arg> |
| 478 | static constexpr enable_if_half_float_value<T> Call(KernelContext*, Arg arg, Status*) { |
| 479 | return -arg; |
| 480 | } |
| 481 | |
| 482 | template <typename T, typename Arg> |
| 483 | static constexpr enable_if_unsigned_integer_value<T> Call(KernelContext*, Arg arg, |
| 484 | Status*) { |
| 485 | return ~arg + 1; |
| 486 | } |
| 487 | |
| 488 | template <typename T, typename Arg> |
| 489 | static constexpr enable_if_signed_integer_value<T> Call(KernelContext*, Arg arg, |
| 490 | Status*) { |
| 491 | return arrow::internal::SafeSignedNegate(arg); |
| 492 | } |
| 493 | |
| 494 | template <typename T, typename Arg> |
| 495 | static constexpr enable_if_decimal_value<Arg, T> Call(KernelContext*, Arg arg, |
| 496 | Status*) { |
| 497 | return arg.Negate(); |
| 498 | } |
| 499 | }; |
| 500 | |
| 501 | struct NegateChecked { |
| 502 | template <typename T, typename Arg> |
no outgoing calls
no test coverage detected