program tenbytes { www.merlyn.demon.co.uk >= 2002-02-18 } ; type A5 = array [1..5] of word ; const Q : extended = 1.0/65536.0 ; function TwoTo(const P : integer) : extended ; var S : extended ; J : integer ; begin S := 1 ; for J := 1 to Abs(P) do S := 2.0*S ; { but see ... } if P<0 then S := 1.0/S ; TwoTo := S end {TwoTo} ; function TenToExt(const Ten : extended) : extended ; var S : extended ; A : A5 absolute Ten ; begin S := 2.0 * (((A[1]*Q+A[2])*Q+A[3])*Q+A[4])*Q ; if A[5]>32767 then S := -S ; TenToExt := S * TwoTo(integer(A[5] and $7FFF)-16383) end {TenToExt} ; Var J : integer ; Z : extended ; BEGIN ; Randomize ; for J := 1 to 10 do begin Z := Random*123456789 ; Writeln(Z:24:10, TenToExt(Z):24:10, TenToExt(-Z):24:10) ; end ; Z := 0 ; Writeln(Z:24:10, TenToExt(Z):24:10) ; Readln ; END. Slightly tested. Ignores NaN & Inf.