Machine epsilon

Machine epsilon or machine precision is an upper bound on the relative approximation error due to rounding in floating point number systems. This value characterizes computer arithmetic in the field of numerical analysis, and by extension in the subject of computational science. The quantity is also called macheps and it has the symbols Greek epsilon .

There are two prevailing definitions, denoted here as rounding machine epsilon or the formal definition and interval machine epsilon or mainstream definition.

In the mainstream definition, machine epsilon is independent of rounding method, and is defined simply as the difference between 1 and the next larger floating point number.

In the formal definition, machine epsilon is dependent on the type of rounding used and is also called unit roundoff, which has the symbol bold Roman u.

The two terms can generally be considered to differ by simply a factor of two, with the formal definition yielding an epsilon half the size of the mainstream definition, as summarized in the tables in the next section.

Values for standard hardware arithmetics

The following table lists machine epsilon values for standard floating-point formats.

IEEE 754 - 2008 Common name C++ data type Base Precision Rounding machine epsilon[a] Interval machine epsilon[b]
binary16 half precision N/A 2 11 (one bit is implicit) 2−11 ≈ 4.88e-04 2−10 ≈ 9.77e-04
binary32 single precision float 2 24 (one bit is implicit) 2−24 ≈ 5.96e-08 2−23 ≈ 1.19e-07
binary64 double precision double 2 53 (one bit is implicit) 2−53 ≈ 1.11e-16 2−52 ≈ 2.22e-16
extended precision, long double _float80[1] 2 64 2−64 ≈ 5.42e-20 2−63 ≈ 1.08e-19
binary128 quad(ruple) precision _float128[1] 2 113 (one bit is implicit) 2−113 ≈ 9.63e-35 2−112 ≈ 1.93e-34
decimal32 single precision decimal _Decimal32[2] 10 7 5 × 10−7 10−6
decimal64 double precision decimal _Decimal64[2] 10 16 5 × 10−16 10−15
decimal128 quad(ruple) precision decimal _Decimal128[2] 10 34 5 × 10−34 10−33
  1. ^ According to formal definition — used by Prof. Demmel, LAPACK and Scilab. It represents the largest relative rounding error in round-to-nearest mode. The rationale is that the rounding error is half the interval upwards to the next representable number in finite-precision. Thus, the relative rounding error for number is . In this context, the largest relative error occurs when , and is equal to , because real numbers in the lower half of the interval 1.0 ~ 1.0+ULP(1) are rounded down to 1.0, and numbers in the upper half of the interval are rounded up to 1.0+ULP(1). Here we use the definition of ULP(1) (Unit in Last Place) as the positive difference between 1.0 (which can be represented exactly in finite-precision) and the next greater number representable in finite-precision.
  2. ^ According to the mainstream definition — used by Prof. Higham; applied in language constants in Ada, C, C++, Fortran, MATLAB, Mathematica, Octave, Pascal, Python and Rust etc., and defined in textbooks like «Numerical Recipes» by Press et al. It represents the largest relative interval between two nearest numbers in finite-precision, or the largest rounding error in round-by-chop mode. The rationale is that the relative interval for number is where is the distance to upwards the next representable number in finite-precision. In this context, the largest relative interval occurs when , and is the interval between 1.0 (which can be represented exactly in finite-precision) and the next larger representable floating-point number. This interval is equal to ULP(1).

Alternative definitions for epsilon

The IEEE standard does not define the terms machine epsilon and unit roundoff, so differing definitions of these terms are in use, which can cause some confusion.

The two terms differ by simply a factor of two. The more-widely used term (referred to as the mainstream definition in this article), is used in most modern programming languages and is simply defined as machine epsilon is the difference between 1 and the next larger floating point number. The formal definition can generally be considered to yield an epsilon half the size of the mainstream definition, although its definition does vary depending on the form of rounding used.

The two terms are described at length in the next two subsections.

Formal definition (Rounding machine epsilon)

The formal definition for machine epsilon is the one used by Prof. James Demmel in lecture scripts,[3] the LAPACK linear algebra package,[4] numerics research papers[5] and some scientific computing software.[6] Most numerical analysts use the words machine epsilon and unit roundoff interchangeably with this meaning, which is explored in depth throughout this subsection.

