1 ! (c)2009 Joe Groff bsd license
2 USING: accessors alien.accessors alien.c-types alien.data
3 alien.syntax kernel math math.order ;
7 : half>bits ( float -- bits )
9 [ -31 shift 15 shift ] [
12 dup HEX: 7f800000 >= [ -13 shift HEX: 7fff bitand ] [
20 : bits>half ( bits -- float )
21 [ -15 shift 31 shift ] [
24 dup HEX: 7c00 >= [ 13 shift HEX: 7f800000 bitor ] [
29 ] bi bitor bits>float ;
38 [ alien-unsigned-2 bits>half ] >>getter
39 [ [ >float half>bits ] 2dip set-alien-unsigned-2 ] >>setter
42 [ >float ] >>unboxer-quot
43 \ half define-primitive-type