Blame


1 cd5bae78 2004-04-21 devnull #include "astro.h"
2 cd5bae78 2004-04-21 devnull
3 cd5bae78 2004-04-21 devnull
4 cd5bae78 2004-04-21 devnull void
5 cd5bae78 2004-04-21 devnull icosadd(double *fp, char *cp)
6 cd5bae78 2004-04-21 devnull {
7 cd5bae78 2004-04-21 devnull
8 cd5bae78 2004-04-21 devnull cafp = fp;
9 cd5bae78 2004-04-21 devnull cacp = cp;
10 cd5bae78 2004-04-21 devnull }
11 cd5bae78 2004-04-21 devnull
12 cd5bae78 2004-04-21 devnull double
13 2ad582ee 2006-05-27 devnull cosadd(int n, ...)
14 cd5bae78 2004-04-21 devnull {
15 2ad582ee 2006-05-27 devnull double *coefp, coef[10];
16 cd5bae78 2004-04-21 devnull char *cp;
17 cd5bae78 2004-04-21 devnull int i;
18 cd5bae78 2004-04-21 devnull double sum, a1, a2;
19 2ad582ee 2006-05-27 devnull va_list arg;
20 2ad582ee 2006-05-27 devnull
21 cd5bae78 2004-04-21 devnull sum = 0;
22 cd5bae78 2004-04-21 devnull cp = cacp;
23 2ad582ee 2006-05-27 devnull va_start(arg, n);
24 2ad582ee 2006-05-27 devnull for(i=0; i<n; i++)
25 2ad582ee 2006-05-27 devnull coef[i] = va_arg(arg, double);
26 2ad582ee 2006-05-27 devnull va_end(arg);
27 cd5bae78 2004-04-21 devnull
28 cd5bae78 2004-04-21 devnull loop:
29 cd5bae78 2004-04-21 devnull a1 = *cafp++;
30 cd5bae78 2004-04-21 devnull if(a1 == 0) {
31 cd5bae78 2004-04-21 devnull cacp = cp;
32 cd5bae78 2004-04-21 devnull return sum;
33 cd5bae78 2004-04-21 devnull }
34 cd5bae78 2004-04-21 devnull a2 = *cafp++;
35 cd5bae78 2004-04-21 devnull i = n;
36 2ad582ee 2006-05-27 devnull coefp = coef;
37 cd5bae78 2004-04-21 devnull do
38 cd5bae78 2004-04-21 devnull a2 += *cp++ * *coefp++;
39 cd5bae78 2004-04-21 devnull while(--i);
40 cd5bae78 2004-04-21 devnull sum += a1 * cos(a2);
41 cd5bae78 2004-04-21 devnull goto loop;
42 cd5bae78 2004-04-21 devnull }
43 cd5bae78 2004-04-21 devnull
44 cd5bae78 2004-04-21 devnull double
45 2ad582ee 2006-05-27 devnull sinadd(int n, ...)
46 cd5bae78 2004-04-21 devnull {
47 2ad582ee 2006-05-27 devnull double *coefp, coef[10];
48 cd5bae78 2004-04-21 devnull char *cp;
49 cd5bae78 2004-04-21 devnull int i;
50 cd5bae78 2004-04-21 devnull double sum, a1, a2;
51 2ad582ee 2006-05-27 devnull va_list arg;
52 cd5bae78 2004-04-21 devnull
53 cd5bae78 2004-04-21 devnull sum = 0;
54 cd5bae78 2004-04-21 devnull cp = cacp;
55 2ad582ee 2006-05-27 devnull va_start(arg, n);
56 2ad582ee 2006-05-27 devnull for(i=0; i<n; i++)
57 2ad582ee 2006-05-27 devnull coef[i] = va_arg(arg, double);
58 2ad582ee 2006-05-27 devnull va_end(arg);
59 cd5bae78 2004-04-21 devnull
60 cd5bae78 2004-04-21 devnull loop:
61 cd5bae78 2004-04-21 devnull a1 = *cafp++;
62 cd5bae78 2004-04-21 devnull if(a1 == 0) {
63 cd5bae78 2004-04-21 devnull cacp = cp;
64 cd5bae78 2004-04-21 devnull return sum;
65 cd5bae78 2004-04-21 devnull }
66 cd5bae78 2004-04-21 devnull a2 = *cafp++;
67 cd5bae78 2004-04-21 devnull i = n;
68 2ad582ee 2006-05-27 devnull coefp = coef;
69 cd5bae78 2004-04-21 devnull do
70 cd5bae78 2004-04-21 devnull a2 += *cp++ * *coefp++;
71 cd5bae78 2004-04-21 devnull while(--i);
72 cd5bae78 2004-04-21 devnull sum += a1 * sin(a2);
73 cd5bae78 2004-04-21 devnull goto loop;
74 cd5bae78 2004-04-21 devnull }