scaled-integer>half ( n -- raw )


Vocabulary
math.floats.small.private

Inputs
nan object


Outputs
rawan object


Definition


:: scaled-integer>half ( n -- raw )
n 0 < 32768 0 ? :> sign n abs :> magnitude magnitude zero?
[ sign ] [
magnitude log2 :> top top 33 -
:> exponent! exponent 0 <=
[ magnitude -24 round-binary-shift sign bitor ] [
magnitude 10 top - round-binary-shift
:> significand! significand 2048 >= [
significand -1 shift significand! exponent 1 +
exponent!
] when exponent 31 >=
[ sign 31744 bitor ] [
sign exponent 10 shift bitor significand 1024 -
bitor
] if
] if
] if ;