Lines Matching refs:Y

592 constexpr T AbsoluteDifference(U X, V Y) {  in AbsoluteDifference()  argument
593 return X > Y ? (X - Y) : (Y - X); in AbsoluteDifference()
601 SaturatingAdd(T X, T Y, bool *ResultOverflowed = nullptr) {
605 T Z = X + Y;
606 Overflowed = (Z < X || Z < Y);
616 std::enable_if_t<std::is_unsigned_v<T>, T> SaturatingAdd(T X, T Y, T Z, in SaturatingAdd() argument
619 T XY = SaturatingAdd(X, Y, &Overflowed); in SaturatingAdd()
630 SaturatingMultiply(T X, T Y, bool *ResultOverflowed = nullptr) {
644 int Log2Z = Log2_64(X) + Log2_64(Y);
648 return X * Y;
658 T Z = (X >> 1) * Y;
665 return SaturatingAdd(Z, Y, ResultOverflowed);
676 SaturatingMultiplyAdd(T X, T Y, T A, bool *ResultOverflowed = nullptr) {
680 T Product = SaturatingMultiply(X, Y, &Overflowed);
693 std::enable_if_t<std::is_signed_v<T>, T> AddOverflow(T X, T Y, T &Result) { in AddOverflow() argument
695 return __builtin_add_overflow(X, Y, &Result); in AddOverflow()
700 const U UY = static_cast<U>(Y); in AddOverflow()
707 if (X > 0 && Y > 0) in AddOverflow()
710 if (X < 0 && Y < 0) in AddOverflow()
719 std::enable_if_t<std::is_signed_v<T>, T> SubOverflow(T X, T Y, T &Result) { in SubOverflow() argument
721 return __builtin_sub_overflow(X, Y, &Result); in SubOverflow()
726 const U UY = static_cast<U>(Y); in SubOverflow()
733 if (X <= 0 && Y > 0) in SubOverflow()
736 if (X >= 0 && Y < 0) in SubOverflow()
745 std::enable_if_t<std::is_signed_v<T>, T> MulOverflow(T X, T Y, T &Result) { in MulOverflow() argument
747 return __builtin_mul_overflow(X, Y, &Result); in MulOverflow()
752 const U UY = Y < 0 ? (0 - static_cast<U>(Y)) : static_cast<U>(Y); in MulOverflow()
756 const bool IsNegative = (X < 0) ^ (Y < 0); in MulOverflow()