Function: lunar-new-moon-time

lunar-new-moon-time is a byte-compiled function defined in lunar.el.gz.

Signature

(lunar-new-moon-time K)

Documentation

Astronomical (Julian) day number of K th new moon.

Source Code

;; Defined in /usr/src/emacs/lisp/calendar/lunar.el.gz
;; For the Chinese calendar the calculations for the new moon need to be more
;; accurate than those above, so we use more terms in the approximation.
(defun lunar-new-moon-time (k)
  "Astronomical (Julian) day number of K th new moon."
  (let* ((T (/ k 1236.85))
         (T2 (* T T))
         (T3 (* T T T))
         (T4 (* T2 T2))
         (JDE (+ 2451550.09765
                 (* 29.530588853 k)
                 (* 0.0001337 T2)
                 (* -0.000000150 T3)
                 (* 0.00000000073 T4)))
         (E (- 1 (* 0.002516 T) (* 0.0000074 T2)))
         (sun-anomaly (+ 2.5534
                         (* 29.10535669 k)
                         (* -0.0000218 T2)
                         (* -0.00000011 T3)))
         (moon-anomaly (+ 201.5643
                          (* 385.81693528 k)
                          (* 0.0107438 T2)
                          (* 0.00001239 T3)
                          (* -0.000000058 T4)))
         (moon-argument (+ 160.7108
                           (* 390.67050274 k)
                           (* -0.0016341 T2)
                           (* -0.00000227 T3)
                           (* 0.000000011 T4)))
         (omega (+ 124.7746
                   (* -1.56375580 k)
                   (* 0.0020691 T2)
                   (* 0.00000215 T3)))
         (A1  (+ 299.77 (*  0.107408 k) (* -0.009173 T2)))
         (A2  (+ 251.88 (*  0.016321 k)))
         (A3  (+ 251.83 (* 26.641886 k)))
         (A4  (+ 349.42 (* 36.412478 k)))
         (A5  (+  84.66 (* 18.206239 k)))
         (A6  (+ 141.74 (* 53.303771 k)))
         (A7  (+ 207.14 (*  2.453732 k)))
         (A8  (+ 154.84 (*  7.306860 k)))
         (A9  (+  34.52 (* 27.261239 k)))
         (A10 (+ 207.19 (*  0.121824 k)))
         (A11 (+ 291.34 (*  1.844379 k)))
         (A12 (+ 161.72 (* 24.198154 k)))
         (A13 (+ 239.56 (* 25.513099 k)))
         (A14 (+ 331.55 (*  3.592518 k)))
         (correction
          (+ (* -0.40720   (solar-sin-degrees moon-anomaly))
             (*  0.17241 E (solar-sin-degrees sun-anomaly))
             (*  0.01608   (solar-sin-degrees (* 2 moon-anomaly)))
             (*  0.01039   (solar-sin-degrees (* 2 moon-argument)))
             (*  0.00739 E (solar-sin-degrees (- moon-anomaly sun-anomaly)))
             (* -0.00514 E (solar-sin-degrees (+ moon-anomaly sun-anomaly)))
             (*  0.00208 E E (solar-sin-degrees (* 2 sun-anomaly)))
             (* -0.00111   (solar-sin-degrees
                            (- moon-anomaly (* 2 moon-argument))))
             (* -0.00057   (solar-sin-degrees
                            (+ moon-anomaly (* 2 moon-argument))))
             (*  0.00056 E (solar-sin-degrees
                            (+ (* 2 moon-anomaly) sun-anomaly)))
             (* -0.00042   (solar-sin-degrees (* 3 moon-anomaly)))
             (*  0.00042 E (solar-sin-degrees
                            (+ sun-anomaly (* 2 moon-argument))))
             (*  0.00038 E (solar-sin-degrees
                            (- sun-anomaly (* 2 moon-argument))))
             (* -0.00024 E (solar-sin-degrees
                            (- (* 2 moon-anomaly) sun-anomaly)))
             (* -0.00017   (solar-sin-degrees omega))
             (* -0.00007   (solar-sin-degrees
                            (+ moon-anomaly (* 2 sun-anomaly))))
             (*  0.00004   (solar-sin-degrees
                            (- (* 2 moon-anomaly) (* 2 moon-argument))))
             (*  0.00004   (solar-sin-degrees (* 3 sun-anomaly)))
             (*  0.00003   (solar-sin-degrees (+ moon-anomaly sun-anomaly
                                                 (* -2 moon-argument))))
             (*  0.00003   (solar-sin-degrees
                            (+ (* 2 moon-anomaly) (* 2 moon-argument))))
             (* -0.00003   (solar-sin-degrees (+ moon-anomaly sun-anomaly
                                                 (* 2 moon-argument))))
             (*  0.00003   (solar-sin-degrees (- moon-anomaly sun-anomaly
                                                 (* -2 moon-argument))))
             (* -0.00002   (solar-sin-degrees (- moon-anomaly sun-anomaly
                                                 (* 2 moon-argument))))
             (* -0.00002   (solar-sin-degrees
                            (+ (* 3 moon-anomaly) sun-anomaly)))
             (*  0.00002   (solar-sin-degrees (* 4 moon-anomaly)))))
         (additional
          (+ (* 0.000325 (solar-sin-degrees A1))
             (* 0.000165 (solar-sin-degrees A2))
             (* 0.000164 (solar-sin-degrees A3))
             (* 0.000126 (solar-sin-degrees A4))
             (* 0.000110 (solar-sin-degrees A5))
             (* 0.000062 (solar-sin-degrees A6))
             (* 0.000060 (solar-sin-degrees A7))
             (* 0.000056 (solar-sin-degrees A8))
             (* 0.000047 (solar-sin-degrees A9))
             (* 0.000042 (solar-sin-degrees A10))
             (* 0.000040 (solar-sin-degrees A11))
             (* 0.000037 (solar-sin-degrees A12))
             (* 0.000035 (solar-sin-degrees A13))
             (* 0.000023 (solar-sin-degrees A14))))
         (newJDE (+ JDE correction additional)))
    (+ newJDE
       (- (solar-ephemeris-correction
           (calendar-extract-year
            (calendar-gregorian-from-absolute
             (floor (calendar-astro-to-absolute newJDE))))))
       (/ calendar-time-zone 60.0 24.0))))