1121 {
1122 ulong num = BitConverter.DoubleToUInt64Bits(a);
1123 int num2 = double.ExtractExponentFromBits(num);
1124 if (num2 <= 1022)
1125 {
1127 {
1128 return a;
1129 }
1130 double x = ((num2 == 1022 &&
double.ExtractSignificandFromBits(num) != 0
L) ? 1.0 : 0.0);
1132 }
1133 if (num2 >= 1075)
1134 {
1135 return a;
1136 }
1137 ulong num3 = (ulong)(1
L << 1075 - num2);
1138 ulong num4 = num3 - 1;
1139 num += num3 >> 1;
1140 num = (((num & num4) != 0
L) ? (num & ~num4) : (num & ~num3));
1141 return BitConverter.UInt64BitsToDouble(num);
1142 }
static double CopySign(double x, double y)