Blob


1 #include "astro.h"
4 void
5 icosadd(double *fp, char *cp)
6 {
8 cafp = fp;
9 cacp = cp;
10 }
12 double
13 cosadd(int n, double coef, ...)
14 {
15 double *coefp;
16 char *cp;
17 int i;
18 double sum, a1, a2;
20 sum = 0;
21 cp = cacp;
23 loop:
24 a1 = *cafp++;
25 if(a1 == 0) {
26 cacp = cp;
27 return sum;
28 }
29 a2 = *cafp++;
30 i = n;
31 coefp = &coef;
32 do
33 a2 += *cp++ * *coefp++;
34 while(--i);
35 sum += a1 * cos(a2);
36 goto loop;
37 }
39 double
40 sinadd(int n, double coef, ...)
41 {
42 double *coefp;
43 char *cp;
44 int i;
45 double sum, a1, a2;
47 sum = 0;
48 cp = cacp;
50 loop:
51 a1 = *cafp++;
52 if(a1 == 0) {
53 cacp = cp;
54 return sum;
55 }
56 a2 = *cafp++;
57 i = n;
58 coefp = &coef;
59 do
60 a2 += *cp++ * *coefp++;
61 while(--i);
62 sum += a1 * sin(a2);
63 goto loop;
64 }