13e12c5d1SDavid du Colombier #include "astro.h"
23e12c5d1SDavid du Colombier
33e12c5d1SDavid du Colombier
43e12c5d1SDavid du Colombier void
icosadd(double * fp,char * cp)5*7dd7cddfSDavid du Colombier icosadd(double *fp, char *cp)
63e12c5d1SDavid du Colombier {
73e12c5d1SDavid du Colombier
83e12c5d1SDavid du Colombier cafp = fp;
93e12c5d1SDavid du Colombier cacp = cp;
103e12c5d1SDavid du Colombier }
113e12c5d1SDavid du Colombier
123e12c5d1SDavid du Colombier double
cosadd(int n,double coef,...)133e12c5d1SDavid du Colombier cosadd(int n, double coef, ...)
143e12c5d1SDavid du Colombier {
153e12c5d1SDavid du Colombier double *coefp;
163e12c5d1SDavid du Colombier char *cp;
173e12c5d1SDavid du Colombier int i;
183e12c5d1SDavid du Colombier double sum, a1, a2;
193e12c5d1SDavid du Colombier
203e12c5d1SDavid du Colombier sum = 0;
213e12c5d1SDavid du Colombier cp = cacp;
223e12c5d1SDavid du Colombier
233e12c5d1SDavid du Colombier loop:
243e12c5d1SDavid du Colombier a1 = *cafp++;
253e12c5d1SDavid du Colombier if(a1 == 0) {
263e12c5d1SDavid du Colombier cacp = cp;
273e12c5d1SDavid du Colombier return sum;
283e12c5d1SDavid du Colombier }
293e12c5d1SDavid du Colombier a2 = *cafp++;
303e12c5d1SDavid du Colombier i = n;
313e12c5d1SDavid du Colombier coefp = &coef;
323e12c5d1SDavid du Colombier do
333e12c5d1SDavid du Colombier a2 += *cp++ * *coefp++;
343e12c5d1SDavid du Colombier while(--i);
353e12c5d1SDavid du Colombier sum += a1 * cos(a2);
363e12c5d1SDavid du Colombier goto loop;
373e12c5d1SDavid du Colombier }
383e12c5d1SDavid du Colombier
393e12c5d1SDavid du Colombier double
sinadd(int n,double coef,...)403e12c5d1SDavid du Colombier sinadd(int n, double coef, ...)
413e12c5d1SDavid du Colombier {
423e12c5d1SDavid du Colombier double *coefp;
433e12c5d1SDavid du Colombier char *cp;
443e12c5d1SDavid du Colombier int i;
453e12c5d1SDavid du Colombier double sum, a1, a2;
463e12c5d1SDavid du Colombier
473e12c5d1SDavid du Colombier sum = 0;
483e12c5d1SDavid du Colombier cp = cacp;
493e12c5d1SDavid du Colombier
503e12c5d1SDavid du Colombier loop:
513e12c5d1SDavid du Colombier a1 = *cafp++;
523e12c5d1SDavid du Colombier if(a1 == 0) {
533e12c5d1SDavid du Colombier cacp = cp;
543e12c5d1SDavid du Colombier return sum;
553e12c5d1SDavid du Colombier }
563e12c5d1SDavid du Colombier a2 = *cafp++;
573e12c5d1SDavid du Colombier i = n;
583e12c5d1SDavid du Colombier coefp = &coef;
593e12c5d1SDavid du Colombier do
603e12c5d1SDavid du Colombier a2 += *cp++ * *coefp++;
613e12c5d1SDavid du Colombier while(--i);
623e12c5d1SDavid du Colombier sum += a1 * sin(a2);
633e12c5d1SDavid du Colombier goto loop;
643e12c5d1SDavid du Colombier }
65