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

/***************************************************************
  __ST_SERVICE.C

       This file contains source code of functions for
       SERVICE 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 <config.h>
#endif

#include <errno.h>   /* errno(3)  */
#include <string.h>  /* strcpy(3) */
#include <strings.h> /* bzero(3)  */
#include <stdlib.h>

#include <libmpu.h>
#include <mpu-context.h>

#include <mpu-emutype.h>
#include <mpu-integer.h>
#include <mpu-real.h>
#include <mpu-floatp.h>

#include <mpu-char.h>
#include <mpu-symbols.h>

#include <mpu-math-errno.h>
#include <mpu-mtherr.h>


/***************************************************************
  Кодировка имен файлов:

  Трехзначное десятичное число, представляющее количество
  128-и битных слов, из которых состоят вещественные числа
  размещенные в массивах:

    размер чисел в битах  кодировка
    --------------------  ---------
                     128  001
                     256  002
                     512  004
                    1024  008
                    2048  016
                    4096  032
                    8192  064
                   16384  128
                   32768  256
                   65536  512 (это предел);

    ПРИМЕРЫ:
    -------
      ei_service_001_emu32lsb.dfn -   128-бит,
      ei_service_512_emu32lsb.dfn - 65536-бит.

 ***************************************************************/

#if MPU_MATH_FN_LIMIT >= 128
#if MPU_WORD_ORDER_BIG_ENDIAN == 0
#include <math/service/emu00128/ei_service_001_emu32lsb.dfn>
#else
#include <math/service/emu00128/ei_service_001_emu32msb.dfn>
#endif
#endif /* MPU_MATH_FN_LIMIT >= 128 */

#if MPU_MATH_FN_LIMIT >= 256
#if MPU_WORD_ORDER_BIG_ENDIAN == 0
#include <math/service/emu00256/ei_service_002_emu32lsb.dfn>
#else
#include <math/service/emu00256/ei_service_002_emu32msb.dfn>
#endif
#endif /* MPU_MATH_FN_LIMIT >= 256 */

#if MPU_MATH_FN_LIMIT >= 512
#if MPU_WORD_ORDER_BIG_ENDIAN == 0
#include <math/service/emu00512/ei_service_004_emu32lsb.dfn>
#else
#include <math/service/emu00512/ei_service_004_emu32msb.dfn>
#endif
#endif /* MPU_MATH_FN_LIMIT >= 512 */

#if MPU_MATH_FN_LIMIT >= 1024
#if MPU_WORD_ORDER_BIG_ENDIAN == 0
#include <math/service/emu01024/ei_service_008_emu32lsb.dfn>
#else
#include <math/service/emu01024/ei_service_008_emu32msb.dfn>
#endif
#endif /* MPU_MATH_FN_LIMIT >= 1024 */

#if MPU_MATH_FN_LIMIT >= 2048
#if MPU_WORD_ORDER_BIG_ENDIAN == 0
#include <math/service/emu02048/ei_service_016_emu32lsb.dfn>
#else
#include <math/service/emu02048/ei_service_016_emu32msb.dfn>
#endif
#endif /* MPU_MATH_FN_LIMIT >= 2048 */

#if MPU_MATH_FN_LIMIT >= 4096
#if MPU_WORD_ORDER_BIG_ENDIAN == 0
#include <math/service/emu04096/ei_service_032_emu32lsb.dfn>
#else
#include <math/service/emu04096/ei_service_032_emu32msb.dfn>
#endif
#endif /* MPU_MATH_FN_LIMIT >= 4096 */

#if MPU_MATH_FN_LIMIT >= 8192
#if MPU_WORD_ORDER_BIG_ENDIAN == 0
#include <math/service/emu08192/ei_service_064_emu32lsb.dfn>
#else
#include <math/service/emu08192/ei_service_064_emu32msb.dfn>
#endif
#endif /* MPU_MATH_FN_LIMIT >= 8192 */

#if MPU_MATH_FN_LIMIT >= 16384
#if MPU_WORD_ORDER_BIG_ENDIAN == 0
#include <math/service/emu16384/ei_service_128_emu32lsb.dfn>
#else
#include <math/service/emu16384/ei_service_128_emu32msb.dfn>
#endif
#endif /* MPU_MATH_FN_LIMIT >= 16384 */

