diff options
Diffstat (limited to 'src/cmd/astro/cosadd.c')
-rw-r--r-- | src/cmd/astro/cosadd.c | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/src/cmd/astro/cosadd.c b/src/cmd/astro/cosadd.c index a632149a..637ad206 100644 --- a/src/cmd/astro/cosadd.c +++ b/src/cmd/astro/cosadd.c @@ -10,15 +10,20 @@ icosadd(double *fp, char *cp) } double -cosadd(int n, double coef, ...) +cosadd(int n, ...) { - double *coefp; + double *coefp, coef[10]; char *cp; int i; double sum, a1, a2; - + va_list arg; + sum = 0; cp = cacp; + va_start(arg, n); + for(i=0; i<n; i++) + coef[i] = va_arg(arg, double); + va_end(arg); loop: a1 = *cafp++; @@ -28,7 +33,7 @@ loop: } a2 = *cafp++; i = n; - coefp = &coef; + coefp = coef; do a2 += *cp++ * *coefp++; while(--i); @@ -37,15 +42,20 @@ loop: } double -sinadd(int n, double coef, ...) +sinadd(int n, ...) { - double *coefp; + double *coefp, coef[10]; char *cp; int i; double sum, a1, a2; + va_list arg; sum = 0; cp = cacp; + va_start(arg, n); + for(i=0; i<n; i++) + coef[i] = va_arg(arg, double); + va_end(arg); loop: a1 = *cafp++; @@ -55,7 +65,7 @@ loop: } a2 = *cafp++; i = n; - coefp = &coef; + coefp = coef; do a2 += *cp++ * *coefp++; while(--i); |