add numerical recipes library
This commit is contained in:
28
lib/nr/ansi/recipes/caldat.c
Normal file
28
lib/nr/ansi/recipes/caldat.c
Normal file
@@ -0,0 +1,28 @@
|
||||
|
||||
#include <math.h>
|
||||
#define IGREG 2299161
|
||||
|
||||
void caldat(long julian, int *mm, int *id, int *iyyy)
|
||||
{
|
||||
long ja,jalpha,jb,jc,jd,je;
|
||||
|
||||
if (julian >= IGREG) {
|
||||
jalpha=(long)(((double) (julian-1867216)-0.25)/36524.25);
|
||||
ja=julian+1+jalpha-(long) (0.25*jalpha);
|
||||
} else if (julian < 0) {
|
||||
ja=julian+36525*(1-julian/36525);
|
||||
} else
|
||||
ja=julian;
|
||||
jb=ja+1524;
|
||||
jc=(long)(6680.0+((double) (jb-2439870)-122.1)/365.25);
|
||||
jd=(long)(365*jc+(0.25*jc));
|
||||
je=(long)((jb-jd)/30.6001);
|
||||
*id=jb-jd-(long) (30.6001*je);
|
||||
*mm=je-1;
|
||||
if (*mm > 12) *mm -= 12;
|
||||
*iyyy=jc-4715;
|
||||
if (*mm > 2) --(*iyyy);
|
||||
if (*iyyy <= 0) --(*iyyy);
|
||||
if (julian < 0) *iyyy -= 100*(1-julian/36525);
|
||||
}
|
||||
#undef IGREG
|
||||
Reference in New Issue
Block a user