Function: math-logunits-add
math-logunits-add is a byte-compiled function defined in
calc-units.el.gz.
Signature
(math-logunits-add A B NEG POWER)
Source Code
;; Defined in /usr/src/emacs/lisp/calc/calc-units.el.gz
(defun math-logunits-add (a b neg power)
(let ((aunit (math-simplify (math-extract-logunits a))))
(if (not (eq (car-safe aunit) 'var))
(calc-record-why "*Improper logarithmic unit" aunit)
(let* ((units (math-extract-units a))
(acoeff (math-simplify (math-remove-units a)))
(bcoeff (math-simplify (math-to-standard-units
(list '/ b units) nil))))
(if (math-units-in-expr-p bcoeff nil)
(calc-record-why "*Inconsistent units" nil)
(if (and neg
(or (math-lessp acoeff bcoeff)
(math-equal acoeff bcoeff)))
(calc-record-why "*Improper coefficients" nil)
(math-mul
(if (equal aunit '(var dB var-dB))
(let ((coef (if power 10 20)))
(math-mul coef
(math-conditional-apply 'calcFunc-log10
(if neg
(math-sub
(math-conditional-pow 10 (math-div acoeff coef))
(math-conditional-pow 10 (math-div bcoeff coef)))
(math-add
(math-conditional-pow 10 (math-div acoeff coef))
(math-conditional-pow 10 (math-div bcoeff coef)))))))
(let ((coef (if power 2 1)))
(math-div
(math-conditional-apply 'calcFunc-ln
(if neg
(math-sub
(math-conditional-apply 'calcFunc-exp (math-mul coef acoeff))
(math-conditional-apply 'calcFunc-exp (math-mul coef bcoeff)))
(math-add
(math-conditional-apply 'calcFunc-exp (math-mul coef acoeff))
(math-conditional-apply 'calcFunc-exp (math-mul coef bcoeff)))))
coef)))
units)))))))