24#if PLATFORM_HAS_FENV_H
43 }
FP32 = {}, magic = { 113 << 23 };
162 static_assert(
sizeof(
F) ==
sizeof(U),
"The float and uint sizes must be equal");
175 static_assert(
sizeof(
D) ==
sizeof(U),
"The float and uint sizes must be equal");
188 static_assert(
sizeof(
F) ==
sizeof(U),
"The float and uint32 sizes must be equal");
201 static_assert(
sizeof(
F) ==
sizeof(U),
"The double and uint64 sizes must be equal");
412#if PLATFORM_HAS_FENV_H == 0
484#if PLATFORM_WINDOWS && PLATFORM_CPU_ARM_FAMILY
579 return (
BitCast<uint64>(
A) & 0x7FFFFFFFFFFFFFFFULL) > 0x7FF0000000000000ULL;
589 return (
BitCast<uint64>(
A) & 0x7FF0000000000000ULL) != 0x7FF0000000000000ULL;
602 UE_DEPRECATED(5.1,
"IsNegativeFloat has been deprecated in favor of IsNegativeOrNegativeZero or simply A < 0.")
608 UE_DEPRECATED(5.1,
"IsNegativeDouble has been deprecated in favor of IsNegativeOrNegativeZero or simply A < 0.")
614 UE_DEPRECATED(5.1,
"IsNegative has been deprecated in favor of IsNegativeOrNegativeZero or simply A < 0.")
620 UE_DEPRECATED(5.1,
"IsNegative has been deprecated in favor of IsNegativeOrNegativeZero or simply A < 0.")
662 if (
Value >= 1<<16) {
Value >>= 16; pos += 16; }
663 if (
Value >= 1<< 8) {
Value >>= 8; pos += 8; }
664 if (
Value >= 1<< 4) {
Value >>= 4; pos += 4; }
665 if (
Value >= 1<< 2) {
Value >>= 2; pos += 2; }
666 if (
Value >= 1<< 1) { pos += 1; }
686 if (
Value >= 1ull<<32) {
Value >>= 32; pos += 32; }
687 if (
Value >= 1ull<<16) {
Value >>= 16; pos += 16; }
688 if (
Value >= 1ull<< 8) {
Value >>= 8; pos += 8; }
689 if (
Value >= 1ull<< 4) {
Value >>= 4; pos += 4; }
690 if (
Value >= 1ull<< 2) {
Value >>= 2; pos += 2; }
691 if (
Value >= 1ull<< 1) { pos += 1; }
710 if (
Value == 0)
return 8;
723 if (
Value == 0)
return 32;
736 if (
Value == 0)
return 64;
754 while ((
Value & 1) == 0)
782 while ((
Value & 1) == 0)
790 UE_DEPRECATED(5.7,
"Please use CountTrailingZeros64 instead")
827 return sizeof(Arg) * 8;
847 x = (x ^ (x << 8)) & 0x00ff00ff;
848 x = (x ^ (x << 4)) & 0x0f0f0f0f;
849 x = (x ^ (x << 2)) & 0x33333333;
850 x = (x ^ (x << 1)) & 0x55555555;
856 x &= 0x00000000ffffffff;
857 x = (x ^ (x << 16)) & 0x0000ffff0000ffff;
858 x = (x ^ (x << 8)) & 0x00ff00ff00ff00ff;
859 x = (x ^ (x << 4)) & 0x0f0f0f0f0f0f0f0f;
860 x = (x ^ (x << 2)) & 0x3333333333333333;
861 x = (x ^ (x << 1)) & 0x5555555555555555;
869 x = (x ^ (x >> 1)) & 0x33333333;
870 x = (x ^ (x >> 2)) & 0x0f0f0f0f;
871 x = (x ^ (x >> 4)) & 0x00ff00ff;
872 x = (x ^ (x >> 8)) & 0x0000ffff;
878 x &= 0x5555555555555555;
879 x = (x ^ (x >> 1)) & 0x3333333333333333;
880 x = (x ^ (x >> 2)) & 0x0f0f0f0f0f0f0f0f;
881 x = (x ^ (x >> 4)) & 0x00ff00ff00ff00ff;
882 x = (x ^ (x >> 8)) & 0x0000ffff0000ffff;
883 x = (x ^ (x >> 16)) & 0x00000000ffffffff;
891 x = (x ^ (x << 16)) & 0xff0000ff;
892 x = (x ^ (x << 8)) & 0x0300f00f;
893 x = (x ^ (x << 4)) & 0x030c30c3;
894 x = (x ^ (x << 2)) & 0x09249249;
902 x = (x ^ (x >> 2)) & 0x030c30c3;
903 x = (x ^ (x >> 4)) & 0x0300f00f;
904 x = (x ^ (x >> 8)) & 0xff0000ff;
905 x = (x ^ (x >> 16)) & 0x000003ff;
951 return (
A < (T)0) ? (T)-
A :
A;
958 return (
A > (T)0) ? (T)1 : ((
A < (T)0) ? (T)-1 : (T)0);
962 template <
typename T>
968 return (
B <
A) ?
A :
B;
972 UE_REQUIRES((std::is_same_v<T, OtherTypes> && ...))
976 if constexpr (
sizeof...(OtherTypes) > 0)
984 template <
typename T>
990 return (
A <
B) ?
A :
B;
994 UE_REQUIRES((std::is_same_v<T, OtherTypes> && ...))
998 if constexpr (
sizeof...(OtherTypes) > 0)
1021 if (Values.
Num() == 0)
1029 const T
Value = Values[
v];
1047 if (Values.
Num() == 0)
1060 const T
Value = Values[
v];
1083 if (Values.
Num() == 0)
1091 const T
Value = Values[
v];
1110 if (Values.
Num() == 0)
1123 const T
Value = Values[
v];
1171 Bits -= (Bits >> 1) & 0x5555555555555555ull;
1172 Bits = (Bits & 0x3333333333333333ull) + ((Bits >> 2) & 0x3333333333333333ull);
1173 Bits = (Bits + (Bits >> 4)) & 0x0f0f0f0f0f0f0f0full;
1174 return (Bits * 0x0101010101010101) >> 56;
1177#if WITH_DEV_AUTOMATION_TESTS
1179 static void AutoTest();
1187 template <UE::CIntegral IntType>
1192 typedef typename std::make_unsigned_t<IntType> UnsignedType;
1193 const UnsignedType
UnsignedA =
static_cast<UnsignedType
>(
A);
1194 const UnsignedType
UnsignedB =
static_cast<UnsignedType
>(
B);
1197 if constexpr (std::is_signed_v<IntType>)
1203 constexpr UnsignedType
UnsignedMSB =
static_cast<UnsignedType
>(std::numeric_limits<IntType>::min());
1234 template <UE::CIntegral IntType>
1239 typedef typename std::make_unsigned_t<IntType> UnsignedType;
1240 const UnsignedType
UnsignedA =
static_cast<UnsignedType
>(
A);
1241 const UnsignedType
UnsignedB =
static_cast<UnsignedType
>(
B);
1244 if constexpr (std::is_signed_v<IntType>)
1252 constexpr UnsignedType
UnsignedMSB =
static_cast<UnsignedType
>(std::numeric_limits<IntType>::min());
1275 template <UE::CIntegral IntType>
1286 if constexpr (std::is_signed_v<IntType>)
1295 typedef typename std::make_unsigned_t<IntType> UnsignedType;
1296 UnsignedType
UnsignedA =
static_cast<UnsignedType
>(
A);
1297 UnsignedType
UnsignedB =
static_cast<UnsignedType
>(
B);
1344 static CORE_API void FmodReportError(
float X,
float Y);
1345 static CORE_API void FmodReportError(
double X,
double Y);
#define ensureAlwaysMsgf(InExpression, InFormat,...)
Definition AssertionMacros.h:467
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define UE_REQUIRES(...)
Definition Requires.h:86
USkinnedMeshComponent float
Definition SkinnedMeshComponent.h:60
memcpy(InputBufferBase, BinkBlocksData, BinkBlocksSize)
UE_REWRITE SizeType Num() const
Definition Array.h:1144
float v
Definition radaudio_mdct.cpp:62