Function: calcFunc-log10
calcFunc-log10 is an autoloaded and byte-compiled function defined in
calc-math.el.gz.
Signature
(calcFunc-log10 X)
Source Code
;; Defined in /usr/src/emacs/lisp/calc/calc-math.el.gz
(defun calcFunc-log10 (x) ; [N N] [Public]
(cond ((math-equal-int x 1)
(if (math-floatp x) '(float 0 0) 0))
((and (Math-integerp x)
(math-posp x)
(let ((res (math-integer-log x 10)))
(and (car res)
(setq x (cdr res)))))
x)
((and (eq (car-safe x) 'frac)
(eq (nth 1 x) 1)
(let ((res (math-integer-log (nth 2 x) 10)))
(and (car res)
(setq x (- (cdr res))))))
x)
((math-zerop x)
(if calc-infinite-mode
'(neg (var inf var-inf))
(math-reject-arg x "*Logarithm of zero")))
(calc-symbolic-mode (signal 'inexact-result nil))
((Math-numberp x)
(math-with-extra-prec 2
(let ((xf (math-float x)))
(if (eq (nth 1 xf) 0)
(math-reject-arg x "*Logarithm of zero"))
(if (Math-integer-posp (nth 1 xf))
(if (eq (nth 1 xf) 1) ; log10(1*10^n) = n
(math-float (nth 2 xf))
(let ((xdigs (1- (math-numdigs (nth 1 xf)))))
(math-add-float
(math-div-float (math-ln-raw-2
(list 'float (nth 1 xf) (- xdigs)))
(math-ln-10))
(math-float (+ (nth 2 xf) xdigs)))))
(math-div (calcFunc-ln xf) (math-ln-10))))))
((eq (car-safe x) 'sdev)
(math-make-sdev (calcFunc-log10 (nth 1 x))
(math-div (nth 2 x)
(math-mul (nth 1 x) (math-ln-10)))))
((and (eq (car-safe x) 'intv) (or (Math-posp (nth 2 x))
(not (math-intv-constp x))))
(math-make-intv (nth 1 x)
(calcFunc-log10 (nth 2 x))
(calcFunc-log10 (nth 3 x))))
((math-infinitep x)
(if (equal x '(var nan var-nan))
x
'(var inf var-inf)))
(t (calc-record-why 'numberp x)
(list 'calcFunc-log10 x))))