#!-sb-doc (declare (ignore doc))
`(defun ,op (&rest args)
#!+sb-doc ,doc
+ (declare (truly-dynamic-extent args))
(if (null args) ,init
(do ((args (cdr args) (cdr args))
(result (car args) (,op result (car args))))
#!+sb-doc
"Subtract the second and all subsequent arguments from the first;
or with one argument, negate the first argument."
+ (declare (truly-dynamic-extent more-numbers))
(if more-numbers
(do ((nlist more-numbers (cdr nlist))
(result number))
#!+sb-doc
"Divide the first argument by each of the following arguments, in turn.
With one argument, return reciprocal."
+ (declare (truly-dynamic-extent more-numbers))
(if more-numbers
(do ((nlist more-numbers (cdr nlist))
(result number))
#!+sb-doc
"Return the bit-wise or of its arguments. Args must be integers."
(declare (list integers))
+ (declare (truly-dynamic-extent integers))
(if integers
(do ((result (pop integers) (logior result (pop integers))))
((null integers) result)
#!+sb-doc
"Return the bit-wise exclusive or of its arguments. Args must be integers."
(declare (list integers))
+ (declare (truly-dynamic-extent integers))
(if integers
(do ((result (pop integers) (logxor result (pop integers))))
((null integers) result)
#!+sb-doc
"Return the bit-wise and of its arguments. Args must be integers."
(declare (list integers))
+ (declare (truly-dynamic-extent integers))
(if integers
(do ((result (pop integers) (logand result (pop integers))))
((null integers) result)
#!+sb-doc
"Return the bit-wise equivalence of its arguments. Args must be integers."
(declare (list integers))
+ (declare (truly-dynamic-extent integers))
(if integers
(do ((result (pop integers) (logeqv result (pop integers))))
((null integers) result)
#!+sb-doc
"Return the greatest common divisor of the arguments, which must be
integers. Gcd with no arguments is defined to be 0."
+ (declare (truly-dynamic-extent integers))
(cond ((null integers) 0)
((null (cdr integers)) (abs (the integer (car integers))))
(t
#!+sb-doc
"Return the least common multiple of one or more integers. LCM of no
arguments is defined to be 1."
+ (declare (truly-dynamic-extent integers))
(cond ((null integers) 1)
((null (cdr integers)) (abs (the integer (car integers))))
(t