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

#ifndef   __REAL_INTERNAL_DEC_EXP_EMU64MSB
#define   __REAL_INTERNAL_DEC_EXP_EMU64MSB

#if BITS_PER_EMUSHORT == 64

/***************************************************************
  Определения для Максимальной десятичной Экспоненты чисел
  типа real.
 ***************************************************************/

/* REAL_32_MAX_DEC_EXP      = 38; */
static EMUSHORT _max_dec_exp_32_[NPIE_32+1] =
{
  0x0000000000000000,
  0x0000000000000026
};
/* REAL_64_MAX_DEC_EXP      = 308; */
static EMUSHORT _max_dec_exp_64_[NPIE_64+1] =
{
  0x0000000000000000,
  0x0000000000000134
};
/* REAL_128_MAX_DEC_EXP     = 323228496; */
static EMUSHORT _max_dec_exp_128_[NPIE_128+1] =
{
  0x0000000000000000,
  0x0000000013441350
};
/* REAL_256_MAX_DEC_EXP     = 323228496; */
static EMUSHORT _max_dec_exp_256_[NPIE_256+1] =
{
  0x0000000000000000,
  0x0000000013441350
};

/* REAL_512_MAX_DEC_EXP     = 1388255822130839283; */
static EMUSHORT _max_dec_exp_512_[NPIE_512+1] =
{
  0x0000000000000000,
  0x134413509f79fef3
};
/* REAL_1024_MAX_DEC_EXP    = 1388255822130839283; */
static EMUSHORT _max_dec_exp_1024_[NPIE_1024+1] =
{
  0x0000000000000000,
  0x134413509f79fef3
};

/* REAL_2048_MAX_DEC_EXP    = 25608799859684840937503027312525808175; */
static EMUSHORT _max_dec_exp_2048_[NPIE_2048+1] =
{
  0x0000000000000000,
  0x134413509f79fef3, 0x11f12b35816f922f
};
/* REAL_4096_MAX_DEC_EXP    = 25608799859684840937503027312525808175; */
static EMUSHORT _max_dec_exp_4096_[NPIE_4096+1] =
{
  0x0000000000000000,
  0x134413509f79fef3, 0x11f12b35816f922f
};

/* REAL_8192_MAX_DEC_EXP    = 87142230302581544824664289252326044991\
                              25871092238398896386086649085145222265; */
static EMUSHORT _max_dec_exp_8192_[NPIE_8192+1] =
{
  0x0000000000000000,
  0x134413509f79fef3, 0x11f12b35816f922f,
  0x04d5a618a87a3e69, 0x314bcde4d6f98c79
};
/* REAL_16384_MAX_DEC_EXP   = 87142230302581544824664289252326044991\
                              25871092238398896386086649085145222265; */
static EMUSHORT _max_dec_exp_16384_[NPIE_16384+1] =
{
  0x0000000000000000,
  0x134413509f79fef3, 0x11f12b35816f922f,
  0x04d5a618a87a3e69, 0x314bcde4d6f98c79
};

/* REAL_32768_MAX_DEC_EXP   = 100903809075352817242282879963567487875\
                              892099021734287898338535355230181019603\
                              864364986397683765368543149769469684639\
                              4562057154816912385935155623782668889; */
static EMUSHORT _max_dec_exp_32768_[NPIE_32768+1] =
{
  0x0000000000000000,
  0x134413509f79fef3, 0x11f12b35816f922f,
  0x04d5a618a87a3e69, 0x314bcde4d6f98c79,
  0x650d45b03233f57a, 0x13cb978e668e37a2,
  0x5228e692b6317243, 0xcb16a4fea4aa5a59
};
/* REAL_65536_MAX_DEC_EXP   = 100903809075352817242282879963567487875\
                              892099021734287898338535355230181019603\
                              864364986397683765368543149769469684639\
                              4562057154816912385935155623782668889; */
static EMUSHORT _max_dec_exp_65536_[NPIE_65536+1] =
{
  0x0000000000000000,
  0x134413509f79fef3, 0x11f12b35816f922f,
  0x04d5a618a87a3e69, 0x314bcde4d6f98c79,
  0x650d45b03233f57a, 0x13cb978e668e37a2,
  0x5228e692b6317243, 0xcb16a4fea4aa5a59
};

/* REAL_131072_MAX_DEC_EXP  = 135289889148192929926396705879397085897\
                              289585448728420527912857292534983632920\
                              892390565864459960588805664323238032415\
                              039482253220245990514340092162621997241\
                              131037226858003884184847076362850336738\
                              763387861134927266253983334997968052515\
                              115732240463573024754589210939947951624\
                              90520947274478376589561024881824149; */
static EMUSHORT _max_dec_exp_131072_[NPIE_131072+1] =
{
  0x0000000000000000,
  0x134413509f79fef3, 0x11f12b35816f922f,
  0x04d5a618a87a3e69, 0x314bcde4d6f98c79,
  0x650d45b03233f57a, 0x13cb978e668e37a2,
  0x5228e692b6317243, 0xcb16a4fea4aa5a59,
  0x8bf06fbdc04aab97, 0x939e3a321880c05c,
  0xba4d84e5fbce205e, 0x9d72225362b25b3b,
  0x8091afd4b3d62a7b, 0x01610678b2835704,
  0x2d46cf70279e991f, 0x7bdd462ef91f1195
};


/***************************************************************
  Определения для Минимальной десятичной Экспоненты чисел
  типа real.
 ***************************************************************/

