Schau Dir doch einfachen den Opensource der Amath-
Unit an.
Delphi-Quellcode:
{---------------------------------------------------------------------------}
function predd(d: double): double;
{-Return next representable double after d in the direction -Inf}
begin
with TDblRec(d)
do begin
if THexDblW(d)[3]
and $7FF0=$7FF0
then begin
{Inf or Nan}
if (hm
and $7FFFFFFF=$7FF00000)
and (lm=0)
then begin
{d is +- Inf}
if d>0.0
then d := MaxDouble;
end;
end
else begin
{finite number}
if d=0.0
then begin
hm := x80000000;
lm := 1;
end
else if d<0.0
then begin
{d<0: increment significand}
inc(lm);
if lm=0
then inc(hm);
end
else begin
{d>0: decrement significand}
if lm=0
then dec(hm);
dec(lm);
end;
end;
predd := d;
end;
end;