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)
This commit is contained in:
Ulrich Müller 2025-02-01 23:10:53 +01:00
parent a8e8524379
commit 1639ad2814
2 changed files with 7 additions and 7 deletions

View file

@ -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)

View file

@ -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)