Function: math-normalize-hms
math-normalize-hms is an autoloaded and byte-compiled function defined
in calc-forms.el.gz.
Signature
(math-normalize-hms A)
Source Code
;; Defined in /usr/src/emacs/lisp/calc/calc-forms.el.gz
;;;; Hours-minutes-seconds forms.
(defun math-normalize-hms (a)
(let ((h (math-normalize (nth 1 a)))
(m (math-normalize (nth 2 a)))
(s (let ((calc-internal-prec (max (- calc-internal-prec 4) 3)))
(math-normalize (nth 3 a)))))
(if (or
(math-negp h)
(and (= h 0) (math-negp m))
(and (= h 0) (= m 0) (math-negp s)))
(progn
(if (math-posp s)
(setq s (math-add s -60)
m (math-add m 1)))
(if (math-posp m)
(setq m (math-add m -60)
h (math-add h 1)))
(if (not (Math-lessp -60 s))
(setq s (math-add s 60)
m (math-add m -1)))
(if (not (Math-lessp -60 m))
(setq m (math-add m 60)
h (math-add h -1))))
(if (math-negp s)
(setq s (math-add s 60)
m (math-add m -1)))
(if (math-negp m)
(setq m (math-add m 60)
h (math-add h -1)))
(if (not (Math-lessp s 60))
(setq s (math-add s -60)
m (math-add m 1)))
(if (not (Math-lessp m 60))
(setq m (math-add m -60)
h (math-add h 1))))
(if (and (eq (car-safe s) 'float)
(<= (+ (math-numdigs (nth 1 s)) (nth 2 s))
(- 2 calc-internal-prec)))
(setq s 0))
(list 'hms h m s)))