2
;;;; Author: Paul Dietz
3
;;;; Created: Mon Aug 4 22:16:00 2003
4
;;;; Contains: Tests of FLOOR
8
(compile-and-load "numbers-aux.lsp")
9
(compile-and-load "floor-aux.lsp")
13
(deftest floor.error.1
14
(signals-error (floor) program-error)
17
(deftest floor.error.2
18
(signals-error (floor 1.0 1 nil) program-error)
60
(loop for x in (remove-if #'zerop *reals*)
61
for (q r) = (multiple-value-list (floor x x))
64
(if (rationalp x) (eql r 0)
70
(loop for x in (remove-if #'zerop *reals*)
71
for (q r) = (multiple-value-list (floor (- x) x))
72
unless (and (eql q -1)
74
(if (rationalp x) (eql r 0)
80
(let* ((radix (float-radix 1.0s0))
81
(rad (float radix 1.0s0))
83
(loop for i from 1 to 1000
85
for (q r) = (multiple-value-list (floor x))
88
collect (list i x q r)))
92
(let* ((radix (float-radix 1.0s0))
93
(rad (float radix 1.0s0))
95
(loop for i from 1 to 1000
97
for (q r) = (multiple-value-list (floor x))
98
unless (and (eql q (1- i))
100
collect (list i x q r)))
104
(let* ((radix (float-radix 1.0f0))
105
(rad (float radix 1.0f0))
106
(rrad (/ 1.0f0 rad)))
107
(loop for i from 1 to 1000
109
for (q r) = (multiple-value-list (floor x))
110
unless (and (eql q i)
112
collect (list i x q r)))
116
(let* ((radix (float-radix 1.0f0))
117
(rad (float radix 1.0f0))
118
(rrad (/ 1.0f0 rad)))
119
(loop for i from 1 to 1000
121
for (q r) = (multiple-value-list (floor x))
122
unless (and (eql q (1- i))
124
collect (list i x q r)))
128
(let* ((radix (float-radix 1.0d0))
129
(rad (float radix 1.0d0))
130
(rrad (/ 1.0d0 rad)))
131
(loop for i from 1 to 1000
133
for (q r) = (multiple-value-list (floor x))
134
unless (and (eql q i)
136
collect (list i x q r)))
140
(let* ((radix (float-radix 1.0d0))
141
(rad (float radix 1.0d0))
142
(rrad (/ 1.0d0 rad)))
143
(loop for i from 1 to 1000
145
for (q r) = (multiple-value-list (floor x))
146
unless (and (eql q (1- i))
148
collect (list i x q r)))
152
(let* ((radix (float-radix 1.0l0))
153
(rad (float radix 1.0l0))
154
(rrad (/ 1.0l0 rad)))
155
(loop for i from 1 to 1000
157
for (q r) = (multiple-value-list (floor x))
158
unless (and (eql q i)
160
collect (list i x q r)))
164
(let* ((radix (float-radix 1.0l0))
165
(rad (float radix 1.0l0))
166
(rrad (/ 1.0l0 rad)))
167
(loop for i from 1 to 1000
169
for (q r) = (multiple-value-list (floor x))
170
unless (and (eql q (1- i))
172
collect (list i x q r)))
175
;;; To add: tests that involve adding/subtracting EPSILON constants
176
;;; (suitably scaled) to floated integers.