#if MPU_MATH_FN_LIMIT >= 32768
#if MPU_WORD_ORDER_BIG_ENDIAN == 0
#include <math/service/emu32768/ei_service_256_emu32lsb.dfn>
#else
#include <math/service/emu32768/ei_service_256_emu32msb.dfn>
#endif
#endif /* MPU_MATH_FN_LIMIT >= 32768 */

#if MPU_MATH_FN_LIMIT >= 65536
#if MPU_WORD_ORDER_BIG_ENDIAN == 0
#include <math/service/emu65536/ei_service_512_emu32lsb.dfn>
#else
#include <math/service/emu65536/ei_service_512_emu32msb.dfn>
#endif
#endif /* MPU_MATH_FN_LIMIT >= 65536 */


EMUSHORT *_get_m_ln2hi_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_m_ln2hi_128_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 128 */
#if MPU_MATH_FN_LIMIT >= 256
    case NBR_256  :
      rc = (EMUSHORT *)&_ei_m_ln2hi_256_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 256 */
#if MPU_MATH_FN_LIMIT >= 512
    case NBR_512  :
      rc = (EMUSHORT *)&_ei_m_ln2hi_512_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 512 */
#if MPU_MATH_FN_LIMIT >= 1024
    case NBR_1024 :
      rc = (EMUSHORT *)&_ei_m_ln2hi_1024_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 1024 */
#if MPU_MATH_FN_LIMIT >= 2048
    case NBR_2048 :
      rc = (EMUSHORT *)&_ei_m_ln2hi_2048_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 2048 */
#if MPU_MATH_FN_LIMIT >= 4096
    case NBR_4096 :
      rc = (EMUSHORT *)&_ei_m_ln2hi_4096_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 4096 */
#if MPU_MATH_FN_LIMIT >= 8192
    case NBR_8192 :
      rc = (EMUSHORT *)&_ei_m_ln2hi_8192_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 8192 */
