Calculate sample variance
This commit is contained in:
parent
eeeb8e4f3c
commit
83f056effc
2 changed files with 21 additions and 1 deletions
3
Makefile
3
Makefile
|
@ -60,3 +60,6 @@ mtrace-test.txt: mtrace-test.trace
|
||||||
|
|
||||||
uiowa-threads-example: uiowa-threads.o uiowa-threads-example.c
|
uiowa-threads-example: uiowa-threads.o uiowa-threads-example.c
|
||||||
$(CC) $(CFLAGS) -o $@ $^
|
$(CC) $(CFLAGS) -o $@ $^
|
||||||
|
|
||||||
|
av-variance: av-variance.c
|
||||||
|
$(CC) $(CFLAGS) -o $@ $< -lm
|
||||||
|
|
|
@ -17,6 +17,20 @@ bool isalmost(double x, double c, double epsilon) {
|
||||||
return fabs(x-c) < epsilon;
|
return fabs(x-c) < epsilon;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
double sample_variance(double set[], int set_n) {
|
||||||
|
double m = mean(set, set_n);
|
||||||
|
|
||||||
|
double ss = 0.0;
|
||||||
|
for (int i=0; i<set_n; i++) {
|
||||||
|
ss += pow((set[i]-m), 2.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Divide by (n-1), as this is *sample* variance (Bessel's correction).
|
||||||
|
ss /= (set_n-1);
|
||||||
|
|
||||||
|
return ss;
|
||||||
|
}
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
// Some data
|
// Some data
|
||||||
double d[] = {7, 8, 5, 1, 6, 2};
|
double d[] = {7, 8, 5, 1, 6, 2};
|
||||||
|
@ -31,7 +45,10 @@ int main() {
|
||||||
|
|
||||||
// XXX assert(isalmost(median(d, d_n), 5.5, 0.001));
|
// XXX assert(isalmost(median(d, d_n), 5.5, 0.001));
|
||||||
// XXX assert(isalmost(median(e, e_n), XXX, 0.001));
|
// XXX assert(isalmost(median(e, e_n), XXX, 0.001));
|
||||||
// XXX Variance
|
|
||||||
|
assert(isalmost(sample_variance(d, d_n), 7.766, 0.001));
|
||||||
|
assert(isalmost(sample_variance(e, e_n), 41.564, 0.001));
|
||||||
|
|
||||||
// XXX Stddev
|
// XXX Stddev
|
||||||
// XXX Range
|
// XXX Range
|
||||||
// XXX Mode
|
// XXX Mode
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue