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)   __ST_LOGTABLE.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)        LOGTABLE constants 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 <errno.h>   /* errno(3)  */
868b2b66 (kx 2024-12-20 16:11:07 +0300  23) #include <string.h>  /* strcpy(3) */
868b2b66 (kx 2024-12-20 16:11:07 +0300  24) #include <strings.h> /* bzero(3)  */
868b2b66 (kx 2024-12-20 16:11:07 +0300  25) #include <stdlib.h>
868b2b66 (kx 2024-12-20 16:11:07 +0300  26) 
868b2b66 (kx 2024-12-20 16:11:07 +0300  27) #include <libmpu.h>
868b2b66 (kx 2024-12-20 16:11:07 +0300  28) #include <mpu-context.h>
868b2b66 (kx 2024-12-20 16:11:07 +0300  29) 
868b2b66 (kx 2024-12-20 16:11:07 +0300  30) #include <mpu-emutype.h>
868b2b66 (kx 2024-12-20 16:11:07 +0300  31) #include <mpu-integer.h>
868b2b66 (kx 2024-12-20 16:11:07 +0300  32) #include <mpu-real.h>
868b2b66 (kx 2024-12-20 16:11:07 +0300  33) #include <mpu-floatp.h>
868b2b66 (kx 2024-12-20 16:11:07 +0300  34) 
868b2b66 (kx 2024-12-20 16:11:07 +0300  35) #include <mpu-char.h>
868b2b66 (kx 2024-12-20 16:11:07 +0300  36) #include <mpu-symbols.h>
868b2b66 (kx 2024-12-20 16:11:07 +0300  37) 
868b2b66 (kx 2024-12-20 16:11:07 +0300  38) #include <mpu-math-errno.h>
868b2b66 (kx 2024-12-20 16:11:07 +0300  39) #include <mpu-mtherr.h>
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) /***************************************************************
868b2b66 (kx 2024-12-20 16:11:07 +0300  43)   Кодировка имен файлов:
868b2b66 (kx 2024-12-20 16:11:07 +0300  44) 
868b2b66 (kx 2024-12-20 16:11:07 +0300  45)   Трехзначное десятичное число, представляющее количество
868b2b66 (kx 2024-12-20 16:11:07 +0300  46)   128-и битных слов, из которых состоят вещественные числа
868b2b66 (kx 2024-12-20 16:11:07 +0300  47)   размещенные в массивах:
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)                      128  001
868b2b66 (kx 2024-12-20 16:11:07 +0300  52)                      256  002
868b2b66 (kx 2024-12-20 16:11:07 +0300  53)                      512  004
868b2b66 (kx 2024-12-20 16:11:07 +0300  54)                     1024  008
868b2b66 (kx 2024-12-20 16:11:07 +0300  55)                     2048  016
868b2b66 (kx 2024-12-20 16:11:07 +0300  56)                     4096  032
868b2b66 (kx 2024-12-20 16:11:07 +0300  57)                     8192  064
868b2b66 (kx 2024-12-20 16:11:07 +0300  58)                    16384  128
868b2b66 (kx 2024-12-20 16:11:07 +0300  59)                    32768  256
868b2b66 (kx 2024-12-20 16:11:07 +0300  60)                    65536  512 (это предел);
868b2b66 (kx 2024-12-20 16:11:07 +0300  61) 
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)       ei_logtable_001_emu32lsb.dfn -   128-бит,
868b2b66 (kx 2024-12-20 16:11:07 +0300  65)       ei_logtable_512_emu32lsb.dfn - 65536-бит.
868b2b66 (kx 2024-12-20 16:11:07 +0300  66) 
868b2b66 (kx 2024-12-20 16:11:07 +0300  67)  ***************************************************************/
868b2b66 (kx 2024-12-20 16:11:07 +0300  68) 
868b2b66 (kx 2024-12-20 16:11:07 +0300  69) #if MPU_MATH_FN_LIMIT >= 128
868b2b66 (kx 2024-12-20 16:11:07 +0300  70) #if MPU_WORD_ORDER_BIG_ENDIAN == 0
868b2b66 (kx 2024-12-20 16:11:07 +0300  71) #include <math/logtable/emu00128/ei_logtable_001_emu32lsb.dfn>
868b2b66 (kx 2024-12-20 16:11:07 +0300  72) #else
868b2b66 (kx 2024-12-20 16:11:07 +0300  73) #include <math/logtable/emu00128/ei_logtable_001_emu32msb.dfn>
868b2b66 (kx 2024-12-20 16:11:07 +0300  74) #endif
868b2b66 (kx 2024-12-20 16:11:07 +0300  75) #endif /* MPU_MATH_FN_LIMIT >= 128 */
868b2b66 (kx 2024-12-20 16:11:07 +0300  76) 
868b2b66 (kx 2024-12-20 16:11:07 +0300  77) #if MPU_MATH_FN_LIMIT >= 256
868b2b66 (kx 2024-12-20 16:11:07 +0300  78) #if MPU_WORD_ORDER_BIG_ENDIAN == 0
868b2b66 (kx 2024-12-20 16:11:07 +0300  79) #include <math/logtable/emu00256/ei_logtable_002_emu32lsb.dfn>
868b2b66 (kx 2024-12-20 16:11:07 +0300  80) #else
868b2b66 (kx 2024-12-20 16:11:07 +0300  81) #include <math/logtable/emu00256/ei_logtable_002_emu32msb.dfn>
868b2b66 (kx 2024-12-20 16:11:07 +0300  82) #endif
868b2b66 (kx 2024-12-20 16:11:07 +0300  83) #endif /* MPU_MATH_FN_LIMIT >= 256 */
868b2b66 (kx 2024-12-20 16:11:07 +0300  84) 
868b2b66 (kx 2024-12-20 16:11:07 +0300  85) #if MPU_MATH_FN_LIMIT >= 512
868b2b66 (kx 2024-12-20 16:11:07 +0300  86) #if MPU_WORD_ORDER_BIG_ENDIAN == 0
868b2b66 (kx 2024-12-20 16:11:07 +0300  87) #include <math/logtable/emu00512/ei_logtable_004_emu32lsb.dfn>
868b2b66 (kx 2024-12-20 16:11:07 +0300  88) #else
868b2b66 (kx 2024-12-20 16:11:07 +0300  89) #include <math/logtable/emu00512/ei_logtable_004_emu32msb.dfn>
868b2b66 (kx 2024-12-20 16:11:07 +0300  90) #endif
868b2b66 (kx 2024-12-20 16:11:07 +0300  91) #endif /* MPU_MATH_FN_LIMIT >= 512 */
868b2b66 (kx 2024-12-20 16:11:07 +0300  92) 
868b2b66 (kx 2024-12-20 16:11:07 +0300  93) #if MPU_MATH_FN_LIMIT >= 1024
868b2b66 (kx 2024-12-20 16:11:07 +0300  94) #if MPU_WORD_ORDER_BIG_ENDIAN == 0
868b2b66 (kx 2024-12-20 16:11:07 +0300  95) #include <math/logtable/emu01024/ei_logtable_008_emu32lsb.dfn>
868b2b66 (kx 2024-12-20 16:11:07 +0300  96) #else
868b2b66 (kx 2024-12-20 16:11:07 +0300  97) #include <math/logtable/emu01024/ei_logtable_008_emu32msb.dfn>
868b2b66 (kx 2024-12-20 16:11:07 +0300  98) #endif
868b2b66 (kx 2024-12-20 16:11:07 +0300  99) #endif /* MPU_MATH_FN_LIMIT >= 1024 */
868b2b66 (kx 2024-12-20 16:11:07 +0300 100) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 101) #if MPU_MATH_FN_LIMIT >= 2048
868b2b66 (kx 2024-12-20 16:11:07 +0300 102) #if MPU_WORD_ORDER_BIG_ENDIAN == 0
868b2b66 (kx 2024-12-20 16:11:07 +0300 103) #include <math/logtable/emu02048/ei_logtable_016_emu32lsb.dfn>
868b2b66 (kx 2024-12-20 16:11:07 +0300 104) #else
868b2b66 (kx 2024-12-20 16:11:07 +0300 105) #include <math/logtable/emu02048/ei_logtable_016_emu32msb.dfn>
868b2b66 (kx 2024-12-20 16:11:07 +0300 106) #endif
868b2b66 (kx 2024-12-20 16:11:07 +0300 107) #endif /* MPU_MATH_FN_LIMIT >= 2048 */
868b2b66 (kx 2024-12-20 16:11:07 +0300 108) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 109) #if MPU_MATH_FN_LIMIT >= 4096
868b2b66 (kx 2024-12-20 16:11:07 +0300 110) #if MPU_WORD_ORDER_BIG_ENDIAN == 0
868b2b66 (kx 2024-12-20 16:11:07 +0300 111) #include <math/logtable/emu04096/ei_logtable_032_emu32lsb.dfn>
868b2b66 (kx 2024-12-20 16:11:07 +0300 112) #else
868b2b66 (kx 2024-12-20 16:11:07 +0300 113) #include <math/logtable/emu04096/ei_logtable_032_emu32msb.dfn>
868b2b66 (kx 2024-12-20 16:11:07 +0300 114) #endif
868b2b66 (kx 2024-12-20 16:11:07 +0300 115) #endif /* MPU_MATH_FN_LIMIT >= 4096 */
868b2b66 (kx 2024-12-20 16:11:07 +0300 116) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 117) #if MPU_MATH_FN_LIMIT >= 8192
868b2b66 (kx 2024-12-20 16:11:07 +0300 118) #if MPU_WORD_ORDER_BIG_ENDIAN == 0
868b2b66 (kx 2024-12-20 16:11:07 +0300 119) #include <math/logtable/emu08192/ei_logtable_064_emu32lsb.dfn>
868b2b66 (kx 2024-12-20 16:11:07 +0300 120) #else
868b2b66 (kx 2024-12-20 16:11:07 +0300 121) #include <math/logtable/emu08192/ei_logtable_064_emu32msb.dfn>
868b2b66 (kx 2024-12-20 16:11:07 +0300 122) #endif
868b2b66 (kx 2024-12-20 16:11:07 +0300 123) #endif /* MPU_MATH_FN_LIMIT >= 8192 */
868b2b66 (kx 2024-12-20 16:11:07 +0300 124) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 125) #if MPU_MATH_FN_LIMIT >= 16384
868b2b66 (kx 2024-12-20 16:11:07 +0300 126) #if MPU_WORD_ORDER_BIG_ENDIAN == 0
868b2b66 (kx 2024-12-20 16:11:07 +0300 127) #include <math/logtable/emu16384/ei_logtable_128_emu32lsb.dfn>
868b2b66 (kx 2024-12-20 16:11:07 +0300 128) #else
868b2b66 (kx 2024-12-20 16:11:07 +0300 129) #include <math/logtable/emu16384/ei_logtable_128_emu32msb.dfn>
868b2b66 (kx 2024-12-20 16:11:07 +0300 130) #endif
868b2b66 (kx 2024-12-20 16:11:07 +0300 131) #endif /* MPU_MATH_FN_LIMIT >= 16384 */
868b2b66 (kx 2024-12-20 16:11:07 +0300 132) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 133) #if MPU_MATH_FN_LIMIT >= 32768
868b2b66 (kx 2024-12-20 16:11:07 +0300 134) #if MPU_WORD_ORDER_BIG_ENDIAN == 0
868b2b66 (kx 2024-12-20 16:11:07 +0300 135) #include <math/logtable/emu32768/ei_logtable_256_emu32lsb.dfn>
868b2b66 (kx 2024-12-20 16:11:07 +0300 136) #else
868b2b66 (kx 2024-12-20 16:11:07 +0300 137) #include <math/logtable/emu32768/ei_logtable_256_emu32msb.dfn>
868b2b66 (kx 2024-12-20 16:11:07 +0300 138) #endif
868b2b66 (kx 2024-12-20 16:11:07 +0300 139) #endif /* MPU_MATH_FN_LIMIT >= 32768 */
868b2b66 (kx 2024-12-20 16:11:07 +0300 140) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 141) #if MPU_MATH_FN_LIMIT >= 65536
868b2b66 (kx 2024-12-20 16:11:07 +0300 142) #if MPU_WORD_ORDER_BIG_ENDIAN == 0
868b2b66 (kx 2024-12-20 16:11:07 +0300 143) #include <math/logtable/emu65536/ei_logtable_512_emu32lsb.dfn>
868b2b66 (kx 2024-12-20 16:11:07 +0300 144) #else
868b2b66 (kx 2024-12-20 16:11:07 +0300 145) #include <math/logtable/emu65536/ei_logtable_512_emu32msb.dfn>
868b2b66 (kx 2024-12-20 16:11:07 +0300 146) #endif
868b2b66 (kx 2024-12-20 16:11:07 +0300 147) #endif /* MPU_MATH_FN_LIMIT >= 65536 */
868b2b66 (kx 2024-12-20 16:11:07 +0300 148) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 149) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 150) int _get_n_log_table( int nb )
868b2b66 (kx 2024-12-20 16:11:07 +0300 151) {
868b2b66 (kx 2024-12-20 16:11:07 +0300 152)   int  rc = 0;
868b2b66 (kx 2024-12-20 16:11:07 +0300 153) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 154)   if( nb < NBR_32 || nb > MPU_MATH_FN_LIMIT )
868b2b66 (kx 2024-12-20 16:11:07 +0300 155)   {
868b2b66 (kx 2024-12-20 16:11:07 +0300 156)     /* error: Invalid size of operand(s) */
868b2b66 (kx 2024-12-20 16:11:07 +0300 157)     __real_error_no = __R_ESIZE__;
868b2b66 (kx 2024-12-20 16:11:07 +0300 158)     __STIND; /* Set REAL ind-produsing operation Flag */
868b2b66 (kx 2024-12-20 16:11:07 +0300 159)     return( rc );
868b2b66 (kx 2024-12-20 16:11:07 +0300 160)   }
868b2b66 (kx 2024-12-20 16:11:07 +0300 161) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 162)   switch( nb )
868b2b66 (kx 2024-12-20 16:11:07 +0300 163)   {
868b2b66 (kx 2024-12-20 16:11:07 +0300 164) #if MPU_MATH_FN_LIMIT >= 128
868b2b66 (kx 2024-12-20 16:11:07 +0300 165)     case NBR_32   :
868b2b66 (kx 2024-12-20 16:11:07 +0300 166)     case NBR_64   :
868b2b66 (kx 2024-12-20 16:11:07 +0300 167)     case NBR_128  :
868b2b66 (kx 2024-12-20 16:11:07 +0300 168)       rc = N_LOG_TABLE128;
868b2b66 (kx 2024-12-20 16:11:07 +0300 169)       break;
868b2b66 (kx 2024-12-20 16:11:07 +0300 170) #endif /* MPU_MATH_FN_LIMIT >= 128 */
868b2b66 (kx 2024-12-20 16:11:07 +0300 171) #if MPU_MATH_FN_LIMIT >= 256
868b2b66 (kx 2024-12-20 16:11:07 +0300 172)     case NBR_256  :
868b2b66 (kx 2024-12-20 16:11:07 +0300 173)       rc = N_LOG_TABLE256;
868b2b66 (kx 2024-12-20 16:11:07 +0300 174)       break;
868b2b66 (kx 2024-12-20 16:11:07 +0300 175) #endif /* MPU_MATH_FN_LIMIT >= 256 */
868b2b66 (kx 2024-12-20 16:11:07 +0300 176) #if MPU_MATH_FN_LIMIT >= 512
868b2b66 (kx 2024-12-20 16:11:07 +0300 177)     case NBR_512  :
868b2b66 (kx 2024-12-20 16:11:07 +0300 178)       rc = N_LOG_TABLE512;
868b2b66 (kx 2024-12-20 16:11:07 +0300 179)       break;
868b2b66 (kx 2024-12-20 16:11:07 +0300 180) #endif /* MPU_MATH_FN_LIMIT >= 512 */
868b2b66 (kx 2024-12-20 16:11:07 +0300 181) #if MPU_MATH_FN_LIMIT >= 1024
868b2b66 (kx 2024-12-20 16:11:07 +0300 182)     case NBR_1024 :
868b2b66 (kx 2024-12-20 16:11:07 +0300 183)       rc = N_LOG_TABLE1024;
868b2b66 (kx 2024-12-20 16:11:07 +0300 184)       break;
868b2b66 (kx 2024-12-20 16:11:07 +0300 185) #endif /* MPU_MATH_FN_LIMIT >= 1024 */
868b2b66 (kx 2024-12-20 16:11:07 +0300 186) #if MPU_MATH_FN_LIMIT >= 2048
868b2b66 (kx 2024-12-20 16:11:07 +0300 187)     case NBR_2048 :
868b2b66 (kx 2024-12-20 16:11:07 +0300 188)       rc = N_LOG_TABLE2048;
868b2b66 (kx 2024-12-20 16:11:07 +0300 189)       break;
868b2b66 (kx 2024-12-20 16:11:07 +0300 190) #endif /* MPU_MATH_FN_LIMIT >= 2048 */
868b2b66 (kx 2024-12-20 16:11:07 +0300 191) #if MPU_MATH_FN_LIMIT >= 4096
868b2b66 (kx 2024-12-20 16:11:07 +0300 192)     case NBR_4096 :
868b2b66 (kx 2024-12-20 16:11:07 +0300 193)       rc = N_LOG_TABLE4096;
868b2b66 (kx 2024-12-20 16:11:07 +0300 194)       break;
868b2b66 (kx 2024-12-20 16:11:07 +0300 195) #endif /* MPU_MATH_FN_LIMIT >= 4096 */
868b2b66 (kx 2024-12-20 16:11:07 +0300 196) #if MPU_MATH_FN_LIMIT >= 8192
868b2b66 (kx 2024-12-20 16:11:07 +0300 197)     case NBR_8192 :
868b2b66 (kx 2024-12-20 16:11:07 +0300 198)       rc = N_LOG_TABLE8192;
868b2b66 (kx 2024-12-20 16:11:07 +0300 199)       break;
868b2b66 (kx 2024-12-20 16:11:07 +0300 200) #endif /* MPU_MATH_FN_LIMIT >= 8192 */
868b2b66 (kx 2024-12-20 16:11:07 +0300 201) #if MPU_MATH_FN_LIMIT >= 16384
868b2b66 (kx 2024-12-20 16:11:07 +0300 202)     case NBR_16384:
868b2b66 (kx 2024-12-20 16:11:07 +0300 203)       rc = N_LOG_TABLE16384;
868b2b66 (kx 2024-12-20 16:11:07 +0300 204)       break;
868b2b66 (kx 2024-12-20 16:11:07 +0300 205) #endif /* MPU_MATH_FN_LIMIT >= 16384 */
868b2b66 (kx 2024-12-20 16:11:07 +0300 206) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 207)     default:
868b2b66 (kx 2024-12-20 16:11:07 +0300 208)     {
868b2b66 (kx 2024-12-20 16:11:07 +0300 209)       /* error: Invalid size of operand(s) */
868b2b66 (kx 2024-12-20 16:11:07 +0300 210)       __real_error_no = __R_ESIZE__;
868b2b66 (kx 2024-12-20 16:11:07 +0300 211)       __STIND; /* Set REAL ind-produsing operation Flag */
868b2b66 (kx 2024-12-20 16:11:07 +0300 212)       break;
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)   } /* End of switch( nb ) */
868b2b66 (kx 2024-12-20 16:11:07 +0300 216) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 217)   return( rc );
868b2b66 (kx 2024-12-20 16:11:07 +0300 218) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 219) } /* End of _get_n_log_table() */
868b2b66 (kx 2024-12-20 16:11:07 +0300 220) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 221) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 222) EMUSHORT *_get_logF_head_ptr( int nb )
868b2b66 (kx 2024-12-20 16:11:07 +0300 223) {
868b2b66 (kx 2024-12-20 16:11:07 +0300 224)   EMUSHORT *rc = (EMUSHORT *)NULL;
868b2b66 (kx 2024-12-20 16:11:07 +0300 225) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 226)   if( nb < NBR_32 || nb > MPU_MATH_FN_LIMIT )
868b2b66 (kx 2024-12-20 16:11:07 +0300 227)   {
868b2b66 (kx 2024-12-20 16:11:07 +0300 228)     /* error: Invalid size of operand(s) */
868b2b66 (kx 2024-12-20 16:11:07 +0300 229)     __real_error_no = __R_ESIZE__;
868b2b66 (kx 2024-12-20 16:11:07 +0300 230)     __STIND; /* Set REAL ind-produsing operation Flag */
868b2b66 (kx 2024-12-20 16:11:07 +0300 231)     return( rc );
868b2b66 (kx 2024-12-20 16:11:07 +0300 232)   }
868b2b66 (kx 2024-12-20 16:11:07 +0300 233) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 234)   switch( nb )
868b2b66 (kx 2024-12-20 16:11:07 +0300 235)   {
868b2b66 (kx 2024-12-20 16:11:07 +0300 236) #if MPU_MATH_FN_LIMIT >= 128
868b2b66 (kx 2024-12-20 16:11:07 +0300 237)     case NBR_32   :
868b2b66 (kx 2024-12-20 16:11:07 +0300 238)     case NBR_64   :
868b2b66 (kx 2024-12-20 16:11:07 +0300 239)     case NBR_128  :
868b2b66 (kx 2024-12-20 16:11:07 +0300 240)       rc = (EMUSHORT *)&_ei_logF_head_128_[0][0];
868b2b66 (kx 2024-12-20 16:11:07 +0300 241)       break;
868b2b66 (kx 2024-12-20 16:11:07 +0300 242) #endif /* MPU_MATH_FN_LIMIT >= 128 */
868b2b66 (kx 2024-12-20 16:11:07 +0300 243) #if MPU_MATH_FN_LIMIT >= 256
868b2b66 (kx 2024-12-20 16:11:07 +0300 244)     case NBR_256  :
868b2b66 (kx 2024-12-20 16:11:07 +0300 245)       rc = (EMUSHORT *)&_ei_logF_head_256_[0][0];
868b2b66 (kx 2024-12-20 16:11:07 +0300 246)       break;
868b2b66 (kx 2024-12-20 16:11:07 +0300 247) #endif /* MPU_MATH_FN_LIMIT >= 256 */
868b2b66 (kx 2024-12-20 16:11:07 +0300 248) #if MPU_MATH_FN_LIMIT >= 512
868b2b66 (kx 2024-12-20 16:11:07 +0300 249)     case NBR_512  :
868b2b66 (kx 2024-12-20 16:11:07 +0300 250)       rc = (EMUSHORT *)&_ei_logF_head_512_[0][0];
868b2b66 (kx 2024-12-20 16:11:07 +0300 251)       break;
868b2b66 (kx 2024-12-20 16:11:07 +0300 252) #endif /* MPU_MATH_FN_LIMIT >= 512 */
868b2b66 (kx 2024-12-20 16:11:07 +0300 253) #if MPU_MATH_FN_LIMIT >= 1024
868b2b66 (kx 2024-12-20 16:11:07 +0300 254)     case NBR_1024 :
868b2b66 (kx 2024-12-20 16:11:07 +0300 255)       rc = (EMUSHORT *)&_ei_logF_head_1024_[0][0];
868b2b66 (kx 2024-12-20 16:11:07 +0300 256)       break;
868b2b66 (kx 2024-12-20 16:11:07 +0300 257) #endif /* MPU_MATH_FN_LIMIT >= 1024 */
868b2b66 (kx 2024-12-20 16:11:07 +0300 258) #if MPU_MATH_FN_LIMIT >= 2048
868b2b66 (kx 2024-12-20 16:11:07 +0300 259)     case NBR_2048 :
868b2b66 (kx 2024-12-20 16:11:07 +0300 260)       rc = (EMUSHORT *)&_ei_logF_head_2048_[0][0];
868b2b66 (kx 2024-12-20 16:11:07 +0300 261)       break;
868b2b66 (kx 2024-12-20 16:11:07 +0300 262) #endif /* MPU_MATH_FN_LIMIT >= 2048 */
868b2b66 (kx 2024-12-20 16:11:07 +0300 263) #if MPU_MATH_FN_LIMIT >= 4096
868b2b66 (kx 2024-12-20 16:11:07 +0300 264)     case NBR_4096 :
868b2b66 (kx 2024-12-20 16:11:07 +0300 265)       rc = (EMUSHORT *)&_ei_logF_head_4096_[0][0];
868b2b66 (kx 2024-12-20 16:11:07 +0300 266)       break;
868b2b66 (kx 2024-12-20 16:11:07 +0300 267) #endif /* MPU_MATH_FN_LIMIT >= 4096 */
868b2b66 (kx 2024-12-20 16:11:07 +0300 268) #if MPU_MATH_FN_LIMIT >= 8192
868b2b66 (kx 2024-12-20 16:11:07 +0300 269)     case NBR_8192 :
868b2b66 (kx 2024-12-20 16:11:07 +0300 270)       rc = (EMUSHORT *)&_ei_logF_head_8192_[0][0];
868b2b66 (kx 2024-12-20 16:11:07 +0300 271)       break;
868b2b66 (kx 2024-12-20 16:11:07 +0300 272) #endif /* MPU_MATH_FN_LIMIT >= 8192 */
868b2b66 (kx 2024-12-20 16:11:07 +0300 273) #if MPU_MATH_FN_LIMIT >= 16384
868b2b66 (kx 2024-12-20 16:11:07 +0300 274)     case NBR_16384:
868b2b66 (kx 2024-12-20 16:11:07 +0300 275)       rc = (EMUSHORT *)&_ei_logF_head_16384_[0][0];
868b2b66 (kx 2024-12-20 16:11:07 +0300 276)       break;
868b2b66 (kx 2024-12-20 16:11:07 +0300 277) #endif /* MPU_MATH_FN_LIMIT >= 16384 */
868b2b66 (kx 2024-12-20 16:11:07 +0300 278) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 279)     default:
868b2b66 (kx 2024-12-20 16:11:07 +0300 280)     {
868b2b66 (kx 2024-12-20 16:11:07 +0300 281)       /* error: Invalid size of operand(s) */
868b2b66 (kx 2024-12-20 16:11:07 +0300 282)       __real_error_no = __R_ESIZE__;
868b2b66 (kx 2024-12-20 16:11:07 +0300 283)       __STIND; /* Set REAL ind-produsing operation Flag */
868b2b66 (kx 2024-12-20 16:11:07 +0300 284)       break;
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)   } /* End of switch( nb ) */
868b2b66 (kx 2024-12-20 16:11:07 +0300 288) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 289)   return( rc );
868b2b66 (kx 2024-12-20 16:11:07 +0300 290) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 291) } /* End of _get_logF_head_ptr() */
868b2b66 (kx 2024-12-20 16:11:07 +0300 292) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 293) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 294) EMUSHORT *_get_logF_tail_ptr( int nb )
868b2b66 (kx 2024-12-20 16:11:07 +0300 295) {
868b2b66 (kx 2024-12-20 16:11:07 +0300 296)   EMUSHORT *rc = (EMUSHORT *)NULL;
868b2b66 (kx 2024-12-20 16:11:07 +0300 297) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 298)   if( nb < NBR_32 || nb > MPU_MATH_FN_LIMIT )
868b2b66 (kx 2024-12-20 16:11:07 +0300 299)   {
868b2b66 (kx 2024-12-20 16:11:07 +0300 300)     /* error: Invalid size of operand(s) */
868b2b66 (kx 2024-12-20 16:11:07 +0300 301)     __real_error_no = __R_ESIZE__;
868b2b66 (kx 2024-12-20 16:11:07 +0300 302)     __STIND; /* Set REAL ind-produsing operation Flag */
868b2b66 (kx 2024-12-20 16:11:07 +0300 303)     return( rc );
868b2b66 (kx 2024-12-20 16:11:07 +0300 304)   }
868b2b66 (kx 2024-12-20 16:11:07 +0300 305) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 306)   switch( nb )
868b2b66 (kx 2024-12-20 16:11:07 +0300 307)   {
868b2b66 (kx 2024-12-20 16:11:07 +0300 308) #if MPU_MATH_FN_LIMIT >= 128
868b2b66 (kx 2024-12-20 16:11:07 +0300 309)     case NBR_32   :
868b2b66 (kx 2024-12-20 16:11:07 +0300 310)     case NBR_64   :
868b2b66 (kx 2024-12-20 16:11:07 +0300 311)     case NBR_128  :
868b2b66 (kx 2024-12-20 16:11:07 +0300 312)       rc = (EMUSHORT *)&_ei_logF_tail_128_[0][0];
868b2b66 (kx 2024-12-20 16:11:07 +0300 313)       break;
868b2b66 (kx 2024-12-20 16:11:07 +0300 314) #endif /* MPU_MATH_FN_LIMIT >= 128 */
868b2b66 (kx 2024-12-20 16:11:07 +0300 315) #if MPU_MATH_FN_LIMIT >= 256
868b2b66 (kx 2024-12-20 16:11:07 +0300 316)     case NBR_256  :
868b2b66 (kx 2024-12-20 16:11:07 +0300 317)       rc = (EMUSHORT *)&_ei_logF_tail_256_[0][0];
868b2b66 (kx 2024-12-20 16:11:07 +0300 318)       break;
868b2b66 (kx 2024-12-20 16:11:07 +0300 319) #endif /* MPU_MATH_FN_LIMIT >= 256 */
868b2b66 (kx 2024-12-20 16:11:07 +0300 320) #if MPU_MATH_FN_LIMIT >= 512
868b2b66 (kx 2024-12-20 16:11:07 +0300 321)     case NBR_512  :
868b2b66 (kx 2024-12-20 16:11:07 +0300 322)       rc = (EMUSHORT *)&_ei_logF_tail_512_[0][0];
868b2b66 (kx 2024-12-20 16:11:07 +0300 323)       break;
868b2b66 (kx 2024-12-20 16:11:07 +0300 324) #endif /* MPU_MATH_FN_LIMIT >= 512 */
868b2b66 (kx 2024-12-20 16:11:07 +0300 325) #if MPU_MATH_FN_LIMIT >= 1024
868b2b66 (kx 2024-12-20 16:11:07 +0300 326)     case NBR_1024 :
868b2b66 (kx 2024-12-20 16:11:07 +0300 327)       rc = (EMUSHORT *)&_ei_logF_tail_1024_[0][0];
868b2b66 (kx 2024-12-20 16:11:07 +0300 328)       break;
868b2b66 (kx 2024-12-20 16:11:07 +0300 329) #endif /* MPU_MATH_FN_LIMIT >= 1024 */
868b2b66 (kx 2024-12-20 16:11:07 +0300 330) #if MPU_MATH_FN_LIMIT >= 2048
868b2b66 (kx 2024-12-20 16:11:07 +0300 331)     case NBR_2048 :
868b2b66 (kx 2024-12-20 16:11:07 +0300 332)       rc = (EMUSHORT *)&_ei_logF_tail_2048_[0][0];
868b2b66 (kx 2024-12-20 16:11:07 +0300 333)       break;
868b2b66 (kx 2024-12-20 16:11:07 +0300 334) #endif /* MPU_MATH_FN_LIMIT >= 2048 */
868b2b66 (kx 2024-12-20 16:11:07 +0300 335) #if MPU_MATH_FN_LIMIT >= 4096
868b2b66 (kx 2024-12-20 16:11:07 +0300 336)     case NBR_4096 :
868b2b66 (kx 2024-12-20 16:11:07 +0300 337)       rc = (EMUSHORT *)&_ei_logF_tail_4096_[0][0];
868b2b66 (kx 2024-12-20 16:11:07 +0300 338)       break;
868b2b66 (kx 2024-12-20 16:11:07 +0300 339) #endif /* MPU_MATH_FN_LIMIT >= 4096 */
868b2b66 (kx 2024-12-20 16:11:07 +0300 340) #if MPU_MATH_FN_LIMIT >= 8192
868b2b66 (kx 2024-12-20 16:11:07 +0300 341)     case NBR_8192 :
868b2b66 (kx 2024-12-20 16:11:07 +0300 342)       rc = (EMUSHORT *)&_ei_logF_tail_8192_[0][0];
868b2b66 (kx 2024-12-20 16:11:07 +0300 343)       break;
868b2b66 (kx 2024-12-20 16:11:07 +0300 344) #endif /* MPU_MATH_FN_LIMIT >= 8192 */
868b2b66 (kx 2024-12-20 16:11:07 +0300 345) #if MPU_MATH_FN_LIMIT >= 16384
868b2b66 (kx 2024-12-20 16:11:07 +0300 346)     case NBR_16384:
868b2b66 (kx 2024-12-20 16:11:07 +0300 347)       rc = (EMUSHORT *)&_ei_logF_tail_16384_[0][0];
868b2b66 (kx 2024-12-20 16:11:07 +0300 348)       break;
868b2b66 (kx 2024-12-20 16:11:07 +0300 349) #endif /* MPU_MATH_FN_LIMIT >= 16384 */
868b2b66 (kx 2024-12-20 16:11:07 +0300 350) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 351)     default:
868b2b66 (kx 2024-12-20 16:11:07 +0300 352)     {
868b2b66 (kx 2024-12-20 16:11:07 +0300 353)       /* error: Invalid size of operand(s) */
868b2b66 (kx 2024-12-20 16:11:07 +0300 354)       __real_error_no = __R_ESIZE__;
868b2b66 (kx 2024-12-20 16:11:07 +0300 355)       __STIND; /* Set REAL ind-produsing operation Flag */
868b2b66 (kx 2024-12-20 16:11:07 +0300 356)       break;
868b2b66 (kx 2024-12-20 16:11:07 +0300 357)     }
868b2b66 (kx 2024-12-20 16:11:07 +0300 358) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 359)   } /* End of switch( nb ) */
868b2b66 (kx 2024-12-20 16:11:07 +0300 360) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 361)   return( rc );
868b2b66 (kx 2024-12-20 16:11:07 +0300 362) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 363) } /* End of _get_logF_tail_ptr() */
868b2b66 (kx 2024-12-20 16:11:07 +0300 364) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 365) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 366) /***************************************************************
868b2b66 (kx 2024-12-20 16:11:07 +0300 367)   Hide internal symbols:
868b2b66 (kx 2024-12-20 16:11:07 +0300 368)  ***************************************************************/
868b2b66 (kx 2024-12-20 16:11:07 +0300 369) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 370) __mpu_hidden_decl(_get_n_log_table);
868b2b66 (kx 2024-12-20 16:11:07 +0300 371) __mpu_hidden_decl(_get_logF_head_ptr);
868b2b66 (kx 2024-12-20 16:11:07 +0300 372) __mpu_hidden_decl(_get_logF_tail_ptr);
868b2b66 (kx 2024-12-20 16:11:07 +0300 373) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 374) 
868b2b66 (kx 2024-12-20 16:11:07 +0300 375) /*
868b2b66 (kx 2024-12-20 16:11:07 +0300 376)   End of hide internal symbols.
868b2b66 (kx 2024-12-20 16:11:07 +0300 377)  ***************************************************************/