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_ERRNO.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 ERRNO SUPPRESS 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) #ifndef _ERR_REMAP
868b2b66 (kx 2024-12-20 16:11:07 +0300  34) # define _ERR_REMAP(n) n
868b2b66 (kx 2024-12-20 16:11:07 +0300  35) #endif
868b2b66 (kx 2024-12-20 16:11:07 +0300  36) 
868b2b66 (kx 2024-12-20 16:11:07 +0300  37) const __mpu_char8_t *const __mpu_integer_errlist[] =
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)     Нет ошибки.
868b2b66 (kx 2024-12-20 16:11:07 +0300  41)    ************************************************************/
868b2b66 (kx 2024-12-20 16:11:07 +0300  42)   /*   0                      */
868b2b66 (kx 2024-12-20 16:11:07 +0300  43)   [0] = (__mpu_char8_t *)N_("Success"),
868b2b66 (kx 2024-12-20 16:11:07 +0300  44) 
868b2b66 (kx 2024-12-20 16:11:07 +0300  45) #ifdef __I_ESIZE__
868b2b66 (kx 2024-12-20 16:11:07 +0300  46)   /************************************************************
868b2b66 (kx 2024-12-20 16:11:07 +0300  47)     Invalid size of operand(s).
868b2b66 (kx 2024-12-20 16:11:07 +0300  48)     ==========================================================
868b2b66 (kx 2024-12-20 16:11:07 +0300  49)     Недопустимый размер операнда/операндов.
868b2b66 (kx 2024-12-20 16:11:07 +0300  50) 
868b2b66 (kx 2024-12-20 16:11:07 +0300  51)        В типичном случае эта ошибка указывает на то, что
868b2b66 (kx 2024-12-20 16:11:07 +0300  52)        при вызове функции целочисленной арифметики был
868b2b66 (kx 2024-12-20 16:11:07 +0300  53)        задан нулевой размер операнда.
868b2b66 (kx 2024-12-20 16:11:07 +0300  54)    ************************************************************/
868b2b66 (kx 2024-12-20 16:11:07 +0300  55)   /*   1 __I_ESIZE__          */
868b2b66 (kx 2024-12-20 16:11:07 +0300  56)   [_ERR_REMAP(__I_ESIZE__)] = (__mpu_char8_t *)N_("Invalid size of operand(s)"),
868b2b66 (kx 2024-12-20 16:11:07 +0300  57) #endif
868b2b66 (kx 2024-12-20 16:11:07 +0300  58) 
868b2b66 (kx 2024-12-20 16:11:07 +0300  59) #ifdef __I_ESHIFT__
868b2b66 (kx 2024-12-20 16:11:07 +0300  60)   /************************************************************
868b2b66 (kx 2024-12-20 16:11:07 +0300  61)     Invalid number of shifts.
868b2b66 (kx 2024-12-20 16:11:07 +0300  62)     ==========================================================
868b2b66 (kx 2024-12-20 16:11:07 +0300  63)     Недопустимое количество сдвигов операнда на один бит.
868b2b66 (kx 2024-12-20 16:11:07 +0300  64) 
868b2b66 (kx 2024-12-20 16:11:07 +0300  65)    ************************************************************/
868b2b66 (kx 2024-12-20 16:11:07 +0300  66)   /*   2 __I_ESHIFT__         */
868b2b66 (kx 2024-12-20 16:11:07 +0300  67)   [_ERR_REMAP(__I_ESHIFT__)] = (__mpu_char8_t *)N_("Invalid number of shifts"),
868b2b66 (kx 2024-12-20 16:11:07 +0300  68) #endif
868b2b66 (kx 2024-12-20 16:11:07 +0300  69) 
868b2b66 (kx 2024-12-20 16:11:07 +0300  70) #ifdef __I_ENUMBER__
868b2b66 (kx 2024-12-20 16:11:07 +0300  71)   /************************************************************
868b2b66 (kx 2024-12-20 16:11:07 +0300  72)     Invalid number.
868b2b66 (kx 2024-12-20 16:11:07 +0300  73)     ==========================================================
868b2b66 (kx 2024-12-20 16:11:07 +0300  74)     Недопустимая числовая константа.
868b2b66 (kx 2024-12-20 16:11:07 +0300  75) 
868b2b66 (kx 2024-12-20 16:11:07 +0300  76)        В типичном случае эта ошибка указывает на то, что
868b2b66 (kx 2024-12-20 16:11:07 +0300  77)        при вызове функции перевода числовой константы из
868b2b66 (kx 2024-12-20 16:11:07 +0300  78)        строкового представления в целое число был обнаружен
868b2b66 (kx 2024-12-20 16:11:07 +0300  79)        символ, недопустимый для представления числовых
868b2b66 (kx 2024-12-20 16:11:07 +0300  80)        констант.
868b2b66 (kx 2024-12-20 16:11:07 +0300  81)    ************************************************************/
868b2b66 (kx 2024-12-20 16:11:07 +0300  82)   /*   3 __I_ENUMBER__        */
868b2b66 (kx 2024-12-20 16:11:07 +0300  83)   [_ERR_REMAP(__I_ENUMBER__)] = (__mpu_char8_t *)N_("Invalid number"),
868b2b66 (kx 2024-12-20 16:11:07 +0300  84) #endif
868b2b66 (kx 2024-12-20 16:11:07 +0300  85) 
868b2b66 (kx 2024-12-20 16:11:07 +0300  86) #ifdef __I_ERADIX__
868b2b66 (kx 2024-12-20 16:11:07 +0300  87)   /************************************************************
868b2b66 (kx 2024-12-20 16:11:07 +0300  88)     Invalid radix.
868b2b66 (kx 2024-12-20 16:11:07 +0300  89)     ==========================================================
868b2b66 (kx 2024-12-20 16:11:07 +0300  90)     Недопустимая система счисления.
868b2b66 (kx 2024-12-20 16:11:07 +0300  91) 
868b2b66 (kx 2024-12-20 16:11:07 +0300  92)        В типичном случае эта ошибка указывает на то, что
868b2b66 (kx 2024-12-20 16:11:07 +0300  93)        при вызове функции перевода числовой константы из
868b2b66 (kx 2024-12-20 16:11:07 +0300  94)        строкового представления в целое число или наоборот
868b2b66 (kx 2024-12-20 16:11:07 +0300  95)        была задана недопустимая исходная или целевая система
868b2b66 (kx 2024-12-20 16:11:07 +0300  96)        счисления.
868b2b66 (kx 2024-12-20 16:11:07 +0300  97)    ************************************************************/
868b2b66 (kx 2024-12-20 16:11:07 +0300  98)   /*   4 __I_ERADIX__         */
868b2b66 (kx 2024-12-20 16:11:07 +0300  99)   [_ERR_REMAP(__I_ERADIX__)] = (__mpu_char8_t *)N_("Invalid radix"),
868b2b66 (kx 2024-12-20 16:11:07 +0300 100) #endif
868b2b66 (kx 2024-12-20 16:11:07 +0300 101) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 102) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 103)   [_ERR_REMAP(__I_MAX_ERRNO)] = (__mpu_char8_t *)0 /* __TX_MATH_EUNKNOW_MSG */
868b2b66 (kx 2024-12-20 16:11:07 +0300 104) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 105) };
868b2b66 (kx 2024-12-20 16:11:07 +0300 106) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 107) const __mpu_error_t __mpu_integer_nerr = sizeof( __mpu_integer_errlist ) /
868b2b66 (kx 2024-12-20 16:11:07 +0300 108)                                          sizeof( __mpu_integer_errlist[0] ) - 1;
868b2b66 (kx 2024-12-20 16:11:07 +0300 109) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 110) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 111) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 112) const __mpu_char8_t *const __mpu_real_errlist[] =
868b2b66 (kx 2024-12-20 16:11:07 +0300 113) {
868b2b66 (kx 2024-12-20 16:11:07 +0300 114)   /************************************************************
868b2b66 (kx 2024-12-20 16:11:07 +0300 115)     Нет ошибки.
868b2b66 (kx 2024-12-20 16:11:07 +0300 116)    ************************************************************/
868b2b66 (kx 2024-12-20 16:11:07 +0300 117)   /*   0                      */
868b2b66 (kx 2024-12-20 16:11:07 +0300 118)   [0] = (__mpu_char8_t *)N_("Success"),
868b2b66 (kx 2024-12-20 16:11:07 +0300 119) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 120) #ifdef __R_ESIZE__
868b2b66 (kx 2024-12-20 16:11:07 +0300 121)   /************************************************************
868b2b66 (kx 2024-12-20 16:11:07 +0300 122)     Invalid size of operand(s).
868b2b66 (kx 2024-12-20 16:11:07 +0300 123)     ==========================================================
868b2b66 (kx 2024-12-20 16:11:07 +0300 124)     Недопустимый размер операнда/операндов.
868b2b66 (kx 2024-12-20 16:11:07 +0300 125) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 126)        В типичном случае эта ошибка указывает на то, что
868b2b66 (kx 2024-12-20 16:11:07 +0300 127)        при вызове функции арифметики вещественных чисел был
868b2b66 (kx 2024-12-20 16:11:07 +0300 128)        задан нулевой размер операнда.
868b2b66 (kx 2024-12-20 16:11:07 +0300 129)    ************************************************************/
868b2b66 (kx 2024-12-20 16:11:07 +0300 130)   /*   1 __R_ESIZE__          */
868b2b66 (kx 2024-12-20 16:11:07 +0300 131)   [_ERR_REMAP(__R_ESIZE__)] = (__mpu_char8_t *)N_("Invalid size of operand(s)"),
868b2b66 (kx 2024-12-20 16:11:07 +0300 132) #endif
868b2b66 (kx 2024-12-20 16:11:07 +0300 133) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 134) #ifdef __R_ETRUNC__
868b2b66 (kx 2024-12-20 16:11:07 +0300 135)   /************************************************************
868b2b66 (kx 2024-12-20 16:11:07 +0300 136)     Invalid number of TRUNC bits(BZ).
868b2b66 (kx 2024-12-20 16:11:07 +0300 137)     ==========================================================
868b2b66 (kx 2024-12-20 16:11:07 +0300 138)     Недопустимое количество отсекаемых бит.
868b2b66 (kx 2024-12-20 16:11:07 +0300 139) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 140)        В типичном случае эта ошибка указывает на то, что
868b2b66 (kx 2024-12-20 16:11:07 +0300 141)        при вызове функции арифметики вещественных чисел во
868b2b66 (kx 2024-12-20 16:11:07 +0300 142)        время операций нормализации или округления, количество
868b2b66 (kx 2024-12-20 16:11:07 +0300 143)        обнуляемых бит оказалось больше чем количество бит
868b2b66 (kx 2024-12-20 16:11:07 +0300 144)        мантиссы (см. ei_TRUNC() в math_f.c).
868b2b66 (kx 2024-12-20 16:11:07 +0300 145)    ************************************************************/
868b2b66 (kx 2024-12-20 16:11:07 +0300 146)   /*   2 __R_ETRUNC__         */
868b2b66 (kx 2024-12-20 16:11:07 +0300 147)   [_ERR_REMAP(__R_ETRUNC__)] = (__mpu_char8_t *)N_("Invalid number of TRUNC bits(BZ)"),
868b2b66 (kx 2024-12-20 16:11:07 +0300 148) #endif
868b2b66 (kx 2024-12-20 16:11:07 +0300 149) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 150) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 151)   [_ERR_REMAP(__R_MAX_ERRNO)] = (__mpu_char8_t *)0 /* __TX_MATH_EUNKNOW_MSG */
868b2b66 (kx 2024-12-20 16:11:07 +0300 152) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 153) };
868b2b66 (kx 2024-12-20 16:11:07 +0300 154) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 155) const __mpu_error_t __mpu_real_nerr = sizeof( __mpu_real_errlist ) /
868b2b66 (kx 2024-12-20 16:11:07 +0300 156)                                       sizeof( __mpu_real_errlist[0] ) - 1;
868b2b66 (kx 2024-12-20 16:11:07 +0300 157) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 158) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 159) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 160) const __mpu_char8_t *const __mpu_complex_errlist[] =
868b2b66 (kx 2024-12-20 16:11:07 +0300 161) {
868b2b66 (kx 2024-12-20 16:11:07 +0300 162)   /************************************************************
868b2b66 (kx 2024-12-20 16:11:07 +0300 163)     Нет ошибки.
868b2b66 (kx 2024-12-20 16:11:07 +0300 164)    ************************************************************/
868b2b66 (kx 2024-12-20 16:11:07 +0300 165)   /*   0                      */
868b2b66 (kx 2024-12-20 16:11:07 +0300 166)   [0] = (__mpu_char8_t *)N_("Success"),
868b2b66 (kx 2024-12-20 16:11:07 +0300 167) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 168) #ifdef __C_EDIVZEROBYZERO__
868b2b66 (kx 2024-12-20 16:11:07 +0300 169)   /************************************************************
868b2b66 (kx 2024-12-20 16:11:07 +0300 170)     Complex attempted division by zero( Divide ZERO by ZERO).
868b2b66 (kx 2024-12-20 16:11:07 +0300 171)     ==========================================================
868b2b66 (kx 2024-12-20 16:11:07 +0300 172)     Деление НУЛЯ на НУЛЬ.
868b2b66 (kx 2024-12-20 16:11:07 +0300 173) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 174)        Эта ошибка указывает на то, что при вызове функции
868b2b66 (kx 2024-12-20 16:11:07 +0300 175)        арифметики комплексных чисел была попытка разделить
868b2b66 (kx 2024-12-20 16:11:07 +0300 176)        НУЛЬ на НУЛЬ.
868b2b66 (kx 2024-12-20 16:11:07 +0300 177)    ************************************************************/
868b2b66 (kx 2024-12-20 16:11:07 +0300 178)   /*   1 __C_EDIVZEROBYZERO__ */
868b2b66 (kx 2024-12-20 16:11:07 +0300 179)   [_ERR_REMAP(__C_EDIVZEROBYZERO__)] = (__mpu_char8_t *)N_("Complex attempted division by zero"),
868b2b66 (kx 2024-12-20 16:11:07 +0300 180) #endif
868b2b66 (kx 2024-12-20 16:11:07 +0300 181) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 182) #ifdef __C_ELOGOFZERO__
868b2b66 (kx 2024-12-20 16:11:07 +0300 183)   /************************************************************
868b2b66 (kx 2024-12-20 16:11:07 +0300 184)     Complex attempted LOG of zero magnitude number.
868b2b66 (kx 2024-12-20 16:11:07 +0300 185)     ==========================================================
868b2b66 (kx 2024-12-20 16:11:07 +0300 186)     Вычисление логарифма НУЛЯ.
868b2b66 (kx 2024-12-20 16:11:07 +0300 187) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 188)        Эта ошибка указывает на то, что при вызове функции
868b2b66 (kx 2024-12-20 16:11:07 +0300 189)        вычисления логарифма комплексного числа был задан
868b2b66 (kx 2024-12-20 16:11:07 +0300 190)        операнд, равный НУЛЮ.
868b2b66 (kx 2024-12-20 16:11:07 +0300 191)    ************************************************************/
868b2b66 (kx 2024-12-20 16:11:07 +0300 192)   /*   2 __C_ELOGOFZERO__     */
868b2b66 (kx 2024-12-20 16:11:07 +0300 193)   [_ERR_REMAP(__C_ELOGOFZERO__)] = (__mpu_char8_t *)N_("Complex attempted LOG of zero magnitude number"),
868b2b66 (kx 2024-12-20 16:11:07 +0300 194) #endif
868b2b66 (kx 2024-12-20 16:11:07 +0300 195) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 196) #ifdef __C_EPOWOFZERO__
868b2b66 (kx 2024-12-20 16:11:07 +0300 197)   /************************************************************
868b2b66 (kx 2024-12-20 16:11:07 +0300 198)     Complex attempted POW of zero magnitude number.
868b2b66 (kx 2024-12-20 16:11:07 +0300 199)     ==========================================================
868b2b66 (kx 2024-12-20 16:11:07 +0300 200)     Возведение в степень НУЛЯ.
868b2b66 (kx 2024-12-20 16:11:07 +0300 201) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 202)        Эта ошибка указывает на то, что при вызове функции
868b2b66 (kx 2024-12-20 16:11:07 +0300 203)        возведения комплексного числа в степень был задан
868b2b66 (kx 2024-12-20 16:11:07 +0300 204)        операнд, равный НУЛЮ.
868b2b66 (kx 2024-12-20 16:11:07 +0300 205)    ************************************************************/
868b2b66 (kx 2024-12-20 16:11:07 +0300 206)   /*   3 __C_EPOWOFZERO__     */
868b2b66 (kx 2024-12-20 16:11:07 +0300 207)   [_ERR_REMAP(__C_EPOWOFZERO__)] = (__mpu_char8_t *)N_("Complex attempted POW of zero magnitude number"),
868b2b66 (kx 2024-12-20 16:11:07 +0300 208) #endif
868b2b66 (kx 2024-12-20 16:11:07 +0300 209) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 210) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 211)   [_ERR_REMAP(__C_MAX_ERRNO)] = (__mpu_char8_t *)0 /* __TX_MATH_EUNKNOW_MSG */
868b2b66 (kx 2024-12-20 16:11:07 +0300 212) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 213) };
868b2b66 (kx 2024-12-20 16:11:07 +0300 214) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 215) const __mpu_error_t __mpu_complex_nerr = sizeof( __mpu_complex_errlist ) /
868b2b66 (kx 2024-12-20 16:11:07 +0300 216)                                          sizeof( __mpu_complex_errlist[0] ) - 1;
868b2b66 (kx 2024-12-20 16:11:07 +0300 217) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 218) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 219) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 220) const __mpu_char8_t *const __mpu_math_errlist[] =
868b2b66 (kx 2024-12-20 16:11:07 +0300 221) {
868b2b66 (kx 2024-12-20 16:11:07 +0300 222)   /************************************************************
868b2b66 (kx 2024-12-20 16:11:07 +0300 223)     Нет ошибки.
868b2b66 (kx 2024-12-20 16:11:07 +0300 224)    ************************************************************/
868b2b66 (kx 2024-12-20 16:11:07 +0300 225)   /*   0                      */
868b2b66 (kx 2024-12-20 16:11:07 +0300 226)   [0] = (__mpu_char8_t *)N_("Success"),
868b2b66 (kx 2024-12-20 16:11:07 +0300 227) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 228) #ifdef __DOMAIN__
868b2b66 (kx 2024-12-20 16:11:07 +0300 229)   /************************************************************
868b2b66 (kx 2024-12-20 16:11:07 +0300 230)     Argument domain error.
868b2b66 (kx 2024-12-20 16:11:07 +0300 231)     ==========================================================
868b2b66 (kx 2024-12-20 16:11:07 +0300 232)     Math argument (Domain error)
868b2b66 (kx 2024-12-20 16:11:07 +0300 233)     (Ошибка в задании параметра математической функции)
868b2b66 (kx 2024-12-20 16:11:07 +0300 234) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 235)        Значение параметра функции из библиотеки математических
868b2b66 (kx 2024-12-20 16:11:07 +0300 236)        функций лежит вне области определения этой функции.
868b2b66 (kx 2024-12-20 16:11:07 +0300 237)    ************************************************************/
868b2b66 (kx 2024-12-20 16:11:07 +0300 238)   /*   1 __DOMAIN__           */
868b2b66 (kx 2024-12-20 16:11:07 +0300 239)   [_ERR_REMAP(__DOMAIN__)] = (__mpu_char8_t *)N_("Argument domain"),
868b2b66 (kx 2024-12-20 16:11:07 +0300 240) #endif
868b2b66 (kx 2024-12-20 16:11:07 +0300 241) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 242) #ifdef __SING__
868b2b66 (kx 2024-12-20 16:11:07 +0300 243)   /************************************************************
868b2b66 (kx 2024-12-20 16:11:07 +0300 244)     Argument singularity error.
868b2b66 (kx 2024-12-20 16:11:07 +0300 245)     ==========================================================
868b2b66 (kx 2024-12-20 16:11:07 +0300 246) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 247)    ************************************************************/
868b2b66 (kx 2024-12-20 16:11:07 +0300 248)   /*   2 __SING__             */
868b2b66 (kx 2024-12-20 16:11:07 +0300 249)   [_ERR_REMAP(__SING__)] = (__mpu_char8_t *)N_("Function singularity"),
868b2b66 (kx 2024-12-20 16:11:07 +0300 250) #endif
868b2b66 (kx 2024-12-20 16:11:07 +0300 251) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 252) #ifdef __OVERFLOW__
868b2b66 (kx 2024-12-20 16:11:07 +0300 253)   /************************************************************
868b2b66 (kx 2024-12-20 16:11:07 +0300 254)     Overflow range error.
868b2b66 (kx 2024-12-20 16:11:07 +0300 255)     ==========================================================
868b2b66 (kx 2024-12-20 16:11:07 +0300 256) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 257)    ************************************************************/
868b2b66 (kx 2024-12-20 16:11:07 +0300 258)   /*   3 __OVERFLOW__         */
868b2b66 (kx 2024-12-20 16:11:07 +0300 259)   [_ERR_REMAP(__OVERFLOW__)] = (__mpu_char8_t *)N_("Overflow range"),
868b2b66 (kx 2024-12-20 16:11:07 +0300 260) #endif
868b2b66 (kx 2024-12-20 16:11:07 +0300 261) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 262) #ifdef __UNDERFLOW__
868b2b66 (kx 2024-12-20 16:11:07 +0300 263)   /************************************************************
868b2b66 (kx 2024-12-20 16:11:07 +0300 264)     Underflow range error.
868b2b66 (kx 2024-12-20 16:11:07 +0300 265)     ==========================================================
868b2b66 (kx 2024-12-20 16:11:07 +0300 266) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 267)    ************************************************************/
868b2b66 (kx 2024-12-20 16:11:07 +0300 268)   /*   4 __UNDERFLOW__        */
868b2b66 (kx 2024-12-20 16:11:07 +0300 269)   [_ERR_REMAP(__UNDERFLOW__)] = (__mpu_char8_t *)N_("Underflow range"),
868b2b66 (kx 2024-12-20 16:11:07 +0300 270) #endif
868b2b66 (kx 2024-12-20 16:11:07 +0300 271) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 272) #ifdef __TLOSS__
868b2b66 (kx 2024-12-20 16:11:07 +0300 273)   /************************************************************
868b2b66 (kx 2024-12-20 16:11:07 +0300 274)     Total loss of precision.
868b2b66 (kx 2024-12-20 16:11:07 +0300 275)     ==========================================================
868b2b66 (kx 2024-12-20 16:11:07 +0300 276) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 277)    ************************************************************/
868b2b66 (kx 2024-12-20 16:11:07 +0300 278)   /*   5 __TLOSS__            */
868b2b66 (kx 2024-12-20 16:11:07 +0300 279)   [_ERR_REMAP(__TLOSS__)] = (__mpu_char8_t *)N_("Total loss of precision"),
868b2b66 (kx 2024-12-20 16:11:07 +0300 280) #endif
868b2b66 (kx 2024-12-20 16:11:07 +0300 281) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 282) #ifdef __PLOSS__
868b2b66 (kx 2024-12-20 16:11:07 +0300 283)   /************************************************************
868b2b66 (kx 2024-12-20 16:11:07 +0300 284)     Partial loss of precision.
868b2b66 (kx 2024-12-20 16:11:07 +0300 285)     ==========================================================
868b2b66 (kx 2024-12-20 16:11:07 +0300 286) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 287)    ************************************************************/
868b2b66 (kx 2024-12-20 16:11:07 +0300 288)   /*   6 __PLOSS__            */
868b2b66 (kx 2024-12-20 16:11:07 +0300 289)   [_ERR_REMAP(__PLOSS__)] = (__mpu_char8_t *)N_("Partial loss of precision"),
868b2b66 (kx 2024-12-20 16:11:07 +0300 290) #endif
868b2b66 (kx 2024-12-20 16:11:07 +0300 291) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 292) #ifdef __INVALID__
868b2b66 (kx 2024-12-20 16:11:07 +0300 293)   /************************************************************
868b2b66 (kx 2024-12-20 16:11:07 +0300 294)     -InD - produsing operation.
868b2b66 (kx 2024-12-20 16:11:07 +0300 295)     ==========================================================
868b2b66 (kx 2024-12-20 16:11:07 +0300 296) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 297)    ************************************************************/
868b2b66 (kx 2024-12-20 16:11:07 +0300 298)   /*   7 __INVALID__          */
868b2b66 (kx 2024-12-20 16:11:07 +0300 299)   [_ERR_REMAP(__INVALID__)] = (__mpu_char8_t *)N_("Invalid operation"),
868b2b66 (kx 2024-12-20 16:11:07 +0300 300) #endif
868b2b66 (kx 2024-12-20 16:11:07 +0300 301) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 302) #ifdef __INEXACT__
868b2b66 (kx 2024-12-20 16:11:07 +0300 303)   /************************************************************
868b2b66 (kx 2024-12-20 16:11:07 +0300 304)     Inexact result of operation.
868b2b66 (kx 2024-12-20 16:11:07 +0300 305)     ==========================================================
868b2b66 (kx 2024-12-20 16:11:07 +0300 306) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 307)    ************************************************************/
868b2b66 (kx 2024-12-20 16:11:07 +0300 308)   /*   8 __INEXACT__          */
868b2b66 (kx 2024-12-20 16:11:07 +0300 309)   [_ERR_REMAP(__INEXACT__)] = (__mpu_char8_t *)N_("Inexact result of operation"),
868b2b66 (kx 2024-12-20 16:11:07 +0300 310) #endif
868b2b66 (kx 2024-12-20 16:11:07 +0300 311) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 312) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 313)   [_ERR_REMAP(__M_MAX_ERRNO)] = (__mpu_char8_t *)0 /* __TX_MATH_EUNKNOW_MSG */
868b2b66 (kx 2024-12-20 16:11:07 +0300 314) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 315) };
868b2b66 (kx 2024-12-20 16:11:07 +0300 316) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 317) const __mpu_error_t __mpu_math_nerr = sizeof( __mpu_math_errlist ) /
868b2b66 (kx 2024-12-20 16:11:07 +0300 318)                                       sizeof( __mpu_math_errlist[0] ) - 1;
868b2b66 (kx 2024-12-20 16:11:07 +0300 319) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 320) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 321) /***************************************************************
868b2b66 (kx 2024-12-20 16:11:07 +0300 322)   Таблица перевода кодов ошибок математических функций
868b2b66 (kx 2024-12-20 16:11:07 +0300 323)   в системные коды ошибок.
868b2b66 (kx 2024-12-20 16:11:07 +0300 324) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 325)      Код __EUNKNOWN__ в нашем случае равен НУЛЮ. Это сделано
868b2b66 (kx 2024-12-20 16:11:07 +0300 326)      для того, чтобы __EUNKNOWN__-вхождения в таблицу
868b2b66 (kx 2024-12-20 16:11:07 +0300 327)      __mpu_math_errnotab[] возвращали НУЛЬ - то есть код,
868b2b66 (kx 2024-12-20 16:11:07 +0300 328)      который говорит об отсутствии ошибок. Таким образом
868b2b66 (kx 2024-12-20 16:11:07 +0300 329)      перевод кода __EUNKNOWN__ в системный код ошибки дает
868b2b66 (kx 2024-12-20 16:11:07 +0300 330)      нулевой результат( отсутствие системной ошибки ).
868b2b66 (kx 2024-12-20 16:11:07 +0300 331)  ***************************************************************/
868b2b66 (kx 2024-12-20 16:11:07 +0300 332) int __mpu_math_errnotab[] =
868b2b66 (kx 2024-12-20 16:11:07 +0300 333) {
868b2b66 (kx 2024-12-20 16:11:07 +0300 334)   /*
868b2b66 (kx 2024-12-20 16:11:07 +0300 335)     syserror value <== matherror value
868b2b66 (kx 2024-12-20 16:11:07 +0300 336)    ************************************/
868b2b66 (kx 2024-12-20 16:11:07 +0300 337)   __EUNKNOWN__,     /* Success        */
868b2b66 (kx 2024-12-20 16:11:07 +0300 338)   EDOM,             /* __DOMAIN__     */
868b2b66 (kx 2024-12-20 16:11:07 +0300 339)   EDOM,             /* __SING__       */
868b2b66 (kx 2024-12-20 16:11:07 +0300 340)   ERANGE,           /* __OVERFLOW__   */
868b2b66 (kx 2024-12-20 16:11:07 +0300 341)   ERANGE,           /* __UNDERFLOW__  */
868b2b66 (kx 2024-12-20 16:11:07 +0300 342)   ERANGE,           /* __TLOSS__      */
868b2b66 (kx 2024-12-20 16:11:07 +0300 343)   ERANGE,           /* __PLOSS__      */
868b2b66 (kx 2024-12-20 16:11:07 +0300 344)   EDOM,             /* __INVALID__    */
868b2b66 (kx 2024-12-20 16:11:07 +0300 345)   ERANGE,           /* __INEXACT__    */
868b2b66 (kx 2024-12-20 16:11:07 +0300 346)   __EUNKNOWN__      /* __M_MAX_ERRNO  */
868b2b66 (kx 2024-12-20 16:11:07 +0300 347) };
868b2b66 (kx 2024-12-20 16:11:07 +0300 348) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 349) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 350) /***************************************************************
868b2b66 (kx 2024-12-20 16:11:07 +0300 351)   Hide internal symbols:
868b2b66 (kx 2024-12-20 16:11:07 +0300 352)  ***************************************************************/
868b2b66 (kx 2024-12-20 16:11:07 +0300 353) __mpu_hidden_decl(__mpu_integer_errlist);
868b2b66 (kx 2024-12-20 16:11:07 +0300 354) __mpu_hidden_decl(__mpu_integer_nerr);
868b2b66 (kx 2024-12-20 16:11:07 +0300 355) __mpu_hidden_decl(__mpu_real_errlist);
868b2b66 (kx 2024-12-20 16:11:07 +0300 356) __mpu_hidden_decl(__mpu_real_nerr);
868b2b66 (kx 2024-12-20 16:11:07 +0300 357) __mpu_hidden_decl(__mpu_complex_errlist);
868b2b66 (kx 2024-12-20 16:11:07 +0300 358) __mpu_hidden_decl(__mpu_complex_nerr);
868b2b66 (kx 2024-12-20 16:11:07 +0300 359) __mpu_hidden_decl(__mpu_math_errlist);
868b2b66 (kx 2024-12-20 16:11:07 +0300 360) __mpu_hidden_decl(__mpu_math_nerr);
868b2b66 (kx 2024-12-20 16:11:07 +0300 361) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 362) __mpu_hidden_decl(__mpu_math_errnotab);
868b2b66 (kx 2024-12-20 16:11:07 +0300 363) /*
868b2b66 (kx 2024-12-20 16:11:07 +0300 364)   End of hide internal symbols.
868b2b66 (kx 2024-12-20 16:11:07 +0300 365)  ***************************************************************/