Rounding is a procedure for choosing the representation of a real number in a floating point number system. For a number system and a rounding procedure, machine epsilon is the maximum relative error of the chosen rounding procedure.

Some background is needed to determine a value from this definition. A floating point number system is characterized by a radix which is also called the base, , and by the precision , i.e. the number of radix digits of the significand (including any leading implicit bit). All the numbers with the same exponent, , have the spacing, . The spacing changes at the numbers that are perfect powers of ; the spacing on the side of larger magnitude is times larger than the spacing on the side of smaller magnitude.

Since machine epsilon is a bound for relative error, it suffices to consider numbers with exponent . It also suffices to consider positive numbers. For the usual round-to-nearest kind of rounding, the absolute rounding error is at most half the spacing, or . This value is the biggest possible numerator for the relative error. The denominator in the relative error is the number being rounded, which should be as small as possible to make the relative error large. The worst relative error therefore happens when rounding is applied to numbers of the form where is between and . All these numbers round to with relative error . The maximum occurs when is at the upper end of its range. The in the denominator is negligible compared to the numerator, so it is left off for expediency, and just is taken as machine epsilon. As has been shown here, the relative error is worst for numbers that round to , so machine epsilon also is called unit roundoff meaning roughly "the maximum error that can occur when rounding to the unit value".

Thus, the maximum spacing between a normalised floating point number, , and an adjacent normalised number is .[7]

Arithmetic model

Numerical analysis uses machine epsilon to study the effects of rounding error. The actual errors of machine arithmetic are far too complicated to be studied directly, so instead, the following simple model is used. The IEEE arithmetic standard says all floating-point operations are done as if it were possible to perform the infinite-precision operation, and then, the result is rounded to a floating-point number. Suppose (1) , are floating-point numbers, (2) is an arithmetic operation on floating-point numbers such as addition or multiplication, and (3) is the infinite precision operation. According to the standard, the computer calculates:

By the meaning of machine epsilon, the relative error of the rounding is at most machine epsilon in magnitude, so:

where in absolute magnitude is at most or u. The books by Demmel and Higham in the references can be consulted to see how this model is used to analyze the errors of, say, Gaussian elimination.

Mainstream definition (Interval machine epsilon)

This alternative definition is significantly more widespread: machine epsilon is the difference between 1 and the next larger floating point number. This definition is used in language constants in Ada, C, C++, Fortran, MATLAB, Mathematica, Octave, Pascal, Python and Rust etc., and defined in textbooks like «Numerical Recipes» by Press et al.

By this definition, ε equals the value of the unit in the last place relative to 1, i.e. (where b is the base of the floating point system and p is the precision) and the unit roundoff is u = ε / 2, assuming round-to-nearest mode, and u = ε, assuming round-by-chop.

The prevalence of this definition is rooted in its use in the ISO C Standard for constants relating to floating-point types[8][9] and corresponding constants in other programming languages.[10][11][12] It is also widely used in scientific computing software[13][14][15] and in the numerics and computing literature.[16][17][18][19]

How to determine machine epsilon

Where standard libraries do not provide precomputed values (as <float.h> does with FLT_EPSILON, DBL_EPSILON and LDBL_EPSILON for C and <limits> does with std::numeric_limits<T>::epsilon() in C++), the best way to determine machine epsilon is to refer to the table, above, and use the appropriate power formula. Computing machine epsilon is often given as a textbook exercise. The following examples compute interval machine epsilon in the sense of the spacing of the floating point numbers at 1 rather than in the sense of the unit roundoff.

Note that results depend on the particular floating-point format used, such as float, double, long double, or similar as supported by the programming language, the compiler, and the runtime library for the actual platform.

Some formats supported by the processor might not be supported by the chosen compiler and operating system. Other formats might be emulated by the runtime library, including arbitrary-precision arithmetic available in some languages and libraries.

In a strict sense the term machine epsilon means the accuracy directly supported by the processor (or coprocessor), not some accuracy supported by a specific compiler for a specific operating system, unless it's known to use the best format.

