[ 0 15 [a,b] interval-contains? ] all?
] unit-test
-${ 0 256 [a,b] } [ 0 255 [a,b] dup interval-bitor ] unit-test
-${ 0 512 [a,b] } [ 0 256 [a,b] dup interval-bitor ] unit-test
+${ 0 255 [a,b] } [ 0 255 [a,b] dup interval-bitor ] unit-test
+${ 0 511 [a,b] } [ 0 256 [a,b] dup interval-bitor ] unit-test
${ -128 127 [a,b] } [ -128 127 [a,b] dup interval-bitor ] unit-test
${ -256 255 [a,b] } [ -128 128 [a,b] dup interval-bitor ] unit-test
: interval-bitor ( i1 i2 -- i3 )
[
{ { [ 2dup [ interval-nonnegative? ] both? ]
- ! FIXME: this should maybe be bitweight 1 -
- [ [ max-lower-bound ] [ max-upper-bound ] 2bi bit-weight [a,b] ] }
+ [ [ max-lower-bound ] [ max-upper-bound ] 2bi bit-weight 1 - [a,b] ] }
{ [ 2dup [ interval-negative? ] both? ]
[ max-lower-bound -1 [a,b] ] }
[ interval-union interval-bit-weight [ neg ] [ 1 - ] bi [a,b] ]