1 ! (c)2009 Joe Groff bsd license
2 USING: accessors alien.c-types alien.syntax kernel math math.order
3 specialized-arrays.functor ;
6 : half>bits ( float -- bits )
8 [ -31 shift 15 shift ] [
11 dup HEX: 7f800000 >= [ -13 shift HEX: 7fff bitand ] [
19 : bits>half ( bits -- float )
20 [ -15 shift 31 shift ] [
23 dup HEX: 7c00 >= [ 13 shift HEX: 7f800000 bitor ] [
28 ] bi bitor bits>float ;
30 C-STRUCT: half { "ushort" "(bits)" } ;
35 [ half>bits <ushort> ] >>unboxer-quot
36 [ *ushort bits>half ] >>boxer-quot