Google newsgroups archive
(Corrected and slightly edited version of alt.math.undergrad newsgroup reply post of August 11th 2006, 22:59 CEST)
Newsgroups: alt.math.undergrad
From: JEMebius <jemeb...@xs4all.nl>
Date: Fri, 11 Aug 2006 22:59:33 +0100
Local: Fr. 11 Aug. 2006 22:59
Subject: Re: Solving logarithms by hand
A similar algorithm was taught at secondary schools in the netherlands around 18901910 and perhaps later. Unfortunately it was deleted from the curricula in the late 1940s or early 1950s; I do not know exactly. [Emphasis added 2010.07.10 by J.E.Mebius] I learned it in my boyhood time from my grandfather's copy of Jan Versluys's Leerboek der Rekenkunde (Textbook of Arithmetic) (1906).
Jan Versluys's algorithm for base10 logarithms rests upon repeated subdivision of segments of the line of logarithms into equal halves, and the corresponding repeated subdivision of segments of the line of numeri by means of the geometric mean. This involves repeated calculations of square roots.
Square root extraction is the only arithmetic needed beyond the four main operations.
Versluys's algorithm runs as follows:
(A)
Locate the the next lower power of 10 of the number X (say L = 10^{m}) and the next higher power of 10 (H = 10^{m+1}). Then the integer part of log (X) is m. Assume X is not a power of 10.
(B)
Compute M1 = sqrt (L.H) and inspect if X < M1 or X > M1. If X = M1 then the fraction part of log (X) is 1/2, and you are done.
(C)
Lower or upper half of [m, m+1]? 
if X < M1 then 0 < frac (log (X)) < 1/2; if x > M1 then 1/2 < frac (log (X)) < 1.
(D)
Lower or upper half of [m, m+1/2]? (or of [m+1/2, m+1]?) 
compute M2 = sqrt (L.M1) or M2 = sqrt (M1.H) as applicable. Inspect in which segment X is located: [L, M2] or [M2, M1]
(or [M1, M2] or [M2, H] if M2 = sqrt (M1.H))
(E)
etc. until the desired accuracy is reached.
It is essentially a sequence of nested segments of sizes 1/2, 1/4, 1/8, 1/16 etc. on the axis of logarithms and the corresponding sequence of nested segments on the axis of numeri. The classical theorems of real analysis guarantee correctness and termination of Versluys's algorithm.
Original post by Fernando Vicaria
Newsgroups: alt.math.undergrad
From: "Fernando Vicaria" <fvica...@hotmail.com>
Date: Mon, 24 Jul 2006 18:37:10 +0100
Local: Mo 24 Jul. 2006 18:37
Subject: Solving logarithms by hand...
I found the following algorithm to solve logarithms by hand:
Does anybody know the logic behind it? How can I prove it's correct?
Thanks!

To calculate n = log[base k] of X.
Step 1:
Set n = 0. Set p = 1
Step 2
While X > k do the following
Divide X by k
Increment n
Step 3
Repeat
Set k to sqrt(k)
Divide p by 2
if X > k then do the following
Divide X by k
Add p to n
until p < acceptable error
n will be the required logarithm.
For example:
Lets say we want to know the value of log_{2}(19) = n.
n 
X 
k 
p 

0 
19 
2 
1 
step 1 complete 
1 
9.5 
2 
1 

2 
4.75 
2 
1 

3 
2.375 
2 
1 

4 
1.1875 
2 
1 
step 2 complete 
4 
1.1875 
1.414214 
0.5 

4 
1.1875 
1.189207 
0.25 

4.125 
1.088942 
1.090508 
0.125 

4.1875 
1.042775 
1.044274 
0.0625 

... 
... 
... 
... 

at which point we know the log[base 2] of 19 is approximately 4.1875 to an accuracy of 0.0625.
So all it involves is addition, division and sqrt calculation, all of which can be done easily with a pencil and paper.

Best regards,
Fernando Vicaria
Senior Software Engineer
http://blogs.msdn.com/fvicaria
