Changeset 308
- Timestamp:
- Jan 17, 2004, 7:34:41 PM (21 years ago)
- File:
-
- 1 edited
-
trunk/ccl/level-0/l0-numbers.lisp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ccl/level-0/l0-numbers.lisp
r295 r308 888 888 889 889 890 (defun integer-decode-denorm-short-float (mantissa sign) 891 (declare (fixnum mantissa sign)) 892 (do* ((bias 0 (1+ bias)) 893 (sig mantissa (ash sig 1))) 894 ((logbitp 23 sig) 895 (values sig 896 (- (- IEEE-single-float-bias) 897 IEEE-single-float-digits 898 bias) 899 sign)))) 890 900 891 901 892 902 (defun integer-decode-short-float (sfloat) 893 903 (multiple-value-bind (mantissa exp sign)(fixnum-decode-short-float sfloat) 894 (if (eq exp 255) 895 (error "Can't decode NAN/Inf: ~s" sfloat)) 896 (setq exp (- exp (if (< mantissa #x800000) 897 (+ IEEE-single-float-mantissa-width IEEE-single-float-bias) 898 (+ IEEE-single-float-mantissa-width (1+ IEEE-single-float-bias))))) 899 (values mantissa exp (if (eq sign 0) 1 -1)))) 904 (let* ((biased (- exp IEEE-single-float-bias IEEE-single-float-digits))) 905 (setq sign (if (eql 0 sign) 1 -1)) 906 (if (eq exp 255) 907 (error "Can't decode NAN/Inf: ~s" sfloat)) 908 (if (eql 0 exp) 909 (if (eql 0 mantissa) 910 (values 0 biased sign) 911 (integer-decode-denorm-short-float (ash mantissa 1) sign)) 912 (values (logior #x800000 mantissa) biased sign))))) 913 900 914 901 915 … … 1584 1598 1585 1599 (defun byte-position (bytespec) 1586 (- (integer-length bytespec) (logcount bytespec))) 1600 (if (> bytespec 0) 1601 (- (integer-length bytespec) (logcount bytespec)) 1602 (- bytespec))) 1587 1603 1588 1604
Note:
See TracChangeset
for help on using the changeset viewer.
