Knowledge (XXG)

Arbitrary-precision arithmetic

Source 📝

1353:
such as 10,000. Working in a power-of-2 base closer to the computer's built-in integer operations offers advantages, although conversion to a decimal base for output becomes more difficult. On typical modern computers, additions and multiplications take constant time independent of the values of the operands (so long as the operands fit in single machine words), so there are large gains in packing as much of a bignumber as possible into each element of the digit array. The computer may also offer facilities for splitting a product into a digit and carry without requiring the two operations of
1027:, but they would appear with the highest-order digit last (so that 123 would appear as "321"). The whole array could be printed in reverse order, but that would present the number with leading zeroes ("00000...000123") which may not be appreciated, so this implementation builds the representation in a space-padded text variable and then prints that. The first few results (with spacing every fifth digit and annotation added here) are: 36: 1449:) to perform integer arithmetic on digit strings of a length that could be from two to whatever memory was available. For floating-point arithmetic, the mantissa was restricted to a hundred digits or fewer, and the exponent was restricted to two digits only. The largest memory supplied offered 60 000 digits, however 510:
In many cases, the task or the programmer can guarantee that the integer values in a specific application will not grow large enough to cause an overflow. Such guarantees may be based on pragmatic limits: a school attendance program may have a task limit of 4,000 students. A programmer may design the
1371:
For a single-digit multiply the working variables must be able to hold the value (base−1) + carry, where the maximum value of the carry is (base−1). Similarly, the variables used to index the digit array are themselves limited in width. A simple way to extend the indices would be to deal
1352:
This implementation could make more effective use of the computer's built in arithmetic. A simple escalation would be to use base 100 (with corresponding changes to the translation process for output), or, with sufficiently wide computer variables (such as 32-bit integers) we could use larger bases,
837:
gives good results using floating-point arithmetic. The largest representable value for a fixed-size integer variable may be exceeded even for relatively small arguments as shown in the table below. Even floating-point numbers are soon outranged, so it may help to recast the calculations in terms of
601:
multiplied by an arbitrary exponent. However, since division almost immediately introduces infinitely repeating sequences of digits (such as 4/7 in decimal, or 1/10 in binary), should this possibility arise then either the representation would be truncated at some satisfactory size or else rational
1367:
which can be exploited in multiple-precision addition and subtraction. This sort of detail is the grist of machine-code programmers, and a suitable assembly-language bignumber routine can run faster than the result of the compilation of a high-level language, which does not provide direct access to
989:
With the example in view, a number of details can be discussed. The most important is the choice of the representation of the big number. In this case, only integer values are required for digits, so an array of fixed-width integers is adequate. It is convenient to have successive elements of the
542:
integer arithmetic. Although this reduces performance, it eliminates the possibility of incorrect results (or exceptions) due to simple overflow. It also makes it possible to guarantee that arithmetic results will be the same on all machines, regardless of any particular machine's
567:
lacks hardware for certain operations (such as integer division, or all floating-point operations) and software is provided instead, it will use number sizes closely related to the available hardware registers: one or two words only. There are exceptions, as certain
501:
which means that if a result would be unrepresentable, it is replaced with the nearest representable value. (With 16-bit unsigned saturation, adding any positive amount to 65535 would yield 65535.) Some processors can generate an
506:
if an arithmetic result exceeds the available precision. Where necessary, the exception can be caught and recovered from—for instance, the operation could be restarted in software using arbitrary-precision arithmetic.
1790:
A quote example from this article: "Such an extreme pattern is dangerous even if diluted by one of its neighbouring blocks"; this was the occurrence of the sequence 77 twenty-eight times in one block of a thousand
833:) because they appear along with other terms, so that—given careful attention to the order of evaluation—intermediate calculation values are not troublesome. If approximate values of factorial numbers are desired, 420:
would be inappropriate. It is also useful for checking the results of fixed-precision calculations, and for determining optimal or near-optimal values for coefficients needed in formulae, for example the
1388:
would be small integers, or, one could escalate to employing bignumber techniques for the indexing variables. Ultimately, machine storage capacity and execution time impose limits on the problem size.
1023:
There is also the issue of printing the result in base ten, for human consideration. Because the base is already ten, the result could be shown simply by printing the successive digits of array
448: 783: 669:
is also very simple. Compare the high-order digits (or machine words) until a difference is found. Comparing the rest of the digits/words is not necessary. The worst case is
559:
Arbitrary-precision arithmetic is considerably slower than arithmetic using numbers that fit entirely within processor registers, since the latter are usually implemented in
1548: 1526: 1877: 1001:
from the prior digit's multiply. In base ten, a sixteen-bit integer is certainly adequate as it allows up to 32767. However, this example cheats, in that the value of
722: 688: 1462: 53: 1486:
numbers in a variety of bases (decimal or binary powers). Rather than representing a number as single value, some store numbers as a numerator/denominator pair (
1016:
would also use a multi-digit representation. A second consequence of the shortcut is that after the multi-digit multiply has been completed, the last value of
614:
divided out, arithmetic with rational numbers can become unwieldy very quickly: 1/99 − 1/100 = 1/9900, and if 1/101 is then added, the result is 10001/999900.
465:
to millions or more digits and to analyze the properties of the digit strings or more generally to investigate the precise behaviour of functions such as the
1408:
on digit strings of any length from 1 to 511 digits. The earliest widespread software implementation of arbitrary-precision arithmetic was probably that in
2044: 182: 286: 2471: 2415: 2049: 192: 1482:
Different libraries have different ways of representing arbitrary-precision numbers, some libraries work only with integer numbers, others store
993:
The second most important decision is in the choice of the base of arithmetic, here ten. There are many considerations. The scratchpad variable
2039: 2034: 172: 162: 1453:
compilers for the 1620 settled on fixed sizes such as 10, though it could be specified on a control card if the default was not satisfactory.
1821: 1702: 416:, whose algorithms commonly employ arithmetic with integers having hundreds of digits. Another is in situations where artificial limits and 100: 624:
have been developed to efficiently perform arithmetic operations on numbers stored with arbitrary precision. In particular, supposing that
2022: 1923: 155: 72: 1574: 751: 1898:
Case studies in the style in which over 95 programming languages compute the value of 5**4**3**2 using arbitrary precision arithmetic.
79: 1860: 1841: 666: 119: 849:
that follows, which implements the classic algorithm to calculate 1, 1×2, 1×2×3, 1×2×3×4, etc. the successive factorial numbers.
186: 86: 2476: 2173: 1813: 631: 378: 176: 166: 758:, and there are also algorithms with slightly worse complexity but with sometimes superior real-world performance for smaller 2290: 2095: 2027: 527: 234: 219: 57: 1368:
such facilities but instead maps the high-level statements to its model of the target machine using an optimizing compiler.
494:
if numbers grow too large to represent at the fixed level of precision. Some processors can instead deal with overflow by
68: 1677: 810: 519: 1716: 1579: 2466: 2190: 2120: 1968: 570: 279: 2445: 814: 535: 531: 515: 834: 617:
The size of arbitrary-precision numbers is limited in practice by the total storage available, and computation time.
1445:
of 1959–1970. The 1620 was a decimal-digit machine which used discrete transistors, yet it had hardware (that used
547:. The exclusive use of arbitrary-precision numbers in a programming language also simplifies the language, because 2200: 2068: 1569: 1468: 355: 336: 46: 2378: 2330: 2242: 2220: 2215: 2143: 2009: 703:, the most straightforward algorithms used for multiplying numbers by hand (as taught in primary school) require 135: 2252: 1916: 731: 586:
series, could manipulate numbers bound only by available storage, with an extra bit that delimited the value.
2405: 2320: 1559: 611: 413: 386: 272: 229: 93: 1761: 2148: 2004: 1963: 1958: 1584: 772: 755: 590: 328: 138: 1605: 1372:
with the bignumber's digits in blocks of some convenient size so that the addressing would be via (block
469:
where certain questions are difficult to explore via analytical methods. Another example is in rendering
2138: 2113: 560: 496: 466: 458: 424: 340: 829:
can easily produce very large numbers. This is not a problem for their usage in many formulas (such as
1653: 1940: 1895: 809:, the precision of all calculations must be set before doing a calculation. Other languages, such as 451: 382: 367: 351: 239: 651:, where one simply adds or subtracts the digits in sequence, carrying as necessary, which yields an 2410: 2388: 2315: 2168: 2160: 2080: 1909: 1564: 845:
But if exact values for large factorials are desired, then special software is required, as in the
765: 481: 417: 1531: 1509: 2393: 2373: 2325: 2300: 2085: 2054: 776: 503: 363: 332: 198: 1005:
is not itself limited to a single digit. This has the consequence that the method will fail for
1467:
Arbitrary-precision arithmetic in most computer software is implemented by calling an external
354:
have built-in support for bignums, and others have libraries available for arbitrary-precision
2280: 2210: 2185: 1999: 1994: 1856: 1837: 1817: 1491: 401: 707: 673: 2425: 2310: 2108: 1773: 1744:
Intégration numérique avec erreur bornée en précision arbitraire. Modélisation et simulation
1413: 544: 490: 300: 2430: 2295: 2247: 2180: 1487: 484:, which is an inherent limitation of fixed-precision arithmetic. Similar to a five-digit 324: 2383: 2205: 2195: 2103: 1495: 1483: 1424: 700: 660: 594: 474: 359: 224: 1778: 362:
math. Rather than storing values as a fixed number of bits related to the size of the
2460: 2305: 830: 583: 511:
computation so that intermediate results stay within specified precision boundaries.
551:
and there is no need for multiple types to represent different levels of precision.
488:'s display which changes from 99999 to 00000, a fixed-precision integer may exhibit 2262: 2237: 1884: 1805: 1743: 1446: 1717:"RSA Laboratories - 3.1.5 How large a key should be used in the RSA cryptosystem?" 2440: 2435: 2285: 2232: 2059: 1757: 1720: 1503: 1499: 1401: 648: 607: 598: 320: 35: 2345: 2340: 2257: 2225: 2130: 2073: 1476: 1427: 1363: 846: 630:
digits are employed, algorithms have been designed to minimize the asymptotic
621: 374: 2420: 2398: 2355: 2350: 2017: 1973: 1932: 1472: 839: 826: 603: 214: 1762:"A Statistical Study of the Randomness Among the First 10,000 Digits of Pi" 1479:
to store numbers with the requested precision and to perform computations.
948:
last >= Limit: error("overflow") last := last + 1
381:
with very large numbers are required. It should not be confused with the
2335: 1442: 644: 579: 575: 564: 485: 145: 1020:
may need to be carried into multiple higher-order digits, not just one.
473:
images with an extremely high magnification, such as those found in the
27:
Calculations where numbers' precision is only limited by computer memory
1450: 1416: 1409: 1397: 470: 17: 1431: 1420: 1629: 457:
Arbitrary precision arithmetic is also used to compute fundamental
244: 864:
tdigit: Array of character = variables: digit: Array of 0..9
563:
whereas the former must be implemented in software. Even if the
1953: 1732:
recommends important RSA keys be 2048 bits (roughly 600 digits).
1435: 806: 523: 1905: 538:
use, or have an option to use, arbitrary-precision numbers for
373:
Arbitrary precision is used in applications where the speed of
1948: 1888: 790: 782:
For a list of algorithms along with complexity estimates, see
344: 29: 1901: 1361:
as in the example, and nearly all arithmetic units provide a
997:
must be able to hold the result of a single-digit multiply
462: 1746:(Report) (in French). Université Henri Poincaré - Nancy I. 1404:
machine) of the mid-1950s, implemented integer arithmetic
817:, extend the precision automatically to prevent overflow. 1867:, Chapter 9: Fast Algorithms for Large-Integer Arithmetic 1703:"Researchers: 307-digit key crack endangers 1024-bit RSA" 1441:
An early widespread implementation was available via the
480:
Arbitrary-precision arithmetic can also be used to avoid
343:(ALU) hardware, which typically offers between 8 and 64 1494:, though only up to some storage limit. Fundamentally, 1887:
discusses multiprecision arithmetic, with examples in
427: 366:, these implementations typically use variable-length 1534: 1512: 710: 676: 335:
of the host system. This contrasts with the faster
2364: 2273: 2159: 2129: 2094: 1982: 1939: 1343:
1 03331 47966 38614 49296 66651 33752 32000 00000 =
784:
computational complexity of mathematical operations
60:. Unsourced material may be challenged and removed. 1542: 1520: 716: 682: 442: 389:, which represent numbers by expressions such as 1630:"PEP 237 -- Unifying Long Integers and Integers" 1329:2952 32799 03960 41408 47618 60964 35200 00000 = 1463:List of arbitrary-precision arithmetic software 1338:3402 82366 92093 84634 63374 60743 17682 11455 602:numbers would be used: a large integer for the 1816:. Vol. 2 (3rd ed.). Addison-Wesley. 1321:86 83317 61881 18864 95518 19440 12800 00000 = 943:% Store the remaining carry in the big number. 901:% Step through producing 1!, 2!, 3!, 4!, etc. 331:are potentially limited only by the available 1917: 1423:offered bignum facilities as a collection of 1313:2 63130 83693 36935 30167 21801 21600 00000 = 574:machines of the 1950s and 1960s, notably the 280: 8: 852:constants: Limit = 1000 990:array represent higher powers of the base. 1924: 1910: 1902: 1305:8222 83865 41779 22817 72556 28800 00000 = 886:% The big number starts as a single-digit, 750:complexity have been devised, such as the 287: 273: 131: 1851:Richard Crandall, Carl Pomerance (2005). 1828:, Section 4.3.1: The Classical Algorithms 1777: 1536: 1535: 1533: 1514: 1513: 1511: 1297:265 25285 98121 91058 63630 84800 00000 = 1012:or so. In a more general implementation, 928:% Keep the low-order digit of the result. 709: 675: 428: 426: 120:Learn how and when to remove this message 1029: 1596: 1289:8 84176 19937 39701 95454 36160 00000 = 858:% The base of the simulated arithmetic. 252: 206: 144: 134: 884:last := 1 696:, but usually it will go much faster. 1834:Paradigms and Programming with Pascal 1606:"BigInteger Struct (System.Numerics)" 1430:in the one case and in the languages 1281:30488 83446 11713 86050 15040 00000 = 962:% Strip the last digit off the carry. 874:% Index into the big number's digits. 768:multiplication is such an algorithm. 7: 1273:1088 88694 50418 35216 07680 00000 = 903:carry := 0 58:adding citations to reliable sources 1396:IBM's first business computer, the 888:digit := 1 880:digit := 0 870:% Assistants during multiplication. 794: 514:Some programming languages such as 443:{\textstyle {\sqrt {\frac {1}{3}}}} 377:is not a limiting factor, or where 1654:"BigInteger (Java Platform SE 7 )" 1265:40 32914 61126 60563 55840 00000 = 711: 677: 25: 1779:10.1090/s0025-5718-1962-0144443-7 1257:1 55112 10043 33098 59840 00000 = 964:text := " " 977:% Translate from binary to text. 643:The simplest algorithms are for 69:"Arbitrary-precision arithmetic" 34: 1814:The Art of Computer Programming 1490:) and some can fully represent 936:% Carry over to the next digit. 918:d := digit * n + carry 872:last: Integer 868:carry, d: Integer 860:FactorialLimit = 365 856:Base = 10 323:are performed on numbers whose 235:IBM floating-point architecture 45:needs additional citations for 2472:Computer arithmetic algorithms 1249:6204 48401 73323 94393 60000 = 862:% Target number to solve, 365! 305:arbitrary-precision arithmetic 1: 1990:Arbitrary-precision or bignum 1701:Jacqui Cheng (May 23, 2007). 1241:258 52016 73888 49766 40000 = 956:Base carry := carry 317:infinite-precision arithmetic 313:multiple-precision arithmetic 1896:Arbitrary-precision integers 1575:Schönhage–Strassen algorithm 1543:{\displaystyle \mathbb {Z} } 1521:{\displaystyle \mathbb {R} } 1233:11 24000 72777 76076 80000 = 941:carry > 0: 878:% Scratchpad for the output. 752:Schönhage–Strassen algorithm 1678:"BigInt - JavaScript | MDN" 1528:exceeds the cardinality of 1412:. Later, around 1980, the 1036:Reach of computer integers 589:Numbers can be stored in a 2493: 1836:. Computer Science Press. 1766:Mathematics of Computation 1570:Mixed-precision arithmetic 1460: 920:% Multiply a single digit. 805:In some languages such as 337:fixed-precision arithmetic 2331:Strongly typed identifier 1225:51090 94217 17094 40000 = 1035: 1032: 966:% Now prepare the output. 916:% Step along every digit. 876:text: Array of character 732:multiplication algorithms 404:with infinite precision. 1810:Seminumerical Algorithms 1580:Toom–Cook multiplication 1220:18446 74407 37095 51615 1211:2432 90200 81766 40000 = 905:% Start a multiply by n. 882:% Clear the whole array. 835:Stirling's approximation 412:A common application is 387:computer algebra systems 2406:Parametric polymorphism 1742:Laurent Fousse (2006). 1203:121 64510 04088 32000 = 756:fast Fourier transforms 717:{\displaystyle \Theta } 683:{\displaystyle \Theta } 612:greatest common divisor 414:public-key cryptography 230:Microsoft Binary Format 2477:Management cybernetics 1585:Little Endian Base 128 1544: 1522: 981:% Reversing the order. 979:text := tdigit] 890:% its only digit is 1. 718: 684: 459:mathematical constants 444: 1682:developer.mozilla.org 1545: 1523: 1498:cannot represent all 1195:6 40237 37057 28000 = 719: 685: 555:Implementation issues 467:Riemann zeta function 445: 352:programming languages 341:arithmetic logic unit 1832:Derick Wood (1984). 1532: 1510: 1406:entirely in hardware 986:text, " = ", n, "!" 952:digit := carry 854:% Sufficient digits. 708: 674: 610:. But even with the 571:variable word length 549:a number is a number 452:Gaussian integration 425: 383:symbolic computation 54:improve this article 2467:Computer arithmetic 2411:Primitive data type 2316:Recursive data type 2169:Algebraic data type 2045:Quadruple precision 1880:The Art of Assembly 1855:. Springer-Verlag. 1565:Karatsuba algorithm 1187:35568 74280 96000 = 899:FactorialLimit: 825:The calculation of 561:hardware arithmetic 261:Arbitrary precision 2374:Abstract data type 2055:Extended precision 2014:Reduced precision 1894:Rosetta Code task 1610:docs.microsoft.com 1540: 1518: 1492:computable numbers 1457:Software libraries 1179:2092 27898 88000 = 1033:Factorial numbers 777:division algorithm 714: 680: 440: 364:processor register 245:G.711 8-bit floats 199:Extended precision 2454: 2453: 2186:Associative array 2050:Octuple precision 1823:978-0-201-89684-8 1560:FĂŒrer's algorithm 1414:operating systems 1350: 1349: 1171:130 76743 68000 = 975:last: 950:% One more digit. 914:last: 866:% The big number. 801:Pre-set precision 438: 437: 402:computable number 385:provided by many 319:, indicates that 309:bignum arithmetic 297: 296: 130: 129: 122: 104: 16:(Redirected from 2484: 2426:Type constructor 2311:Opaque data type 2243:Record or Struct 2040:Double precision 2035:Single precision 1926: 1919: 1912: 1903: 1866: 1847: 1827: 1792: 1789: 1787: 1786: 1781: 1754: 1748: 1747: 1739: 1733: 1731: 1729: 1728: 1719:. Archived from 1713: 1707: 1706: 1698: 1692: 1691: 1689: 1688: 1674: 1668: 1667: 1665: 1664: 1650: 1644: 1643: 1641: 1640: 1626: 1620: 1619: 1617: 1616: 1601: 1549: 1547: 1546: 1541: 1539: 1527: 1525: 1524: 1519: 1517: 1030: 1015: 1011: 1004: 996: 930:carry := d 922:digit := d 789:For examples in 763: 749: 730:operations, but 729: 723: 721: 720: 715: 695: 689: 687: 686: 681: 658: 639: 629: 593:format, or in a 450:that appears in 449: 447: 446: 441: 439: 430: 429: 395: 301:computer science 289: 282: 275: 132: 125: 118: 114: 111: 105: 103: 62: 38: 30: 21: 2492: 2491: 2487: 2486: 2485: 2483: 2482: 2481: 2457: 2456: 2455: 2450: 2431:Type conversion 2366: 2360: 2296:Enumerated type 2269: 2155: 2149:null-terminated 2125: 2090: 1978: 1935: 1930: 1878:Chapter 9.3 of 1874: 1863: 1850: 1844: 1831: 1824: 1804: 1801: 1799:Further reading 1796: 1795: 1784: 1782: 1772:(78): 188–197. 1756: 1755: 1751: 1741: 1740: 1736: 1726: 1724: 1715: 1714: 1710: 1700: 1699: 1695: 1686: 1684: 1676: 1675: 1671: 1662: 1660: 1658:docs.oracle.com 1652: 1651: 1647: 1638: 1636: 1628: 1627: 1623: 1614: 1612: 1603: 1602: 1598: 1593: 1556: 1530: 1529: 1508: 1507: 1496:Turing machines 1465: 1459: 1394: 1163:8 71782 91200 = 1013: 1006: 1002: 994: 987: 842:of the number. 823: 803: 759: 744:) log(log( 735: 706: 705: 704: 672: 671: 670: 659:algorithm (see 652: 635: 625: 557: 423: 422: 410: 396:, and can thus 390: 379:precise results 350:Several modern 315:, or sometimes 293: 240:PMBus Linear-11 126: 115: 109: 106: 63: 61: 51: 39: 28: 23: 22: 15: 12: 11: 5: 2490: 2488: 2480: 2479: 2474: 2469: 2459: 2458: 2452: 2451: 2449: 2448: 2443: 2438: 2433: 2428: 2423: 2418: 2413: 2408: 2403: 2402: 2401: 2391: 2386: 2384:Data structure 2381: 2376: 2370: 2368: 2362: 2361: 2359: 2358: 2353: 2348: 2343: 2338: 2333: 2328: 2323: 2318: 2313: 2308: 2303: 2298: 2293: 2288: 2283: 2277: 2275: 2271: 2270: 2268: 2267: 2266: 2265: 2255: 2250: 2245: 2240: 2235: 2230: 2229: 2228: 2218: 2213: 2208: 2203: 2198: 2193: 2188: 2183: 2178: 2177: 2176: 2165: 2163: 2157: 2156: 2154: 2153: 2152: 2151: 2141: 2135: 2133: 2127: 2126: 2124: 2123: 2118: 2117: 2116: 2111: 2100: 2098: 2092: 2091: 2089: 2088: 2083: 2078: 2077: 2076: 2066: 2065: 2064: 2063: 2062: 2052: 2047: 2042: 2037: 2032: 2031: 2030: 2025: 2023:Half precision 2020: 2010:Floating point 2007: 2002: 1997: 1992: 1986: 1984: 1980: 1979: 1977: 1976: 1971: 1966: 1961: 1956: 1951: 1945: 1943: 1937: 1936: 1931: 1929: 1928: 1921: 1914: 1906: 1900: 1899: 1892: 1873: 1872:External links 1870: 1869: 1868: 1861: 1848: 1842: 1829: 1822: 1800: 1797: 1794: 1793: 1749: 1734: 1708: 1693: 1669: 1645: 1621: 1595: 1594: 1592: 1589: 1588: 1587: 1582: 1577: 1572: 1567: 1562: 1555: 1552: 1538: 1516: 1484:floating point 1471:that provides 1458: 1455: 1438:in the other. 1393: 1390: 1348: 1347: 1344: 1340: 1339: 1336: 1333: 1330: 1326: 1325: 1322: 1318: 1317: 1314: 1310: 1309: 1306: 1302: 1301: 1298: 1294: 1293: 1290: 1286: 1285: 1282: 1278: 1277: 1274: 1270: 1269: 1266: 1262: 1261: 1258: 1254: 1253: 1250: 1246: 1245: 1242: 1238: 1237: 1234: 1230: 1229: 1226: 1222: 1221: 1218: 1215: 1212: 1208: 1207: 1204: 1200: 1199: 1196: 1192: 1191: 1188: 1184: 1183: 1180: 1176: 1175: 1172: 1168: 1167: 1164: 1160: 1159: 1156: 1152: 1151: 1148: 1145: 1142: 1138: 1137: 1134: 1130: 1129: 1126: 1122: 1121: 1118: 1114: 1113: 1110: 1107: 1104: 1100: 1099: 1096: 1092: 1091: 1088: 1084: 1083: 1080: 1077: 1074: 1070: 1069: 1066: 1062: 1061: 1058: 1054: 1053: 1050: 1046: 1045: 1042: 1038: 1037: 1034: 999:plus the carry 934:Base 851: 822: 819: 802: 799: 795:external links 793:assembly, see 713: 701:multiplication 679: 661:big O notation 595:floating-point 556: 553: 475:Mandelbrot set 436: 433: 409: 406: 360:floating-point 347:of precision. 339:found in most 307:, also called 295: 294: 292: 291: 284: 277: 269: 266: 265: 264: 263: 255: 254: 250: 249: 248: 247: 242: 237: 232: 227: 225:TensorFloat-32 222: 217: 209: 208: 204: 203: 202: 201: 196: 189: 179: 169: 159: 149: 148: 142: 141: 136:Floating-point 128: 127: 42: 40: 33: 26: 24: 14: 13: 10: 9: 6: 4: 3: 2: 2489: 2478: 2475: 2473: 2470: 2468: 2465: 2464: 2462: 2447: 2444: 2442: 2439: 2437: 2434: 2432: 2429: 2427: 2424: 2422: 2419: 2417: 2414: 2412: 2409: 2407: 2404: 2400: 2397: 2396: 2395: 2392: 2390: 2387: 2385: 2382: 2380: 2377: 2375: 2372: 2371: 2369: 2363: 2357: 2354: 2352: 2349: 2347: 2344: 2342: 2339: 2337: 2334: 2332: 2329: 2327: 2324: 2322: 2319: 2317: 2314: 2312: 2309: 2307: 2306:Function type 2304: 2302: 2299: 2297: 2294: 2292: 2289: 2287: 2284: 2282: 2279: 2278: 2276: 2272: 2264: 2261: 2260: 2259: 2256: 2254: 2251: 2249: 2246: 2244: 2241: 2239: 2236: 2234: 2231: 2227: 2224: 2223: 2222: 2219: 2217: 2214: 2212: 2209: 2207: 2204: 2202: 2199: 2197: 2194: 2192: 2189: 2187: 2184: 2182: 2179: 2175: 2172: 2171: 2170: 2167: 2166: 2164: 2162: 2158: 2150: 2147: 2146: 2145: 2142: 2140: 2137: 2136: 2134: 2132: 2128: 2122: 2119: 2115: 2112: 2110: 2107: 2106: 2105: 2102: 2101: 2099: 2097: 2093: 2087: 2084: 2082: 2079: 2075: 2072: 2071: 2070: 2067: 2061: 2058: 2057: 2056: 2053: 2051: 2048: 2046: 2043: 2041: 2038: 2036: 2033: 2029: 2026: 2024: 2021: 2019: 2016: 2015: 2013: 2012: 2011: 2008: 2006: 2003: 2001: 1998: 1996: 1993: 1991: 1988: 1987: 1985: 1981: 1975: 1972: 1970: 1967: 1965: 1962: 1960: 1957: 1955: 1952: 1950: 1947: 1946: 1944: 1942: 1941:Uninterpreted 1938: 1934: 1927: 1922: 1920: 1915: 1913: 1908: 1907: 1904: 1897: 1893: 1890: 1886: 1882: 1881: 1876: 1875: 1871: 1864: 1862:9780387252827 1858: 1854: 1853:Prime Numbers 1849: 1845: 1843:0-914894-45-5 1839: 1835: 1830: 1825: 1819: 1815: 1811: 1807: 1806:Knuth, Donald 1803: 1802: 1798: 1780: 1775: 1771: 1767: 1763: 1759: 1758:R. K. Pathria 1753: 1750: 1745: 1738: 1735: 1723:on 2012-04-01 1722: 1718: 1712: 1709: 1704: 1697: 1694: 1683: 1679: 1673: 1670: 1659: 1655: 1649: 1646: 1635: 1631: 1625: 1622: 1611: 1607: 1600: 1597: 1590: 1586: 1583: 1581: 1578: 1576: 1573: 1571: 1568: 1566: 1563: 1561: 1558: 1557: 1553: 1551: 1505: 1501: 1497: 1493: 1489: 1485: 1480: 1478: 1474: 1470: 1464: 1456: 1454: 1452: 1448: 1447:lookup tables 1444: 1439: 1437: 1433: 1429: 1426: 1422: 1418: 1415: 1411: 1407: 1403: 1399: 1391: 1389: 1387: 1383: 1379: 1375: 1369: 1366: 1365: 1360: 1356: 1345: 1342: 1341: 1337: 1334: 1331: 1328: 1327: 1323: 1320: 1319: 1315: 1312: 1311: 1307: 1304: 1303: 1299: 1296: 1295: 1291: 1288: 1287: 1283: 1280: 1279: 1275: 1272: 1271: 1267: 1264: 1263: 1259: 1256: 1255: 1251: 1248: 1247: 1243: 1240: 1239: 1235: 1232: 1231: 1227: 1224: 1223: 1219: 1216: 1213: 1210: 1209: 1205: 1202: 1201: 1197: 1194: 1193: 1189: 1186: 1185: 1181: 1178: 1177: 1173: 1170: 1169: 1165: 1162: 1161: 1157: 1155:62270 20800 = 1154: 1153: 1149: 1146: 1143: 1140: 1139: 1135: 1132: 1131: 1127: 1124: 1123: 1119: 1116: 1115: 1111: 1108: 1105: 1102: 1101: 1097: 1094: 1093: 1089: 1086: 1085: 1081: 1078: 1075: 1072: 1071: 1067: 1064: 1063: 1059: 1056: 1055: 1051: 1048: 1047: 1043: 1040: 1039: 1031: 1028: 1026: 1021: 1019: 1009: 1000: 991: 985: 982: 978: 974: 970: 967: 963: 959: 955: 951: 947: 944: 940: 937: 933: 929: 925: 921: 917: 913: 909: 906: 902: 898: 894: 891: 887: 883: 879: 875: 871: 867: 863: 859: 855: 850: 848: 843: 841: 836: 832: 831:Taylor series 828: 820: 818: 816: 812: 808: 800: 798: 796: 792: 787: 785: 780: 778: 774: 769: 767: 762: 757: 753: 747: 743: 739: 734:that achieve 733: 727: 702: 697: 693: 668: 664: 662: 656: 650: 646: 641: 638: 633: 628: 623: 618: 615: 613: 609: 605: 600: 596: 592: 587: 585: 584:Honeywell 200 581: 577: 573: 572: 566: 562: 554: 552: 550: 546: 541: 537: 533: 529: 525: 521: 517: 512: 508: 505: 500: 498: 493: 492: 487: 483: 478: 476: 472: 468: 464: 460: 455: 453: 434: 431: 419: 415: 407: 405: 403: 399: 393: 388: 384: 380: 376: 371: 369: 365: 361: 357: 353: 348: 346: 342: 338: 334: 330: 326: 322: 318: 314: 310: 306: 302: 290: 285: 283: 278: 276: 271: 270: 268: 267: 262: 259: 258: 257: 256: 251: 246: 243: 241: 238: 236: 233: 231: 228: 226: 223: 221: 218: 216: 213: 212: 211: 210: 205: 200: 197: 194: 190: 188: 185:(binary128), 184: 180: 178: 174: 170: 168: 164: 160: 157: 153: 152: 151: 150: 147: 143: 140: 137: 133: 124: 121: 113: 102: 99: 95: 92: 88: 85: 81: 78: 74: 71: â€“  70: 66: 65:Find sources: 59: 55: 49: 48: 43:This article 41: 37: 32: 31: 19: 2211:Intersection 1989: 1885:Randall Hyde 1879: 1852: 1833: 1809: 1783:. Retrieved 1769: 1765: 1752: 1737: 1725:. Retrieved 1721:the original 1711: 1696: 1685:. Retrieved 1681: 1672: 1661:. Retrieved 1657: 1648: 1637:. Retrieved 1633: 1624: 1613:. Retrieved 1609: 1604:dotnet-bot. 1599: 1500:real numbers 1481: 1466: 1440: 1405: 1395: 1385: 1381: 1377: 1373: 1370: 1362: 1358: 1354: 1351: 1150:42949 67295 1141:4790 01600 = 1024: 1022: 1017: 1007: 998: 992: 988: 983: 980: 976: 972: 971:i := 1 968: 965: 961: 957: 953: 949: 945: 942: 938: 935: 931: 927: 923: 919: 915: 911: 910:i := 1 907: 904: 900: 896: 895:n := 1 892: 889: 885: 881: 877: 873: 869: 865: 861: 857: 853: 844: 824: 804: 788: 781: 770: 760: 745: 741: 737: 725: 698: 691: 665: 654: 642: 636: 626: 619: 616: 606:and for the 597:format as a 588: 569: 558: 548: 539: 513: 509: 495: 489: 479: 456: 411: 408:Applications 397: 391: 372: 349: 321:calculations 316: 312: 308: 304: 298: 260: 253:Alternatives 175:(binary64), 165:(binary32), 116: 107: 97: 90: 83: 76: 64: 52:Please help 47:verification 44: 2441:Type theory 2436:Type system 2286:Bottom type 2233:Option type 2174:generalized 2060:Long double 2005:Fixed point 1504:cardinality 1477:subroutines 1402:vacuum-tube 1133:399 16800 = 926:Base 754:, based on 649:subtraction 608:denominator 599:significand 591:fixed-point 370:of digits. 195:(binary256) 2461:Categories 2346:Empty type 2341:Type class 2291:Collection 2248:Refinement 2226:metaobject 2074:signedness 1933:Data types 1891:-assembly. 1785:2014-01-10 1727:2012-03-31 1687:2022-02-22 1663:2022-02-22 1639:2022-05-23 1634:Python.org 1615:2022-02-22 1591:References 1473:data types 1461:See also: 1364:carry flag 1125:36 28800 = 960:Base 847:pseudocode 827:factorials 740: log( 667:Comparison 634:for large 632:complexity 622:algorithms 497:saturation 491:wraparound 375:arithmetic 187:decimal128 158:(binary16) 80:newspapers 2421:Subtyping 2416:Interface 2399:metaclass 2351:Unit type 2321:Semaphore 2301:Exception 2206:Inductive 2196:Dependent 2161:Composite 2139:Character 2121:Reference 2018:Minifloat 1974:Bit array 1502:, as the 1488:rationals 1428:functions 1117:3 62880 = 1010:> 3200 840:logarithm 766:Karatsuba 712:Θ 678:Θ 620:Numerous 604:numerator 545:word size 504:exception 418:overflows 398:represent 329:precision 215:Minifloat 191:256-bit: 183:Quadruple 181:128-bit: 177:decimal64 167:decimal32 110:July 2007 2446:Variable 2336:Top type 2201:Equality 2109:physical 2086:Rational 2081:Interval 2028:bfloat16 1808:(2008). 1760:(1962). 1554:See also 1443:IBM 1620 1380:) where 1376:, digit 773:division 645:addition 582:and the 580:IBM 1401 576:IBM 1620 565:computer 486:odometer 482:overflow 461:such as 220:bfloat16 171:64-bit: 161:32-bit: 154:16-bit: 146:IEEE 754 2389:Generic 2365:Related 2281:Boolean 2238:Product 2114:virtual 2104:Address 2096:Pointer 2069:Integer 2000:Decimal 1995:Complex 1983:Numeric 1791:digits. 1469:library 1451:Fortran 1417:VAX/VMS 1410:Maclisp 1398:IBM 702 1392:History 1335:128-bit 1103:40320 = 821:Example 528:Haskell 471:fractal 394:·sin(2) 356:integer 193:Octuple 139:formats 94:scholar 2379:Boxing 2367:topics 2326:Stream 2263:tagged 2221:Object 2144:String 1859:  1840:  1820:  1432:EXEC 2 1425:string 1421:VM/CMS 1217:64-bit 1147:32-bit 1112:65535 1109:16-bit 1095:5040 = 811:Python 775:, see 764:. The 520:Python 368:arrays 333:memory 325:digits 173:Double 163:Single 96:  89:  82:  75:  67:  18:Bignum 2274:Other 2258:Union 2191:Class 2181:Array 1964:Tryte 1087:720 = 1079:8-bit 1073:120 = 1025:digit 1018:carry 984:print 939:while 207:Other 101:JSTOR 87:books 2394:Kind 2356:Void 2216:List 2131:Text 1969:Word 1959:Trit 1954:Byte 1857:ISBN 1838:ISBN 1818:ISBN 1475:and 1436:REXX 1434:and 1419:and 1384:and 1357:and 1346:35! 1332:34! 1324:33! 1316:32! 1308:31! 1300:30! 1292:29! 1284:28! 1276:27! 1268:26! 1260:25! 1252:24! 1244:23! 1236:22! 1228:21! 1214:20! 1206:19! 1198:18! 1190:17! 1182:16! 1174:15! 1166:14! 1158:13! 1144:12! 1136:11! 1128:10! 1082:255 1065:24 = 838:the 815:Ruby 813:and 807:REXX 771:For 699:For 647:and 536:Raku 534:and 532:Ruby 524:Perl 516:Lisp 400:any 358:and 345:bits 156:Half 73:news 2253:Set 1949:Bit 1889:x86 1883:by 1774:doi 1506:of 1400:(a 1359:div 1355:mod 1120:9! 1106:8! 1098:7! 1090:6! 1076:5! 1068:4! 1060:3! 1057:6 = 1052:2! 1049:2 = 1044:1! 1041:1 = 969:for 958:div 954:mod 932:div 924:mod 908:for 893:for 791:x86 748:))) 663:). 540:all 327:of 299:In 56:by 2463:: 1812:. 1770:16 1768:. 1764:. 1680:. 1656:. 1632:. 1608:. 1550:. 973:to 946:if 912:to 897:to 797:. 786:. 779:. 736:O( 653:O( 640:. 578:, 530:, 526:, 522:, 518:, 477:. 454:. 311:, 303:, 1925:e 1918:t 1911:v 1865:. 1846:. 1826:. 1788:. 1776:: 1730:. 1705:. 1690:. 1666:. 1642:. 1618:. 1537:Z 1515:R 1386:j 1382:i 1378:j 1374:i 1014:n 1008:n 1003:n 995:d 761:N 746:N 742:N 738:N 728:) 726:N 724:( 694:) 692:N 690:( 657:) 655:N 637:N 627:N 499:, 463:π 435:3 432:1 392:π 288:e 281:t 274:v 123:) 117:( 112:) 108:( 98:· 91:· 84:· 77:· 50:. 20:)

Index

Bignum

verification
improve this article
adding citations to reliable sources
"Arbitrary-precision arithmetic"
news
newspapers
books
scholar
JSTOR
Learn how and when to remove this message
Floating-point
formats
IEEE 754
Half
Single
decimal32
Double
decimal64
Quadruple
decimal128
Octuple
Extended precision
Minifloat
bfloat16
TensorFloat-32
Microsoft Binary Format
IBM floating-point architecture
PMBus Linear-11

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.

↑