Floating-point arithmetic: Difference between revisions

Content deleted Content added
Internal representation: update concerning the implicit bit
Line 122:
In 1989, mathematician and computer scientist [[William Kahan]] was honored with the [[Turing Award]] for being the primary architect behind this proposal; he was aided by his student Jerome Coonen and a visiting professor, [[Harold S. Stone|Harold Stone]].<ref name="Severance_1998"/>
 
Among the x86 (more specifically i8087) innovations are these:
* A precisely specified floating-point representation at the bit-string level, so that all compliant computers interpret bit patterns the same way. This makes it possible to accurately and efficiently transfer floating-point numbers from one computer to another (after accounting for [[endianness]]).
* A precisely specified behavior for the arithmetic operations: A result is required to be produced as if infinitely precise arithmetic were used to yield a value that is then rounded according to specific rules. This means that a compliant computer program would always produce the same result when given a particular input, thus mitigating the almost mystical reputation that floating-point computation had developed for its hitherto seemingly non-deterministic behavior.
* The ability of [[IEEE 754#Exception handling|exceptional conditions]] (overflow, [[Division by zero|divide by zero]], etc.) to propagate through a computation in a benign manner and then be handled by the software in a controlled fashion.
 
These features would be inherited into IEEE 754-1985 (with the exception of the encoding special values and exceptions), though the extended internal precision of x87 means it requires explicit rounding of intermediate results to match standard IEEE 754 results.<ref>{{cite web |last1=Goldberg |first1=David |title=What Every Computer Scientist Should Know About Floating-Point Arithmetic |url=https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html |website=docs.oracle.com}}</ref>
 
== Range of floating-point numbers ==