33 unsigned long long n, N;
35 double mean[65], variance[65], median[65];
37 for (j = 0; j < 65; ++j) printf(
"; %d", j * 2 - 64);
38 printf(
"; total; mean; error; bias; precision");
39 for (i = 0; i < 129; ++i) {
40 printf(
"\n%d", i - 64);
43 for (j = 0; j < 65; ++j) {
45 printf(
"; %lld", h[i][j]);
48 s2 += (x - y) * (x - y) * h[i][j];
52 if (n > 5) printf(
"; %lld; %.2f; %.2f; %.2f; %.2f", n, s, sqrt(s2), x - s, sqrt(s2 - (x - s) * (x - s)));
53 else if (n > 0) printf(
"; %lld; %.2f; %.2f", n, s, sqrt(s2));
54 else printf(
"; %lld", n);
60 for (j = 0; j < 65; ++j) {
63 for (i = 0; i < 129; ++i) {
67 s2 += (x - y) * (x - y) * h[i][j];
71 variance[j] = s2 / (n - 1) ;
74 for (i = 0; i < 129; ++i) {
76 if (s >= (n + 1) / 2) {
82 for (i = 0; i < 129; ++i) {
87 }
else if (s > n / 2) {
95 printf(
"; %lld\n", N);
96 printf(
"mean");
for (j = 0; j < 65; ++j) printf(
"; %.2f", mean[j]); printf(
"\n");
97 printf(
"median");
for (j = 0; j < 65; ++j) printf(
"; %.2f", median[j]); printf(
"\n");
98 printf(
"error");
for (j = 0; j < 65; ++j) printf(
"; %.2f", sqrt(variance[j])); printf(
"\n");
99 printf(
"bias");
for (j = 0; j < 65; ++j) printf(
"; %.2f", (2*j - 64) - mean[j]); printf(
"\n");
100 printf(
"precision");
for (j = 0; j < 65; ++j) {x = (2*j - 64) - mean[j]; printf(
"; %.2f", sqrt(variance[j] - x * x));} printf(
"\n");
105 double y[65], x[129];
106 double m_x, m_y, s_x, s_y, s_xy;
111 for (j = 0; j < 65; ++j) y[j] = j * 2 - 64;
112 for (j = 0; j < 129; ++j) x[j] = j - 64;
114 m_x = m_y = s_x = s_y = s_xy = 0.0;
117 for (i = 0; i < 129; ++i)
118 for (j = 0; j < 65; ++j) {
120 m_x += x[i] * h[i][j];
121 m_y += y[j] * h[i][j];
122 s_x += x[i] * x[i] * h[i][j];
123 s_y += y[j] * y[j] * h[i][j];
124 s_xy += x[i] * y[j] * h[i][j];
130 s_x = sqrt(s_x / n - m_x * m_x);
131 s_y = sqrt(s_y / n - m_y * m_y);
132 s_xy = s_xy / n - m_x * m_y;
134 r = s_xy / (s_x * s_y);
137 printf(
"statistics summary\n");
138 printf(
"n = %.0f\n", n);
139 printf(
"m_eval = %.6f; m_score = %.6f\n", m_x, m_y);
140 printf(
"s_eval = %.6f; s_score = %.6f; cov = %.6f\n", s_x, s_y, s_xy);
141 a = sqrt(s_xy) / s_x;
143 printf(
"score = %.6f * eval + %.6f; r = %.6f; r2 = %.6f (regression)\n", a, b, r, r*r);
146 printf(
"score = %.6f * eval + %.6f;(correlation)\n", a, b);
147 a = sqrt(s_xy) / s_y;
149 printf(
"eval = %.6f * score + %.6f;(regression)\n", a, b);
152 printf(
"eval = %.6f * score + %.6f;(correlation)\n", a, b);
159 int i, j, i_k, j_k, v;
160 unsigned long long max;
162 unsigned char r[256], g[256], b[256];
165 f = fopen(file,
"w");
167 warn(
"cannot open ppm file %s\n", file);
173 for (i = 0; i < 129; ++i)
174 for (j = 0; j < 65; ++j) {
175 if (histogram[i][j] > max) max = histogram[i][j];
180 r[0] = g[0] = b[0] = 255;
181 for (i = 1; i < 64; i++) { r[i + 0] = 255 - i * 4; g[i + 0] = 0; b[i + 0] = 255;}
182 for (i = 0; i < 64; i++) { r[i + 64] = 0; g[i + 64] = i * 4; b[i + 64] = 255 - i * 4;}
183 for (i = 0; i < 64; i++) { r[i + 128] = i * 4; g[i + 128] = 255; b[i + 128] = 0;}
184 for (i = 0; i < 64; i++) { r[i + 192] = 255; g[i + 192] = 255 - i * 4; b[i + 192] = 0;}
187 fprintf(f,
"P3\n%d %d\n%d\n", 516, 520, 255);
190 for (i = 64; i >= 0; --i) {
191 for (i_k = 0; i_k < 8; ++i_k) {
192 for (j = 0; j < 129; ++j) {
193 v = floor(histogram[j][i] * w +
RCD);
if (v == 0 && histogram[j][i] > 0) v = 1;
194 for (j_k = 0; j_k < 4; ++j_k) fprintf(f,
"%d %d %d ", r[v], g[v], b[v]);