Function: calcFunc-log
calcFunc-log is an autoloaded and byte-compiled function defined in
calc-math.el.gz.
Signature
(calcFunc-log X &optional B)
Source Code
;; Defined in /usr/src/emacs/lisp/calc/calc-math.el.gz
(defun calcFunc-log (x &optional b) ; [N N N] [Public]
(cond ((or (null b) (equal b '(var e var-e)))
(math-normalize (list 'calcFunc-ln x)))
((or (eq b 10) (equal b '(float 1 1)))
(math-normalize (list 'calcFunc-log10 x)))
((math-zerop x)
(if calc-infinite-mode
(math-div (calcFunc-ln x) (calcFunc-ln b))
(math-reject-arg x "*Logarithm of zero")))
((math-zerop b)
(if calc-infinite-mode
(math-div (calcFunc-ln x) (calcFunc-ln b))
(math-reject-arg b "*Logarithm of zero")))
((math-equal-int b 1)
(if calc-infinite-mode
(math-div (calcFunc-ln x) 0)
(math-reject-arg b "*Logarithm base one")))
((math-equal-int x 1)
(if (math-floatp b) '(float 0 0) 0))
((and (Math-ratp x) (Math-ratp b)
(math-posp x) (math-posp b)
(let* ((sign 1) (inv nil)
(xx (if (Math-lessp 1 x)
x
(setq sign -1)
(math-div 1 x)))
(bb (if (Math-lessp 1 b)
b
(setq sign (- sign))
(math-div 1 b)))
(res (if (Math-lessp xx bb)
(setq inv (math-integer-log bb xx))
(math-integer-log xx bb))))
(and (car res)
(setq x (if inv
(math-div 1 (* sign (cdr res)))
(* sign (cdr res)))))))
x)
(calc-symbolic-mode (signal 'inexact-result nil))
((and (Math-numberp x) (Math-numberp b))
(math-with-extra-prec 2
(math-div (math-ln-raw (math-float x))
(math-log-base-raw b))))
((and (eq (car-safe x) 'sdev)
(Math-numberp b))
(math-make-sdev (calcFunc-log (nth 1 x) b)
(math-div (nth 2 x)
(math-mul (nth 1 x)
(math-log-base-raw b)))))
((and (eq (car-safe x) 'intv) (or (Math-posp (nth 2 x))
(not (math-intv-constp x)))
(math-realp b))
(math-make-intv (nth 1 x)
(calcFunc-log (nth 2 x) b)
(calcFunc-log (nth 3 x) b)))
((or (eq (car-safe x) 'intv) (eq (car-safe b) 'intv))
(math-div (calcFunc-ln x) (calcFunc-ln b)))
((or (math-infinitep x)
(math-infinitep b))
(math-div (calcFunc-ln x) (calcFunc-ln b)))
(t (if (Math-numberp b)
(calc-record-why 'numberp x)
(calc-record-why 'numberp b))
(list 'calcFunc-log x b))))