#if MPU_MATH_FN_LIMIT >= 16384
    case NBR_16384:
      rc = (EMUSHORT *)&_ei_m_ln2hi_16384_[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_m_ln2hi_ptr() */


EMUSHORT *_get_m_ln2lo_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_m_ln2lo_128_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 128 */
#if MPU_MATH_FN_LIMIT >= 256
    case NBR_256  :
      rc = (EMUSHORT *)&_ei_m_ln2lo_256_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 256 */
#if MPU_MATH_FN_LIMIT >= 512
    case NBR_512  :
      rc = (EMUSHORT *)&_ei_m_ln2lo_512_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 512 */
#if MPU_MATH_FN_LIMIT >= 1024
    case NBR_1024 :
      rc = (EMUSHORT *)&_ei_m_ln2lo_1024_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 1024 */
#if MPU_MATH_FN_LIMIT >= 2048
    case NBR_2048 :
      rc = (EMUSHORT *)&_ei_m_ln2lo_2048_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 2048 */
#if MPU_MATH_FN_LIMIT >= 4096
    case NBR_4096 :
      rc = (EMUSHORT *)&_ei_m_ln2lo_4096_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 4096 */
#if MPU_MATH_FN_LIMIT >= 8192
    case NBR_8192 :
      rc = (EMUSHORT *)&_ei_m_ln2lo_8192_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 8192 */
#if MPU_MATH_FN_LIMIT >= 16384
    case NBR_16384:
      rc = (EMUSHORT *)&_ei_m_ln2lo_16384_[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_m_ln2lo_ptr() */


EMUSHORT *_get_m_ln_huge_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_m_ln_huge_128_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 128 */
#if MPU_MATH_FN_LIMIT >= 256
    case NBR_256  :
      rc = (EMUSHORT *)&_ei_m_ln_huge_256_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 256 */
#if MPU_MATH_FN_LIMIT >= 512
    case NBR_512  :
      rc = (EMUSHORT *)&_ei_m_ln_huge_512_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 512 */
#if MPU_MATH_FN_LIMIT >= 1024
    case NBR_1024 :
      rc = (EMUSHORT *)&_ei_m_ln_huge_1024_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 1024 */
#if MPU_MATH_FN_LIMIT >= 2048
    case NBR_2048 :
      rc = (EMUSHORT *)&_ei_m_ln_huge_2048_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 2048 */
#if MPU_MATH_FN_LIMIT >= 4096
    case NBR_4096 :
      rc = (EMUSHORT *)&_ei_m_ln_huge_4096_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 4096 */
#if MPU_MATH_FN_LIMIT >= 8192
    case NBR_8192 :
      rc = (EMUSHORT *)&_ei_m_ln_huge_8192_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 8192 */
#if MPU_MATH_FN_LIMIT >= 16384
    case NBR_16384:
      rc = (EMUSHORT *)&_ei_m_ln_huge_16384_[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_m_ln_huge_ptr() */


EMUSHORT *_get_m_ln_tiny_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_m_ln_tiny_128_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 128 */
#if MPU_MATH_FN_LIMIT >= 256
    case NBR_256  :
      rc = (EMUSHORT *)&_ei_m_ln_tiny_256_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 256 */
#if MPU_MATH_FN_LIMIT >= 512
    case NBR_512  :
      rc = (EMUSHORT *)&_ei_m_ln_tiny_512_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 512 */
#if MPU_MATH_FN_LIMIT >= 1024
    case NBR_1024 :
      rc = (EMUSHORT *)&_ei_m_ln_tiny_1024_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 1024 */
#if MPU_MATH_FN_LIMIT >= 2048
    case NBR_2048 :
      rc = (EMUSHORT *)&_ei_m_ln_tiny_2048_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 2048 */
#if MPU_MATH_FN_LIMIT >= 4096
    case NBR_4096 :
      rc = (EMUSHORT *)&_ei_m_ln_tiny_4096_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 4096 */
#if MPU_MATH_FN_LIMIT >= 8192
    case NBR_8192 :
      rc = (EMUSHORT *)&_ei_m_ln_tiny_8192_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 8192 */
#if MPU_MATH_FN_LIMIT >= 16384
    case NBR_16384:
      rc = (EMUSHORT *)&_ei_m_ln_tiny_16384_[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_m_ln_tiny_ptr() */


EMUSHORT *_get_m_athfhi_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_m_athfhi_128_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 128 */
#if MPU_MATH_FN_LIMIT >= 256
    case NBR_256  :
      rc = (EMUSHORT *)&_ei_m_athfhi_256_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 256 */
#if MPU_MATH_FN_LIMIT >= 512
    case NBR_512  :
      rc = (EMUSHORT *)&_ei_m_athfhi_512_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 512 */
#if MPU_MATH_FN_LIMIT >= 1024
    case NBR_1024 :
      rc = (EMUSHORT *)&_ei_m_athfhi_1024_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 1024 */
#if MPU_MATH_FN_LIMIT >= 2048
    case NBR_2048 :
      rc = (EMUSHORT *)&_ei_m_athfhi_2048_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 2048 */
#if MPU_MATH_FN_LIMIT >= 4096
    case NBR_4096 :
      rc = (EMUSHORT *)&_ei_m_athfhi_4096_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 4096 */
#if MPU_MATH_FN_LIMIT >= 8192
    case NBR_8192 :
      rc = (EMUSHORT *)&_ei_m_athfhi_8192_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 8192 */
#if MPU_MATH_FN_LIMIT >= 16384
    case NBR_16384:
      rc = (EMUSHORT *)&_ei_m_athfhi_16384_[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_m_athfhi_ptr() */


EMUSHORT *_get_m_athflo_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_m_athflo_128_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 128 */
#if MPU_MATH_FN_LIMIT >= 256
    case NBR_256  :
      rc = (EMUSHORT *)&_ei_m_athflo_256_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 256 */
#if MPU_MATH_FN_LIMIT >= 512
    case NBR_512  :
      rc = (EMUSHORT *)&_ei_m_athflo_512_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 512 */
#if MPU_MATH_FN_LIMIT >= 1024
    case NBR_1024 :
      rc = (EMUSHORT *)&_ei_m_athflo_1024_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 1024 */
#if MPU_MATH_FN_LIMIT >= 2048
    case NBR_2048 :
      rc = (EMUSHORT *)&_ei_m_athflo_2048_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 2048 */
#if MPU_MATH_FN_LIMIT >= 4096
    case NBR_4096 :
      rc = (EMUSHORT *)&_ei_m_athflo_4096_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 4096 */
#if MPU_MATH_FN_LIMIT >= 8192
    case NBR_8192 :
      rc = (EMUSHORT *)&_ei_m_athflo_8192_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 8192 */
#if MPU_MATH_FN_LIMIT >= 16384
    case NBR_16384:
      rc = (EMUSHORT *)&_ei_m_athflo_16384_[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_m_athflo_ptr() */


EMUSHORT *_get_m_at1fhi_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_m_at1fhi_128_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 128 */
#if MPU_MATH_FN_LIMIT >= 256
    case NBR_256  :
      rc = (EMUSHORT *)&_ei_m_at1fhi_256_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 256 */
#if MPU_MATH_FN_LIMIT >= 512
    case NBR_512  :
      rc = (EMUSHORT *)&_ei_m_at1fhi_512_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 512 */
#if MPU_MATH_FN_LIMIT >= 1024
    case NBR_1024 :
      rc = (EMUSHORT *)&_ei_m_at1fhi_1024_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 1024 */
#if MPU_MATH_FN_LIMIT >= 2048
    case NBR_2048 :
      rc = (EMUSHORT *)&_ei_m_at1fhi_2048_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 2048 */
#if MPU_MATH_FN_LIMIT >= 4096
    case NBR_4096 :
      rc = (EMUSHORT *)&_ei_m_at1fhi_4096_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 4096 */
#if MPU_MATH_FN_LIMIT >= 8192
    case NBR_8192 :
      rc = (EMUSHORT *)&_ei_m_at1fhi_8192_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 8192 */
#if MPU_MATH_FN_LIMIT >= 16384
    case NBR_16384:
      rc = (EMUSHORT *)&_ei_m_at1fhi_16384_[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_m_at1fhi_ptr() */


EMUSHORT *_get_m_at1flo_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_m_at1flo_128_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 128 */
#if MPU_MATH_FN_LIMIT >= 256
    case NBR_256  :
      rc = (EMUSHORT *)&_ei_m_at1flo_256_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 256 */
#if MPU_MATH_FN_LIMIT >= 512
    case NBR_512  :
      rc = (EMUSHORT *)&_ei_m_at1flo_512_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 512 */
#if MPU_MATH_FN_LIMIT >= 1024
    case NBR_1024 :
      rc = (EMUSHORT *)&_ei_m_at1flo_1024_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 1024 */
#if MPU_MATH_FN_LIMIT >= 2048
    case NBR_2048 :
      rc = (EMUSHORT *)&_ei_m_at1flo_2048_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 2048 */
#if MPU_MATH_FN_LIMIT >= 4096
    case NBR_4096 :
      rc = (EMUSHORT *)&_ei_m_at1flo_4096_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 4096 */
#if MPU_MATH_FN_LIMIT >= 8192
    case NBR_8192 :
      rc = (EMUSHORT *)&_ei_m_at1flo_8192_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 8192 */
#if MPU_MATH_FN_LIMIT >= 16384
    case NBR_16384:
      rc = (EMUSHORT *)&_ei_m_at1flo_16384_[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_m_at1flo_ptr() */


EMUSHORT *_get_m_39_16_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_m_39_16__128_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 128 */
#if MPU_MATH_FN_LIMIT >= 256
    case NBR_256  :
      rc = (EMUSHORT *)&_ei_m_39_16__256_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 256 */
#if MPU_MATH_FN_LIMIT >= 512
    case NBR_512  :
      rc = (EMUSHORT *)&_ei_m_39_16__512_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 512 */
#if MPU_MATH_FN_LIMIT >= 1024
    case NBR_1024 :
      rc = (EMUSHORT *)&_ei_m_39_16__1024_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 1024 */
#if MPU_MATH_FN_LIMIT >= 2048
    case NBR_2048 :
      rc = (EMUSHORT *)&_ei_m_39_16__2048_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 2048 */
#if MPU_MATH_FN_LIMIT >= 4096
    case NBR_4096 :
      rc = (EMUSHORT *)&_ei_m_39_16__4096_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 4096 */
#if MPU_MATH_FN_LIMIT >= 8192
    case NBR_8192 :
      rc = (EMUSHORT *)&_ei_m_39_16__8192_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 8192 */
#if MPU_MATH_FN_LIMIT >= 16384
    case NBR_16384:
      rc = (EMUSHORT *)&_ei_m_39_16__16384_[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_m_39_16_ptr() */


EMUSHORT *_get_m_1_16_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_m_1_16__128_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 128 */
#if MPU_MATH_FN_LIMIT >= 256
    case NBR_256  :
      rc = (EMUSHORT *)&_ei_m_1_16__256_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 256 */
#if MPU_MATH_FN_LIMIT >= 512
    case NBR_512  :
      rc = (EMUSHORT *)&_ei_m_1_16__512_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 512 */
#if MPU_MATH_FN_LIMIT >= 1024
    case NBR_1024 :
      rc = (EMUSHORT *)&_ei_m_1_16__1024_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 1024 */
#if MPU_MATH_FN_LIMIT >= 2048
    case NBR_2048 :
      rc = (EMUSHORT *)&_ei_m_1_16__2048_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 2048 */
#if MPU_MATH_FN_LIMIT >= 4096
    case NBR_4096 :
      rc = (EMUSHORT *)&_ei_m_1_16__4096_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 4096 */
#if MPU_MATH_FN_LIMIT >= 8192
    case NBR_8192 :
      rc = (EMUSHORT *)&_ei_m_1_16__8192_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 8192 */
#if MPU_MATH_FN_LIMIT >= 16384
    case NBR_16384:
      rc = (EMUSHORT *)&_ei_m_1_16__16384_[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_m_1_16_ptr() */


EMUSHORT *_get_m_thovfl_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_m_thovfl_128_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 128 */
#if MPU_MATH_FN_LIMIT >= 256
    case NBR_256  :
      rc = (EMUSHORT *)&_ei_m_thovfl_256_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 256 */
#if MPU_MATH_FN_LIMIT >= 512
    case NBR_512  :
      rc = (EMUSHORT *)&_ei_m_thovfl_512_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 512 */
#if MPU_MATH_FN_LIMIT >= 1024
    case NBR_1024 :
      rc = (EMUSHORT *)&_ei_m_thovfl_1024_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 1024 */
#if MPU_MATH_FN_LIMIT >= 2048
    case NBR_2048 :
      rc = (EMUSHORT *)&_ei_m_thovfl_2048_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 2048 */
#if MPU_MATH_FN_LIMIT >= 4096
    case NBR_4096 :
      rc = (EMUSHORT *)&_ei_m_thovfl_4096_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 4096 */
#if MPU_MATH_FN_LIMIT >= 8192
    case NBR_8192 :
      rc = (EMUSHORT *)&_ei_m_thovfl_8192_[0];
      break;
#endif /* MPU_MATH_FN_LIMIT >= 8192 */
#if MPU_MATH_FN_LIMIT >= 16384
    case NBR_16384:
      rc = (EMUSHORT *)&_ei_m_thovfl_16384_[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_m_thovfl_ptr() */


/***************************************************************
  Hide internal symbols:
 ***************************************************************/

__mpu_hidden_decl(_get_m_ln2hi_ptr);
__mpu_hidden_decl(_get_m_ln2lo_ptr);
__mpu_hidden_decl(_get_m_ln_huge_ptr);
__mpu_hidden_decl(_get_m_ln_tiny_ptr);
__mpu_hidden_decl(_get_m_athfhi_ptr);
__mpu_hidden_decl(_get_m_athflo_ptr);
__mpu_hidden_decl(_get_m_at1fhi_ptr);
__mpu_hidden_decl(_get_m_at1flo_ptr);
__mpu_hidden_decl(_get_m_39_16_ptr);
__mpu_hidden_decl(_get_m_1_16_ptr);
__mpu_hidden_decl(_get_m_thovfl_ptr);


/*
  End of hide internal symbols.
 ***************************************************************/