/* REAL_32_MIN_DEC_EXP      = -37; */
static EMUSHORT _min_dec_exp_32_[NPIE_32+1] =
{
  0xffffffffffffffff,
  0xffffffffffffffdb /* -38 = 0xffda; */
};
/* REAL_64_MIN_DEC_EXP      = -307; */
static EMUSHORT _min_dec_exp_64_[NPIE_64+1] =
{
  0xffffffffffffffff,
  0xfffffffffffffecd /* -308 = 0xfecc; */
};
/* REAL_128_MIN_DEC_EXP     = -323228524; */
static EMUSHORT _min_dec_exp_128_[NPIE_128+1] =
{
  0xffffffffffffffff,
  0xffffffffecbbec94
};
/* REAL_256_MIN_DEC_EXP     = -323228563; */
static EMUSHORT _min_dec_exp_256_[NPIE_256+1] =
{
  0xffffffffffffffff,
  0xffffffffecbbec6d
};

/* REAL_512_MIN_DEC_EXP     = -1388255822130839417; */
static EMUSHORT _min_dec_exp_512_[NPIE_512+1] =
{
  0xffffffffffffffff,
  0xecbbecaf60860087
};
/* REAL_1024_MIN_DEC_EXP    = -1388255822130839571; */
static EMUSHORT _min_dec_exp_1024_[NPIE_1024+1] =
{
  0xffffffffffffffff,
  0xecbbecaf6085ffed
};

/* REAL_2048_MIN_DEC_EXP    = -25608799859684840937503027312525808752; */
static EMUSHORT _min_dec_exp_2048_[NPIE_2048+1] =
{
  0xffffffffffffffff,
  0xecbbecaf6086010c, 0xee0ed4ca7e906b90
};
/* REAL_4096_MIN_DEC_EXP    = -25608799859684840937503027312525809368; */
static EMUSHORT _min_dec_exp_4096_[NPIE_4096+1] =
{
  0xffffffffffffffff,
  0xecbbecaf6086010c, 0xee0ed4ca7e906928
};

/* REAL_8192_MIN_DEC_EXP    = -87142230302581544824664289252326044991\
                               25871092238398896386086649085145224653; */
static EMUSHORT _min_dec_exp_8192_[NPIE_8192+1] =
{
  0xffffffffffffffff,
  0xecbbecaf6086010c, 0xee0ed4ca7e906dd0,
  0xfb2a59e75785c196, 0xceb4321b29066a33
};
/* REAL_16384_MIN_DEC_EXP   = -87142230302581544824664289252326044991\
                               25871092238398896386086649085145227119; */
static EMUSHORT _min_dec_exp_16384_[NPIE_16384+1] =
{
  0xffffffffffffffff,
  0xecbbecaf6086010c, 0xee0ed4ca7e906dd0,
  0xfb2a59e75785c196, 0xceb4321b29066091
};

/* REAL_32768_MIN_DEC_EXP   = -100903809075352817242282879963567487875\
                               892099021734287898338535355230181019603\
                               864364986397683765368543149769469684639\
                               4562057154816912385935155623782678598; */
static EMUSHORT _min_dec_exp_32768_[NPIE_32768+1] =
{
  0xffffffffffffffff,
  0xecbbecaf6086010c, 0xee0ed4ca7e906dd0,
  0xfb2a59e75785c196, 0xceb4321b29067386,
  0x9af2ba4fcdcc0a85, 0xec3468719971c85d,
  0xadd7196d49ce8dbc, 0x34e95b015b557fba
};
/* REAL_65536_MIN_DEC_EXP   = -100903809075352817242282879963567487875\
                               892099021734287898338535355230181019603\
                               864364986397683765368543149769469684639\
                               4562057154816912385935155623782688463; */
static EMUSHORT _min_dec_exp_65536_[NPIE_65536+1] =
{
  0xffffffffffffffff,
  0xecbbecaf6086010c, 0xee0ed4ca7e906dd0,
  0xfb2a59e75785c196, 0xceb4321b29067386,
  0x9af2ba4fcdcc0a85, 0xec3468719971c85d,
  0xadd7196d49ce8dbc, 0x34e95b015b555931
};

/* REAL_131072_MIN_DEC_EXP  = -135289889148192929926396705879397085897\
                               289585448728420527912857292534983632920\
                               892390565864459960588805664323238032415\
                               039482253220245990514340092162621997241\
                               131037226858003884184847076362850336738\
                               763387861134927266253983334997968052515\
                               115732240463573024754589210939947951624\
                               90520947274478376589561024881863297; */
static EMUSHORT _min_dec_exp_131072_[NPIE_131072+1] =
{
  0xffffffffffffffff,
  0xecbbecaf6086010c, 0xee0ed4ca7e906dd0,
  0xfb2a59e75785c196, 0xceb4321b29067386,
  0x9af2ba4fcdcc0a85, 0xec3468719971c85d,
  0xadd7196d49ce8dbc, 0x34e95b015b55a5a6,
  0x740f90423fb55468, 0x6c61c5cde77f3fa3,
  0x45b27b1a0431dfa1, 0x628dddac9d4da4c4,
  0x7f6e502b4c29d584, 0xfe9ef9874d7ca8fb,
  0xd2b9308fd86166e0, 0x8422b9d106e0557f
};

#else  /* BITS_PER_EMUSHORT != 64 */
#error ldec_exp_emu64msb.dfn: ERROR: Failed size of EMUSHORT data type.
#endif /* BITS_PER_EMUSHORT == 64 */

#endif /* __REAL_INTERNAL_DEC_EXP_EMU64MSB */