Function: math-convert-units
math-convert-units is an autoloaded and byte-compiled function defined
in calc-units.el.gz.
Signature
(math-convert-units EXPR NEW-UNITS &optional PURE)
Source Code
;; Defined in /usr/src/emacs/lisp/calc/calc-units.el.gz
(defun math-convert-units (expr new-units &optional pure)
(if (eq (car-safe new-units) 'var)
(let ((unew (assq (nth 1 new-units)
(math-build-units-table))))
(if (eq (car-safe (nth 1 unew)) '+)
(setq new-units (nth 1 unew)))))
(math-with-extra-prec 2
(let ((compat (and (not pure)
(math-find-compatible-unit expr new-units)))
(math-cu-unit-list nil)
(math-combining-units nil))
(if compat
(math-simplify-units
(math-mul (math-mul (math-simplify-units
(math-div expr (math-pow (car compat)
(cdr compat))))
(math-pow new-units (cdr compat)))
(math-simplify-units
(math-to-standard-units
(math-pow (math-div (car compat) new-units)
(cdr compat))
nil))))
(when (setq math-cu-unit-list (math-decompose-units new-units))
(setq new-units (nth 2 (car math-cu-unit-list))))
(when (eq (car-safe expr) '+)
(setq expr (math-simplify-units expr)))
(if (math-units-in-expr-p expr t)
(let ((math-cu-new-units new-units)
(math-cu-pure pure))
(math-convert-units-rec expr))
(math-apply-units (math-to-standard-units
(list '/ expr new-units) nil)
new-units math-cu-unit-list pure))))))