X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/1107366d212418d8f8a6a80c54115387816ef2a2..63d6a8fab9c483e8f1fe6c8a6374b58a6c34884e:/base.plp?ds=sidebyside
diff --git a/base.plp b/base.plp
index ad6961b..0ba0613 100644
--- a/base.plp
+++ b/base.plp
@@ -19,41 +19,52 @@ Html({
<:
use Math::BigFloat;
-my @cols = (2, 6, 8, 9, 10, 12, 16, 18, 60);
+my @cols = (2, 6, 8, 9, 10, 12, 16, 18);
+my $count = 42;
print '
';
print ' | ', $_ for @cols;
my @char = (0..9, 'A'..'Z', 'a'..'z');
-my $places = 48;
+my $places = $count<<1;
-for my $n (2 .. 25) {
+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) = '';
+ $check .= '';
+ last ADD_DIGITS;
+ }
+ }
+ }
+ printf ' | %s', $class && qq( class="$class"), $out;
+}
+
+for my $n (2 .. $count) {
print ' |
---|
';
print '', $n;
for my $radix (@cols) {
my $accuracy = int($places * log($radix) / log(10));
Math::BigFloat->accuracy($accuracy);
- my $frac = Math::BigFloat->new(1)->bdiv($n, $accuracy+1);
- my $out = '';
- my $class = '';
-ADD_DIGITS:
- for my $place (1 .. $places) {
- $out .= $char[ $frac->blsft(1, $radix) ];
- $frac->bmod(1) or do {
- $class = $n == $radix ? 'l5' : $place == 1 ? 'l4' : 'l3';
- last;
- };
- for my $check (log($n)/log($radix) .. length($out)>>1) {
- if ($out =~ /[^0]/ and substr($out, -$check) eq substr($out, -$check*2, $check)) {
- $class = $check == 1 ? 'l2' : 'l1';
- substr($out, -$check) = '';
- substr($out, -$check, 0) = '(';
- last ADD_DIGITS;
- }
- }
- }
- printf ' | %s', $class && qq( class="$class"), $out;
+ shownum(scalar Math::BigFloat->new(1)->bdiv($n, $accuracy+1), $radix);
}
-# \x{305}
}
+
:>
|