Algoritmo da Lua / Fase Lunar

Alguém conhece um algoritmo para calcular a fase ou a idade da lua em uma determinada data ou encontrar as datas para luas novas / cheias em um determinado ano?

Googling me diz que a resposta está em algum livro de Astronomia, mas eu realmente não quero comprar um livro inteiro quando só preciso de uma única página.

Atualizar:

Eu deveria ter qualificado minha afirmação sobre pesquisar no Google um pouco melhor. Eu encontrei soluções que funcionavam apenas em um subconjunto de tempo (como o de 1900); e as soluções baseadas em triggers que seriam mais caras em termos computacionais do que eu gostaria.

S Lott, em seu livro em Python, possui vários algoritmos para calcular a Páscoa em um determinado ano, a maioria possui menos de dez linhas de código e alguns funcionam durante todos os dias no calendário gregoriano. Encontrar a lua cheia em março é uma peça fundamental para encontrar a Páscoa, então imaginei que deveria haver um algoritmo que não exija trigonometria e funcione para todas as datas do calendário gregoriano.

questionAnswers(8)

yourAnswerToTheQuestion