Commit 632f9a0e by Paul Eggert

### (calendar-/, calendar-%): Remove, since floor and mod

`now subsume them.  All callers changed.`
parent e7bb3aeb
 ... ... @@ -46,21 +46,6 @@ (calendar-absolute-from-gregorian '(1 1 1970)) "Absolute date of starting date of system clock.") (defun calendar-/ (a b) "Floor(A/B) = the greatest integer not greater than A divided by B. A and B be must both be integers, and B must be positive." (if (< a 0) (- (/ (- b 1 a) b)) (/ a b))) (defun calendar-% (a b) "A modulo B; always nonnegative. A and B be must both be integers, and B must be positive." (let ((m (% a b))) (if (< m 0) (+ m b) m))) (defun calendar-absolute-from-time (x utc-diff) "Absolute local date of time X; local time is UTC-DIFF seconds from UTC. ... ... @@ -73,13 +58,13 @@ absolute date ABS-DATE is the equivalent moment to X." (let* ((h (car x)) (xtail (cdr x)) (l (+ utc-diff (if (numberp xtail) xtail (car xtail)))) (u (+ (* 512 (calendar-% h 675)) (calendar-/ l 128)))) (u (+ (* 512 (mod h 675)) (floor l 128)))) ;; Overflow is a terrible thing! (cons (+ calendar-system-time-basis ;; floor((2^16 h +l) / (60*60*24)) (* 512 (calendar-/ h 675)) (calendar-/ u 675)) (* 512 (mod h 675)) (floor u 675)) ;; (2^16 h +l) % (60*60*24) (+ (* (calendar-% u 675) 128) (calendar-% l 128))))) (+ (* (mod u 675) 128) (floor l 128))))) (defun calendar-time-from-absolute (abs-date s) "Time of absolute date ABS-DATE, S seconds after midnight. ... ... @@ -89,13 +74,13 @@ Returns the pair (HIGH . LOW) where HIGH and LOW are the high and low ignoring leap seconds, that is the equivalent moment to S seconds after midnight UTC on absolute date ABS-DATE." (let* ((a (- abs-date calendar-system-time-basis)) (u (+ (* 163 (calendar-% a 512)) (calendar-/ s 128)))) (u (+ (* 163 (mod a 512)) (floor s 128)))) ;; Overflow is a terrible thing! (cons ;; (60*60*24*a + s) / 2^16 (+ a (* 163 (calendar-/ a 512)) (calendar-/ u 512)) (+ a (* 163 (floor a 512)) (floor u 512)) ;; (60*60*24*a + s) % 2^16 (+ (* 128 (calendar-% u 512)) (calendar-% s 128))))) (+ (* 128 (mod u 512)) (mod s 128))))) (defun calendar-next-time-zone-transition (time) "Return the time of the next time zone transition after TIME. ... ...
 ... ... @@ -53,16 +53,9 @@ (require 'calendar) (defun mayan-mod (m n) "Returns M mod N; value is *always* non-negative when N>0." (let ((v (% m n))) (if (and (> 0 v) (> n 0)) (+ v n) v))) (defun mayan-adjusted-mod (m n) "Non-negative remainder of M/N with N instead of 0." (1+ (mayan-mod (1- m) n))) (1+ (mod (1- m) n))) (defconst calendar-mayan-days-before-absolute-zero 1137140 "Number of days of the Mayan calendar epoch before absolute day 0. ... ... @@ -132,9 +125,9 @@ research. Using 1232041 will give you the correlation used by Spinden.") (defun calendar-mayan-haab-difference (date1 date2) "Number of days from Mayan haab DATE1 to next occurrence of haab date DATE2." (mayan-mod (+ (* 20 (- (cdr date2) (cdr date1))) (- (car date2) (car date1))) 365)) (mod (+ (* 20 (- (cdr date2) (cdr date1))) (- (car date2) (car date1))) 365)) (defun calendar-mayan-haab-on-or-before (haab-date date) "Absolute date of latest HAAB-DATE on or before absolute DATE." ... ... @@ -193,10 +186,10 @@ Echo Mayan date if NOECHO is t." "Number of days from Mayan tzolkin DATE1 to next occurrence of tzolkin DATE2." (let ((number-difference (- (car date2) (car date1))) (name-difference (- (cdr date2) (cdr date1)))) (mayan-mod (+ number-difference (* 13 (mayan-mod (* 3 (- number-difference name-difference)) 20))) 260))) (mod (+ number-difference (* 13 (mod (* 3 (- number-difference name-difference)) 20))) 260))) (defun calendar-mayan-tzolkin-on-or-before (tzolkin-date date) "Absolute date of latest TZOLKIN-DATE on or before absolute DATE." ... ... @@ -250,9 +243,9 @@ Returns nil if such a tzolkin-haab combination is impossible." (difference (- tzolkin-difference haab-difference))) (if (= (% difference 5) 0) (- date (mayan-mod (- date (+ haab-difference (* 365 difference))) 18980)) (mod (- date (+ haab-difference (* 365 difference))) 18980)) nil))) (defun calendar-read-mayan-haab-date () ... ...
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!