Math Processor Unit Library

libmpu – library of arithmetic functions for integer, real, and complex numbers of increased digit capacity

16 Commits   0 Branches   2 Tags
868b2b66 (kx 2024-12-20 16:11:07 +0300  1) 
868b2b66 (kx 2024-12-20 16:11:07 +0300  2) /***************************************************************
868b2b66 (kx 2024-12-20 16:11:07 +0300  3)   __MPU_MATH_ERROR.C
868b2b66 (kx 2024-12-20 16:11:07 +0300  4) 
868b2b66 (kx 2024-12-20 16:11:07 +0300  5)        This file contains source code of functions for
868b2b66 (kx 2024-12-20 16:11:07 +0300  6)        MATH ERROOR operations.
868b2b66 (kx 2024-12-20 16:11:07 +0300  7) 
868b2b66 (kx 2024-12-20 16:11:07 +0300  8)        PART OF : MPU - library .
868b2b66 (kx 2024-12-20 16:11:07 +0300  9) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 10)        USAGE   : Internal only .
868b2b66 (kx 2024-12-20 16:11:07 +0300 11) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 12)        NOTE    : NONE .
868b2b66 (kx 2024-12-20 16:11:07 +0300 13) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 14)        Copyright (C) 2000 - 2024  by Andrew V.Kosteltsev.
868b2b66 (kx 2024-12-20 16:11:07 +0300 15)        All Rights Reserved.
868b2b66 (kx 2024-12-20 16:11:07 +0300 16)  ***************************************************************/
868b2b66 (kx 2024-12-20 16:11:07 +0300 17) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 18) #ifdef HAVE_CONFIG_H
868b2b66 (kx 2024-12-20 16:11:07 +0300 19) #include <config.h>
868b2b66 (kx 2024-12-20 16:11:07 +0300 20) #endif
868b2b66 (kx 2024-12-20 16:11:07 +0300 21) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 22) #include <nls.h>
868b2b66 (kx 2024-12-20 16:11:07 +0300 23) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 24) #include <errno.h>
868b2b66 (kx 2024-12-20 16:11:07 +0300 25) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 26) #include <libmpu.h>
868b2b66 (kx 2024-12-20 16:11:07 +0300 27) #include <mpu-context.h>
868b2b66 (kx 2024-12-20 16:11:07 +0300 28) #include <mpu-symbols.h>
868b2b66 (kx 2024-12-20 16:11:07 +0300 29) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 30) #include <mpu-math-errno.h>
868b2b66 (kx 2024-12-20 16:11:07 +0300 31) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 32) /*
868b2b66 (kx 2024-12-20 16:11:07 +0300 33)   __mpu_math_error() работает с внешним форматом чисел.
868b2b66 (kx 2024-12-20 16:11:07 +0300 34) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 35)   Пользователь может определить собственную функцию
868b2b66 (kx 2024-12-20 16:11:07 +0300 36)   __mpu_math_error() в качестве замены данного стандартного
868b2b66 (kx 2024-12-20 16:11:07 +0300 37)   обработчика математических ошибок.
868b2b66 (kx 2024-12-20 16:11:07 +0300 38)  */
868b2b66 (kx 2024-12-20 16:11:07 +0300 39) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 40) int __use_default_math_error = 1;
868b2b66 (kx 2024-12-20 16:11:07 +0300 41) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 42) int __mpu_math_error( struct __exception *pexcept )
868b2b66 (kx 2024-12-20 16:11:07 +0300 43) {
868b2b66 (kx 2024-12-20 16:11:07 +0300 44)   /* NOTE: ******************************************************
868b2b66 (kx 2024-12-20 16:11:07 +0300 45)        if( RETURN( 0 ) ) [ - ОШИБКА НЕ ОБРАБОТАНА]
868b2b66 (kx 2024-12-20 16:11:07 +0300 46)            надо печатать сообщение об ошибке и переменной ERRNO
868b2b66 (kx 2024-12-20 16:11:07 +0300 47)            присваивать соответствующее значение.
868b2b66 (kx 2024-12-20 16:11:07 +0300 48)        if( RETURN( 1 ) ) [ - ОШИБКА ОБРАБОТАНА]
868b2b66 (kx 2024-12-20 16:11:07 +0300 49)            сообщение об ошибке не печатается и значение переменной
868b2b66 (kx 2024-12-20 16:11:07 +0300 50)            ERRNO остается неизменным.
868b2b66 (kx 2024-12-20 16:11:07 +0300 51)    ***************************************************************/
868b2b66 (kx 2024-12-20 16:11:07 +0300 52)   if( pexcept->type == __INEXACT__ )
868b2b66 (kx 2024-12-20 16:11:07 +0300 53)   {
868b2b66 (kx 2024-12-20 16:11:07 +0300 54)     return( 1 );
868b2b66 (kx 2024-12-20 16:11:07 +0300 55)   }
868b2b66 (kx 2024-12-20 16:11:07 +0300 56) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 57)   return( 0 );
868b2b66 (kx 2024-12-20 16:11:07 +0300 58) }