@@ -6,6 +6,8 @@
const long WMULT_CONST = ((1UL << N) - 1);
double y;
+int ld_avg_max_n;
+double sum_fl_n;
long runnable_avg_yN_inv[N];
void calc_mult_inv() {
@@ -42,6 +44,7 @@ void calc_yn_sum(int n)
printf("%2d: %8.0f %8.0f %8.0f\n", i, sum, sum_fl,
sum_fl - sum);
}
+ sum_fl_n = sum_fl;
printf("\n");
}
@@ -55,14 +58,29 @@ void calc_conv(long n) {
n = mult_inv(n, 1) + 1024;
i++;
} while (n != old_n);
+ ld_avg_max_n = i - 1;
printf("%d> %ld\n", i - 1, n);
printf("\n");
}
+void calc_acc_sum() {
+ int i = 1;
+ double sum = sum_fl_n;
+ int periods = ld_avg_max_n/N + 1;
+
+ printf("sum acc\n");
+
+ do {
+ printf("%2d: %8.0f\n", i, sum);
+ sum = floor(sum/2 + sum_fl_n);
+ } while (++i <= periods);
+}
+
void main() {
y = pow(0.5, 1/(double)N);
calc_mult_inv();
calc_conv(1024);
calc_yn_sum(N);
+ calc_acc_sum();
}