Changeset 251
- Timestamp:
- Jan 10, 2004, 10:06:50 PM (21 years ago)
- File:
-
- 1 edited
-
trunk/ccl/lib/numbers.lisp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ccl/lib/numbers.lisp
r78 r251 335 335 336 336 (defun lcm-2 (n0 n1) 337 (let* ((small (if (< n0 n1) n0 n1)) 338 (large (if (eq small n0) n1 n0))) 339 (* (truncate large (gcd n0 n1)) small))) 337 (or (typep n0 'integer) (report-bad-arg n0 'integer)) 338 (or (typep n1 'integer) (report-bad-arg n1 'integer)) 339 (locally (declare (integer n0 n1)) 340 (if (zerop n0) 341 0 342 (if (zerop n1) 343 0 344 (let* ((small (if (< n0 n1) n0 n1)) 345 (large (if (eq small n0) n1 n0))) 346 (* (truncate large (gcd n0 n1)) small)))))) 340 347 341 348 (defun lcm (&lexpr numbers) … … 347 354 (if (= count 1) 348 355 (%integer-abs n0) 349 (do* ((i 1 (1+ i))) 350 ((= i count) n0) 351 (declare (fixnum i)) 352 (setq n0 (lcm-2 n0 (%lexpr-ref numbers count i))))))))) 356 (if (= count 2) 357 (lcm-2 n0 (%lexpr-ref numbers count 1)) 358 (do* ((i 1 (1+ i))) 359 ((= i count) n0) 360 (declare (fixnum i)) 361 (setq n0 (lcm-2 n0 (%lexpr-ref numbers count i)))))))))) 353 362 354 363
Note:
See TracChangeset
for help on using the changeset viewer.
