silence compiler errors and few minor fixes

This commit is contained in:
Wei Chen
2024-03-27 08:01:05 -05:00
parent 410f0ff9ab
commit dbf49ab05f
5 changed files with 35 additions and 278 deletions

View File

@@ -1,13 +1,13 @@
CC = gcc CC = gcc
CFLAGS = -Wall -O2 CFLAGS = -Wall -O3 -g
LIBS = -lm -lpthread LIBS = -lm -lpthread
LUNARCAL = lunarcal LUNARCAL = lunarcal
TESTASTRO = testastro TESTASTRO = testastro
# default target # default target
.PHONY : all .PHONY : all clean
all: $(LUNARCAL) $(TESTASTRO) all: $(LUNARCAL) $(TESTASTRO)
@echo all done! @echo all done!
@@ -36,6 +36,5 @@ $(TESTASTRO): $(TESTASTRO_OBJS)
$(CC) $(CFLAGS) -o $(TESTASTRO) $(TESTASTRO_OBJS) $(LIBS) $(CC) $(CFLAGS) -o $(TESTASTRO) $(TESTASTRO_OBJS) $(LIBS)
.PHONY : clean
clean: clean:
rm -f *.o core a.out astro lunarcal testastro rm -f *.o core a.out lunarcal testastro

View File

@@ -118,6 +118,10 @@ double lea406(double jd, int ignorenutation) {
V += nutation(jd); V += nutation(jd);
/* printf("debug lea406, nutation been adjusted"); */ /* printf("debug lea406, nutation been adjusted"); */
} }
for (i = 0; i < num_threads; i++)
free(thread_args[i]);
return V; return V;
} }

View File

