anchor.diff:  var
     E: Integer;
   begin
  -  E := GetPlainExp(AValue);
  -  Result := GetPlainMantissa(AValue);
  +  E := GetRawExp(AValue);
  +  Result := GetRawMantissa(AValue);
     if (0 < E) and (E < CDoubleExponentMask) then
       Result := Result or ((UInt64(1) shl CDoubleExponentShift));
   end;
  
positive.code: var
    M, E: UInt32;
  begin
    M := GetPlainMantissa(AValue);
    E := GetPlainExp(AValue);
    if (0 < E) and (E < CSingleExponentMask) then
      Result := E - CSingleBias
    else if E = 0 then
  
negative.code: {$POINTERMATH ON}
  
  {$IFDEF NORECORDHELPERS}
  function GetRawMantissa(const AValue: Single): UInt32; overload;
  begin
    Result := PUInt32(@AValue)^ and CSingleMantissaMask;
  end;
  
  function GetRawMantissa(const AValue: Double): UInt64; overload;
  begin
    Result := PUInt64(@AValue)^ and CDoubleMantissaMask;
  end;
  
  function GetRawExp(const AValue: Single): Integer; overload;
  begin
    Result := PUInt32(@AValue)^ shr CSingleExponentShift and CSingleExponentMask;
  end;
  
  function GetRawExp(const AValue: Double): Integer; overload;
  begin
    Result := PUInt16(@AValue)[3] shr 4 and CDoubleExponentMask;
  //  Result := PUInt64(@AValue)^ shr CDoubleExponentShift and CDoubleExponentMask;
  end;
  
  function GetRawExp(const AValue: Extended): Integer; overload;
  begin
    Result := PUInt16(@AValue)[4] and CExtendedExponentMask;
  end;
  