anchor.diff:  
   {$POINTERMATH ON}
   
  -{$IFDEF NORECORDHELPERS}
   function GetRawMantissa(const AValue: Single): UInt32; overload;
   begin
     Result := PUInt32(@AValue)^ and CSingleMantissaMask;
  
positive.code:   E.ExponentAndSign := (Sign and $8000) or ((Exponent + CExtendedBias) and CExtendedExponentMask);
    PExt80Rec(@Result)^ := E;
  end;
  {$ELSE}
  begin
    Result.BuildUp(Sign < 0, Mantissa, Exponent);
  end;
  {$ENDIF}
  
  end.
  
  
negative.code:   Result := PUInt64(@AValue)^ and CDoubleMantissaMask;
  end;
  
  function GetRawExponent(const AValue: Single): Integer; overload;
  begin
    Result := PUInt32(@AValue)^ shr CSingleExponentShift and CSingleExponentMask;
  end;
  
  function GetRawExponent(const AValue: Double): Integer; overload;
  begin
    Result := PUInt16(@AValue)[3] shr 4 and CDoubleExponentMask;
  //  Result := PUInt64(@AValue)^ shr CDoubleExponentShift and CDoubleExponentMask;
  end;
  
  function GetRawExponent(const AValue: Extended): Integer; overload;
  begin
    Result := PUInt16(@AValue)[4] and CExtendedExponentMask;
  end;
  
  function IsNegativeInfinity(const AValue: Single): Boolean; overload;
  begin
    Result := System.Math.IsInfinite(AValue) and (System.Math.Sign(AValue) < 0);
  end;
  
  function IsNegativeInfinity(const AValue: Double): Boolean; overload;
  begin
    Result := System.Math.IsInfinite(AValue) and (Sign(AValue) < 0);
  end;
  
  function IsNegativeInfinity(const AValue: Extended): Boolean; overload;
  begin
    Result := System.Math.IsInfinite(AValue) and (Sign(AValue) < 0);
  end;
  
  function IsPositiveInfinity(const AValue: Single): Boolean; overload;
  begin
    Result := System.Math.IsInfinite(AValue) and (Sign(AValue) > 0);
  end;
  
  function IsPositiveInfinity(const AValue: Double): Boolean; overload;
  begin
    Result := System.Math.IsInfinite(AValue) and (Sign(AValue) > 0);
  end;
  
  function IsPositiveInfinity(const AValue: Extended): Boolean; overload;
  begin
    Result := System.Math.IsInfinite(AValue) and (Sign(AValue) > 0);
  end;
  
  function GetMantissa(const AValue: Single): UInt32; overload;
  var
    E: Integer;
  begin
    E := GetRawExponent(AValue);
    Result := GetRawMantissa(AValue);
    if (0 < E) and (E < CSingleExponentMask) then
      Result := Result or (UInt32(1) shl CSingleExponentShift);
  end;
  
  function GetMantissa(const AValue: Double): UInt64; overload;
  var
    E: Integer;
  begin
    E := GetRawExponent(AValue);
    Result := GetRawMantissa(AValue);
    if (0 < E) and (E < CDoubleExponentMask) then
      Result := Result or ((UInt64(1) shl CDoubleExponentShift));
  end;
  
  function GetMantissa(const AValue: Extended): UInt64; overload;
  begin
    Result := PUInt64(@AValue)^;
  end;
  
  function GetExponent(const AValue: Single): Integer; overload;
  var
    M, E: UInt32;
  begin
    M := GetRawMantissa(AValue);
    E := GetRawExponent(AValue);
    if (0 < E) and (E < CSingleExponentMask) then
      Result := E - CSingleBias
    else if E = 0 then
  