Files
2026-05-05 01:38:51 -05:00

24 lines
915 B
EmacsLisp

// cycle-300yr.el CycleCalendar with a 100-year period proves the math
// holds at long periods. (300 years exceeds int64 nanos: 2^63 ns 292 yr;
// 100 yr is the largest round period that fits while leaving headroom for
// instants on either side.) One earth year apart yields phase_diff ~ 0.01.
fn run_test() -> String {
// 100 Julian years = 100 * 31557600 = 3155760000 seconds.
let period: Duration = duration_seconds(3155760000)
let cal: Calendar = cycle_calendar(period)
let base: Instant = unix_seconds(0)
let later: Instant = unix_seconds(31557600)
let ct1: CalendarTime = in_calendar(base, cal)
let ct2: CalendarTime = in_calendar(later, cal)
let p1: Float = cal_cycle_phase(ct1)
let p2: Float = cal_cycle_phase(ct2)
let diff: Float = p2 - p1
// 1 year / 100 years = 0.01
return format_float(diff, 2)
}
fn main() -> Void {
println(run_test())
}