What is the machine epsilon? Computer systems are the digital systems. Every information that is represented in computer is always limited in its representation in terms of the number of bits available. Every machine (calculator, computer) has specific number of bits reserved for representing a number. Real numbers are represented as floats in computers. There are two ways for representing real numbers in computers:
Single Precision (32 bits)
Double Precision (64 bits)
If there are larger number of bits available then it is possible to represent the more smaller/larger numbers. In order to get the better idea just go through the topic: How to represent floats in computer system?
In the single precision, we have 32 bits for representing the floated values. The distribution of bits is shown below.
Table of Contents
Every machine has a specific precision while representing a number. Obviously we can never completely represent the fractional values. Simple example is the value of π=22/7. When your computer/calculator represents pi, it always rounds of its value (3.142857….). The larger number of bits means more precision. The degree of precision is limited because of machine epsilon. The machine epsilon is defined as:
Ꞓ=b1-t‑ where b is the base of any number system (b=2 in case of binary) and t is the number of significant digits in Mantissa. In case of single precision the number of bits for representing mantissa is 23 and there is always a hidden bit so Mantissa =24 bits.
Hence Machine Epsilon=Ꞓ=b1-t‑ =2-1-24=2-23
Obviously it is the mathematical form that is difficult to understand. We can say that machine epsilon is the very next number after 1 that a computer can represent based on the single/double precision.
Thus if we are generating a sequence of numbers using single precision, the sequence will be as follows:
Machine epsilon for double precision
Similarly, for the double precision we have 53 bits for representing mantissa so its machine epsilon is Ꞓ=b1-t‑ =2-1-53=2-52
MATLAB code for machine epsilon
You can simply use the command eps in MATLAB command window for finding the machine epsilon. Here is another way for determining the machine epsilon
How to find the machine epsilon?
- How to determine the overflow of signed and unsigned numbers?
- How to perform Packed BCD to ASCII conversion?
- How to represent floats in computer system?