[ unsupported-number-base ]
} case ;
-: payload-nan? ( f -- ? )
+: pprint-nan? ( f -- ? )
{ [ fp-nan? ] [ 0/0. fp-bitwise= not ] [ -0/0. fp-bitwise= not ] } 1&& ;
M: float pprint*
- dup payload-nan? [
- \ NAN: [ double>bits >hex text ] pprint-prefix
+ dup pprint-nan? [
+ \ NAN: [
+ [ fp-nan-payload ] [ fp-sign ] bi
+ [ 0xfffffffffffff bitxor 1 + neg ] when >hex text
+ ] pprint-prefix
] [
call-next-method
] if ;
{ "-1/0." } [ -1/0. unparse ] unit-test
{ "0/0." } [ 0/0. unparse ] unit-test
{ "-0/0." } [ -0/0. unparse ] unit-test
+{ "NAN: 123" } [ NAN: 123 unparse ] unit-test
+{ "NAN: -123" } [ NAN: -123 unparse ] unit-test
{ "+" } [ \ + unparse ] unit-test