From 1639ad2814ae100c9f878a1388eb9ffc9d208b07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ulrich=20M=C3=BCller?= Date: Sat, 1 Feb 2025 23:10:53 +0100 Subject: [PATCH] Avoid ln(10) expression in calc units definition * lisp/calc/calc-ext.el (calc-init-extensions): Autoload calc-math for math-ln-10. * lisp/calc/calc-units.el (math-standard-units): Use new ln10 constant instead of ln(10) in the decibel definition. (math-find-base-units-rec): Allow ln10 in expression. (math-to-standard-rec): Recognize the ln10 constant. (Bug#75861) --- lisp/calc/calc-ext.el | 2 +- lisp/calc/calc-units.el | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lisp/calc/calc-ext.el b/lisp/calc/calc-ext.el index 4ec96d3ef53..060d352fe66 100644 --- a/lisp/calc/calc-ext.el +++ b/lisp/calc/calc-ext.el @@ -877,7 +877,7 @@ calcFunc-tanh math-arccos-raw math-arcsin-raw math-arctan-raw math-arctan2-raw math-cos-raw math-cot-raw math-csc-raw math-exp-minus-1-raw math-exp-raw math-from-radians math-from-radians-2 math-hypot math-infinite-dir -math-ln-raw math-nearly-equal math-nearly-equal-float +math-ln-10 math-ln-raw math-nearly-equal math-nearly-equal-float math-nearly-zerop math-nearly-zerop-float math-nth-root math-sin-cos-raw math-sin-raw math-sqrt math-sqrt-float math-sqrt-raw math-tan-raw math-to-radians math-to-radians-2) diff --git a/lisp/calc/calc-units.el b/lisp/calc/calc-units.el index d2396a9b262..4a638e66132 100644 --- a/lisp/calc/calc-units.el +++ b/lisp/calc/calc-units.el @@ -314,7 +314,8 @@ ;; Logarithmic units ( Np nil "*Neper") - ( dB "(ln(10)/20) Np" "decibel")) + ( dB "(ln10/20) Np" "Decibel" nil + "(ln(10)/20) Np")) "List of predefined units for Calc. Each element is (NAME DEF DESC TEMP-UNIT HUMAN-DEF), where: @@ -948,10 +949,9 @@ If COMP or STD is non-nil, put that in the units table instead." ((eq (car expr) '+) (math-find-base-units-rec (nth 1 expr) pow)) ((eq (car expr) 'var) - (or (eq (nth 1 expr) 'pi) + (or (memq (nth 1 expr) '(pi ln10)) (error "Unknown name %s in defining expression for unit %s" (nth 1 expr) (car math-fbu-entry)))) - ((equal expr '(calcFunc-ln 10))) (t (error "Malformed defining expression for unit %s" (car math-fbu-entry)))))) @@ -1055,9 +1055,9 @@ If COMP or STD is non-nil, put that in the units table instead." math-unit-prefixes)) expr))) expr) - (if (eq base 'pi) - (math-pi) - expr))) + (cond ((eq base 'pi) (math-pi)) + ((eq base 'ln10) (math-ln-10)) + (t expr)))) (if (or (Math-primp expr) (and (eq (car-safe expr) 'calcFunc-subscr)