В данном случае речь идёт о вещественных числах. Насколько я понял FPU входит в CPU. И существует два режима работы FPU:
1. С генерацией исключений (который вроде как по-умолчанию);
2. Без генерации исключений с константами типа INF(1.0/0.0) и  NaN(0.0/0.0);
Последний режим действительно работает быстрее, как сообщается в Embarcadero RAD Studio Help: 
Цитата:
When using OpenGL to render 3D graphics, we recommend that you disable all floating-point exceptions for performance reasons. To do this, call Set8087CW(0x133f) in... 
Set8087CW задаёт контрольное слово (control word)  FPU, которое задаёт маску исключений FPU при работе с вещественными числами. В общем попробовал. Работает:
#include <stdio.h>
#include <conio.h>
#include <System.hpp>
#include <Math.hpp>
void GetDouble(const char *text, double *pValue)
{
        printf(text);
        scanf("%lf", pValue);
        fflush(stdin);
}
//-----------------------------------------------------------------------------
int main()
{
        double a, b, c;
        Set8087CW(0x133F);
        //получаем данные
        GetDouble("a= ", &a);
        GetDouble("b= ", &b);
        //расчет
        c = a / b;
        //вывод данных
        if (IsInfinite(c))
                printf("Infinite result\n");
        else if (IsNan(c))
                printf("Not a number\n");
        else
                printf("c= %G\n", c);
        printf("Press any key to exit...");
        _getch();
        return 0;
}
//-----------------------------------------------------------------------------
 
  -- Ср июл 23, 2014 17:08:10 --Справедливости ради, стоит отметить, что под Windows многие компиляторы реализуют так называемую структурную обработку исключений (SEH - structure exception handling), которая хорошо описана у Назара и Рихтера. Поэтому на С++ ошибки можно обрабатывать с помощью SEH:
#include <stdio.h>
#include <conio.h>
#include <windows.h>
void GetDouble(const char *text, double *pValue)
{
        printf(text);
        scanf("%lf", pValue);
        fflush(stdin);
}
//-----------------------------------------------------------------------------
int main()
{
        double a, b, c;
        bool calced = false;
        //получаем данные
        GetDouble("a= ", &a);
        GetDouble("b= ", &b);
        //расчет
        __try
        {
                c = a / b;
                calced = true;
        }
        __except(EXCEPTION_EXECUTE_HANDLER)
        {
                printf("MATH ERROR.\n");
        }
        //вывод данных
        if (calced)
                printf("c= %G\n", c);+
        printf("Press any key to exit...");
        _getch();
        return 0;
}
//-----------------------------------------------------------------------------
 
   Таким образом есть два взаимоисключающих варианта обработки мат. ошибок:
1. Использование SEH;
2. Использование сравнения на INF, NaN (для этого надо настроить FPU, чтобы он не выбрасывал исключений).
Что лучше?