+sub shownum {
+ my ($num, $radix) = @_;
+
+ my $out = '';
+ my $class = '';
+ my $zeros = 0;
+
+ADD_DIGITS:
+ for my $place (1 .. $places) {
+ $out .= $char[ $num->blsft(1, $radix) ];
+ $num->bmod(1) or do {
+ $class = $out eq '1' ? 'l5' : $place == 1 ? 'l4' : 'l3';
+ last;
+ };
+ $zeros++ if $out =~ /^0+$/;
+
+ for my $check ($zeros .. length($out)>>1) {
+ if (substr($out, -$check) eq substr($out, -$check*2, $check)) {
+ $class = $check == 1 ? 'l2' : 'l1';
+ substr($out, -$check) = '';
+ substr($out, -$check, 0) = '<span style="text-decoration:overline">';
+ $check .= '</span>';
+ last ADD_DIGITS;
+ }
+ }
+ }
+ printf '<td%s style="text-align:left">%s', $class && qq( class="$class"), $out;
+}
+
+for my $n (2 .. $count) {