on 492ae2f help sign in
63 lines 1.4 kB history raw
1### `++yawn`
3Days since beginning of time
5Inverse of `yall`, computes number of days A.D. from y/m/d date as the
6tuple `[yer=@ud mot=@ud day=@ud]`.
8Accepts
9-------
11`yer` is an unsigned decimal, `@ud`.
13`mon` is an unsigned decimal, `@ud`.
15`day` is an unsigned decimal, `@ud`.
17Produces
18--------
20A `@ud`.
22Source
23------
25 ++ yawn :: days since Jesus
26 |= {yer/@ud mot/@ud day/@ud}
27 ^- @ud
28 => .(mot (dec mot), day (dec day))
29 => ^+ .
30 %= .
31 day
32 =+ cah=?:((yelp yer) moy:yo moh:yo)
33 |- ^- @ud
34 ?: =(0 mot)
35 day
36 $(mot (dec mot), cah (slag 1 cah), day (add day (snag 0 cah)))
37 ==
38 |- ^- @ud
39 ?. =(0 (mod yer 4))
40 =+ ney=(dec yer)
41 $(yer ney, day (add day ?:((yelp ney) 366 365)))
42 ?. =(0 (mod yer 100))
43 =+ nef=(sub yer 4)
44 $(yer nef, day (add day ?:((yelp nef) 1.461 1.460)))
45 ?. =(0 (mod yer 400))
46 =+ nec=(sub yer 100)
47 $(yer nec, day (add day ?:((yelp nec) 36.525 36.524)))
48 (add day (mul (div yer 400) (add 1 (mul 4 36.524))))
49 ::
51Examples
52--------
54 ~zod/try=> (yawn 2.014 8 4)
55 735.814
56 ~zod/try=> (yawn 1.776 7 4)
57 648.856
58 ~zod/try=> (yawn 1.990 10 11)
59 727.116
63***