Function: math-convert-temperature
math-convert-temperature is an autoloaded and byte-compiled function
defined in calc-units.el.gz.
Signature
(math-convert-temperature EXPR OLD NEW &optional PURE)
Source Code
;; Defined in /usr/src/emacs/lisp/calc/calc-units.el.gz
(defun math-convert-temperature (expr old new &optional pure)
(let* ((units (math-single-units-in-expr-p expr))
(uold (if old
(if (or (null units)
(equal (nth 1 old) (car units)))
(math-check-unit-name old)
(error "Inconsistent temperature units"))
units))
(unew (math-check-unit-name new)))
(unless (and (consp unew) (nth 3 unew))
(error "Not a valid temperature unit"))
(unless (and (consp uold) (nth 3 uold))
(error "Not a pure temperature expression"))
(let ((v (car uold)))
(setq expr (list '/ expr (list 'var v
(intern (concat "var-"
(symbol-name v)))))))
(or (eq (nth 3 uold) (nth 3 unew))
(cond ((eq (nth 3 uold) 'K)
(setq expr (list '- expr '(/ 27315 100)))
(if (eq (nth 3 unew) 'F)
(setq expr (list '+ (list '* expr '(/ 9 5)) 32))))
((eq (nth 3 uold) 'C)
(if (eq (nth 3 unew) 'F)
(setq expr (list '+ (list '* expr '(/ 9 5)) 32))
(setq expr (list '+ expr '(/ 27315 100)))))
(t
(setq expr (list '* (list '- expr 32) '(/ 5 9)))
(if (eq (nth 3 unew) 'K)
(setq expr (list '+ expr '(/ 27315 100)))))))
(if pure
expr
(list '* expr new))))