Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
#include "astro.h"
2
 
3
 
4
void
5
icosadd(double *fp, char *cp)
6
{
7
 
8
	cafp = fp;
9
	cacp = cp;
10
}
11
 
12
double
13
cosadd(int n, double coef, ...)
14
{
15
	double *coefp;
16
	char *cp;
17
	int i;
18
	double sum, a1, a2;
19
 
20
	sum = 0;
21
	cp = cacp;
22
 
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
}
38
 
39
double
40
sinadd(int n, double coef, ...)
41
{
42
	double *coefp;
43
	char *cp;
44
	int i;
45
	double sum, a1, a2;
46
 
47
	sum = 0;
48
	cp = cacp;
49
 
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
}