Haversine Formula
Haversine Formula
The haversine formula determines the great-circle distance between two points on a sphere given their longitudes
and latitudes. Important in navigation, it is a special case of a more general formula in spherical trigonometry, the law
of haversines, that relates the sides and angles of spherical triangles.
The first table of haversines in English was published by James Andrew in 1805,[1] but Florian Cajori credits an earlier
use by José de Mendoza y Ríos in 1801.[2][3] The term haversine was coined in 1835 by James Inman.[4][5]
These names follow from the fact that they are customarily written in terms of the haversine function, given by
haversin(θ) = sin2( 2θ ). The formulas could equally be written in terms of any multiple of the haversine, such as the
older versine function (twice the haversine). Prior to the advent of computers, the elimination of division and
multiplication by factors of two proved convenient enough that tables of haversine values and logarithms were
included in 19th and early 20th century navigation and trigonometric texts.[6][7][8] These days, the haversine form is
also convenient in that it has no coefficient in front of the sin2 function.
Contents
Formulation
The law of haversines
See also
References
Further reading
External links
Formulation
Let the central angle Θ between any two points on a sphere be:
where:
d is the distance between the two points (along a great circle of the sphere; see spherical distance),
r is the radius of the sphere.
The haversine formula hav of Θ is given by:
where
When using these formulae, one must ensure that h does not exceed 1 due to a floating point error (d is only real for h
from 0 to 1). h only approaches 1 for antipodal points (on opposite sides of the sphere)—in this region, relatively large
numerical errors tend to arise in the formula when finite precision is used. Because d is then large (approaching πR,
half the circumference) a small error is often not a major concern in this unusual case (although there are other great-
circle distance formulas that avoid this problem). (The formula above is sometimes written in terms of the arctangent
function, but this suffers from similar numerical problems near h = 1.)
As described below, a similar formula can be written using cosines (sometimes called the spherical law of cosines, not
to be confused with the law of cosines for plane geometry) instead of haversines, but if the two points are close
d
together (e.g. a kilometer apart, on the Earth) you might end up with cos( ) = 0.99999999, leading to an inaccurate
R
answer. Since the haversine formula uses sines, it avoids that problem.
Either formula is only an approximation when applied to the Earth, which is not a perfect sphere: the "Earth radius" R
varies from 6356.752 km at the poles to 6378.137 km at the equator. More importantly, the radius of curvature of a
north-south line on the earth's surface is 1% greater at the poles (≈6399.594 km) than at the equator (≈6335.439 km)
—so the haversine formula and law of cosines cannot be guaranteed correct to better than 0.5% (http://www.movable-
type.co.uk/scripts/latlong.html). More accurate methods that consider the Earth's ellipticity are given by Vincenty's
formulae and the other formulas in the geographical distance article.
[9]
Since this is a unit sphere, the lengths a, b, and c are simply equal to the
angles (in radians) subtended by those sides from the center of the sphere
(for a non-unit sphere, each of these arc lengths is equal to its central angle
multiplied by the radius of the sphere).
Spherical triangle solved by the law
of haversines
In order to obtain the haversine formula of the previous section from this law, one simply considers the special case
where u is the north pole, while v and w are the two points whose separation d is to be determined. In that case, a and
b are π2 − φ1,2 (i.e., 90° − latitude), C is the longitude separation Δλ, and c is the desired Rd . Noting that
sin( π2 − φ) = cos(φ), the haversine formula immediately follows.
To derive the law of haversines, one starts with the spherical law of cosines:
As mentioned above, this formula is an ill-conditioned way of solving for c when c is small. Instead, we substitute the
identity that cos(θ) = 1 − 2 hav(θ), and also employ the addition identity cos(a − b) = cos(a)cos(b) + sin(a)sin(b),
to obtain the law of haversines, above.
See also
Sight reduction
References
1. van Brummelen, Glen Robert (2013). Heavenly Mathematics: The Forgotten Art of Spherical Trigonometry (http
s://books.google.com/books?id=0BCCz8Sx5wkC&pg=PR7). Princeton University Press. ISBN 9780691148922.
0691148929. Retrieved 2015-11-10.
2. de Mendoza y Ríos, Joseph (1795). Memoria sobre algunos métodos nuevos de calcular la longitud por las
distancias lunares: y aplication de su teórica á la solucion de otros problemas de navegacion (https://books.googl
e.cat/books?id=030t0OqlX2AC) (in Spanish). Madrid, Spain: Imprenta Real.
3. Cajori, Florian (1952) [1929]. A History of Mathematical Notations (https://books.google.com/books?id=bT5suOO
NXlgC). 2 (2 (3rd corrected printing of 1929 issue) ed.). Chicago, USA: Open court publishing company. p. 172.
ISBN 978-1-60206-714-1. 1602067147. Retrieved 2015-11-11. "The haversine first appears in the tables of
logarithmic versines of José de Mendoza y Rios (Madrid, 1801, also 1805, 1809), and later in a treatise on
navigation of James Inman (1821)." (NB. ISBN and link for reprint of 2nd edition by Cosimo, Inc., New York, USA,
2013.)
4. Inman, James (1835) [1821]. Navigation and Nautical Astronomy: For the Use of British Seamen (https://books.go
ogle.com/books/about/Navigation_and_Nautical_Astronomy_for_th.html?id=-fUOnQEACAAJ) (3 ed.). London,
UK: W. Woodward, C. & J. Rivington. Retrieved 2015-11-09. (Fourth edition: [1] (https://books.google.com/books?
id=MK8PAAAAYAAJ).)
5. "haversine". Oxford English Dictionary (2nd ed.). Oxford University Press. 1989.
6. H. B. Goodwin, The haversine in nautical astronomy (https://books.google.com/books?id=KSNKAAAAYAAJ&lpg=
PA735&pg=PA735), Naval Institute Proceedings, vol. 36, no. 3 (1910), pp. 735–746: Evidently if a Table of
Haversines is employed we shall be saved in the first instance the trouble of dividing the sum of the logarithms by
two, and in the second place of multiplying the angle taken from the tables by the same number. This is the
special advantage of the form of table first introduced by Professor Inman, of the Portsmouth Royal Navy College,
nearly a century ago.
7. W. W. Sheppard and C. C. Soule, Practical navigation (https://books.google.com/books?id=8S0wAAAAYAAJ)
(World Technical Institute: Jersey City, 1922).
8. E. R. Hedrick, Logarithmic and Trigonometric Tables (https://archive.org/details/logarithmictrigo00hedriala)
(Macmillan, New York, 1913).
9. Korn, Grandino Arthur; Korn, Theresa M. (2000) [1922]. "Appendix B: B9. Plane and Spherical Trigonometry:
Formulas Expressed in Terms of the Haversine Function". Mathematical handbook for scientists and engineers:
Definitions, theorems, and formulas for reference and review (3 ed.). Mineola, New York, USA: Dover
Publications, Inc. pp. 892–893. ISBN 978-0-486-41147-7.
Further reading
U. S. Census Bureau Geographic Information Systems FAQ, (content has been moved to What is the best way to
calculate the distance between 2 points? (http://www.movable-type.co.uk/scripts/GIS-FAQ-5.1.html))
R. W. Sinnott, "Virtues of the Haversine", Sky and Telescope 68 (2), 159 (1984).
Deriving the haversine formula (http://mathforum.org/library/drmath/view/51879.html), Ask Dr. Math (Apr. 20–21,
1999).
Romuald Ireneus 'Scibor-Marchocki, Spherical trigonometry (https://www.webcitation.org/query?url=http://www.ge
ocities.com/ResearchTriangle/2363/trig02.html&date=2009-10-25+09:44:36), Elementary-Geometry Trigonometry
web page (1997).
W. Gellert, S. Gottwald, M. Hellwich, H. Kästner, and H. Küstner, The VNR Concise Encyclopedia of Mathematics,
2nd ed., ch. 12 (Van Nostrand Reinhold: New York, 1989).
External links
Implementations of the haversine formula in 91 languages at rosettacode.org (http://rosettacode.org/wiki/Haversin
e_formula) and in 17 languages on codecodex.com (http://www.codecodex.com/wiki/Calculate_Distance_Betwee
n_Two_Points_on_a_Globe)
Other implementations in C++ (http://blog.julien.cayzac.name/2008/10/arc-and-distance-between-two-points-on.ht
ml), C (MacOS) (http://www.jaimerios.com/?p=39), Pascal (http://scifunam.fisica.unam.mx/mir/codes.html#haversi
ne), Python (https://stackoverflow.com/a/4913653/1389451), Ruby (https://github.com/kristianmandrup/haversine/
blob/master/lib/haversine.rb), JavaScript (http://www.movable-type.co.uk/scripts/LatLong.html), PHP (http://assem
blysys.com/geographical-distance-calculation-in-php/),Matlab (http://samoht.fr/informatique/distance-between-two
-points-on-earth-surface-haversine-formula), MySQL (https://github.com/Lus71/lib_mysqludf_haversine)
Text is available under the Creative Commons Attribution-ShareAlike License; additional terms may apply. By using
this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia
Foundation, Inc., a non-profit organization.