real entropy(data b) { integer count, i; real ones, zeros; ones = zeros = 0; i = -(count = ~b); while (i) { if (b[i] == '0') { zeros += 1; } else { ones += 1; } i += 1; } return -(ones /= count) * log2(ones) - (zeros /= count) * log2(zeros); } integer main(void) { data a, b; integer i; a = "1"; b = "0"; o_form("%2d %9d /w12p10d10/ ~\n", 1, ~a, 0r, a); o_form("%2d %9d /w12p10d10/ ~\n", 2, ~b, 0r, b); i = 3; while (i <= 37) { bu_copy(a, 0, b); o_form("%2d %9d /w12p10d10/ ~\n", i, ~a, entropy(a), i < 10 ? a.string : ""); i += 1; b.swap(a); } return 0; }