 If it is intended to especially handle hardware (CPU) faults, the software can be implemented using different parts of the hardware; for example, one implementation uses a hardware multiply and the other implementation multiplies by shifting or adding.This causes a significant overhead (more than a factor of two for the size of the code).On the other hand, the results are outstandingly accurate.