[![Build Status](https://travis-ci.org/lestrrat/DateTime-Astro.svg?branch=master)](https://travis-ci.org/lestrrat/DateTime-Astro) # NAME DateTime::Astro - Functions For Astromical Calendars # DESCRIPTION DateTime::Astro implements functions used in astronomical calendars, such as calculation of lunar longitudea and solar longitude. This module is best used in environments where a C compiler and the MPFR arbitrary precision math library is installed. It can fallback to using Math::BigInt, but that would pretty much render it useless because of its speed and loss of accuracy that may creep up while doing Perl to C struct conversions. # DISCLAIMER This module works, but there are several caveats you should be aware of: ## MPFR Is Required / PurePerl Version Not Functional There /is/ a HALF BAKED Pure Perl implmentation bundled with this distribution, but at this point please consider it UNUSABLE. This sort of calculation requires the speed and efficiency of a C library anyway. As such, you HAVE to have MPFR installed correctly in your system. Please consult your local package manager, or http://mpfr.org Patches to make the pure perl version work better is always welcome. ## 17 solar terms are still off by ~ 5 minutes I've tried very hard to correctly calculate the solar term dates with this module, but I still get 17 instances in about 130 years worth of solar terms, where the dates are off by an average of about 5 minutes -- and these usually fall at right about midnight, causing day-based comparisons to be off by 1. I'm sure there's something that's causing a round off somwhere. If you're up to it, please see xt/101\_solar\_terms.t and see if you can fix it for me! # FUNCTIONS ## BACKEND() Returns 'XS' or 'PP', noting the current backend. ## dt\_from\_moment($moment) Given a moment (days since rd + fractional seconds), returns a DateTime object in UTC ## dynamical\_moment($moment) Computes the moment value from given moemnt, taking into account the ephemeris correction. ## dynamical\_moment\_from\_dt($dt) Computes the moment value from a DateTime object, taking into account the ephemeris correction. ## ephemeris\_correction($moment) Computes the ephemeris correction on a given moment ## gregorian\_components\_from\_rd($rd\_days) Computes year, month, date from RD value ## gregorian\_year\_from\_rd($rd\_days) Computes year from RD value ## julian\_centuries($dt) Computes the julian centuries for given DateTime object ## julian\_centuries\_from\_moment($moment) Computes the julian centuries for given moment ## lunar\_phase($dt) Computes the lunar phase for given DateTime object ## lunar\_phase\_from\_moment($moment) Computes the lunar phase for given moment ## polynomial($x, ...) Computes the polynomical expression using $x as the variable. The left most argument is the constant, and each successive argument is the coefficient for the next power of $x ## ymd\_seconds\_from\_moment($moment) Computes the gregorian components (year, month, day) from the RD date, and the number of seconds from the fractional part. ## lunar\_longitude($dt) Returns the Moon's longitude on the given date $dt ## lunar\_longitude\_from\_moment($moment) Returns the Moon's longitude on the given moment $moment ## moment($dt) Returns the date $dt expressed in moment ## nth\_new\_moon($n) Returns the $n-th new moon, in $moment. Currently the new moons dates are accurate to about within +/- 60 seconds of the actual new moon for modern dates. For older dates, the accuraccy degrades a bit to about +/- 5 minutes. ## new\_moon\_after($dt) ## new\_moon\_before($dt) ## solar\_longitude($dt) Returns the Sun's longitude on the given date $dt ## solar\_longitude\_from\_moment($moment) Returns the Sun's longitude on the given moment $moment ## new\_moon\_after\_from\_moment ## new\_moon\_before\_from\_moment ## solar\_longitude\_after ## solar\_longitude\_after\_from\_moment ## solar\_longitude\_before ## solar\_longitude\_before\_from\_moment # CONSTANTS ## MEAN\_SYNODIC\_MONTH Mean time (in moment) between new moons ## MEAN\_TROPICAL\_YEAR Mean time (in moment) between a full year (time for the Earth to go around the sun) # LICENSE This library is available under Artistic License v2, and is: Copyright (C) 2012 Daisuke Maki C<< >> # AUTHOR Daisuke Maki ``