8.40 Addition and Subtraction Logarithms
Originally posted: 2025 Jan 15
Slide rule users often complain that while slide rules were used to perform multiplication and division problems, it was up to the user to perform any simple addition and subtraction required in a computation. After all, the development of the “logarithm” concept in the early 1600s was to assist in calculating multiplications, as addition was thought of as straightforward. On the other hand, the use of logarithms to perform a general addition problem is not out of the question, so long as the occasional addition of “1” during the process is deemed to be simple enough to be allowed.
The concept is the following. Suppose we have two numbers, \(a\) and \(b\), where \(a>b\), and we have a table of logarithms from which we can find \(\log a\) and \(\log b\) to several-place accuracy. We now wish to find the sum of and the difference between the two numbers.
Define \(x\) as the ratio of the larger number to the smaller number, \[ \frac{a}{b} \equiv x ~~~ \geq ~ 1 \] from which \[ \log a - \log b = \log x ~~~ > ~ 0, \]
and then write
\[ a+b = b\cdot(a/b+1). \] From this we see that
\[ \log(a+b) = \log b + \log(a/b+1) = \log b + \log(x+1). \]
Since we can look up the logarithms of our initial two numbers, then taking the difference of their two logarithms and finding the antilog from our log table we can determine \(x\). Then, if we add 1 to this value, we can look up the log of \(x+1\). Adding the logarithm of \(b\) to this result, we find that we have the logarithm of \(a+b\), which from the log tables will give us the value of the sum, \(a+b\).
Likewise, if we desire the difference of the two numbers, then we can take
\[\begin{eqnarray*} a-b &=& b\cdot(a/b -1) \\ ~\\ \log(a-b) &=& \log b + \log(a/b-1) = \log b + \log(x-1) \\ \end{eqnarray*}\]
This time, using a log table, we can find \(x\), subtract 1 from \(x\), and find the log of the result. Next, by adding \(\log b\) we have the log of \(a-b\) and the final answer can be found from the log table.
Let’s do an example on a slide rule. Let’s add 5 + 2. We can re-write the problem as
\[ 5 + 2 = 2 \times (\frac{5}{2} + 1) \] So take the slide rule and
- move the 2 on C to 5 on D, thus finding 5/2.
- Note the value at the left index, 2.5, and move the cursor to 2.5 + 1 = 3.5.
- Move the index to 3.5 then slide the cursor to 2 on C.
- The result is on D under the cursor: 7.
The steps we just took are exactly the same steps as described previously in terms of logarithms. Since the distance along a slide rule scale is proportional to a logarithm, then we aren’t looking up values in tables, exactly, but we are performing the same math. When we find the value of 2.5 on the rule, we are actually marking off a distance of \(``\log 2.5";\) this is our \(``\log x".\) When we move the cursor to 3.5, we are finding \(``\log(x+1)".\) We didn’t really need to know the value of \(``x"\), we just needed to be able to find the log of \(x+1\) given the log of \(x\).
Though not familiar to most, books were created of “Addition and Subtraction Logarithms” (ASL)163 for assistance in performing this very task when numbers with many digits were at use. I recently obtained a copy of Addition and Subtraction Logarithms to Seven Decimal Places, by William W. Johnson (Charles T. Powner, Co., Publisher, Chicago, 1943) which was meant to be used along with 7-place logarithm tables. The table in the book has values of \(\log x\), titled “A”, and values of \(\log(x+1)\), titled “B”, side by side for a range of values of \(x\). So, you would just take \(\log a - \log b\) to get \(\log x\), then just find this value within the A column, look over to the B column to read off \(\log(x+1)\) and then add that value to \(\log b\) to get \(\log(a+b)\). Then look that number up in the standard log table to read off the sum \(a+b.\)
The same table of values for A and B can be used for differences as well. If you use B to represent \(\log x\), then the corresponding values of A will be equal to \(\log(x-1)\). Then, after adding \(\log b\) to this number you’ll get the log of \(a-b\). Of course we can also perform this operation on a slide rule as well. To compute 5 - 2 on the slide rule, for example, one would
- move the 2 on C to 5 on D, thus finding 5/2.
- Note the value at the left index, 2.5, and move the cursor to 2.5 - 1 = 1.5.
- Move the index to 1.5 then slide the cursor to 2 on C.
- The result is on D under the cursor: 3.
8.40.1 Books of Addition and Subtraction Logarithms
Below are some images from my newly acquired ASL book. It has 126 pages of a single table for values of A = \(\log x\) and B = \(\log(x+1)\) that cover the range \(10^{-7} < x < 10^7\). It has values of A to the left, to three places. Then, across the top are columns, 0 to 9, corresponding to the fourth digit in A. The numbers below are the corresponding values of B. Side-tables to the right are interpolation tables for use in getting further digits for B given more digits in A.


