From 226590f8d1247314abf913cc1bc77621f8a5bca9 Mon Sep 17 00:00:00 2001 From: Jay Belanger Date: Mon, 7 Feb 2011 16:25:31 -0600 Subject: [PATCH] calc/calc-units.el (math-logunits-quant): Add support for non-logarithmic units. --- lisp/ChangeLog | 5 +++++ lisp/calc/calc-units.el | 38 ++++++++++++++++++++------------------ 2 files changed, 25 insertions(+), 18 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index a55a656af80..8826f884560 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2011-02-07 Jay Belanger + + * calc/calc-units.el (math-logunits-quant): Add support for + non-logarithmic units. + 2011-02-07 Ken Manheimer * allout.el (allout-after-copy-or-kill-hook): New hook for diff --git a/lisp/calc/calc-units.el b/lisp/calc/calc-units.el index 65b3356b13a..569d5d3dc35 100644 --- a/lisp/calc/calc-units.el +++ b/lisp/calc/calc-units.el @@ -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) -- 2.39.5