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) ***************************************************************/