History

rewrite numerical comparison logic

This should fix many corner cases. One big change from how this previously worked is that no comparison operators will return "these are equal" if at least one of the arguments is NaN - eq?, equal?, eqv? and = all will return NIL.

Sigrid Solveig Haflínudóttir committed 1 year ago

Commit 99a1b911 parent 6cf5e218 files · +114 −157Browse files

Showing the changes to test (1 of 8 files). Show all

Unified · Split

test/unittest.sl+16−16
@@ -217,10 +217,10 @@ · 216 unmodified lines
217217 (assert (nan? -nan.0))
218218 (assert (nan? (f32 +nan.0)))
219219 (assert (nan? (f32 -nan.0)))
220−(assert (equal? +nan.0 +nan.0))
221−(assert (equal? -nan.0 -nan.0))
222−(assert (equal? (f32 +nan.0) (f32 +nan.0)))
223−(assert (equal? (f32 -nan.0) (f32 -nan.0)))
220+(assert (not (equal? +nan.0 +nan.0)))
221+(assert (not (equal? -nan.0 -nan.0)))
222+(assert (not (equal? (f32 +nan.0) (f32 +nan.0))))
223+(assert (not (equal? (f32 -nan.0) (f32 -nan.0))))
224224 (assert (not (= +nan.0 +nan.0)))
225225 (assert (not (= +nan.0 -nan.0)))
226226 (assert (not (= -nan.0 -nan.0)))
@@ -261,22 +261,22 @@ · 34 unmodified lines
261261 (assert (not (and (>= 2 1 2) (<= 2 1 2))))
262262
263263 ; -0.0 etc.
264−(assert (not (equal? 0.0 0)))
264+(assert (equal? 0.0 0))
265265 (assert (equal? 0.0 0.0))
266−(assert (not (equal? -0.0 0.0)))
267−(assert (not (equal? -0.0 0)))
268−(assert (not (eqv? 0.0 0)))
269−(assert (not (eqv? -0.0 0)))
270−(assert (not (eqv? -0.0 0.0)))
266+(assert (equal? -0.0 0.0))
267+(assert (equal? -0.0 0))
268+(assert (eqv? 0.0 0))
269+(assert (eqv? -0.0 0))
270+(assert (eqv? -0.0 0.0))
271271 (assert (= 0.0 -0.0))
272272 ; same but f32
273−(assert (not (equal? 0.0f 0)))
273+(assert (equal? 0.0f 0))
274274 (assert (equal? 0.0f 0.0f))
275−(assert (not (equal? -0.0f 0.0f)))
276−(assert (not (equal? -0.0f 0)))
277−(assert (not (eqv? 0.0f 0)))
278−(assert (not (eqv? -0.0f 0)))
279−(assert (not (eqv? -0.0f 0.0f)))
275+(assert (equal? -0.0f 0.0f))
276+(assert (equal? -0.0f 0))
277+(assert (eqv? 0.0f 0))
278+(assert (eqv? -0.0f 0))
279+(assert (eqv? -0.0f 0.0f))
280280 (assert (= 0.0f -0.0f))
281281
282282 ; and, or

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t