[ 0.0 ] [ 0.0 1.0 ^ ] unit-test
[ 1/0. ] [ 0 -2 ^ ] unit-test
[ t ] [ 0 0.0 ^ fp-nan? ] unit-test
+[ t ] [ 0.0 0.0 ^ fp-nan? ] unit-test
[ 1/0. ] [ 0 -2.0 ^ ] unit-test
[ 0 ] [ 0 3.0 ^ ] unit-test
[ 0 ] [ 0 3 ^ ] unit-test
: real^? ( x y -- ? )
2dup [ real? ] both? [ drop 0 >= ] [ 2drop f ] if ; inline
-: 0^ ( x -- z )
- [ 0/0. ] [ 0 < 1/0. 0 ? ] if-zero ; inline
+: 0^ ( zero x -- z )
+ swap [ 0/0. ] swap '[ 0 < 1/0. _ ? ] if-zero ; inline
: (^mod) ( x y n -- z )
[ make-bits 1 ] dip dup
: ^ ( x y -- z )
{
- { [ over 0 = ] [ nip 0^ ] }
+ { [ over zero? ] [ 0^ ] }
{ [ dup integer? ] [ integer^ ] }
{ [ 2dup real^? ] [ [ >float ] bi@ fpow ] }
[ ^complex ]