1. A method of calculating a floating point result of a floating point computation, comprising: calculating a partial result of the floating point computation, the partial result including an unrounded portion and a portion of extra precision defined as a discriminant; testing for a critical pattern in the discriminant; obtaining the floating point result from the unrounded portion if the critical pattern is not found in the discriminant; recalculating a higher precision partial result if the critical pattern is found in the discriminant, and obtaining the floating point result from the higher precision partial result.