IEEE 754 floating-point formats have the property that, when reinterpreted as a two's complement integer of the same width, they monotonically increase over positive values and monotonically decrease over negative values (see the binary representation of 32 bit floats). They also have the property that , and (where is the aforementioned integer reinterpretation of ). In languages that allow type punning and always use IEEE 754–1985, we can exploit this to compute a machine epsilon in constant time. For example, in C:

typedef union {
  long long i64;
  double d64;
} dbl_64;

double machine_eps (double value)
{
    dbl_64 s;
    s.d64 = value;
    s.i64++;
    return s.d64 - value;
}

This will give a result of the same sign as value. If a positive result is always desired, the return statement of machine_eps can be replaced with:

    return (s.i64 < 0 ? value - s.d64 : s.d64 - value);

Example in Python:

def machineEpsilon(func=float):
    machine_epsilon = func(1)
    while func(1) + machine_epsilon != func(1):
        machine_epsilon_last = machine_epsilon
        machine_epsilon = func(machine_epsilon) / func(2)
    return machine_epsilon_last

64-bit doubles give 2.220446e-16, which is 2−52 as expected.

Approximation

The following simple algorithm can be used to approximate[clarification needed] the machine epsilon, to within a factor of two (one order of magnitude) of its true value, using a linear search.

epsilon = 1.0;

while (1.0 + 0.5 * epsilon) ≠ 1.0:
    epsilon = 0.5 * epsilon

The machine epsilon, can also simply be calculated as two to the negative power of the number of bits used for the mantissa.

Relationship to absolute relative error

If is the machine representation of a number then the absolute relative error in the representation is [20]

Proof

The following proof is limited to positive numbers and machine representations using round-by-chop.

If is a positive number we want to represent, it will be between a machine number below and a machine number above .

If , where is the number of bits used for the magnitude of the significand, then:

Since the representation of will be either or ,

Although this proof is limited to positive numbers and round-by-chop, the same method can be used to prove the inequality in relation to negative numbers and round-to-nearest machine representations.

See also

Notes and references

  1. ^ a b Floating Types - Using the GNU Compiler Collection (GCC)
  2. ^ a b c Decimal Float - Using the GNU Compiler Collection (GCC)
  3. ^ "Basic Issues in Floating Point Arithmetic and Error Analysis". 21 Oct 1999. Retrieved 11 Apr 2013.
  4. ^ "LAPACK Users' Guide Third Edition". 22 August 1999. Retrieved 9 March 2012.
  5. ^ "David Goldberg: What Every Computer Scientist Should Know About Floating-Point Arithmetic, ACM Computing Surveys, Vol 23, No 1, March 1991" (PDF). Retrieved 11 Apr 2013.
  6. ^ "Scilab documentation - number_properties - determine floating-point parameters". Retrieved 11 Apr 2013.
  7. ^ "Basic Issues in Floating Point Arithmetic and Error Analysis". University of California, Berkeley. 21 October 1999. Retrieved 11 June 2022. The distance between 1 and the next larger floating point number is 2*macheps.
  8. ^ Jones, Derek M. (2009). The New C Standard - An Economic and Cultural Commentary (PDF). p. 377.
  9. ^ "float.h reference at cplusplus.com". Retrieved 11 Apr 2013.
  10. ^ "std::numeric_limits reference at cplusplus.com". Retrieved 11 Apr 2013.
  11. ^ "Python documentation - System-specific parameters and functions". Retrieved 11 Apr 2013.
  12. ^ Extended Pascal ISO 10206:1990 (Technical report). The value of epsreal shall be the result of subtracting 1.0 from the smallest value of real-type that is greater than 1.0.
  13. ^ "Mathematica documentation: $MachineEpsilon". Retrieved 11 Apr 2013.
  14. ^ "Matlab documentation - eps - Floating-point relative accuracy". Archived from the original on 2013-08-07. Retrieved 11 Apr 2013.
  15. ^ "Octave documentation - eps function". Retrieved 11 Apr 2013.
  16. ^ Higham, Nicholas (2002). Accuracy and Stability of Numerical Algorithms (2 ed). SIAM. pp. 27–28.
  17. ^ Quarteroni, Alfio; Sacco, Riccardo; Saleri, Fausto (2000). Numerical Mathematics (PDF). Springer. p. 49. ISBN 0-387-98959-5. Archived from the original (PDF) on 2017-11-14. Retrieved 2013-04-11.
  18. ^ Press, William H.; Teukolsky, Saul A.; Vetterling, William T.; Flannery, Brian P. Numerical Recipes. p. 890.
  19. ^ Engeln-Müllges, Gisela; Reutter, Fritz (1996). Numerik-Algorithmen. p. 6. ISBN 3-18-401539-4.
  20. ^ "Machine Epsilon Value for IEEE Double Precision Standard Alternative Proof Using Relative Error". 12 October 2020. Retrieved 5 May 2022.
  • Anderson, E.; LAPACK Users' Guide, Society for Industrial and Applied Mathematics (SIAM), Philadelphia, PA, third edition, 1999.
  • Cody, William J.; MACHAR: A Soubroutine to Dynamically Determine Machine Parameters, ACM Transactions on Mathematical Software, Vol. 14(4), 1988, 303–311.
  • Besset, Didier H.; Object-Oriented Implementation of Numerical Methods, Morgan & Kaufmann, San Francisco, CA, 2000.
  • Demmel, James W., Applied Numerical Linear Algebra, Society for Industrial and Applied Mathematics (SIAM), Philadelphia, PA, 1997.
  • Higham, Nicholas J.; Accuracy and Stability of Numerical Algorithms, Society for Industrial and Applied Mathematics (SIAM), Philadelphia, PA, second edition, 2002.
  • Press, William H.; Teukolsky, Saul A.; Vetterling, William T.; and Flannery, Brian P.; Numerical Recipes in Fortran 77, 2nd ed., Chap. 20.2, pp. 881–886
  • Forsythe, George E.; Malcolm, Michael A.; Moler, Cleve B.; "Computer Methods for Mathematical Computations", Prentice-Hall, ISBN 0-13-165332-6, 1977

