diff --git a/c/Makefile b/c/Makefile index 15c6e48..c57d8b2 100644 --- a/c/Makefile +++ b/c/Makefile @@ -1,13 +1,13 @@ CC = gcc -CFLAGS = -Wall -O2 +CFLAGS = -Wall -O3 -g LIBS = -lm -lpthread LUNARCAL = lunarcal TESTASTRO = testastro # default target -.PHONY : all +.PHONY : all clean all: $(LUNARCAL) $(TESTASTRO) @echo all done! @@ -36,6 +36,5 @@ $(TESTASTRO): $(TESTASTRO_OBJS) $(CC) $(CFLAGS) -o $(TESTASTRO) $(TESTASTRO_OBJS) $(LIBS) -.PHONY : clean clean: - rm -f *.o core a.out astro lunarcal testastro + rm -f *.o core a.out lunarcal testastro diff --git a/c/lea406-full.c b/c/lea406-full.c index 68a0239..29bedbf 100644 --- a/c/lea406-full.c +++ b/c/lea406-full.c @@ -118,6 +118,10 @@ double lea406(double jd, int ignorenutation) { V += nutation(jd); /* printf("debug lea406, nutation been adjusted"); */ } + + for (i = 0; i < num_threads; i++) + free(thread_args[i]); + return V; } diff --git a/c/lunarcalbase.h b/c/lunarcalbase.h index 9b37711..14abe61 100644 --- a/c/lunarcalbase.h +++ b/c/lunarcalbase.h @@ -2,7 +2,7 @@ #define MAX_NEWMOONS 15 #define MAX_DAYS 450 #define CACHESIZE 3 -#define BUFSIZE 32 +#define BUFSIZE 64 #define TZ_CN 8 struct solarterm { diff --git a/c/testastro.c b/c/testastro.c index 4a1c459..fa4b627 100644 --- a/c/testastro.c +++ b/c/testastro.c @@ -4,7 +4,7 @@ #include #include "astro.h" -#define MAX_JPL_LINE_LEN 100 +#define MAX_JPL_LINE_LEN 128 #define MAX_JPL_RECORDS 73415 #define FLAG_SOE 1 @@ -14,10 +14,15 @@ struct jplrcd { }; int parsejplhorizon(char *fname, struct jplrcd *records[]); +void testnewmoon_solarterm(int year); +void testdeltat(void); + struct jplrcd *lon_alloc(void); void verify_apparent_sun_moon(void); double n180to180(double angle); double jd2year(double jd); +void testapparentmoon(void); +void testnutation(void); double jd2year(double jd) { @@ -30,11 +35,9 @@ double jd2year(double jd) return fyear; } -void testdeltat(void); void testdeltat() { // double d = -133.5; -// int i; double jd; char strout[30]; jd = jdptime("2012-01-05 18:00", "%y-%m-%d %H:%M", 0, 0); @@ -43,10 +46,10 @@ void testdeltat() jdftime(strout, jd, "%y-%m-%d %H:%M", 0, 0); printf("jdftime output = %s\n", strout); - int i,year; + int year; double deltat; year = -500; - for (i = 0; i < 20; i++) { + for (int i = 0; i < 20; i++) { deltat = deltaT(year, 1); printf("%d = %.2f\n", year, deltat); year += 100; @@ -54,46 +57,42 @@ void testdeltat() return; } -void testnewmoon_solarterm(void); -void testnewmoon_solarterm(void) +void testnewmoon_solarterm(int year) { double newmoons[NMCOUNT]; double jd; //jd = jdptime("2014-01-01 18:00", "%y-%m-%d %H:%M", 0, 0); - int year = 2000; - int n; + int y = year; char isodt[30]; - int i; - for (n = 0; n < 50; n++) { - jd = g2jd(year, 1, 1.0); + const float tz = 8.0; + for (int n = 0; n < 2; n++) { + jd = g2jd(y, 1, 1.0); findnewmoons(newmoons, NMCOUNT, jd); - year += 1; + y += 1; - for (i = 0; i < NMCOUNT; i++) { - jdftime(isodt, newmoons[i], "%y-%m-%d %H:%M:%S", 8.0, 1); - printf("found newmoon: %s %.8f\n", isodt, newmoons[i]); + for (int i = 0; i < NMCOUNT; i++) { + jdftime(isodt, newmoons[i], "%y-%m-%d %H:%M:%S", tz, 1); + printf("newmoon: %s UTC%.1f\n", isodt, tz); } - } double angle; + y = year; for (angle = -90; angle < 285; angle += 15) { - jd = solarterm(2014, angle); - jdftime(isodt, jd, "%y-%m-%d %H:%M:%S", 8.0, 1); - printf("solar term: %3.0f %s\n", angle, isodt); + jd = solarterm(y, angle); + jdftime(isodt, jd, "%y-%m-%d %H:%M:%S", tz, 1); + printf("solar term: %3.0f %s UTC%.1f\n", angle, isodt, tz); } return; } -void testapparentmoon(void); void testapparentmoon(void) { double jd = 2411545.0; char deg[30]; char degsun[30]; double d; - int i; - for (i = 0; i < 20; i++) { + for (int i = 0; i < 20; i++) { d = apparentmoon(jd, 1) * RAD2DEG; fmtdeg(deg, d); d = lightabbr_high(jd) * RAD2DEG; @@ -104,7 +103,6 @@ void testapparentmoon(void) } } -void testnutation(void); void testnutation(void) { double jd = 2411545.0; @@ -130,9 +128,9 @@ int parsejplhorizon(char *fname, struct jplrcd *records[]) } flag = 0; i = 0; - while ((p = fgets(buf, MAX_JPL_LINE_LEN + 1, fp)) != NULL - && i < MAX_JPL_RECORDS) { - if (p == strstr(p, "$$SOE")) { /* start of records */ + while ((p = fgets(buf, MAX_JPL_LINE_LEN, fp)) != NULL && + i < MAX_JPL_RECORDS) { + if (p == strstr(p, "$$SOE")) { /* start of records */ flag = 1; continue; } else if (p == strstr(p, "$$EOE")) { @@ -144,12 +142,10 @@ int parsejplhorizon(char *fname, struct jplrcd *records[]) sscanf(p, "%lf %lf", &(plon->jd), &(plon->lon)); records[i++] = plon; } - } return i; } - struct jplrcd *lon_alloc(void) { return (struct jplrcd *) malloc(sizeof(struct jplrcd)); @@ -217,12 +213,11 @@ double n180to180(double angle) return angle; } -int main(void); int main() { - //testnewmoon_solarterm(); + testnewmoon_solarterm(2024); //testapparentmoon(); //testnutation(); - verify_apparent_sun_moon(); + //verify_apparent_sun_moon(); return 0; } diff --git a/xiushi.ics b/xiushi.ics deleted file mode 100644 index 1a8daa5..0000000 --- a/xiushi.ics +++ /dev/null @@ -1,241 +0,0 @@ -BEGIN:VCALENDAR -PRODID:-//Chen Wei//2016 China Public Holiday Calendar//EN -VERSION:2.0 -CALSCALE:GREGORIAN -METHOD:PUBLISH -X-WR-CALNAME:2016 China Public Holiday -X-WR-TIMEZONE:Asia/Shanghai -X-WR-CALDESC:上证公告[2015]36号 -BEGIN:VEVENT -DTSTAMP:20160101T043225Z -UID:20160101-holiday@infinet.github.io -DTSTART;VALUE=DATE:20160101 -DTEND;VALUE=DATE:20160102 -STATUS:CONFIRMED -SUMMARY:元旦 -END:VEVENT -BEGIN:VEVENT -DTSTAMP:20160101T043225Z -UID:20160102-holiday@infinet.github.io -DTSTART;VALUE=DATE:20160102 -DTEND;VALUE=DATE:20160103 -STATUS:CONFIRMED -SUMMARY:元旦 -END:VEVENT -BEGIN:VEVENT -DTSTAMP:20160101T043225Z -UID:20160103-holiday@infinet.github.io -DTSTART;VALUE=DATE:20160103 -DTEND;VALUE=DATE:20160104 -STATUS:CONFIRMED -SUMMARY:元旦 -END:VEVENT -BEGIN:VEVENT -DTSTAMP:20160101T043225Z -UID:20160207-holiday@infinet.github.io -DTSTART;VALUE=DATE:20160207 -DTEND;VALUE=DATE:20160208 -STATUS:CONFIRMED -SUMMARY:春节 -END:VEVENT -BEGIN:VEVENT -DTSTAMP:20160101T043225Z -UID:20160208-holiday@infinet.github.io -DTSTART;VALUE=DATE:20160208 -DTEND;VALUE=DATE:20160209 -STATUS:CONFIRMED -SUMMARY:春节 -END:VEVENT -BEGIN:VEVENT -DTSTAMP:20160101T043225Z -UID:20160209-holiday@infinet.github.io -DTSTART;VALUE=DATE:20160209 -DTEND;VALUE=DATE:20160210 -STATUS:CONFIRMED -SUMMARY:春节 -END:VEVENT -BEGIN:VEVENT -DTSTAMP:20160101T043225Z -UID:20160210-holiday@infinet.github.io -DTSTART;VALUE=DATE:20160210 -DTEND;VALUE=DATE:20160211 -STATUS:CONFIRMED -SUMMARY:春节 -END:VEVENT -BEGIN:VEVENT -DTSTAMP:20160101T043225Z -UID:20160211-holiday@infinet.github.io -DTSTART;VALUE=DATE:20160211 -DTEND;VALUE=DATE:20160212 -STATUS:CONFIRMED -SUMMARY:春节 -END:VEVENT -BEGIN:VEVENT -DTSTAMP:20160101T043225Z -UID:20160212-holiday@infinet.github.io -DTSTART;VALUE=DATE:20160212 -DTEND;VALUE=DATE:20160213 -STATUS:CONFIRMED -SUMMARY:春节 -END:VEVENT -BEGIN:VEVENT -DTSTAMP:20160101T043225Z -UID:20160213-holiday@infinet.github.io -DTSTART;VALUE=DATE:20160213 -DTEND;VALUE=DATE:20160214 -STATUS:CONFIRMED -SUMMARY:春节 -END:VEVENT -BEGIN:VEVENT -DTSTAMP:20160101T043225Z -UID:20160402-holiday@infinet.github.io -DTSTART;VALUE=DATE:20160402 -DTEND;VALUE=DATE:20160403 -STATUS:CONFIRMED -SUMMARY:清明节 -END:VEVENT -BEGIN:VEVENT -DTSTAMP:20160101T043225Z -UID:20160403-holiday@infinet.github.io -DTSTART;VALUE=DATE:20160403 -DTEND;VALUE=DATE:20160404 -STATUS:CONFIRMED -SUMMARY:清明节 -END:VEVENT -BEGIN:VEVENT -DTSTAMP:20160101T043225Z -UID:20160404-holiday@infinet.github.io -DTSTART;VALUE=DATE:20160404 -DTEND;VALUE=DATE:20160405 -STATUS:CONFIRMED -SUMMARY:清明节 -END:VEVENT -BEGIN:VEVENT -DTSTAMP:20160101T043225Z -UID:20160430-holiday@infinet.github.io -DTSTART;VALUE=DATE:20160430 -DTEND;VALUE=DATE:20160501 -STATUS:CONFIRMED -SUMMARY:劳动节 -END:VEVENT -BEGIN:VEVENT -DTSTAMP:20160101T043225Z -UID:20160501-holiday@infinet.github.io -DTSTART;VALUE=DATE:20160501 -DTEND;VALUE=DATE:20160502 -STATUS:CONFIRMED -SUMMARY:劳动节 -END:VEVENT -BEGIN:VEVENT -DTSTAMP:20160101T043225Z -UID:20160502-holiday@infinet.github.io -DTSTART;VALUE=DATE:20160502 -DTEND;VALUE=DATE:20160503 -STATUS:CONFIRMED -SUMMARY:劳动节 -END:VEVENT -BEGIN:VEVENT -DTSTAMP:20160101T043225Z -UID:20160609-holiday@infinet.github.io -DTSTART;VALUE=DATE:20160609 -DTEND;VALUE=DATE:20160610 -STATUS:CONFIRMED -SUMMARY:端午节 -END:VEVENT -BEGIN:VEVENT -DTSTAMP:20160101T043225Z -UID:20160610-holiday@infinet.github.io -DTSTART;VALUE=DATE:20160610 -DTEND;VALUE=DATE:20160611 -STATUS:CONFIRMED -SUMMARY:端午节 -END:VEVENT -BEGIN:VEVENT -DTSTAMP:20160101T043225Z -UID:20160611-holiday@infinet.github.io -DTSTART;VALUE=DATE:20160611 -DTEND;VALUE=DATE:20160612 -STATUS:CONFIRMED -SUMMARY:端午节 -END:VEVENT -BEGIN:VEVENT -DTSTAMP:20160101T043225Z -UID:20160915-holiday@infinet.github.io -DTSTART;VALUE=DATE:20160915 -DTEND;VALUE=DATE:20160916 -STATUS:CONFIRMED -SUMMARY:中秋节 -END:VEVENT -BEGIN:VEVENT -DTSTAMP:20160101T043225Z -UID:20160916-holiday@infinet.github.io -DTSTART;VALUE=DATE:20160916 -DTEND;VALUE=DATE:20160917 -STATUS:CONFIRMED -SUMMARY:中秋节 -END:VEVENT -BEGIN:VEVENT -DTSTAMP:20160101T043225Z -UID:20160917-holiday@infinet.github.io -DTSTART;VALUE=DATE:20160917 -DTEND;VALUE=DATE:20160918 -STATUS:CONFIRMED -SUMMARY:中秋节 -END:VEVENT -BEGIN:VEVENT -DTSTAMP:20160101T043225Z -UID:20161001-holiday@infinet.github.io -DTSTART;VALUE=DATE:20161001 -DTEND;VALUE=DATE:20161002 -STATUS:CONFIRMED -SUMMARY:国庆节 -END:VEVENT -BEGIN:VEVENT -DTSTAMP:20160101T043225Z -UID:20161002-holiday@infinet.github.io -DTSTART;VALUE=DATE:20161002 -DTEND;VALUE=DATE:20161003 -STATUS:CONFIRMED -SUMMARY:国庆节 -END:VEVENT -BEGIN:VEVENT -DTSTAMP:20160101T043225Z -UID:20161003-holiday@infinet.github.io -DTSTART;VALUE=DATE:20161003 -DTEND;VALUE=DATE:20161004 -STATUS:CONFIRMED -SUMMARY:国庆节 -END:VEVENT -BEGIN:VEVENT -DTSTAMP:20160101T043225Z -UID:20161004-holiday@infinet.github.io -DTSTART;VALUE=DATE:20161004 -DTEND;VALUE=DATE:20161005 -STATUS:CONFIRMED -SUMMARY:国庆节 -END:VEVENT -BEGIN:VEVENT -DTSTAMP:20160101T043225Z -UID:20161005-holiday@infinet.github.io -DTSTART;VALUE=DATE:20161005 -DTEND;VALUE=DATE:20161006 -STATUS:CONFIRMED -SUMMARY:国庆节 -END:VEVENT -BEGIN:VEVENT -DTSTAMP:20160101T043225Z -UID:20161006-holiday@infinet.github.io -DTSTART;VALUE=DATE:20161006 -DTEND;VALUE=DATE:20161007 -STATUS:CONFIRMED -SUMMARY:国庆节 -END:VEVENT -BEGIN:VEVENT -DTSTAMP:20160101T043225Z -UID:20161007-holiday@infinet.github.io -DTSTART;VALUE=DATE:20161007 -DTEND;VALUE=DATE:20161008 -STATUS:CONFIRMED -SUMMARY:国庆节 -END:VEVENT -END:VCALENDAR \ No newline at end of file