@@ -2,7 +2,7 @@
#define MAX_NEWMOONS 15 #define MAX_NEWMOONS 15
#define MAX_DAYS 450 #define MAX_DAYS 450
#define CACHESIZE 3 #define CACHESIZE 3
#define BUFSIZE 32 #define BUFSIZE 64
#define TZ_CN 8 #define TZ_CN 8
struct solarterm { struct solarterm {

View File

@@ -4,7 +4,7 @@
#include <math.h> #include <math.h>
#include "astro.h" #include "astro.h"
#define MAX_JPL_LINE_LEN 100 #define MAX_JPL_LINE_LEN 128
#define MAX_JPL_RECORDS 73415 #define MAX_JPL_RECORDS 73415
#define FLAG_SOE 1 #define FLAG_SOE 1
@@ -14,10 +14,15 @@ struct jplrcd {
}; };
int parsejplhorizon(char *fname, struct jplrcd *records[]); int parsejplhorizon(char *fname, struct jplrcd *records[]);
void testnewmoon_solarterm(int year);
void testdeltat(void);
struct jplrcd *lon_alloc(void); struct jplrcd *lon_alloc(void);
void verify_apparent_sun_moon(void); void verify_apparent_sun_moon(void);
double n180to180(double angle); double n180to180(double angle);
double jd2year(double jd); double jd2year(double jd);
void testapparentmoon(void);
void testnutation(void);
double jd2year(double jd) double jd2year(double jd)
{ {
@@ -30,11 +35,9 @@ double jd2year(double jd)
return fyear; return fyear;
} }
void testdeltat(void);
void testdeltat() void testdeltat()
{ {
// double d = -133.5; // double d = -133.5;
// int i;
double jd; double jd;
char strout[30]; char strout[30];
jd = jdptime("2012-01-05 18:00", "%y-%m-%d %H:%M", 0, 0); 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); jdftime(strout, jd, "%y-%m-%d %H:%M", 0, 0);
printf("jdftime output = %s\n", strout); printf("jdftime output = %s\n", strout);
int i,year; int year;
double deltat; double deltat;
year = -500; year = -500;
for (i = 0; i < 20; i++) { for (int i = 0; i < 20; i++) {
deltat = deltaT(year, 1); deltat = deltaT(year, 1);
printf("%d = %.2f\n", year, deltat); printf("%d = %.2f\n", year, deltat);
year += 100; year += 100;
@@ -54,46 +57,42 @@ void testdeltat()
return; return;
} }
void testnewmoon_solarterm(void); void testnewmoon_solarterm(int year)
void testnewmoon_solarterm(void)
{ {
double newmoons[NMCOUNT]; double newmoons[NMCOUNT];
double jd; double jd;
//jd = jdptime("2014-01-01 18:00", "%y-%m-%d %H:%M", 0, 0); //jd = jdptime("2014-01-01 18:00", "%y-%m-%d %H:%M", 0, 0);
int year = 2000; int y = year;
int n;
char isodt[30]; char isodt[30];
int i; const float tz = 8.0;
for (n = 0; n < 50; n++) { for (int n = 0; n < 2; n++) {
jd = g2jd(year, 1, 1.0); jd = g2jd(y, 1, 1.0);
findnewmoons(newmoons, NMCOUNT, jd); findnewmoons(newmoons, NMCOUNT, jd);
year += 1; y += 1;
for (i = 0; i < NMCOUNT; i++) { for (int i = 0; i < NMCOUNT; i++) {
jdftime(isodt, newmoons[i], "%y-%m-%d %H:%M:%S", 8.0, 1); jdftime(isodt, newmoons[i], "%y-%m-%d %H:%M:%S", tz, 1);
printf("found newmoon: %s %.8f\n", isodt, newmoons[i]); printf("newmoon: %s UTC%.1f\n", isodt, tz);
} }
} }
double angle; double angle;
y = year;
for (angle = -90; angle < 285; angle += 15) { for (angle = -90; angle < 285; angle += 15) {
jd = solarterm(2014, angle); jd = solarterm(y, angle);
jdftime(isodt, jd, "%y-%m-%d %H:%M:%S", 8.0, 1); jdftime(isodt, jd, "%y-%m-%d %H:%M:%S", tz, 1);
printf("solar term: %3.0f %s\n", angle, isodt); printf("solar term: %3.0f %s UTC%.1f\n", angle, isodt, tz);
} }
return; return;
} }
void testapparentmoon(void);
void testapparentmoon(void) void testapparentmoon(void)
{ {
double jd = 2411545.0; double jd = 2411545.0;
char deg[30]; char deg[30];
char degsun[30]; char degsun[30];
double d; double d;
int i; for (int i = 0; i < 20; i++) {
for (i = 0; i < 20; i++) {
d = apparentmoon(jd, 1) * RAD2DEG; d = apparentmoon(jd, 1) * RAD2DEG;
fmtdeg(deg, d); fmtdeg(deg, d);
d = lightabbr_high(jd) * RAD2DEG; d = lightabbr_high(jd) * RAD2DEG;
@@ -104,7 +103,6 @@ void testapparentmoon(void)
} }
} }
void testnutation(void);
void testnutation(void) void testnutation(void)
{ {
double jd = 2411545.0; double jd = 2411545.0;
@@ -130,9 +128,9 @@ int parsejplhorizon(char *fname, struct jplrcd *records[])
} }
flag = 0; flag = 0;
i = 0; i = 0;
while ((p = fgets(buf, MAX_JPL_LINE_LEN + 1, fp)) != NULL while ((p = fgets(buf, MAX_JPL_LINE_LEN, fp)) != NULL &&
&& i < MAX_JPL_RECORDS) { i < MAX_JPL_RECORDS) {
if (p == strstr(p, "$$SOE")) { /* start of records */ if (p == strstr(p, "$$SOE")) { /* start of records */
flag = 1; flag = 1;
continue; continue;
} else if (p == strstr(p, "$$EOE")) { } 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)); sscanf(p, "%lf %lf", &(plon->jd), &(plon->lon));
records[i++] = plon; records[i++] = plon;
} }
} }
return i; return i;
} }
struct jplrcd *lon_alloc(void) struct jplrcd *lon_alloc(void)
{ {
return (struct jplrcd *) malloc(sizeof(struct jplrcd)); return (struct jplrcd *) malloc(sizeof(struct jplrcd));
@@ -217,12 +213,11 @@ double n180to180(double angle)
return angle; return angle;
} }
int main(void);
int main() int main()
{ {
//testnewmoon_solarterm(); testnewmoon_solarterm(2024);
//testapparentmoon(); //testapparentmoon();
//testnutation(); //testnutation();
verify_apparent_sun_moon(); //verify_apparent_sun_moon();
return 0; return 0;
} }

View File

@@ -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