Changeset 12974
- Timestamp:
- Oct 9, 2009, 1:42:35 PM (15 years ago)
- File:
-
- 1 edited
-
branches/working-0711/ccl/level-0/l0-float.lisp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/working-0711/ccl/level-0/l0-float.lisp
r10972 r12974 225 225 (sign (if (%double-float-sign n) -1.0d0 1.0d0))) 226 226 (if (eq 0 old-exp) 227 (if (%double-float-zerop n)227 (if (%double-float-zerop n) 228 228 (values 0.0d0 0 sign) 229 229 (let* ((val (%make-dfloat)) 230 230 (zeros (dfloat-significand-zeros n))) 231 (%copy-double-floatn val)232 (%%scale-dfloat! n(+ 2 IEEE-double-float-bias zeros) val) ; get it normalized231 (%%double-float-abs! n val) 232 (%%scale-dfloat! val (+ 2 IEEE-double-float-bias zeros) val) ; get it normalized 233 233 (set-%double-float-exp val IEEE-double-float-bias) ; then bash exponent 234 (values val (- old-exp zeros IEEE-double-float-bias) sign )))235 (if (> old-exp 2046)234 (values val (- old-exp zeros IEEE-double-float-bias) sign))) 235 (if (> old-exp IEEE-double-float-normal-exponent-max) 236 236 (error "Can't decode NAN or infinity ~s" n) 237 237 (let ((val (%make-dfloat))) 238 (% copy-double-floatn val)238 (%%double-float-abs! n val) 239 239 (set-%double-float-exp val IEEE-double-float-bias) 240 240 (values val (- old-exp IEEE-double-float-bias) sign)))))) … … 243 243 (sign (if (%short-float-sign n) -1.0s0 1.0s0))) 244 244 (if (eq 0 old-exp) 245 (if (%short-float-zerop n)245 (if (%short-float-zerop n) 246 246 (values 0.0s0 0 sign) 247 247 #+32-bit-target 248 248 (let* ((val (%make-sfloat)) 249 249 (zeros (sfloat-significand-zeros n))) 250 (%copy-short-floatn val)251 (%%scale-sfloat! n(+ 2 IEEE-single-float-bias zeros) val) ; get it normalized250 (%%short-float-abs! n val) 251 (%%scale-sfloat! val (+ 2 IEEE-single-float-bias zeros) val) ; get it normalized 252 252 (set-%short-float-exp val IEEE-single-float-bias) ; then bash exponent 253 (values val (- old-exp zeros IEEE-single-float-bias) sign ))253 (values val (- old-exp zeros IEEE-single-float-bias) sign)) 254 254 #+64-bit-target 255 255 (let* ((zeros (sfloat-significand-zeros n)) 256 (val (%%scale-sfloat n (+ 2 IEEE-single-float-bias zeros)))) 256 (val (%%scale-sfloat (%short-float-abs n) 257 (+ 2 IEEE-single-float-bias zeros)))) 257 258 (values (set-%short-float-exp val IEEE-single-float-bias) 258 (- old-exp zeros IEEE-single-float-bias) sign )))259 (- old-exp zeros IEEE-single-float-bias) sign))) 259 260 (if (> old-exp IEEE-single-float-normal-exponent-max) 260 261 (error "Can't decode NAN or infinity ~s" n) 261 262 #+32-bit-target 262 263 (let ((val (%make-sfloat))) 263 (% copy-short-floatn val)264 (%%short-float-abs! n val) 264 265 (set-%short-float-exp val IEEE-single-float-bias) 265 266 (values val (- old-exp IEEE-single-float-bias) sign)) 266 267 #+64-bit-target 267 (values (set-%short-float-exp n IEEE-single-float-bias) 268 (- old-exp IEEE-single-float-bias) sign))))))) 268 (values (set-%short-float-exp (%short-float-abs n) 269 IEEE-single-float-bias) 270 (- old-exp IEEE-single-float-bias) sign))))))) 269 271 270 272 ; (* float (expt 2 int))
Note:
See TracChangeset
for help on using the changeset viewer.
