2
;;;; Author: Paul Dietz
3
;;;; Created: Wed Aug 20 05:13:26 2003
4
;;;; Contains: Tests of TRUNCATE
8
(compile-and-load "numbers-aux.lsp")
9
(compile-and-load "truncate-aux.lsp")
11
(deftest truncate.error.1
12
(signals-error (truncate) program-error)
15
(deftest truncate.error.2
16
(signals-error (truncate 1.0 1 nil) program-error)
58
(loop for x in (remove-if #'zerop *reals*)
59
for (q r) = (multiple-value-list (truncate x x))
62
(if (rationalp x) (eql r 0)
68
(loop for x in (remove-if #'zerop *reals*)
69
for (q r) = (multiple-value-list (truncate (- x) x))
70
unless (and (eql q -1)
72
(if (rationalp x) (eql r 0)
78
(let* ((radix (float-radix 1.0s0))
79
(rad (float radix 1.0s0))
81
(loop for i from 1 to 1000
83
for (q r) = (multiple-value-list (truncate x))
86
collect (list i x q r)))
90
(let* ((radix (float-radix 1.0s0))
91
(rad (float radix 1.0s0))
93
(loop for i from 1 to 1000
95
for (q r) = (multiple-value-list (truncate x))
96
unless (and (eql q (1- i))
98
collect (list i x q r)))
102
(let* ((radix (float-radix 1.0f0))
103
(rad (float radix 1.0f0))
104
(rrad (/ 1.0f0 rad)))
105
(loop for i from 1 to 1000
107
for (q r) = (multiple-value-list (truncate x))
108
unless (and (eql q i)
110
collect (list i x q r)))
114
(let* ((radix (float-radix 1.0f0))
115
(rad (float radix 1.0f0))
116
(rrad (/ 1.0f0 rad)))
117
(loop for i from 1 to 1000
119
for (q r) = (multiple-value-list (truncate x))
120
unless (and (eql q (1- i))
122
collect (list i x q r)))
126
(let* ((radix (float-radix 1.0d0))
127
(rad (float radix 1.0d0))
128
(rrad (/ 1.0d0 rad)))
129
(loop for i from 1 to 1000
131
for (q r) = (multiple-value-list (truncate x))
132
unless (and (eql q i)
134
collect (list i x q r)))
138
(let* ((radix (float-radix 1.0d0))
139
(rad (float radix 1.0d0))
140
(rrad (/ 1.0d0 rad)))
141
(loop for i from 1 to 1000
143
for (q r) = (multiple-value-list (truncate x))
144
unless (and (eql q (1- i))
146
collect (list i x q r)))
150
(let* ((radix (float-radix 1.0l0))
151
(rad (float radix 1.0l0))
152
(rrad (/ 1.0l0 rad)))
153
(loop for i from 1 to 1000
155
for (q r) = (multiple-value-list (truncate x))
156
unless (and (eql q i)
158
collect (list i x q r)))
162
(let* ((radix (float-radix 1.0l0))
163
(rad (float radix 1.0l0))
164
(rrad (/ 1.0l0 rad)))
165
(loop for i from 1 to 1000
167
for (q r) = (multiple-value-list (truncate x))
168
unless (and (eql q (1- i))
170
collect (list i x q r)))