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.
Showing the changes to test (1 of 8 files). Show all
Unified · Split
| @@ -217,10 +217,10 @@ · 216 unmodified lines | ||
| 217 | 217 | (assert (nan? -nan.0)) |
| 218 | 218 | (assert (nan? (f32 +nan.0))) |
| 219 | 219 | (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)))) | |
| 224 | 224 | (assert (not (= +nan.0 +nan.0))) |
| 225 | 225 | (assert (not (= +nan.0 -nan.0))) |
| 226 | 226 | (assert (not (= -nan.0 -nan.0))) |
| @@ -261,22 +261,22 @@ · 34 unmodified lines | ||
| 261 | 261 | (assert (not (and (>= 2 1 2) (<= 2 1 2)))) |
| 262 | 262 | |
| 263 | 263 | ; -0.0 etc. |
| 264 | −(assert (not (equal? 0.0 0))) | |
| 264 | +(assert (equal? 0.0 0)) | |
| 265 | 265 | (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)) | |
| 271 | 271 | (assert (= 0.0 -0.0)) |
| 272 | 272 | ; same but f32 |
| 273 | −(assert (not (equal? 0.0f 0))) | |
| 273 | +(assert (equal? 0.0f 0)) | |
| 274 | 274 | (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)) | |
| 280 | 280 | (assert (= 0.0f -0.0f)) |
| 281 | 281 | |
| 282 | 282 | ; and, or |