Tuesday, November 09, 2021

[uphrssad] logarithm calculator interface

two rows of digits, x and log10(x), inspired by (common) log tables.

move a cursor to select a digit to adjust.  can adjust either row.  the other row recalculates instantly.

shortcut: set all digits to the right of cursor to zero.

perhaps if you adjust a digit, all digits to the right automatically get set to zero.  if so, digits must be entered from most significant to least.  however, panning through a range with the next less significant digit set to 5 seems like a useful operation to enable.

if you try to go beyond 9, does it stop, cycle back to 0, or adjust the next most significant digit?  provide both of the last two: buttons adjust individual digits, cycling back to zero.  a knob adjusts the next most significant digit, allowing panning through a range.

range of x: 1.00... to 9.99... ; range of log10: 0.000... to 0.999...  no need to worry about sign, overflow, floating point.

difficulty: as an example, assume 3 digits on each row as above.  entering x=9.99 has the correct answer log10(x)=0.99957 which should round to 1.000 but that number cannot be represented.  suppose it instead outputs 0.999.  but 10^0.999 = 9.98 not 9.99 .

perhaps a plus indicator 0.999+ denoting a number between 0.9995 and 1.

similar issues happen around 1.00 = 10^0.000 = 10^0.001 = 10^0.002 , and probably other places.  previously.

another partial solution: UI element to specify which row represents the exact number.  perhaps it lights up (indicating availability) only in corner cases such as above where x != inverse(f(x)).  editing a digit probably chooses that row to be exact, though vaguely plausible not to.  if not, internal representation is messy.

the shortcut mentioned above to set digits to the right to zero and the UI element to select the row which represents an exact number seem related: "exact" means all digits to the right (especially those beyond the display) are zero.

consider the same thing but in binary and log base 2.  blinky lights, buttons to toggle bits (but we also want pan).  range of x is 1.00... to 1.11... , so the leading bit, always on, is superfluous.  shortcut to set all bits to the right to zero is even more necessary, as UI will likely present many bits.

provide another device or mode with a similar interface to convert between binary and decimal.

app?  undo?  copy/paste?  error-correcting code for accurate copying?  input and output are general problems.  logs then get added, multiplied, etc., elsewhere.

No comments :