Prosthaphaeresis was an algorithm used in the late 16th century and early 17th century for approximate multiplication and division using formulas from trigonometry. For the 25 years preceding the invention of the logarithm in 1614, it was the only known generally applicable way of approximating products quickly. Its name comes from the Greek prosthesis and aphaeresis, meaning addition and subtraction, two steps in the process.
History and motivation
In sixteenth century Europe, celestial navigation of ships on long voyages relied heavily on ephemerides to determine their position and course. These voluminous charts prepared by astronomers detailed the position of stars and planets at various points in time. The models used to compute these were based on spherical trigonometry, which relates the angles and arc lengths of spherical triangles (see diagram, right) using formulas such as:
where a, b and c are the angles subtended at the centre of the sphere by the corresponding arcs.
When one quantity in such a formula is unknown but the others are known, the unknown quantity can be computed using a series of multiplications, divisions, and trigonometric table lookups. Astronomers had to make thousands of such calculations, and because the best method of multiplication available was long multiplication, most of this time was spent taxingly multiplying out products.
Mathematicians, particularly those who were also astronomers, were looking for an easier way, and trigonometry was one of the most advanced and familiar fields to these people. Prosthaphaeresis appeared in the 1580s, but its originator is not known for certain; its contributors included the mathematicians Paul Wittich, Ibn Yunis, Joost Bürgi, Johannes Werner, Christopher Clavius, and François Viète. Wittich, Yunis, and Clavius were all astronomers and have all been credited by various sources with discovering the method. Its most well-known proponent was Tycho Brahe, who used it extensively for astronomical calculations such as those described above. It was also used by John Napier, who is credited with inventing the logarithms that would supplant it.
Nicholas Copernicus mentions 'prosthaphaeresis' several times in his 1543 work De Revolutionibus Orbium Coelestium, meaning the "great parallax" caused by the displacement of the observer due to the Earth's annual motion.
The first two of these are believed to have been derived by Bürgi, who related them to Brahe; the others follow easily from these two. If both sides are multiplied by 2, these formulas are also called the Werner formulas.
Using the second formula above, the technique for multiplication of two numbers works as follows:
- Scale down: By shifting the decimal point to the left or right, scale both numbers to values between −1 and 1, to be referred to as cos a and cos b.
- Inverse cosine: Using an inverse cosine table, find two angles a and b whose cosines are our two values.
- Sum and difference: Find the sum and difference of the two angles.
- Average the cosines: Find the cosines of the sum and difference angles using a cosine table and average them, giving (according to the second formula above) the product cos a × cos b.
- Scale up: Shift the decimal place in the answer the combined number of places you shifted the decimal in the first step for each input, but in the opposite direction.
For example, say we want to multiply 105 and 720. Following the steps:
- Scale down: Shift the decimal point three places to the left in each. We get cos a = 0.105 and cos b = 0.720.
- Inverse cosine: cos(84°) is about 0.105 and cos(44°) is about 0.720.
- Sum and difference: 84 + 44 = 128, 84 − 44 = 40.
- Average the cosines: ½[cos(128°) + cos(40°)] is about ½[−0.616 + 0.766], or 0.075.
- Scale up: For each of 105 and 720 we shifted the decimal point three places to the left, so in the answer we shift six places to the right. The result is 75,000. This is very close to the actual product, 75,600.
If we want the product of the cosines of the two initial values, which is useful in some of the astronomical calculations mentioned above, this is surprisingly even easier: only steps 3 and 4 above are necessary.
To divide, we exploit the definition of the secant as the reciprocal of the cosine. To divide 3500 by 70, we scale the numbers to 0.35 and 7.0. The cosine of 69.5 degrees is 0.35. Then use a table of secants to find out that 7.0 is the secant of 81.8 degrees. This means that 1/7.0 is the cosine of 81.8 degrees, and so we can multiply 0.35 by 1/7.0 using the above procedure. Average the cosine of the sum of the angles, 81.8+69.5=151.3, with the cosine of their difference, 81.8-69.5=12.3
- ½[cos(151°) + cos(−15°)] is about ½[−0.877 + 0.977], or 0.050
Scaling up to locate the decimal point gives the approximate answer, 50
Algorithms using the other formulas are similar, but each using different tables (sine, inverse sine, cosine, and inverse cosine) in different places. The first two are the easiest because they each only require two tables. Using the second formula, however, has the unique advantage that if only a cosine table is available, it can be used to estimate inverse cosines by searching for the angle with the nearest cosine value.
Notice how similar the above algorithm is to the process for multiplying using logarithms, which follows the steps: scale down, take logarithms, add, take inverse logarithm, scale up. It's no surprise that the originators of logarithms had used prosthaphaeresis. Indeed the two are closely related mathematically. In modern terms, prosthaphaeresis can be viewed as relying on the logarithm of complex numbers, in particular on Euler's formula:
Decreasing the error
If all the operations are performed with high precision, the product can be as accurate as desired. Although sums, differences, and averages are easy to compute with high precision, even by hand, trigonometric functions and especially inverse trigonometric functions are not. For this reason, the accuracy of the method depends to a large extent on the accuracy and detail of the trigonometric tables used.
For example, a sine table with an entry for each degree can be off by as much as 0.0087 if we just round an angle off to the nearest degree; each time we double the size of the table (for example by giving entries for every half-degree instead of every degree) we halve this error. Tables were painstakingly constructed for prosthaphaeresis with values for every second, or 3600th of a degree.
Inverse sine and cosine functions are particularly troublesome, because they become steep near −1 and 1. One solution is to include more table values in this area. Another is to scale the inputs to numbers between −0.9 and 0.9. For example, 950 would become 0.095 instead of 0.950.
Another effective approach to enhancing the accuracy is linear interpolation, which chooses a value between two adjacent table values. For example, if we know the sine of 45° is about 0.707 and the sine of 46° is about 0.719, we can estimate the sine of 45.7° as 0.707 × (1 − 0.7) + 0.719 × 0.7 = 0.7154.
The actual sine is 0.7157. A table of cosines with only 180 entries combined with linear interpolation is as accurate as a table with about 45000 entries without it. Even a quick estimate of the interpolated value is often much closer than the nearest table value. See lookup table for more details.
The product formulas can also be manipulated to obtain formulas that express addition in terms of multiplication. Although less useful for computing products, these are still useful for deriving trigonometric results:
- Prosthaphaeresis formulas
- Daniel E. Otero Henry Briggs. Introduction: the need for speed in calculation.
- Mathworld: Prosthaphaeresis formulas
- Adam Mosley. Tycho Brahe and Mathematical Techniques. University of Cambridge.
- IEEE Computer Society. History of computing: John Napier and the invention of logarithms.(doesn't open)
- Math Words: Prosthaphaeresis
- Beatrice Lumpkin. African and African-American Contributions to Mathematics. Discusses Ibn Yunis's contribution to prosthaphaeresis.
- Prosthaphaeresis and beat phenomenon in the theory of vibrations, by Nicholas J. Rose