/*************************************************************** __ST_LOGTABLE.C This file contains source code of functions for LOGTABLE constants operations. PART OF : MPU - library . USAGE : Internal only . NOTE : NONE . Copyright (C) 2000 - 2024 by Andrew V.Kosteltsev. All Rights Reserved. ***************************************************************/ #ifdef HAVE_CONFIG_H #include #endif #include /* errno(3) */ #include /* strcpy(3) */ #include /* bzero(3) */ #include #include #include #include #include #include #include #include #include #include #include /*************************************************************** Кодировка имен файлов: Трехзначное десятичное число, представляющее количество 128-и битных слов, из которых состоят вещественные числа размещенные в массивах: размер чисел в битах кодировка -------------------- --------- 128 001 256 002 512 004 1024 008 2048 016 4096 032 8192 064 16384 128 32768 256 65536 512 (это предел); ПРИМЕРЫ: ------- ei_logtable_001_emu32lsb.dfn - 128-бит, ei_logtable_512_emu32lsb.dfn - 65536-бит. ***************************************************************/ #if MPU_MATH_FN_LIMIT >= 128 #if MPU_WORD_ORDER_BIG_ENDIAN == 0 #include #else #include #endif #endif /* MPU_MATH_FN_LIMIT >= 128 */ #if MPU_MATH_FN_LIMIT >= 256 #if MPU_WORD_ORDER_BIG_ENDIAN == 0 #include #else #include #endif #endif /* MPU_MATH_FN_LIMIT >= 256 */ #if MPU_MATH_FN_LIMIT >= 512 #if MPU_WORD_ORDER_BIG_ENDIAN == 0 #include #else #include #endif #endif /* MPU_MATH_FN_LIMIT >= 512 */ #if MPU_MATH_FN_LIMIT >= 1024 #if MPU_WORD_ORDER_BIG_ENDIAN == 0 #include #else #include #endif #endif /* MPU_MATH_FN_LIMIT >= 1024 */ #if MPU_MATH_FN_LIMIT >= 2048 #if MPU_WORD_ORDER_BIG_ENDIAN == 0 #include #else #include #endif #endif /* MPU_MATH_FN_LIMIT >= 2048 */ #if MPU_MATH_FN_LIMIT >= 4096 #if MPU_WORD_ORDER_BIG_ENDIAN == 0 #include #else #include #endif #endif /* MPU_MATH_FN_LIMIT >= 4096 */ #if MPU_MATH_FN_LIMIT >= 8192 #if MPU_WORD_ORDER_BIG_ENDIAN == 0 #include #else #include #endif #endif /* MPU_MATH_FN_LIMIT >= 8192 */ #if MPU_MATH_FN_LIMIT >= 16384 #if MPU_WORD_ORDER_BIG_ENDIAN == 0 #include #else #include #endif #endif /* MPU_MATH_FN_LIMIT >= 16384 */ #if MPU_MATH_FN_LIMIT >= 32768 #if MPU_WORD_ORDER_BIG_ENDIAN == 0 #include #else #include #endif #endif /* MPU_MATH_FN_LIMIT >= 32768 */ #if MPU_MATH_FN_LIMIT >= 65536 #if MPU_WORD_ORDER_BIG_ENDIAN == 0 #include #else #include #endif #endif /* MPU_MATH_FN_LIMIT >= 65536 */ int _get_n_log_table( int nb ) { int rc = 0; if( nb < NBR_32 || nb > MPU_MATH_FN_LIMIT ) { /* error: Invalid size of operand(s) */ __real_error_no = __R_ESIZE__; __STIND; /* Set REAL ind-produsing operation Flag */ return( rc ); } switch( nb ) { #if MPU_MATH_FN_LIMIT >= 128 case NBR_32 : case NBR_64 : case NBR_128 : rc = N_LOG_TABLE128; break; #endif /* MPU_MATH_FN_LIMIT >= 128 */ #if MPU_MATH_FN_LIMIT >= 256 case NBR_256 : rc = N_LOG_TABLE256; break; #endif /* MPU_MATH_FN_LIMIT >= 256 */ #if MPU_MATH_FN_LIMIT >= 512 case NBR_512 : rc = N_LOG_TABLE512; break; #endif /* MPU_MATH_FN_LIMIT >= 512 */ #if MPU_MATH_FN_LIMIT >= 1024 case NBR_1024 : rc = N_LOG_TABLE1024; break; #endif /* MPU_MATH_FN_LIMIT >= 1024 */ #if MPU_MATH_FN_LIMIT >= 2048 case NBR_2048 : rc = N_LOG_TABLE2048; break; #endif /* MPU_MATH_FN_LIMIT >= 2048 */ #if MPU_MATH_FN_LIMIT >= 4096 case NBR_4096 : rc = N_LOG_TABLE4096; break; #endif /* MPU_MATH_FN_LIMIT >= 4096 */ #if MPU_MATH_FN_LIMIT >= 8192 case NBR_8192 : rc = N_LOG_TABLE8192; break; #endif /* MPU_MATH_FN_LIMIT >= 8192 */ #if MPU_MATH_FN_LIMIT >= 16384 case NBR_16384: rc = N_LOG_TABLE16384; break; #endif /* MPU_MATH_FN_LIMIT >= 16384 */ default: { /* error: Invalid size of operand(s) */ __real_error_no = __R_ESIZE__; __STIND; /* Set REAL ind-produsing operation Flag */ break; } } /* End of switch( nb ) */ return( rc ); } /* End of _get_n_log_table() */ EMUSHORT *_get_logF_head_ptr( int nb ) { EMUSHORT *rc = (EMUSHORT *)NULL; if( nb < NBR_32 || nb > MPU_MATH_FN_LIMIT ) { /* error: Invalid size of operand(s) */ __real_error_no = __R_ESIZE__; __STIND; /* Set REAL ind-produsing operation Flag */ return( rc ); } switch( nb ) { #if MPU_MATH_FN_LIMIT >= 128 case NBR_32 : case NBR_64 : case NBR_128 : rc = (EMUSHORT *)&_ei_logF_head_128_[0][0]; break; #endif /* MPU_MATH_FN_LIMIT >= 128 */ #if MPU_MATH_FN_LIMIT >= 256 case NBR_256 : rc = (EMUSHORT *)&_ei_logF_head_256_[0][0]; break; #endif /* MPU_MATH_FN_LIMIT >= 256 */ #if MPU_MATH_FN_LIMIT >= 512 case NBR_512 : rc = (EMUSHORT *)&_ei_logF_head_512_[0][0]; break; #endif /* MPU_MATH_FN_LIMIT >= 512 */ #if MPU_MATH_FN_LIMIT >= 1024 case NBR_1024 : rc = (EMUSHORT *)&_ei_logF_head_1024_[0][0]; break; #endif /* MPU_MATH_FN_LIMIT >= 1024 */ #if MPU_MATH_FN_LIMIT >= 2048 case NBR_2048 : rc = (EMUSHORT *)&_ei_logF_head_2048_[0][0]; break; #endif /* MPU_MATH_FN_LIMIT >= 2048 */ #if MPU_MATH_FN_LIMIT >= 4096 case NBR_4096 : rc = (EMUSHORT *)&_ei_logF_head_4096_[0][0]; break; #endif /* MPU_MATH_FN_LIMIT >= 4096 */ #if MPU_MATH_FN_LIMIT >= 8192 case NBR_8192 : rc = (EMUSHORT *)&_ei_logF_head_8192_[0][0]; break; #endif /* MPU_MATH_FN_LIMIT >= 8192 */ #if MPU_MATH_FN_LIMIT >= 16384 case NBR_16384: rc = (EMUSHORT *)&_ei_logF_head_16384_[0][0]; break; #endif /* MPU_MATH_FN_LIMIT >= 16384 */ default: { /* error: Invalid size of operand(s) */ __real_error_no = __R_ESIZE__; __STIND; /* Set REAL ind-produsing operation Flag */ break; } } /* End of switch( nb ) */ return( rc ); } /* End of _get_logF_head_ptr() */ EMUSHORT *_get_logF_tail_ptr( int nb ) { EMUSHORT *rc = (EMUSHORT *)NULL; if( nb < NBR_32 || nb > MPU_MATH_FN_LIMIT ) { /* error: Invalid size of operand(s) */ __real_error_no = __R_ESIZE__; __STIND; /* Set REAL ind-produsing operation Flag */ return( rc ); } switch( nb ) { #if MPU_MATH_FN_LIMIT >= 128 case NBR_32 : case NBR_64 : case NBR_128 : rc = (EMUSHORT *)&_ei_logF_tail_128_[0][0]; break; #endif /* MPU_MATH_FN_LIMIT >= 128 */ #if MPU_MATH_FN_LIMIT >= 256 case NBR_256 : rc = (EMUSHORT *)&_ei_logF_tail_256_[0][0]; break; #endif /* MPU_MATH_FN_LIMIT >= 256 */ #if MPU_MATH_FN_LIMIT >= 512 case NBR_512 : rc = (EMUSHORT *)&_ei_logF_tail_512_[0][0]; break; #endif /* MPU_MATH_FN_LIMIT >= 512 */ #if MPU_MATH_FN_LIMIT >= 1024 case NBR_1024 : rc = (EMUSHORT *)&_ei_logF_tail_1024_[0][0]; break; #endif /* MPU_MATH_FN_LIMIT >= 1024 */ #if MPU_MATH_FN_LIMIT >= 2048 case NBR_2048 : rc = (EMUSHORT *)&_ei_logF_tail_2048_[0][0]; break; #endif /* MPU_MATH_FN_LIMIT >= 2048 */ #if MPU_MATH_FN_LIMIT >= 4096 case NBR_4096 : rc = (EMUSHORT *)&_ei_logF_tail_4096_[0][0]; break; #endif /* MPU_MATH_FN_LIMIT >= 4096 */ #if MPU_MATH_FN_LIMIT >= 8192 case NBR_8192 : rc = (EMUSHORT *)&_ei_logF_tail_8192_[0][0]; break; #endif /* MPU_MATH_FN_LIMIT >= 8192 */ #if MPU_MATH_FN_LIMIT >= 16384 case NBR_16384: rc = (EMUSHORT *)&_ei_logF_tail_16384_[0][0]; break; #endif /* MPU_MATH_FN_LIMIT >= 16384 */ default: { /* error: Invalid size of operand(s) */ __real_error_no = __R_ESIZE__; __STIND; /* Set REAL ind-produsing operation Flag */ break; } } /* End of switch( nb ) */ return( rc ); } /* End of _get_logF_tail_ptr() */ /*************************************************************** Hide internal symbols: ***************************************************************/ __mpu_hidden_decl(_get_n_log_table); __mpu_hidden_decl(_get_logF_head_ptr); __mpu_hidden_decl(_get_logF_tail_ptr); /* End of hide internal symbols. ***************************************************************/