uses
  dulp;

var
  F: THugeFloat;

procedure Conv(F: Double);
var
  H: THugeFloat;
  NewF: Double;
begin
  H := Float64ToHugeFloat(F);
  NewF := HugeFloatToFloat64(H);
  Writeln(F, ' -> ', HugeFloatToString(H), ' -> ', NewF, ' (No change: ', F=NewF, ')');
end;

begin
  Conv(0);
  Conv(1);
  Conv(2);
  Conv(3);
  Conv(5);
  Conv(1 shl 1000);
  Conv(1 / (1 shl 31));
  Conv(3);
end.
