Fix intervals bug

db4
Slava Pestov 2008-07-04 18:18:00 -05:00
parent e944286b0e
commit 9c603c164c
3 changed files with 25 additions and 1 deletions

View File

@ -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

View File

@ -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 ]

View File

@ -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