Documentation
Given an IEEE 64 bit double representeted as an integer (ie a
sequence of 64 bytes), return the coressponding double value
Source
(defun parse-ieee-double (u64)
"Given an IEEE 64 bit double representeted as an integer (ie a
sequence of 64 bytes), return the coressponding double value"
(* (expt -1 (ldb (byte 1 63) u64))
(expt 2 (- (ldb (byte 11 52) u64) 1023))
(1+ (float (loop for i from 51 downto 0
for n = 2 then (* 2 n)
for frac = (* (/ n) (ldb (byte 1 i) u64))
sum frac)))))
Source Context