Read other articles:

Kotak catur HOS Kotak catur adalah wadah untuk menyimpan buah catur.[1] Umumnya terbuat dari kayu atau dari berbagai macam bahan. Konfigurasi kotak internal dapat berupa slot individual untuk masing-masing buah catur, satu pembagi untuk memisahkan buah putih dan hitam atau tidak ada pembagi dengan buah catur dicampur bersama-sama. Kotak catur biasanya persegi panjang tetapi ada juga dalam berbagai bentuk, termasuk peti atau laci geser. Galeri Kotak catur HOS dengan pemisah Referensi ^...

 

Marion ByronLahirMiriam Bilenkin(1911-03-16)16 Maret 1911Dayton, Ohio, A.S.Meninggal5 Juli 1985(1985-07-05) (umur 74)Santa Monica, California, A.S.MakamHillside Memorial ParkNama lainPeanutsPekerjaanAktris, komedianTahun aktif1928–1938Suami/istriLou Breslow (1932–1985; wafat); 2 putra Marion Byron (nee Miriam Bilenkin; 16 Maret 1911 – 5 Juli 1985)[1] adalah seorang aktris, juga komedian asal Amerika Serikat. Karier Bab atau bagian ini tidak memiliki...

 

Dalam nama Spanyol ini, nama keluarganya adalah Chang. Franklin Chang DíazChang Díaz pada 1997Lahir5 April 1950 (umur 73)San José, Kosta RikaKebangsaanKosta Rika dan Amerika SerikatAlmamaterUniversitas Connecticut (BS, 1973)Massachusetts Institute of Technology (ScD, 1977)PekerjaanFisikawan, insinyur, wirausahawanKarier luar angkasaBotanis NASAWaktu di luar angkasa66 hari 18 jam 16 menitSeleksi1980 NASA GroupMisiSTS-61-C, STS-34, STS-46, STS-60, STS-75, STS-91, STS-111.Lambang misi Fr...

الغواصة الألمانية فئة يو 81 النوع يو بوت  الجنسية القيصرية الألمانية  الشركة الصانعة فريدريش كروب  المشغل البحرية الإمبراطورية الألمانية  المشغلون الحاليون وسيط property غير متوفر. المشغلون السابقون وسيط property غير متوفر. التكلفة وسيط property غير متوفر. منظومة التعاريف �...

 

