base: radix economy for 3 different maximums
[sheet.git] / base.plp
index f34f36e..7d31a4d 100644 (file)
--- a/base.plp
+++ b/base.plp
@@ -18,6 +18,26 @@ my @char = (0..9, 'A'..'Z', 'a'..'z');
 :>
 <h1>Number bases</h1>
 
+<h2>Radix economy</h2>
+<table>
+<:
+sub radix_economy {
+       my ($val, $radix) = @_;
+       return $radix * int(log($val) / log($radix) + 1);
+}
+
+use List::Util 'sum';
+print '<tr><th>';
+print '<th>', $_ for @morecols;
+for my $max (100, 255, 1024) {
+       print '<tr><th>', $max;
+       for my $radix (@morecols) {
+               printf '<td style="text-align:right">%.1f',
+                       sum(map { radix_economy($_, $radix) } 1 .. $max) / $max;
+       }
+}
+:></table>
+
 <h2>Fractions</h2>
 <table>
 <: