165 |
(reduce #'+ a :end 3)) |
(reduce #'+ a :end 3)) |
166 |
6) |
6) |
167 |
|
|
168 |
|
;;; Specialized vectors |
169 |
|
|
170 |
|
(deftest reduce-array.20 |
171 |
|
(do-special-integer-vectors |
172 |
|
(v #(1 0 0 1 1 0) nil) |
173 |
|
(assert (eql (reduce #'+ v) 3))) |
174 |
|
nil) |
175 |
|
|
176 |
|
(deftest reduce-array.21 |
177 |
|
(do-special-integer-vectors |
178 |
|
(v #(1 0 0 1 1 0) nil) |
179 |
|
(assert (equal (reduce #'cons v :from-end t :initial-value nil) |
180 |
|
'(1 0 0 1 1 0)))) |
181 |
|
nil) |
182 |
|
|
183 |
|
(deftest reduce-array.22 |
184 |
|
(do-special-integer-vectors |
185 |
|
(v #(1 2 3 4 5 6 7) nil) |
186 |
|
(assert (eql (reduce #'+ v) 28)) |
187 |
|
(assert (eql (reduce #'+ v :from-end t) 28)) |
188 |
|
(assert (eql (reduce #'+ v :start 1) 27)) |
189 |
|
(assert (eql (reduce #'+ v :initial-value 10) 38)) |
190 |
|
(assert (eql (reduce #'+ v :end 6) 21))) |
191 |
|
nil) |
192 |
|
|
193 |
|
(deftest reduce-array.23 |
194 |
|
(let* ((len 10) |
195 |
|
(expected (* 1/2 (1+ len) len))) |
196 |
|
(loop for etype in '(short-float single-float double-float long-float) |
197 |
|
for vals = (loop for i from 1 to len collect (coerce i etype)) |
198 |
|
for vec = (make-array len :initial-contents vals :element-type etype) |
199 |
|
for result = (reduce #'+ vec) |
200 |
|
unless (= result (coerce expected etype)) |
201 |
|
collect (list etype vals vec result))) |
202 |
|
nil) |
203 |
|
|
204 |
|
(deftest reduce-array.24 |
205 |
|
(let* ((len 10) |
206 |
|
(expected (* 1/2 (1+ len) len))) |
207 |
|
(loop for cetype in '(short-float single-float double-float long-float) |
208 |
|
for etype = `(complex ,cetype) |
209 |
|
for vals = (loop for i from 1 to len collect (complex (coerce i cetype) |
210 |
|
(coerce (- i) cetype))) |
211 |
|
for vec = (make-array len :initial-contents vals :element-type etype) |
212 |
|
for result = (reduce #'+ vec) |
213 |
|
unless (= result (complex (coerce expected cetype) (coerce (- expected) cetype))) |
214 |
|
collect (list etype vals vec result))) |
215 |
|
nil) |
216 |
|
|
217 |
|
(deftest reduce-array.25 |
218 |
|
(do-special-integer-vectors |
219 |
|
(v (vector 0 most-positive-fixnum 0 most-positive-fixnum 0) nil) |
220 |
|
(assert (eql (reduce #'+ v) (* 2 most-positive-fixnum)))) |
221 |
|
nil) |
222 |
|
|
223 |
;;;;;;;; |
;;;;;;;; |
224 |
|
|