_fpreset

 Функция            Выполняет рестарт математического пакета операций
                    с плавающей точкой.

 Синтаксис          #include
                    void _fpreset();

 Файл, содержащий   float.h
 прототип

 Описание           Функция _fpreset выполняет рестарт математического
                    пакета операций с плавающей точкой. Данная функ-
                    ция обычно используется вместе с функциями
                    signal, system, или функциями exec... или
                    spawn...

                    Примечание. При работе под операционной системой
                    DOS, если в программе используется математический
                    сопроцессор 80x87, "дочерний" процесс (выполняе-
                    мый посредством функций system, exec... или
                    spawn...), может изменить состояние операций с
                    плавающей точкой "родительского" процесса.

                    Если вы используете сопроцессор 80x87, примите
                    следующие предосторожности:

                    - Не вызывайте функции exec..., spawn... или
                    system, пока выражение с плавающей точкой не вы-
                    числено.

                    - Для установки операций с плавающей точкой после
                    использования функций system, exec... или
                    spawn... вызывайте функцию _fpreset (если только
                    есть какой-либо шанс выполнения дочерним процес-
                    сом операций с плавающей точкой, посредством соп-
                    роцессора 8087/80287).

 Возвращаемое       Отсутствует.
 значение

 Смотрите также     clear7, _control7, exec..,  spawn..,
                    _status7, system

 Пример:

 #include
 #include
 #include
 #include
 #include
 #include

 jmp_buf reenter;

 /* определим программу обработки ошибочных ситуаций операций с
    плавающей точкой */
 void float_trap(int sig)
 {
    printf("Прерывание по ошибке операций с плавающей точкой.\n");
    printf("Для продолжения работы нажмите любую клавишу...\n");
    getch();
    /* рестарт сопроцессора или эмулятора */
    _fpreset();
    /* вернутся в точку, в которой возникла ошибка */
    longjmp(reenter,-1);
 }
 int main(void)
 {
    float one = 3.14, two = 0.0;
    /* установить программу обработки исключительных ситуаций операций
       с плавающей точкой */
    if(signal(SIGFPE,float_trap) == SIG_ERR)
    {
       printf("Ошибка при установке программы обработки прерываний\n");
       exit(3);
    }
    printf("Генерация математической ошибки. Нажмите клавишу...\n");
    getch();
    if(setjmp(reenter)==0)
      one /* two;
    printf("Возврат после обработки прерывания.\n");
    return 0;
 }