]> git.lizzy.rs Git - plan9front.git/blob - sys/src/cmd/astro/cosadd.c
devproc: can't wait for ourselfs to stop (thanks Shamar)
[plan9front.git] / sys / src / cmd / astro / cosadd.c
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 }