العلاقات الأوزبكستانية الصينية أوزبكستان الصين   أوزبكستان   الصين تعديل مصدري - تعديل   العلاقات الأوزبكستانية الصينية هي العلاقات الثنائية التي تجمع بين أوزبكستان والصين.[1][2][3][4][5] مقارنة بين البلدين هذه مقارنة عامة ومرجعية للدولتين: و�...

 

American launch vehicle range This article focuses only on one specialized aspect of the subject. Please help improve this article by adding general information and discuss at the talk page. (July 2013) Part of a series on theUnited States space program NASAU.S. Space Force Human spaceflight programs Mercury Gemini Apollo Skylab Space Shuttle Shuttle–Mir International Space Station Commercial Crew Constellation Artemis Lunar Gateway Robotic spaceflight programs CRS Explorers GLS Large ...

British financial services platform Confused.comCompany typeLimited companyIndustryFinancial servicesFounded2001HeadquartersCardiff, Wales, UKArea servedUnited KingdomKey peopleSteve Dukes (CEO)ServicesFinancial servicesParentRVUWebsitehttps://www.confused.com Confused.com is a UK based financial services comparison platform launched in 2001 and specialising in comparison of insurance and financial services, including car insurance, home insurance, energy, van insurance and life insurance. ...

 

2010 Africa Cup of NationsCampeonato Africano das Nações de 2010 (Angolan Portuguese)Official logoTournament detailsHost countryAngolaDates10–31 JanuaryTeams15Venue(s)4 (in 4 host cities)Final positionsChampions Egypt (7th title)Runners-up GhanaThird place NigeriaFourth place AlgeriaTournament statisticsMatches played29Goals scored71 (2.45 per match)Attendance543,500 (18,741 per match)Top scorer(s) Gedo (5 goals)Best player(s) Ahmed HassanBest goal...

 

Павлодарская епархия Благовещенский собор в Павлодаре Страна Казахстан Церковь Русская православная церковь Митрополия Казахстанский митрополичий округ Дата основания 6 октября 2010 года Управление Главный город Павлодар Кафедральный собор Благовещенский Иерарх Епис...

Institutional corruption in the country Political corruption Forms and concepts Bribery Cronyism Economics of corruption Electoral fraud Elite capture Influence peddling Kleptocracy Mafia state Nepotism Pyrrhic defeat theory Slush fund Simony State capture State-corporate crime Throffer Anti-corruption International Anti-Corruption Court Group of States Against Corruption International Anti-Corruption Academy International Anti-Corruption Day United Nations Convention against Corruption Corru...

 

1989 American filmThey Call Me Macho Woman!Theatrical posterDirected byPatrick G. DonahueWritten byPatrick G. DonahueProduced byDee DonahuePatrick G. DonahueNewman GoldsteinStarringDebra SweaneyBrian OldfieldSean P. DonahueMike DonahueJerry JohnsonCinematographyMike PierceEdited byJules ShapiroMusic byEmilio KaudererDistributed byTroma EntertainmentRelease date 1989 (1989) Running time81 minutesCountryUnited StatesLanguageEnglish They Call Me Macho Woman! is a 1989 action film written an...

 

ScarlettNom Sasha HostynNaissance Décembre 1993 (30 ans)KingstonNationalité CanadienneÉquipe actuelle Shopify Rebellion (en)Jeu StarCraft IIDota 2modifier - modifier le code - modifier Wikidata Sasha Hostyn, connue sous le pseudonyme Scarlett, née le 14 décembre 1993, est une joueuse canadienne de sport électronique. Elle se fait connaître pour sa performance à StarCraft II, mais joue à Dota 2 quelques mois en 2015 avant de reprendre son jeu de prédilection au sein de Team Expe...

American film director Sylvia MoralesSylvia Morales self portrait in 1998 Los Angeles, California.BornPhoenix, Arizona, United StatesEducationBA & MFA in film, UCLAOccupation(s)Film director, producer, screenwriter, author, professorYears active1971–present Sylvia Morales (born 1943 in Phoenix, Arizona) is an American film director, writer, producer, and editor.[1] Morales is recognized as one of the first female Mexican-American filmmakers to have established a Latino cin...

 

