Blob
1 #include "astro.h"4 void5 icosadd(double *fp, char *cp)6 {8 cafp = fp;9 cacp = cp;10 }12 double13 cosadd(int n, double coef, ...)14 {15 double *coefp;16 char *cp;17 int i;18 double sum, a1, a2;20 sum = 0;21 cp = cacp;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 do33 a2 += *cp++ * *coefp++;34 while(--i);35 sum += a1 * cos(a2);36 goto loop;37 }39 double40 sinadd(int n, double coef, ...)41 {42 double *coefp;43 char *cp;44 int i;45 double sum, a1, a2;47 sum = 0;48 cp = cacp;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 do60 a2 += *cp++ * *coefp++;61 while(--i);62 sum += a1 * sin(a2);63 goto loop;64 }