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
author: kx <kx@radix-linux.su> 2024-12-20 16:11:07 +0300 committer: kx <kx@radix-linux.su> 2024-12-20 16:11:07 +0300 commit: 868b2b66b564b5c00e3a74d10be45db7151627ac parent: cce2ae8d3312493b7653358bb4af201d3271377b
Commit Summary:
Version 1.0.14
Diffstat:
2 files changed, 68 insertions, 0 deletions
diff --git a/mpu/math/ln/emu00256/ei_ln_002_emu32lsb.dfn b/mpu/math/ln/emu00256/ei_ln_002_emu32lsb.dfn
new file mode 100644
index 0000000..45205b6
--- /dev/null
+++ b/mpu/math/ln/emu00256/ei_ln_002_emu32lsb.dfn
@@ -0,0 +1,40 @@
+
+#ifndef   __REAL_EINTERNAL_LN_002_32LSB
+#define   __REAL_EINTERNAL_LN_002_32LSB
+
+#if BITS_PER_EMUSHORT == 32
+
+#define N_LOG_N256  21
+
+static EMUSHORT _ei_log__N_256_[N_LOG_N256][NPIR_256] =
+{
+/*   lgw         S i g n i f i c a n d                                                               hgw         Exp         Sign     */
+/*  ==========  ==================================================================================  ==========  ==========  ==========*/
+  { 0x00000000, 0x73990123, 0xcca1f4df, 0xe211ccb0, 0x1fc124b3, 0x3b3fd21b, 0x90ad0d87, 0xc07a8f0a, 0x00000000, 0x3fffffcf, 0x00000000 }, /* 5.342358365039362138744807389568893744435377948098268547714683265672E-15 */
+  { 0x00000000, 0x6db88e91, 0x75f7e586, 0x4054d3f8, 0x713b575b, 0xcba965de, 0x93d24b39, 0xc7cbb544, 0x00000000, 0x3fffffd1, 0x00000000 }, /* 2.218178248618069259142138049055900669189256164025402826668056058391E-14 */
+  { 0x00000000, 0xd0bac050, 0x2a830bb6, 0x5a90f1a5, 0xa6671879, 0x1f96c49c, 0xb6122af0, 0xd20d225c, 0x00000000, 0x3fffffd3, 0x00000000 }, /* 9.328151832070792123549272485501703790304483668373181803625666081635E-14 */
+  { 0x00000000, 0x4a9a6438, 0x94461341, 0xa0152385, 0x12f26db7, 0x90b6c61d, 0x77be66e5, 0xdd67c8a5, 0x00000000, 0x3fffffd5, 0x00000000 }, /* 3.932950061099996192308731088657814913498116848358539164216632839868E-13 */
+  { 0x00000000, 0x6475c49f, 0x9e46fad3, 0xcfe66212, 0x5de72439, 0x78c39a71, 0x0ebd1619, 0xea0ea0ea, 0x00000000, 0x3fffffd7, 0x00000000 }, /* 1.663076026099250835446154686474423751317649478228895069211953050270E-12 */
+  { 0x00000000, 0x6fef4966, 0x1c1ff868, 0x73bc39f8, 0xe964535f, 0xe28a64bb, 0xe0f83ed6, 0xf83e0f83, 0x00000000, 0x3fffffd9, 0x00000000 }, /* 7.055474050117261560645085441261626104567936019272226354851451097962E-12 */
+  { 0x00000000, 0x242ca113, 0x718a0267, 0x207c008c, 0x5e338df9, 0x78a97e41, 0x10842107, 0x84210842, 0x00000000, 0x3fffffdc, 0x00000000 }, /* 3.004266369727350050154978140973154715955928259294293027820363671087E-11 */
+  { 0x00000000, 0x9d78c3c8, 0x4fc80a8d, 0x7393089f, 0x10e05fbb, 0x3ded2a07, 0xd3dcb08d, 0x8d3dcb08, 0x00000000, 0x3fffffde, 0x00000000 }, /* 1.284582861538591056034548490007951763636765092607436537009333850820E-10 */
+  { 0x00000000, 0xdc506375, 0x2edf06b2, 0x21a36ff5, 0xc7f37fc0, 0xd097b552, 0x097b425e, 0x97b425ed, 0x00000000, 0x3fffffe0, 0x00000000 }, /* 5.518948590313946759259259294624610223124066310568486191100615951405E-10 */
+  { 0x00000000, 0xf219ea4e, 0xf0b874d1, 0xf96bff9c, 0x0b0b4236, 0x3d70a3d6, 0x70a3d70a, 0xa3d70a3d, 0x00000000, 0x3fffffe2, 0x00000000 }, /* 2.384185791015624999999999999953127893607456139719753368224453857818E-9  */
+  { 0x00000000, 0xe0d071e7, 0x2633a802, 0xbca57758, 0x1654f9d2, 0x2c8590b2, 0x590b2164, 0xb21642c8, 0x00000000, 0x3fffffe4, 0x00000000 }, /* 1.036602517832880434782608695652179134253939464221714906358960224561E-8  */
+  { 0x00000000, 0xa5936c42, 0xf8a9b26e, 0x770734ac, 0xc30c3381, 0x30c30c30, 0x0c30c30c, 0xc30c30c3, 0x00000000, 0x3fffffe6, 0x00000000 }, /* 4.541306268601190476190476190476190488494180345041782263100994102947E-8  */
+  { 0x00000000, 0x9954d513, 0xd6d897cf, 0xf9527066, 0xe50d7942, 0x50d79435, 0x0d79435e, 0xd79435e5, 0x00000000, 0x3fffffe8, 0x00000000 }, /* 2.007735402960526315789473684210526315786709574769114957356948113036E-7  */
+  { 0x00000000, 0x74c8ea14, 0x241c517b, 0xf0ee7d69, 0xf0f0f0f0, 0xf0f0f0f0, 0xf0f0f0f0, 0xf0f0f0f0, 0x00000000, 0x3fffffea, 0x00000000 }, /* 8.975758272058823529411764705882352941176469539959486224602622165507E-7  */
+  { 0x00000000, 0xa536b487, 0x9d0f2fe7, 0x888888f7, 0x88888888, 0x88888888, 0x88888888, 0x88888888, 0x00000000, 0x3fffffed, 0x00000000 }, /* 4.069010416666666666666666666666666666666666667246532260747769981926E-6  */
+  { 0x00000000, 0x3d3d0904, 0xd79f62d8, 0x89d89d89, 0x9d89d89d, 0xd89d89d8, 0x89d89d89, 0x9d89d89d, 0x00000000, 0x3fffffef, 0x00000000 }, /* 1.878004807692307692307692307692307692307692307692299594546648953387E-5  */
+  { 0x00000000, 0x6af0f724, 0xba2e1675, 0x2e8ba2e8, 0x8ba2e8ba, 0xa2e8ba2e, 0xe8ba2e8b, 0xba2e8ba2, 0x00000000, 0x3ffffff1, 0x00000000 }, /* 8.877840909090909090909090909090909090909090909090909032573201228365E-5  */
+  { 0x00000000, 0x13c92391, 0x38e38e3b, 0x8e38e38e, 0xe38e38e3, 0x38e38e38, 0x8e38e38e, 0xe38e38e3, 0x00000000, 0x3ffffff3, 0x00000000 }, /* 4.340277777777777777777777777777777777777777777777777777779480082827E-4  */
+  { 0x00000000, 0x926481ea, 0x24924924, 0x49249249, 0x92492492, 0x24924924, 0x49249249, 0x92492492, 0x00000000, 0x3ffffff6, 0x00000000 }, /* 2.232142857142857142857142857142857142857142857142857142857143116985E-3  */
+  { 0x00000000, 0xcccccc5c, 0xcccccccc, 0xcccccccc, 0xcccccccc, 0xcccccccc, 0xcccccccc, 0xcccccccc, 0x00000000, 0x3ffffff8, 0x00000000 }, /* 1.249999999999999999999999999999999999999999999999999999999999999993E-2  */
+  { 0x00000000, 0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa, 0x00000000, 0x3ffffffb, 0x00000000 }  /* 8.333333333333333333333333333333333333333333333333333333333333333333E-2  */
+};
+
+#else  /* BITS_PER_EMUSHORT != 32 */
+#error ei_ln_002_emu32lsb.dfn: ERROR: Failed size of EMUSHORT data type.
+#endif /* BITS_PER_EMUSHORT == 32 */
+
+#endif /* __REAL_EINTERNAL_LN_002_32LSB */
diff --git a/mpu/math/ln/emu00256/ei_ln_002_emu32msb.dfn b/mpu/math/ln/emu00256/ei_ln_002_emu32msb.dfn
new file mode 100644
index 0000000..2dfbb7a
--- /dev/null
+++ b/mpu/math/ln/emu00256/ei_ln_002_emu32msb.dfn
@@ -0,0 +1,40 @@
+
+#ifndef   __REAL_EINTERNAL_LN_002_32MSB
+#define   __REAL_EINTERNAL_LN_002_32MSB
+
+#if BITS_PER_EMUSHORT == 32
+
+#define N_LOG_N256  21
+
+static EMUSHORT _ei_log__N_256_[N_LOG_N256][NPIR_256] =
+{
+/*   Sign        Exp         hgw         S i g n i f i c a n d                                                               lgw      */
+/*  ==========  ==========  ==========  ==================================================================================  ==========*/
+  { 0x00000000, 0x3fffffcf, 0x00000000, 0xc07a8f0a, 0x90ad0d87, 0x3b3fd21b, 0x1fc124b3, 0xe211ccb0, 0xcca1f4df, 0x73990123, 0x00000000 }, /* 5.342358365039362138744807389568893744435377948098268547714683265672E-15 */
+  { 0x00000000, 0x3fffffd1, 0x00000000, 0xc7cbb544, 0x93d24b39, 0xcba965de, 0x713b575b, 0x4054d3f8, 0x75f7e586, 0x6db88e91, 0x00000000 }, /* 2.218178248618069259142138049055900669189256164025402826668056058391E-14 */
+  { 0x00000000, 0x3fffffd3, 0x00000000, 0xd20d225c, 0xb6122af0, 0x1f96c49c, 0xa6671879, 0x5a90f1a5, 0x2a830bb6, 0xd0bac050, 0x00000000 }, /* 9.328151832070792123549272485501703790304483668373181803625666081635E-14 */
+  { 0x00000000, 0x3fffffd5, 0x00000000, 0xdd67c8a5, 0x77be66e5, 0x90b6c61d, 0x12f26db7, 0xa0152385, 0x94461341, 0x4a9a6438, 0x00000000 }, /* 3.932950061099996192308731088657814913498116848358539164216632839868E-13 */
+  { 0x00000000, 0x3fffffd7, 0x00000000, 0xea0ea0ea, 0x0ebd1619, 0x78c39a71, 0x5de72439, 0xcfe66212, 0x9e46fad3, 0x6475c49f, 0x00000000 }, /* 1.663076026099250835446154686474423751317649478228895069211953050270E-12 */
+  { 0x00000000, 0x3fffffd9, 0x00000000, 0xf83e0f83, 0xe0f83ed6, 0xe28a64bb, 0xe964535f, 0x73bc39f8, 0x1c1ff868, 0x6fef4966, 0x00000000 }, /* 7.055474050117261560645085441261626104567936019272226354851451097962E-12 */
+  { 0x00000000, 0x3fffffdc, 0x00000000, 0x84210842, 0x10842107, 0x78a97e41, 0x5e338df9, 0x207c008c, 0x718a0267, 0x242ca113, 0x00000000 }, /* 3.004266369727350050154978140973154715955928259294293027820363671087E-11 */
+  { 0x00000000, 0x3fffffde, 0x00000000, 0x8d3dcb08, 0xd3dcb08d, 0x3ded2a07, 0x10e05fbb, 0x7393089f, 0x4fc80a8d, 0x9d78c3c8, 0x00000000 }, /* 1.284582861538591056034548490007951763636765092607436537009333850820E-10 */
+  { 0x00000000, 0x3fffffe0, 0x00000000, 0x97b425ed, 0x097b425e, 0xd097b552, 0xc7f37fc0, 0x21a36ff5, 0x2edf06b2, 0xdc506375, 0x00000000 }, /* 5.518948590313946759259259294624610223124066310568486191100615951405E-10 */
+  { 0x00000000, 0x3fffffe2, 0x00000000, 0xa3d70a3d, 0x70a3d70a, 0x3d70a3d6, 0x0b0b4236, 0xf96bff9c, 0xf0b874d1, 0xf219ea4e, 0x00000000 }, /* 2.384185791015624999999999999953127893607456139719753368224453857818E-9  */
+  { 0x00000000, 0x3fffffe4, 0x00000000, 0xb21642c8, 0x590b2164, 0x2c8590b2, 0x1654f9d2, 0xbca57758, 0x2633a802, 0xe0d071e7, 0x00000000 }, /* 1.036602517832880434782608695652179134253939464221714906358960224561E-8  */
+  { 0x00000000, 0x3fffffe6, 0x00000000, 0xc30c30c3, 0x0c30c30c, 0x30c30c30, 0xc30c3381, 0x770734ac, 0xf8a9b26e, 0xa5936c42, 0x00000000 }, /* 4.541306268601190476190476190476190488494180345041782263100994102947E-8  */
+  { 0x00000000, 0x3fffffe8, 0x00000000, 0xd79435e5, 0x0d79435e, 0x50d79435, 0xe50d7942, 0xf9527066, 0xd6d897cf, 0x9954d513, 0x00000000 }, /* 2.007735402960526315789473684210526315786709574769114957356948113036E-7  */
+  { 0x00000000, 0x3fffffea, 0x00000000, 0xf0f0f0f0, 0xf0f0f0f0, 0xf0f0f0f0, 0xf0f0f0f0, 0xf0ee7d69, 0x241c517b, 0x74c8ea14, 0x00000000 }, /* 8.975758272058823529411764705882352941176469539959486224602622165507E-7  */
+  { 0x00000000, 0x3fffffed, 0x00000000, 0x88888888, 0x88888888, 0x88888888, 0x88888888, 0x888888f7, 0x9d0f2fe7, 0xa536b487, 0x00000000 }, /* 4.069010416666666666666666666666666666666666667246532260747769981926E-6  */
+  { 0x00000000, 0x3fffffef, 0x00000000, 0x9d89d89d, 0x89d89d89, 0xd89d89d8, 0x9d89d89d, 0x89d89d89, 0xd79f62d8, 0x3d3d0904, 0x00000000 }, /* 1.878004807692307692307692307692307692307692307692299594546648953387E-5  */
+  { 0x00000000, 0x3ffffff1, 0x00000000, 0xba2e8ba2, 0xe8ba2e8b, 0xa2e8ba2e, 0x8ba2e8ba, 0x2e8ba2e8, 0xba2e1675, 0x6af0f724, 0x00000000 }, /* 8.877840909090909090909090909090909090909090909090909032573201228365E-5  */
+  { 0x00000000, 0x3ffffff3, 0x00000000, 0xe38e38e3, 0x8e38e38e, 0x38e38e38, 0xe38e38e3, 0x8e38e38e, 0x38e38e3b, 0x13c92391, 0x00000000 }, /* 4.340277777777777777777777777777777777777777777777777777779480082827E-4  */
+  { 0x00000000, 0x3ffffff6, 0x00000000, 0x92492492, 0x49249249, 0x24924924, 0x92492492, 0x49249249, 0x24924924, 0x926481ea, 0x00000000 }, /* 2.232142857142857142857142857142857142857142857142857142857143116985E-3  */
+  { 0x00000000, 0x3ffffff8, 0x00000000, 0xcccccccc, 0xcccccccc, 0xcccccccc, 0xcccccccc, 0xcccccccc, 0xcccccccc, 0xcccccc5c, 0x00000000 }, /* 1.249999999999999999999999999999999999999999999999999999999999999993E-2  */
+  { 0x00000000, 0x3ffffffb, 0x00000000, 0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa, 0x00000000 }  /* 8.333333333333333333333333333333333333333333333333333333333333333333E-2  */
+};
+
+#else  /* BITS_PER_EMUSHORT != 32 */
+#error ei_ln_002_emu32msb.dfn: ERROR: Failed size of EMUSHORT data type.
+#endif /* BITS_PER_EMUSHORT == 32 */
+
+#endif /* __REAL_EINTERNAL_LN_002_32MSB */