-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpbm.c
More file actions
29 lines (23 loc) · 895 Bytes
/
pbm.c
File metadata and controls
29 lines (23 loc) · 895 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include "pbm.h"
polynomial polynomial_subtract(const polynomial a, const polynomial b) {
int largerDegree = a->degree > b->degree ? a->degree : b->degree;
int i;
polynomial p = polynomial_new(largerDegree);
for (i = 0; i <= largerDegree; i++) {
if (i > a->degree) p->values[i].coefficient = 0.0 - b->values[i].coefficient;
else if (i > b->degree) p->values[i].coefficient = a->values[i].coefficient;
else p->values[i].coefficient = a->values[i].coefficient - b->values[i].coefficient;
p->values[i].degree = i;
}
return p;
}
long double polynomial_calc(const polynomial a, long double x) {
int i;
long double v = 0.0;
for (i = 0; i <= a->degree; i++) {
if (a->values[i].coefficient != 0.0) {
v += a->values[i].coefficient * pow(x, a->values[i].degree);
}
}
return v;
}