In all, one can acquire 7-place values for A and B, which are to be used in conjunction with a 7-place log table. In order to produce a table similar to that in the ASL book, we can generate two columns, A which is equal to \(\log x\) and B which is equal to \(\log(x+1)\), for a range of \(x\) values. We’ll just generate a short table for now, for \(1 < x < 3\) in intervals of 0.1:
A = log(x), B = log(x+1)
x | A | B | x | A | B |
---|---|---|---|---|---|
1.0 | 0.0000000 | 0.3010300 | 2.0 | 0.3010300 | 0.4771213 |
1.1 | 0.0413927 | 0.3222193 | 2.1 | 0.3222193 | 0.4913617 |
1.2 | 0.0791812 | 0.3424227 | 2.2 | 0.3424227 | 0.5051500 |
1.3 | 0.1139434 | 0.3617278 | 2.3 | 0.3617278 | 0.5185139 |
1.4 | 0.1461280 | 0.3802112 | 2.4 | 0.3802112 | 0.5314789 |
1.5 | 0.1760913 | 0.3979400 | 2.5 | 0.3979400 | 0.5440680 |
1.6 | 0.2041200 | 0.4149733 | 2.6 | 0.4149733 | 0.5563025 |
1.7 | 0.2304489 | 0.4313638 | 2.7 | 0.4313638 | 0.5682017 |
1.8 | 0.2552725 | 0.4471580 | 2.8 | 0.4471580 | 0.5797836 |
1.9 | 0.2787536 | 0.4623980 | 2.9 | 0.4623980 | 0.5910646 |
The above results agree with the values found in the ASL book. The book includes values for \(0<x<1\) as well. In this case, the values in the A table would be negative for \(x<1\). As was often found in the use of logarithms, negative values are avoided by adding and subtracting a suitable integer. For example, if we want the log of 0.004, we find using a computer that \(\log 0.004\) = -2.39794. But in a table of logs, this might be written as 3 - 3 + -2.39794 = 0.60206 - 3, which is the same as \(\log 4 - 3\) (since .004 is the same as \(4\times 10^{-3}).\)
For the tables in our ASL book, the values for A where \(x<1\) are written with an offset of 10. That is, when A = \(\log x\) has a value of 3.8, this means that the value of \(x\) it represents is \(x\) = \(10^{3.8-10}\) = \(10^{0.8}\times 10^{-7}\) = \(6.30\times 10^{-7}.\) This continues until A reaches “10”, which occurs when \(x\) = 0. At that point, the offset of 10 is removed from the entries for A, and A starts over at 0 and moves on. This feature took me a little while to realize what was going on, as the book contains no instructions for reading the table.
So, to create our example table we define A to be \(10+\log x\) for \(x\lt 1\) and simply \(\log x\) otherwise. For B, we use \(\log(x+1)\), which is always larger than zero. Below we show some code and some snippets of the resulting table. First, we look at the values of A and B when \(x\) is increased by multiples of 10, starting at \(10^{-7}:\)
A = log(x), B = log(x+1)
x | A | B | x | A | B |
---|---|---|---|---|---|
1e-07 | 3 | 0.0000000 | 1e+00 | 0 | 0.301030 |
1e-06 | 4 | 0.0000004 | 1e+01 | 1 | 1.041393 |
1e-05 | 5 | 0.0000043 | 1e+02 | 2 | 2.004321 |
1e-04 | 6 | 0.0000434 | 1e+03 | 3 | 3.000434 |
1e-03 | 7 | 0.0004341 | 1e+04 | 4 | 4.000043 |
1e-02 | 8 | 0.0043214 | 1e+05 | 5 | 5.000004 |
1e-01 | 9 | 0.0413927 | 1e+06 | 6 | 6.000000 |
Next, we zoom in a bit near the point where A = 0, where we find
A = log(x), B = log(x+1)
x | A | B | x | A | B |
---|---|---|---|---|---|
0.65 | 9.8129134 | 0.2174839 | 1.35 | 0.1303338 | 0.3710679 |
0.70 | 9.8450980 | 0.2304489 | 1.40 | 0.1461280 | 0.3802112 |
0.75 | 9.8750613 | 0.2430380 | 1.45 | 0.1613680 | 0.3891661 |
0.80 | 9.9030900 | 0.2552725 | 1.50 | 0.1760913 | 0.3979400 |
0.85 | 9.9294189 | 0.2671717 | 1.55 | 0.1903317 | 0.4065402 |
0.90 | 9.9542425 | 0.2787536 | 1.60 | 0.2041200 | 0.4149733 |
0.95 | 9.9777236 | 0.2900346 | 1.65 | 0.2174839 | 0.4232459 |
1.00 | 0.0000000 | 0.3010300 | 1.70 | 0.2304489 | 0.4313638 |
1.05 | 0.0211893 | 0.3117539 | 1.75 | 0.2430380 | 0.4393327 |
1.10 | 0.0413927 | 0.3222193 | 1.80 | 0.2552725 | 0.4471580 |
1.15 | 0.0606978 | 0.3324385 | 1.85 | 0.2671717 | 0.4548449 |
1.20 | 0.0791812 | 0.3424227 | 1.90 | 0.2787536 | 0.4623980 |
1.25 | 0.0969100 | 0.3521825 | 1.95 | 0.2900346 | 0.4698220 |
1.30 | 0.1139434 | 0.3617278 | 2.00 | 0.3010300 | 0.4771213 |
All of the above results agree with the values found in the ASL book, confirming our understanding of the table, particularly the interpretation of A values for \(x<1\).
8.40.2 Example Using Addition and Subtraction Logarithms
So why was this procedure a “thing” in the mid-1900s? It often occurs that one wants to evaluate a more complicated equation to high precision, where addition/subtraction AND multiplication/division are involved. Having standard log and ASL tables both with 6- or 7-place values can accomplish this. As an example, suppose we want to accurately evaluate
\[ Z = \sqrt{p^2 + q^2 - 2pq\cos\theta} \] where \(p\) = 42.574, \(q\) = 22.754 , and \(\theta\) = \(67.89^\circ\).
- Using the tables.
First, we’ll compute the logs of \(a\equiv p^2 + q^2\) and \(b\equiv 2pq\cos\theta\) separately, and then find the log of the difference between them.
- Evaluate “log a”
\[ a =p^2 + q^2 = q^2(p^2/q^2 + 1) \rightarrow \log a = \log q^2 + \log(x+1) ; ~~~~~~ x = (p/q)^2 \] and for this step, our value of
\[ \log x = 2\times (\log p - \log q). \]
Using log tables:
\(\log x\) = 2 x (\(\log\) 42.574 - \(\log\) 22.754) = 2 x (1.629144 - 1.357058) = 2 x 0.272086 = 0.544172.
From the ASL table, we find that if A = \(\log x\) = .544172, then B= \(\log(x+1)\) = 0.653293. So, this yields \(\log a\) = \(\log (p^2+q^2)\) = \(2\log q\) + B = 2 x 1.357058 + 0.653293, or
\[ \log a = 3.367409. \]
- Evaluate “log b”
Next, we have \(b\equiv 2pq\cos\theta\). So, \(\log b\) = \(\log 2 + \log p + \log q +\log\cos\theta\) = 0.30103 + 1.629144 + 1.357058 + \(\log\) 0.376386 = 3.287232 + 0.5756335 - 1, or \[ \log b = 2.862865. \]
- Put them together
We’ve just evaluated the logarithms of \(p^2 + q^2\) (our “\(a\)”) and of \(2pq\cos\theta\) (our “\(b\)”). We now want to find the logarithm of the difference of these two quantities. Hence, we reformulate by re-defining \(x\) using \(\log x = \log a - \log b\) = 3.367409 - 2.862865 = 0.504544.
This time we want to subtract \(a\) and \(b\), and so we set B = \(\log x\) and look at our ASL tables to find A = \(\log(x-1)\). So for our current case, B = \(\log x\) = 0.504544, and we find the corresponding A in the table, and get A = 0.341541. Adding this to \(\log b\) we get the log of the difference,
\[ \log(a-b) = \log(p^2 + q^2 - 2pq\cos\theta) = \log b + {\rm A} = 2.862865 + 0.341541 = 3.204406. \]
To ultimately find the square root, we now take half of this logarithm:
\[
\frac12\cdot\log(p^2 + q^2 - 2pq\cos\theta) = \log(\sqrt{p^2 + q^2 - 2pq\cos\theta}) = 1.602203.
\]
From our log tables, the number with this log is 40.01317. This is our final answer or, more appropriately \(Z\) = 40.013, as we started out with numbers of 5 significant digits.
- Using a computer.
## [1] 40.01322
Even when using more digits than the amount given to the original numbers, the computer result, \(Z\) = 40.01322, agrees with the log table estimate to within about \(1.4\) ppm.
- Using a slide rule.
First of all, we shouldn’t expect to get such accuracy on a slide rule. A number like 40.0 would be as good an estimate to expect on a 10-inch rule, while a Thacher or Fuller might yield 40.01 or maybe another digit. But with care and for the right combination of digits a 10-inch rule should give a result good to about 0.1-0.2%. (See The Long and Short of It.) For our present case, that should be an answer of about 40.0 or so.
Here, I’ll use a 10-inch Post Versalog slide rule. We could evaluate the two terms separately, subtract them, and take the final square root. But that would mean having to write down a couple of numbers on paper. Ha! We now know we don’t have to do that. Let’s re-write our formula as follows:
\[\begin{eqnarray*} Z &=& \sqrt{[42.57^2 + 22.75^2] ~~ - ~~ 2(42.57)(22.75)\cos(67.89^\circ)} \\ &=& \sqrt{22.75^2 \cdot[42.57^2/22.75^2 + 1] ~~ - ~~ 2(42.57)(22.75)\cos(67.89^\circ)} \\ &=& \sqrt{ 2(42.57)(22.75)\cos(67.89^\circ) \cdot \left[ \frac{22.75}{2(42.57)\cos(67.89^\circ)}\left[42.57^2/22.75^2 + 1 \right] -1 \right] } \end{eqnarray*}\]
Taking the trusty Versalog in hand, we start by working on the inner-most bracket and work our way out. First, we
- place 22.75 on C over 42.57 on D.
- Move the cursor to 42.57 on CF. Place 22.75 on CF to the cursor.
- I’m doing it this way rather than using the A scale, as I would like to keep answers on D for now.
- I’m doing it this way rather than using the A scale, as I would like to keep answers on D for now.
- Move the cursor to the index on C and read the result on D. I get 3.51.
- Move the cursor to the above result plus 1 on C: 4.51.
- Align left index to the cursor. Move cursor to 22.75 on C.
- Align 2 on C to the cursor.
- Move cursor to 42.57 on CI.
- Align 67.89 (green = cos), or 22.11 (black = sin) on S to the cursor.
- Move cursor to right index. Read result on D. I have 3.22.
Pause now for a moment. Where is our decimal point? If 42/22 is about 2, squared is about 4, add one is about 5, times 22/2 is about 50, divided by 42 is about 1.2, and divided by sin of 22 deg. \(\sim\) 1/2 \(\times\) 2/3 \(\sim\) 1/3, then this ought to give about 3-4 or so; so my best guess is that 3.22 is the correct decimal placement. We now have evaluated the “inner bracket” and the factors out in front of it. And now we must subtract 1 from this result, and continue on…
- Take the 3.22 and subtract 1, thus move cursor to 2.22 on D.
- Move 2 on CI to the cursor. Move cursor to 42.57 on C.
- Move 22.75 on CI to the cursor. Our result thus far is at the index.
- Move cursor to 67.89 (green = cos), or 22.11 (black = sin) on S.
- Read result on D. I get about 1620. (Since p and q squared are about 1600 and 400, then I was expecting something around 2000 or a bit less.)
And finally, we take the square root of this number by following the cursor to read the result on R2 on the Versalog: 40.2.
If your rule does not have the R2 scale like the Versalog does (most don’t), then you must find 1620 on A (second half of the scale) and read the square root on D. You probably can’t do much better than just “40”. But if you want a chance at getting that third digit, and possibly a fourth digit, correct, then the R1/R2 scales would be very desirable.
As we see, the slide rule result (that is, my slide rule result) with all of these steps is good to 2/400 = 0.5%. I’m sure if I were more careful, and had better eyes, I could get that down closer to 0.2%. But I certainly could not get to the levels found using the log tables; not with a 10-inch slide rule. Maybe I’ll go back and try the calculation on my 20-inch Aristo …
The standard slide rule does, as advertised, produce a result good to about 3 digits, even when incorporating addition and subtraction with the method described. But when the result really counts, scientists and engineers often continued to keep highly-accurate log tables, and perhaps even Addition and Subtraction Logarithm tables, at their desks not far from the 20-inch slide rule.
My notation, not theirs.↩︎