Decommissioned experimental pressurized water reactor in South Carolina, US Carolinas-Virginia Tube ReactorThe Parr Nuclear Plant as it appeared when it was operational during the 1960s.(This is a mirror image of the plant's layout)CountryUnited StatesLocationFairfield County, near Jenkinsville, South CarolinaCoordinates34°15′45″N 81°19′45″W / 34.26250°N 81.32917°W / 34.26250; -81.32917StatusDecommissionedConstruction beganJanuary 1, 1960[1]Com...

 

Benjamin GuggenheimLahir(1865-10-26)26 Oktober 1865Philadelphia, Pennsylvania, USMeninggal15 April 1912(1912-04-15) (umur 46)Atlantic Ocean, aboard the RMS TitanicSebab meninggalTenggelamnya RMS TitanicKebangsaan Amerika SerikatWarga negaraAmerika, dan JermanAlmamaterSekolah Bisnis PeircePekerjaanPebisnisSuami/istriFlorette Seligman (1894-1912) (hingga kematiannya)AnakBenita Rosalind GuggenheimPeggy GuggenheimBarbara Hazel GuggenheimOrang tuaMeyer GuggenheimBarbara Myers ...

Stasiun Itoigawa糸魚川駅Stasiun Itoigawa, 2013Lokasi1-7-10 Ōmachi, Itoigawa-shi, Niigata-ken 941-0061JapanKoordinat37°2′38″N 137°51′45″E / 37.04389°N 137.86250°E / 37.04389; 137.86250Operator JR West Kereta api Echigo Tokimeki JR Freight Jalur Hokuriku Shinkansen ■ Jalur Ōito ■ Nihonkai Hisui Line Jumlah peron1 pulau + 1 peron sisi (Jalur Oito, Jalur Hisui)2 peron sisi (Shinkansen)Informasi lainStatusStaff (Midori no Madoguchi)SejarahDibuka16 Dese...

 

Swedish classical archaeologist (1889–1969) Axel Boëthius Axel Boëthius (July 18, 1889 in Arvika, Sweden – May 7, 1969 in Rome, Italy) was a scholar and archaeologist of Etruscan culture. Boëthius was primarily a student of Etruscan and Italic architecture. His father was the historian Simon Boëthius.[1][2] As a student, Boëthius studied at the Uppsala University, where he completed his Ph.D. in 1918. During the Finnish Civil War he fought for the White Movement�...

 

Questa voce o sezione sull'argomento politici cinesi non cita le fonti necessarie o quelle presenti sono insufficienti. Puoi migliorare questa voce aggiungendo citazioni da fonti attendibili secondo le linee guida sull'uso delle fonti. Ye Jianying叶剑英 Presidente del Comitato permanente dell'Assemblea nazionale del popoloDurata mandato5 marzo 1978 –18 giugno 1983 PredecessoreSong Qingling(ad interim) SuccessorePeng Zhen Capo di Stato della Repubblica Popolare Cinesec...

Eighth planet from the Sun This article is about the planet. For the Roman god, see Neptune (mythology). For other uses, see Neptune (disambiguation). NeptuneNeptune in true colour[1] as captured by Voyager 2. Like Uranus, Neptune has a muted appearance; several storms can still be seen, such as Great Dark Spot GDS-89[a] at the centerDiscovery[2]Discovered by Johann Galle Urbain Le Verrier John Couch Adams Discovery date23 September 1846DesignationsPronunciat...

 

يفتقر محتوى هذه المقالة إلى الاستشهاد بمصادر. فضلاً، ساهم في تطوير هذه المقالة من خلال إضافة مصادر موثوق بها. أي معلومات غير موثقة يمكن التشكيك بها وإزالتها. (ديسمبر 2018) بول أليرتس معلومات شخصية الميلاد 9 يوليو 1964 (العمر 60 سنة)مول، بلجيكا  الجنسية بلجيكا  تعديل مصدري - تع...