Fix intervals bug
parent
e944286b0e
commit
9c603c164c
|
@ -222,3 +222,15 @@ IN: math.intervals.tests
|
|||
] if ;
|
||||
|
||||
[ t ] [ 40000 [ drop comparison-test ] all? ] unit-test
|
||||
|
||||
[ t ] [ -10 10 [a,b] 0 100 [a,b] assume> 0 10 (a,b] = ] unit-test
|
||||
|
||||
[ t ] [ -10 10 [a,b] 0 100 [a,b] assume>= 0 10 [a,b] = ] unit-test
|
||||
|
||||
[ t ] [ -10 10 [a,b] 0 100 [a,b] assume< -10 10 [a,b] = ] unit-test
|
||||
|
||||
[ t ] [ -10 10 [a,b] -100 0 [a,b] assume< -10 0 [a,b) = ] unit-test
|
||||
|
||||
[ t ] [ -10 10 [a,b] -100 0 [a,b] assume<= -10 0 [a,b] = ] unit-test
|
||||
|
||||
[ t ] [ -10 10 [a,b] 0 100 [a,b] assume<= -10 10 [a,b] = ] unit-test
|
||||
|
|
|
@ -240,7 +240,7 @@ SYMBOL: incomparable
|
|||
from>> first (a,inf] interval-intersect ;
|
||||
|
||||
: assume>= ( i1 i2 -- i3 )
|
||||
to>> first [a,inf] interval-intersect ;
|
||||
from>> first [a,inf] interval-intersect ;
|
||||
|
||||
: integral-closure ( i1 -- i2 )
|
||||
[ from>> first2 [ 1+ ] unless ]
|
||||
|
|
|
@ -363,3 +363,15 @@ PREDICATE: list < improper-list
|
|||
T{ cons f 1 T{ cons f 2 T{ cons f 3 f } } }
|
||||
[ list instance? ] compile-call
|
||||
] unit-test
|
||||
|
||||
! Regression
|
||||
: interval-inference-bug ( obj -- obj x )
|
||||
dup "a" get { array-capacity } declare >=
|
||||
[ dup "b" get { array-capacity } declare >= [ 3 ] [ 4 ] if ] [ 5 ] if ;
|
||||
|
||||
\ interval-inference-bug must-infer
|
||||
|
||||
[ ] [ 1 "a" set 2 "b" set ] unit-test
|
||||
[ 2 3 ] [ 2 interval-inference-bug ] unit-test
|
||||
[ 1 4 ] [ 1 interval-inference-bug ] unit-test
|
||||
[ 0 5 ] [ 0 interval-inference-bug ] unit-test
|
||||
|
|
Loading…
Reference in New Issue