Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ operator Half() [1/2]

static System.Half.operator Half ( double value)
inlineexplicitstatic

Definition at line 421 of file Half.cs.

422 {
423 ulong num = BitConverter.DoubleToUInt64Bits(value);
424 bool flag = (num & 0x8000000000000000uL) >> 63 != 0;
425 int num2 = (int)((num & 0x7FF0000000000000L) >> 52);
426 ulong num3 = num & 0xFFFFFFFFFFFFFuL;
427 if (num2 == 2047)
428 {
429 if (num3 != 0L)
430 {
431 return CreateHalfNaN(flag, num3 << 12);
432 }
433 if (!flag)
434 {
435 return PositiveInfinity;
436 }
437 return NegativeInfinity;
438 }
439 uint num4 = (uint)ShiftRightJam(num3, 38);
440 if (((uint)num2 | num4) == 0)
441 {
442 return new Half(flag, 0, 0);
443 }
444 return new Half(RoundPackToHalf(flag, (short)(num2 - 1009), (ushort)(num4 | 0x4000u)));
445 }
static Half NegativeInfinity
Definition Half.cs:21
static ushort RoundPackToHalf(bool sign, short exp, ushort sig)
Definition Half.cs:535
static Half PositiveInfinity
Definition Half.cs:19
static uint ShiftRightJam(uint i, int dist)
Definition Half.cs:564
Half(ushort value)
Definition Half.cs:78
static Half CreateHalfNaN(bool sign, ulong significand)
Definition Half.cs:528

References System.Half.Half(), System.Half.CreateHalfNaN(), System.BitConverter.DoubleToUInt64Bits(), System.L, System.Half.NegativeInfinity, System.Half.PositiveInfinity, System.Half.RoundPackToHalf(), System.Half.ShiftRightJam(), and System.value.