Another Method For Extracting Cube Roots
Another Method For Extracting Cube Roots
Another Method For Extracting Cube Roots
Brian J. Shelburne
Dept of Math and Computer Science
Wittenberg University
Probably the easiest way (?) to compute the cube root of a is to use the iteration formula
2 x3 + a
xn +1 = n 2 . However, while checking out an article in the December 1958 issue of the
3 xn
Communications of the ACM I ran across a paper that demonstrated another method for
extracting cube roots. The method was useful (?) since it was done using fixed point arithmetic,
it required no division and could be modified so only minimal multiplication was needed (both
“expensive” operations for computers in the 1950’s). It’s similar to the method of extracting a
square root by hand.
The Theory
The theory behind this technique is simple. Let X be the number whose cube root we want. Let
∞
the number we want, 3
X be represented by the sum d i 10n −i where d i is a digit between 0
i =1
and 9 and n is the number of digits above the decimal point. Letting ai = d i10n −i we can
write X = (a1 + a2 + ... + an + ...)3 . We will show how to compute each term ak or more exactly
each digit d i in an iterative fashion.
For positive integer k, (a1 + a2 + ... + ak )3 approximates X and so (a1 + a2 + ... + ak ) approximates
3
X . Using the binomial theorem we can expand (a1 + a2 + ... + ak −1 + ak )3 in terms of
(a1 + a2 + ... + ak −1 ) and ak , specifically
(a1 + a2 + ... + ak −1 + ak )3 = (a1 + a2 + ... + ak −1 )3 + 3 ⋅ (a1 + a2 + ... + ak −1 ) 2 ⋅ ak + 3 ⋅ (a1 + a2 + ... + ak −1 ) ⋅ ak2 + ak3
For example
(a1 + a2 )3 = a13 + 3 ⋅ a12 a2 + 3 ⋅ a1a22 + a23 .
Continuing we have
The idea is to work by stages so that given (a1 + a2 + ... + ak −1 ) at one stage we choose ak so that
(a1 + a2 + ... + ak −1 + ak )3 is a better approximation to X.
1
2. Exactly how do we use (a1 + a2 + ... + ak −1 ) to obtain (a1 + a2 + ... + ak −1 + ak ) ?
Begin by finding the largest value of a1 such that the error X 1 = X − a13 is non-negative, or
equivalently finding the largest value of a1 such that a13 is less than or equal to X.
Knowing the value of a1 find the largest value of a2 such that the error
X 2 = X 1 − 3 ⋅ a12 a2 + 3 ⋅ a1a22 + a23 is non-negative or equivalently such
that 3 ⋅ a12 a2 + 3 ⋅ a1a22 + a23 is less than or equal to X 1 . Note that X 2 = X − (a1 + a2 )3
In general given (a 1 + a2 + ... + ak −1 ) find the largest value of ak such that the error
X k = X k −1 − 3 ⋅ (a1 + a2 + ... + ak −1 ) 2 ak + 3 ⋅ (a1 + a2 + ... + ak −1 )ak2 + ak3 is non-negative. Note that
X k = X − (a1 + a2 + ... + ak )3 1.
3. A Notational Refinement!
Before going further, let’s introduce some notation to make our formulas above less cumbersome
and, as we will see, to simplify our calculations.
Let
uk = (a1 + a2 + ... + ak −1 )
and let
So given uk and vk = uk2 find the largest value of ak such that the error
3
X k = X k −1 − 3 ⋅ vk ⋅ ak + 3 ⋅ uk ⋅ ak2 + ak3 is non-negative! Again note that X k = X − uk +1
An Example
Unfortunately it’s not clear how to apply the above theory in a practical and efficient way to
actually compute a cube root; that’s what the following example will show.
3
For example compute 79201 .
We begin by partitioning the digits of 79201 into groups of three (i.e. 79 201.000) starting at the
decimal point. At each stage we will bring down for consideration the next group of three digits.
Essentially we are scaling our calculations by 1000, the cube of 10.
1
Observe that X – (a1 + a2 + … + ak)3 0 so (a1 + a2 + … + ak) is the largest k digit approximation less than or
equal to the cube root of X.
2
We begin by only working with the left-most group of digits, essentially treating
3
79201 like 3 79.201 × 10 . This allows us to “work” with single digit values between 0 and 9;
that is each ak we find will be a digit d k between 0 and 9.
This is 4 (it helps to know the cubes of the first nine integers: 1, 8, 27, 64, 125, 216, 343, 512,
729). Subtract 64 from 79 and bring down the next three digits.
79 201
- 64
----------
15 201 = X1
Stage 2. We need to find the largest a2 such that the error X 1 − 3 ⋅ a12 a2 + 3 ⋅ a1a22 + a23 is
non-negative. Because bringing down the next three digits scales X 1 by 1000, the current cube
root approximation 4 needs to be scaled by 10, i.e. a1 = 4 ×10 . We need to compute
3 ⋅ a1 = 3 ⋅ (4 ×10) = 120 and 3 ⋅ a12 = 3 ⋅ (4 × 10) 2 = 4800 . a2 will be a digit between 0 and 9
In finding the largest digit d 2 such that 4800 × d 2 + 120 × d 22 + d 23 is less than 15201, 3 seems like
a good estimate for d 2 but it’s too high. So d 2 equals 2. 4800 × 2 + 120 × 22 + 23 = 10088 which
when subtracted from 15201 results in 5113.
15 201 000
- 10 088
----------
5 113 000 = X2
Note that 42 is the largest integer less than or equal to 3 79201 . Shift in three more digits and
repeat with X 2 = 5 113 000.
Stage 3. Because of the way we scale our values (a1 + a2 ) = u3 = (4 × 100 + 2 × 10) = 420 .
We need to compute 3 ⋅ (a1 + a2 ) = 3 ⋅ (420) = 1260 and 3 ⋅ (a1 + a2 )2 = 3 ⋅ v3 = 3 ⋅ (420)2 = 529, 200
and find the largest digit d3 such that the error X 2 − 529, 200 × d 3 + 1260 × d 32 + d33 is non-
negative. We estimate d 3 = 9 which works since 529, 200 × 9 + 1260 × 92 + 93 = 4,865, 589 so
subtracting
3
With d 3 = 9 our approximation to 3 79201 is 42.9. Shift in three more digits and repeat with X3 =
247,411,000
The obvious draw backs to this method are 1) the computational complexity of working with
large integer values, 2) the need to compute the square of a large integer, i.e. (a 1 + a2 + ... + ak −1 ) 2
and, 3) the need to find the largest digit d k such that the error at the kth stage
X k − X k −1 − 3 ⋅ (a1 + a2 + ... + ak −1 ) 2 ak + 3 ⋅ (a1 + a2 + ... + ak −1 )ak2 + ak3 is non-negative, usually by trial
and error.
We can simplify the squaring of (a 1 + a2 + ... + ak −1 ) 2 at the kth step by using previously computed
values. Recall that uk is the value of (a1 + a2 + ... + ak −1 ) and vk = uk2 is the value of
(a 1 + a2 + ... + ak −1 ) 2 at the kth step. It’s not difficult to derive a pair of interlocking formulas to
compute uk and vk .
0 if k = 0
u k=
(uk −1 + d k −1 ) ⋅10 if k > 0
and
0 if k = 0
vk =
(vk −1 + 2 ⋅ u k −1⋅d k −1 + d k2−1 ) ⋅100 if k > 0
Thus we can simplify our calculations if at each step we also calculate and use uk and vk as seen
below where the 4th digit for 3
79201 ≈ 42.94 obtained.
2
There Ain’t No Such Thing As A Free Lunch – from The Moon is A Harsh Mistress by Robert Heinlein
3
The article in CACM mentioned that this method had been successfully and efficiently implemented on an IBM
650 – a decimal computer where multiplications by powers of ten were easily implemented by left shifts. Even on a
binary machine multiplication by ten can be efficiently implemented by a left shift by 3 bits added to a left shift by 1
bit – essentially x*8 + x*2. The IBM 650 also had a table loop-up operation.
4
k dk uk vk 3vk²dk+3ukdk²+dk³ Xk
0 0 0 0 0 79.201
1 4 0 0 64 15.201
2 2 40 1600 10088 5113
3 9 420 176400 4865589 247411
4 4 4290 18404100 221055184 26355816
You can easily check that v3 = (v2 + 2 ⋅ u2 ⋅ d 2 + d 22 ) ⋅100 = (1600 + 2 ⋅ 40 ⋅ 2 + 2 2 ) ⋅100 = 176400
The difference between adjacent terms of the form 3 ⋅ vk ⋅ m + 3 ⋅ uk ⋅ m 2 + m3 for m = 1, 2, etc. can
be written as
where ∆m3 = m3 − (m − 1)3 denotes the difference between adjacent cubes and (2m − 1) is the
difference between adjacent squares.
For example, the calculation for k = 4 above (where 3 ⋅ v4 = 55, 212,300 and
3 ⋅ u4 = 12,870 ) can be redone using the following table.
Computationally for each row you need only one multiplication (by an odd integer), two
additions and one table look up for the first difference of the cube.
5
Computing a Cube Root by Hand
Finding the cube root by hand can be done in a way similar to the method used for extracting
square roots. For example, suppose we want to find 3 23 . We start with a division like structure.
--------------
| 23.000 000
Begin by finding the largest integer cube less than or equal to 23 (8) and putting its cube root
above where the quotient goes, subtracting the cube from the “dividend” and bringing down the
next three zeros.
2
--------------
| 23.000 000
- 8
------
15 000
Now find the largest digit d 2 such that 3 ⋅ 2 2 ⋅100 ⋅ d 2 + 3 ⋅ 2 ⋅10 ⋅ d 22 + d 23 = 1200 ⋅ d 2 + 60 ⋅ d 22 + d 23 is
less than or equal to 15,000. Since the first term (1200) dominates this expression, we estimate 8
for d 2 .
2. 8
--------------
3×400 = 1200 | 23.000 000
3×20× d 2 = 480 - 8
2
d2 = 64 ------
------- 15 000
1744 - 13 952
------
1 048 000
Alternately – take the current “quotient” times 10, square it and multiply by 3. Then again take
the quotient times 10 multiply by 3 and by d 2 (i.e. 8). Finally square d 2 and add all three terms
together.
6
At the next step complexity becomes apparent in the calculation of the expression
3 ⋅ vk ⋅ d k +3 ⋅ uk d k2 + d k3 or more precisely 3 ⋅ vk + 3 ⋅ uk ⋅ d k + d k2 where u k = (a1 + a 2 +... + ak −1 ) and
vk = uk2 . So for the next round we use the recursive formula for vk to obtain
v3 = (400 + 2 ⋅ 20 ⋅ 8 + 64) ⋅100 = 78400 . Since 3 ⋅ vk = 235200 dominates the expression above we
estimate 4 as the next digit
2. 8 4
--------------
| 23.000 000
- 8
------
3×78400 = 235200 15 000
3×280× d3 = 3360 - 13 952
d 32 = 16 ------
------ 1 048 000
238576 - 954 304
---------
93 696
Observe that once the value of 3 ⋅ vk is obtained, it is fairly easy to estimate a value for the digit
d k - and the rest is just so much routine calculation.
Given the ubiquity of cheap powerful calculators that can easily do division, why use this
technique? There is no good reason but it is interesting that with this technique you could
calculate a cube root by hand4 or program a very unsophisticated computer to do so using only
minimal multiplication and no division.
The technique to obtain a cube root is an extension of the standard technique to obtain a square
root. In this case given X = (a1 + a2 + ... + a n +..) 2 observe that (a1 + a2 + ... + ak ) 2 can be
expanded as (a1 + a2 + ... + ak −1 + ak ) 2 = (a1 + a2 + ... + ak −1 ) 2 + [2 ⋅ (a1 + a2 + ... + ak −1 ) ⋅ a k + a k2 ] .
Applying the technique discussed above to square roots (except we group digits by twos), at the
kth step we find the largest digit d k such that the error at the kth stage X k = X k −1 − 2 ⋅ uk ⋅ d k + d k2
where uk = (a1 + a2 + ... + ak −1 ) is non-negative. This is usually expressed as take the current
“quotient”, double and multiply by 10 and using this trial divisor and divide into the dividend to
estimate the next digit which is then added to the trial divisor i.e. 2 ⋅ uk + d k . Now multiply the
4
Isaac Asimov’s short story “The Feeling of Power” tells the tale where all calculations are done my hand-held
calculators and people have forgotten how to do calculations by hand – until one day someone rediscovers hand
calculations. The story has a tragic ending as the military immediately sees certain "applications" for hand
calculation!
7
digit by the augmented trial divisor which gives you 2 ⋅ uk ⋅ d k + d k2 ) and subtract from the
dividend (the result should be positive). Repeat.
Example: Find 23
Partition the digits into groups of two and begin by finding the largest digit whose square less than or equal to the
leading group. Put the digit on top, subtract the square from the dividend and bring down the next two digits.
4
-------
| 23.00 00
4 - 16
--
7 00
Take the quotient (4) double and multiply by 10 (80) and use this as trial divisor. Put the digit result on top, add the
digit to the trial divisor, multiply the trial divisor by the digit and subtract.
4 7
-------
| 23.00 00
4 - 16
--
7 00
87 - 6 09
----
91 00
Repeat: Double 47 and multiply by 10 to obtain 940 as a trial divisor. 940 goes into 9100 approximately 9 times.
4 7 9
----------
| 23.00 00
4 - 16
--
7 00
87 - 6 09
----
91 00
949 - 85 41
-----
5 59 00
Thus 4.79 approximates 23 .
The basic theory given above can also be applied to roots higher than the cube, e.g. fourth and
fifth etc. For the 4th root case observe
Where uk and vk are defined as above and wk = uk3 ! The same method can be applied to find the
4th root (group digits by 4) but the computational complexity problems are even more severe!
8
References
Sugai, Iwao; “Extraction of Roots by Repeated Subtractions for Digital Computers”; Comm. of
A.C.M.; Vol 1 No 12; December 1958; pp 6 – 8.
Asimov, Isaac; "The Feeling of Power"; The Mathematical Magpie, Clifton Fadiman, ed.; Simon
and Schuster; New York; 1962.