calc/calc-units.el (math-logunits-quant): Add support for

non-logarithmic units.
This commit is contained in:
Jay Belanger 2011-02-07 16:25:31 -06:00
parent 4ec28e14ba
commit 226590f8d1
2 changed files with 25 additions and 18 deletions

View file

@ -1,3 +1,8 @@
2011-02-07 Jay Belanger <jay.p.belanger@gmail.com>
* calc/calc-units.el (math-logunits-quant): Add support for
non-logarithmic units.
2011-02-07 Ken Manheimer <ken.manheimer@gmail.com>
* allout.el (allout-after-copy-or-kill-hook): New hook for

View file

@ -1737,26 +1737,28 @@ If EXPR is nil, return nil."
(calc-binary-op "lu/" 'calcFunc-lupowerdiv arg)))))
(defun math-logunits-quant (val ref power)
(let ((lunit (math-simplify (math-extract-logunits val))))
(let* ((units (math-simplify (math-extract-units val)))
(lunit (math-simplify (math-extract-logunits units))))
(if (not (eq (car-safe lunit) 'var))
(calc-record-why "*Improper logarithmic unit" lunit)
(if (not (eq 1 (math-simplify (math-extract-units (math-div val lunit)))))
(calc-record-why "*Inappropriate units" nil)
(let ((coeff (math-simplify (math-div val lunit))))
(if (equal lunit '(var dB var-dB))
(math-mul
ref
(math-pow
10
(math-div
coeff
(if power 10 20))))
(math-mul
ref
(calcFunc-exp
(if power
(math-mul 2 coeff)
coeff)))))))))
(let ((runits (math-simplify (math-div units lunit)))
(coeff (math-simplify (math-div val units))))
(math-mul
(if (equal lunit '(var dB var-dB))
(math-mul
ref
(math-pow
10
(math-div
coeff
(if power 10 20))))
(math-mul
ref
(calcFunc-exp
(if power
(math-mul 2 coeff)
coeff))))
runits)))))
(defvar calc-logunits-field-reference)
(defvar calc-logunits-power-reference)