1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
|
#include <u.h>
#include <libc.h>
#ifdef VARARGCK
#pragma varargck type "R" double
#pragma varargck type "D" double
#endif
#undef sun
#define sun astrosun /* not the machine! */
#undef fmod
#define fmod astrofmod /* ours is always positive */
typedef struct Obj1 Obj1;
typedef struct Obj2 Obj2;
typedef struct Obj3 Obj3;
typedef struct Occ Occ;
typedef struct Event Event;
typedef struct Tim Tim;
typedef struct Moontab Moontab;
#define NPTS 12
#define PER 1.0
enum
{
DARK = 1<<0,
SIGNIF = 1<<1,
PTIME = 1<<2,
LIGHT = 1<<3
};
struct Obj1
{
double ra;
double decl2;
double semi2;
double az;
double el;
double mag;
};
struct Obj2
{
char* name;
char* name1;
void (*obj)(void);
Obj1 point[NPTS+2];
};
struct Obj3
{
double t1;
double e1;
double t2;
double e2;
double t3;
double e3;
double t4;
double e4;
double t5;
double e5;
};
struct Event
{
char* format;
char* arg1;
char* arg2;
double tim;
int flag;
};
struct Moontab
{
double f;
char c[4];
};
struct Occ
{
Obj1 act;
Obj1 del0;
Obj1 del1;
Obj1 del2;
};
struct Tim
{
double ifa[5];
char tz[4];
};
double converge;
char flags[128];
int nperiods;
double wlong, awlong, nlat, elev;
double obliq, phi, eps, tobliq;
double dphi, deps;
double day, deld, per;
double eday, capt, capt2, capt3, gst;
double pi, pipi, radian, radsec, deltat;
double erad, glat;
double xms, yms, zms;
double xdot, ydot, zdot;
double ecc, incl, node, argp, mrad, anom, motion;
double lambda, beta, rad, mag, semi;
double alpha, delta, rp, hp;
double ra, decl, semi2;
double lha, decl2, lmb2;
double az, el;
double meday, seday, mhp, salph, sdelt, srad;
double* cafp;
char* cacp;
double rah, ram, ras, dday, dmin, dsec;
long sao;
double da, dd, px, epoch;
char line[100];
Obj2 osun;
Obj2 omoon;
Obj2 oshad;
Obj2 omerc;
Obj2 ovenus;
Obj2 omars;
Obj2 osat;
Obj2 ouran;
Obj2 onept;
Obj2 oplut;
Obj2 ojup;
Obj2 ostar;
Obj2 ocomet;
Obj3 occ;
Obj2* eobj1;
Obj2* eobj2;
char* startab;
extern int dmo[];
extern Obj2* objlst[];
extern double venfp[];
extern char vencp[];
extern double sunfp[];
extern char suncp[];
extern double mercfp[];
extern char merccp[];
extern double nutfp[];
extern char nutcp[];
extern Moontab moontab[];
extern void args(int, char**);
extern void bdtsetup(double, Tim*);
extern double betcross(double);
extern double convdate(Tim*);
extern double cosadd(int, double, ...);
extern double cosx(double, int, int, int, int, double);
extern double dist(Obj1*, Obj1*);
extern double dsrc(double, Tim*, int);
extern void dtsetup(double, Tim*);
/*extern int evcomp(void*, void*);*/
extern void event(char*, char*, char*, double, int);
extern void evflush(void);
extern double fmod(double, double);
extern void fstar(void);
extern void fsun(void);
extern void geo(void);
extern void helio(void);
extern void icosadd(double*, char*);
extern void init(void);
extern void jup(void);
extern int lastsun(Tim*, int);
extern int main(int, char**);
extern void mars(void);
extern double melong(Obj2*);
extern void merc(void);
extern void moon(void);
extern void numb(int);
extern void nutate(void);
extern void occult(Obj2*, Obj2*, double);
extern void output(char*, Obj1*);
extern void pdate(double);
extern double pinorm(double);
extern void ptime(double);
extern void pstime(double);
extern double pyth(double);
extern double readate(void);
extern double readdt(void);
extern void readlat(int);
extern double rise(Obj2*, double);
extern int rline(int);
extern void sat(void);
extern void uran(void);
extern void nept(void);
extern void plut(void);
extern void satel(double);
extern void satels(void);
extern void search(void);
extern double set(Obj2*, double);
extern void set3pt(Obj2*, int, Occ*);
extern void setime(double);
extern void setobj(Obj1*);
extern void setpt(Occ*, double);
extern void shad(void);
extern double sinadd(int, double, ...);
extern double sinx(double, int, int, int, int, double);
extern char* skip(int);
extern double solstice(int);
extern void star(void);
extern void stars(void);
extern void sun(void);
extern double sunel(double);
extern void venus(void);
extern int vis(double, double, double, double);
extern void comet(void);
extern int Rconv(Fmt*);
extern int Dconv(Fmt*);
extern double etdate(long, int, double);
|