#include "astro.h" | |
void | |
icosadd(double *fp, char *cp) | |
{ | |
cafp = fp; | |
cacp = cp; | |
} | |
double | |
cosadd(int n, double coef, ...) | |
{ | |
double *coefp; | |
char *cp; | |
int i; | |
double sum, a1, a2; | |
sum = 0; | |
cp = cacp; | |
loop: | |
a1 = *cafp++; | |
if(a1 == 0) { | |
cacp = cp; | |
return sum; | |
} | |
a2 = *cafp++; | |
i = n; | |
coefp = &coef; | |
do | |
a2 += *cp++ * *coefp++; | |
while(--i); | |
sum += a1 * cos(a2); | |
goto loop; | |
} | |
double | |
sinadd(int n, double coef, ...) | |
{ | |
double *coefp; | |
char *cp; | |
int i; | |
double sum, a1, a2; | |
sum = 0; | |
cp = cacp; | |
loop: | |
a1 = *cafp++; | |
if(a1 == 0) { | |
cacp = cp; | |
return sum; | |
} | |
a2 = *cafp++; | |
i = n; | |
coefp = &coef; | |
do | |
a2 += *cp++ * *coefp++; | |
while(--i); | |
sum += a1 * sin(a2); | |
goto loop; | |
} |