
An extflonum is like a flonum, but with 80-bit precision and not a number in the sense of `number?': only operations such as `extfl+' work on extflonums, and only on platforms where extflonums can be implemented by hardware without interefering with flonums (i.e., on platforms where SSE instructions are used for double-precision floats). [Patch provided by Michael Filonenko and revised by Matthew.] The compiler tracks information about bindings that are known to hold extflonums, but the JIT does not yet exploit this information to unbox them (except as intermediate results).
22 lines
541 B
Racket
22 lines
541 B
Racket
#lang racket/base
|
|
|
|
(require '#%extfl
|
|
'#%unsafe
|
|
"private/vector-wraps.rkt"
|
|
(for-syntax racket/base))
|
|
|
|
(provide (all-from-out '#%extfl)
|
|
|
|
in-extflvector for/extflvector for*/extflvector
|
|
extflvector-copy)
|
|
|
|
(define-vector-wraps "extflvector"
|
|
extflvector? extflvector-length extflvector-ref extflvector-set! make-extflvector
|
|
unsafe-extflvector-ref unsafe-extflvector-set! unsafe-extflvector-length
|
|
in-extflvector*
|
|
in-extflvector
|
|
for/extflvector
|
|
for*/extflvector
|
|
extflvector-copy
|
|
0.0T0)
|