math.functions: make sure zero zero ^ is always nan, regardless of the type of zero
parent
31afdfef50
commit
efe79cf6d3
|
@ -32,6 +32,7 @@ IN: math.functions.tests
|
|||
[ 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
|
||||
|
|
|
@ -82,8 +82,8 @@ M: complex exp >rect [ exp ] dip polar> ; inline
|
|||
: 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
|
||||
|
@ -100,7 +100,7 @@ PRIVATE>
|
|||
|
||||
: ^ ( x y -- z )
|
||||
{
|
||||
{ [ over 0 = ] [ nip 0^ ] }
|
||||
{ [ over zero? ] [ 0^ ] }
|
||||
{ [ dup integer? ] [ integer^ ] }
|
||||
{ [ 2dup real^? ] [ [ >float ] bi@ fpow ] }
|
||||
[ ^complex ]
|
||||
|
|
Loading…
Reference in New Issue