Function: comp-cstr-set-range-for-arithm
comp-cstr-set-range-for-arithm is a macro defined in comp-cstr.el.gz.
Signature
(comp-cstr-set-range-for-arithm DST SRC1 SRC2 &rest RANGE-BODY)
Source Code
;; Defined in /usr/src/emacs/lisp/emacs-lisp/comp-cstr.el.gz
(defmacro comp-cstr-set-range-for-arithm (dst src1 src2 &rest range-body)
;; Prevent some code duplication for `comp-cstr-add-2'
;; `comp-cstr-sub-2'.
(declare (debug (range-body))
(indent defun))
`(with-comp-cstr-accessors
(if (or (neg src1) (neg src2))
(setf (typeset ,dst) '(number))
(when-let ((r1 (range ,src1))
(r2 (range ,src2)))
(let* ((l1 (comp-cstr-smallest-in-range r1))
(l2 (comp-cstr-smallest-in-range r2))
(h1 (comp-cstr-greatest-in-range r1))
(h2 (comp-cstr-greatest-in-range r2)))
(setf (typeset ,dst) (when (cl-some (lambda (x)
(comp-subtype-p 'float x))
(append (typeset src1)
(typeset src2)))
'(float))
(range ,dst) ,@range-body))))))