More accurate interval-mod and interval-rem
							parent
							
								
									24a50c8006
								
							
						
					
					
						commit
						61ea749bb6
					
				|  | @ -149,6 +149,12 @@ IN: compiler.tree.propagation.tests | |||
|     ] final-literals | ||||
| ] unit-test | ||||
| 
 | ||||
| [ V{ t } ] [ [ 40 mod 40 < ] final-literals ] unit-test | ||||
| 
 | ||||
| [ V{ f } ] [ [ 40 mod 0 >= ] final-literals ] unit-test | ||||
| 
 | ||||
| [ V{ t } ] [ [ 40 rem 0 >= ] final-literals ] unit-test | ||||
| 
 | ||||
| [ V{ string } ] [ | ||||
|     [ dup string? not [ "Oops" throw ] [ ] if ] final-classes | ||||
| ] unit-test | ||||
|  |  | |||
|  | @ -211,6 +211,10 @@ IN: math.intervals.tests | |||
| 
 | ||||
| [ t ] [ 1 100 [a,b] -1 1 [a,b] interval/i [-inf,inf] = ] unit-test | ||||
| 
 | ||||
| ! Accuracy of interval-mod | ||||
| [ t ] [ full-interval 40 40 [a,b] interval-mod -40 40 (a,b) interval-subset? | ||||
| ] unit-test | ||||
| 
 | ||||
| ! Interval random tester | ||||
| : random-element ( interval -- n ) | ||||
|     dup full-interval eq? [ | ||||
|  |  | |||
|  | @ -270,20 +270,20 @@ TUPLE: interval { from read-only } { to read-only } ; | |||
|     } cond ; | ||||
| 
 | ||||
| : interval-mod ( i1 i2 -- i3 ) | ||||
|     #! Inaccurate. | ||||
|     [ | ||||
|         [ | ||||
|             nip interval-abs to>> first [ neg ] keep (a,b) | ||||
|         ] interval-division-op | ||||
|     ] do-empty-interval ; | ||||
|     { | ||||
|         { [ over empty-interval eq? ] [ drop ] } | ||||
|         { [ dup empty-interval eq? ] [ nip ] } | ||||
|         { [ dup full-interval eq? ] [ nip ] } | ||||
|         [ nip interval-abs to>> first [ neg ] keep (a,b) ] | ||||
|     } cond ; | ||||
| 
 | ||||
| : interval-rem ( i1 i2 -- i3 ) | ||||
|     #! Inaccurate. | ||||
|     [ | ||||
|         [ | ||||
|             nip interval-abs to>> first 0 swap [a,b) | ||||
|         ] interval-division-op | ||||
|     ] do-empty-interval ; | ||||
|     { | ||||
|         { [ over empty-interval eq? ] [ drop ] } | ||||
|         { [ dup empty-interval eq? ] [ nip ] } | ||||
|         { [ dup full-interval eq? ] [ nip ] } | ||||
|         [ nip interval-abs to>> first 0 swap [a,b) ] | ||||
|     } cond ; | ||||
| 
 | ||||
| : interval-recip ( i1 -- i2 ) 1 [a,a] swap interval/ ; | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue