[HN Gopher] Estimating Logarithms
___________________________________________________________________
Estimating Logarithms
Author : surprisetalk
Score : 47 points
Date : 2025-05-31 06:22 UTC (1 days ago)
(HTM) web link (obrhubr.org)
(TXT) w3m dump (obrhubr.org)
| xeonmc wrote:
| Protip: since halving and doubling are the same logarithmic
| distance on either sides of unity, and the logarithmic distance
| of 2.0 to 5.0 is just a tiny bit larger than that of doubling,
| this means that you can roughly eyeball the infra-decade fraction
| by cutting them into thirds
| thechao wrote:
| I don't know about powers-of-10; but, you can use something
| similar to bootstrap logs-in-your-head.
|
| So, 2^10=1024. That means log10(2)~3/10=0.3. By log laws: 1 - .3
| = 0.7 ~ log10(5).
|
| Similarly, log10(3)*9 ~ 4 + log10(2); so, log10(3) ~ .477.
|
| Other prime numbers use similar "easy power rules".
|
| Now, what's log10(80)? It's .3*3 + 1 ~ 1.9. (The real value is
| 1.903...).
|
| The log10(75) ~ .7*2+.477 = 1.877 (the real answer is 1.875...).
|
| Just knowing some basic "small prime" logs lets you rapidly
| calculate logs in your head.
| madcaptenor wrote:
| For log(3) I prefer the "musical" approximation 2^19 ~ 3^12.
| This is a "musical" fact because it translates into 2^(7/12) ~
| 3/2 - that is, seven semitones make a perfect fifth). Together
| with log(2) ~ 3/10 that gives log(3) ~ 19/40.
|
| Also easy to remember: 7^4 = 2401 ~ 2400. log(2400) = log(3) +
| 3 log(2) + 2 ~ 19/40 + 3 * 12/40 + 2 = 135/40, so you get
| log(7) ~ 135/160 = 27/32 = 0.84375.
| thechao wrote:
| These are both great! I learned most of these old tricks from
| my dad & grandfather.
| briian wrote:
| So much of economics maths/stats is built on this one little
| trick.
|
| It's still pretty cool to me that A this works and B it can be
| used to do so much.
| saulpw wrote:
| Here's all you really need to know about logs when estimating in
| your head:
|
| The number of digits minus one is the magnitude (integer). Then
| add the leading digit like so:
|
| 1x = ^0.0
|
| 2x = ^0.3 (actually ^0.301...)
|
| pi = ^0.5 (actually ^0.497...)
|
| 5x = ^0.7 (actually ^0.699...)
|
| Between these, you can interpolate linearly and it's fine for
| estimating. Also 3x is close enough to pi to also be considered
| ^0.5.
|
| In fact, if all you're doing is estimating, you don't even really
| need to know the above log table. Just use the first digit of the
| original number as the first digit past the decimal. So like 6000
| would be ^3.6 (whereas it's actually ^3.78). It's "wrong" but not
| that far off if you're using logarithmetic for napkin math.
| xeonmc wrote:
| And this is also the basis of the fast inverse square root
| algorithm. Floating point numbers are just linear
| interpolations between octaves.
| thomasahle wrote:
| What is this ^notation?
|
| Looks like 5x=^0.699 means log_10(5)=0.699.
| xeonmc wrote:
| 5 = 10^0.699
| saulpw wrote:
| It's magnitude notation. ^X is short for 10^X.
| gus_massa wrote:
| Typo near the top, in case someone knows the author:
|
| > _log(100)<=log(N) <log(100)_
|
| There is a missing 0 in the last log. It should be
|
| > _log(100)<=log(N) <log(1000)_
___________________________________________________________________
(page generated 2025-06-01 23:00 UTC)