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, 84 insertions, 0 deletions
diff --git a/mpu/math/atan2/emu00128/ei_atan2_001_emu32lsb.dfn b/mpu/math/atan2/emu00128/ei_atan2_001_emu32lsb.dfn
new file mode 100644
index 0000000..c4c34df
--- /dev/null
+++ b/mpu/math/atan2/emu00128/ei_atan2_001_emu32lsb.dfn
@@ -0,0 +1,48 @@
+
+#ifndef   __REAL_EINTERNAL_ATAN2_001_32LSB
+#define   __REAL_EINTERNAL_ATAN2_001_32LSB
+
+#if BITS_PER_EMUSHORT == 32
+
+#define N_ATAN2_A128  29
+
+static EMUSHORT _ei_atan2__A_128_[N_ATAN2_A128][NPIR_128] =
+{
+/*   lgw         S i g n i f i c a n d               hgw         Exp         Sign     */
+/*  ==========  ==================================  ==========  ==========  ==========*/
+  { 0x00000000, 0x7c8f63e7, 0x2f4f5498, 0xc4207e7e, 0x00000000, 0x3ffffff5, 0x00000000 }, /*  1.496329728154161892521025600E-3 */
+  { 0x00000000, 0xb236543d, 0xa97c852a, 0xbf4a3ffa, 0x00000000, 0x3ffffff7, 0xffffffff }, /* -5.837708701914482439319681785E-3 */
+  { 0x00000000, 0x02bc5b41, 0x517d2fd3, 0xbdaf447f, 0x00000000, 0x3ffffff8, 0x00000000 }, /*  1.157743157570918428675530202E-2 */
+  { 0x00000000, 0x74988c4f, 0x8064c531, 0x84bf9231, 0x00000000, 0x3ffffff9, 0xffffffff }, /* -1.620462945357967424596438385E-2 */
+  { 0x00000000, 0x390bad63, 0x736758a8, 0x9aa9599f, 0x00000000, 0x3ffffff9, 0x00000000 }, /*  1.887958054031184066588763782E-2 */
+  { 0x00000000, 0x69226286, 0xc2a89bb2, 0xa63cdbf2, 0x00000000, 0x3ffffff9, 0xffffffff }, /* -2.029269179009414261106513629E-2 */
+  { 0x00000000, 0xfa93cafa, 0x6d4a76f6, 0xae48500f, 0x00000000, 0x3ffffff9, 0x00000000 }, /*  2.127471577424816126035108446E-2 */
+  { 0x00000000, 0xb12117b9, 0x19eab3a9, 0xb612fb10, 0x00000000, 0x3ffffff9, 0xffffffff }, /* -2.222584758493203491803081636E-2 */
+  { 0x00000000, 0x1841c11d, 0x882357ff, 0xbe849400, 0x00000000, 0x3ffffff9, 0x00000000 }, /*  2.325657755523417510714468204E-2 */
+  { 0x00000000, 0xa361a40f, 0x5fe5a911, 0xc7ce1f3d, 0x00000000, 0x3ffffff9, 0xffffffff }, /* -2.439027883064844419995639335E-2 */
+  { 0x00000000, 0xaa57caca, 0x626e181d, 0xd20d1ac4, 0x00000000, 0x3ffffff9, 0x00000000 }, /*  2.564101436571576344588076081E-2 */
+  { 0x00000000, 0x8a50e2cb, 0x21fb7a74, 0xdd67c79b, 0x00000000, 0x3ffffff9, 0xffffffff }, /* -2.702702508491888514949461674E-2 */
+  { 0x00000000, 0xaaf179db, 0x4f756110, 0xea0ea0e7, 0x00000000, 0x3ffffff9, 0x00000000 }, /*  2.857142855144327632916696898E-2 */
+  { 0x00000000, 0x9e1ce640, 0x1c32e10d, 0xf83e0f87, 0x00000000, 0x3ffffff9, 0xffffffff }, /* -3.030303032654156670955708734E-2 */
+  { 0x00000000, 0xda5fcfeb, 0x318b527d, 0x84210842, 0x00000000, 0x3ffffffa, 0x00000000 }, /*  3.225806451800646229185803935E-2 */
+  { 0x00000000, 0xbebcdd5b, 0xd1f5c1d6, 0x8d3dcb08, 0x00000000, 0x3ffffffa, 0xffffffff }, /* -3.448275862058153444400503748E-2 */
+  { 0x00000000, 0x3bc73120, 0x09208777, 0x97b425ed, 0x00000000, 0x3ffffffa, 0x00000000 }, /*  3.703703703701689090868253161E-2 */
+  { 0x00000000, 0x87adedb7, 0x70a35130, 0xa3d70a3d, 0x00000000, 0x3ffffffa, 0xffffffff }, /* -3.999999999999988390325866793E-2 */
+  { 0x00000000, 0xb20fed28, 0x590b9c98, 0xb21642c8, 0x00000000, 0x3ffffffa, 0x00000000 }, /*  4.347826086956532425474836688E-2 */
+  { 0x00000000, 0x898cdd44, 0x0c30c70e, 0xc30c30c3, 0x00000000, 0x3ffffffa, 0xffffffff }, /* -4.761904761904762252501736713E-2 */
+  { 0x00000000, 0x80eac7b6, 0x0d794300, 0xd79435e5, 0x00000000, 0x3ffffffa, 0x00000000 }, /*  5.263157894736842073478345817E-2 */
+  { 0x00000000, 0x44463d44, 0xf0f0f0ec, 0xf0f0f0f0, 0x00000000, 0x3ffffffa, 0xffffffff }, /* -5.882352941176470586651518790E-2 */
+  { 0x00000000, 0x9c87defb, 0x88888888, 0x88888888, 0x00000000, 0x3ffffffb, 0x00000000 }, /*  6.666666666666666666719599378E-2 */
+  { 0x00000000, 0xd9e1d943, 0x89d89d89, 0x9d89d89d, 0x00000000, 0x3ffffffb, 0xffffffff }, /* -7.692307692307692307695660981E-2 */
+  { 0x00000000, 0xa2e439f8, 0xe8ba2e8b, 0xba2e8ba2, 0x00000000, 0x3ffffffb, 0x00000000 }, /*  9.090909090909090909090862553E-2 */
+  { 0x00000000, 0x38e33b21, 0x8e38e38e, 0xe38e38e3, 0x00000000, 0x3ffffffb, 0xffffffff }, /* -1.111111111111111111111110775E-1 */
+  { 0x00000000, 0x24924962, 0x49249249, 0x92492492, 0x00000000, 0x3ffffffc, 0x00000000 }, /*  1.428571428571428571428571431E-1 */
+  { 0x00000000, 0xccccccd0, 0xcccccccc, 0xcccccccc, 0x00000000, 0x3ffffffc, 0xffffffff }, /* -2.000000000000000000000000000E-1 */
+  { 0x00000000, 0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa, 0x00000000, 0x3ffffffd, 0x00000000 }  /*  3.333333333333333333333333333E-1 */
+};
+
+#else  /* BITS_PER_EMUSHORT != 32 */
+#error ei_atan2_001_emu32lsb.dfn: ERROR: Failed size of EMUSHORT data type.
+#endif /* BITS_PER_EMUSHORT == 32 */
+
+#endif /* __REAL_EINTERNAL_ATAN2_001_32LSB */
diff --git a/mpu/math/atan2/emu00128/ei_atan2_001_emu32msb.dfn b/mpu/math/atan2/emu00128/ei_atan2_001_emu32msb.dfn
new file mode 100644
index 0000000..5a4e37d
--- /dev/null
+++ b/mpu/math/atan2/emu00128/ei_atan2_001_emu32msb.dfn
@@ -0,0 +1,48 @@
+
+#ifndef   __REAL_EINTERNAL_ATAN2_001_32MSB
+#define   __REAL_EINTERNAL_ATAN2_001_32MSB
+
+#if BITS_PER_EMUSHORT == 32
+
+#define N_ATAN2_A128  29
+
+static EMUSHORT _ei_atan2__A_128_[N_ATAN2_A128][NPIR_128] =
+{
+/*   Sign        Exp         hgw         S i g n i f i c a n d               lgw      */
+/*  ==========  ==========  ==========  ==================================  ==========*/
+  { 0x00000000, 0x3ffffff5, 0x00000000, 0xc4207e7e, 0x2f4f5498, 0x7c8f63e7, 0x00000000 }, /*  1.496329728154161892521025600E-3 */
+  { 0xffffffff, 0x3ffffff7, 0x00000000, 0xbf4a3ffa, 0xa97c852a, 0xb236543d, 0x00000000 }, /* -5.837708701914482439319681785E-3 */
+  { 0x00000000, 0x3ffffff8, 0x00000000, 0xbdaf447f, 0x517d2fd3, 0x02bc5b41, 0x00000000 }, /*  1.157743157570918428675530202E-2 */
+  { 0xffffffff, 0x3ffffff9, 0x00000000, 0x84bf9231, 0x8064c531, 0x74988c4f, 0x00000000 }, /* -1.620462945357967424596438385E-2 */
+  { 0x00000000, 0x3ffffff9, 0x00000000, 0x9aa9599f, 0x736758a8, 0x390bad63, 0x00000000 }, /*  1.887958054031184066588763782E-2 */
+  { 0xffffffff, 0x3ffffff9, 0x00000000, 0xa63cdbf2, 0xc2a89bb2, 0x69226286, 0x00000000 }, /* -2.029269179009414261106513629E-2 */
+  { 0x00000000, 0x3ffffff9, 0x00000000, 0xae48500f, 0x6d4a76f6, 0xfa93cafa, 0x00000000 }, /*  2.127471577424816126035108446E-2 */
+  { 0xffffffff, 0x3ffffff9, 0x00000000, 0xb612fb10, 0x19eab3a9, 0xb12117b9, 0x00000000 }, /* -2.222584758493203491803081636E-2 */
+  { 0x00000000, 0x3ffffff9, 0x00000000, 0xbe849400, 0x882357ff, 0x1841c11d, 0x00000000 }, /*  2.325657755523417510714468204E-2 */
+  { 0xffffffff, 0x3ffffff9, 0x00000000, 0xc7ce1f3d, 0x5fe5a911, 0xa361a40f, 0x00000000 }, /* -2.439027883064844419995639335E-2 */
+  { 0x00000000, 0x3ffffff9, 0x00000000, 0xd20d1ac4, 0x626e181d, 0xaa57caca, 0x00000000 }, /*  2.564101436571576344588076081E-2 */
+  { 0xffffffff, 0x3ffffff9, 0x00000000, 0xdd67c79b, 0x21fb7a74, 0x8a50e2cb, 0x00000000 }, /* -2.702702508491888514949461674E-2 */
+  { 0x00000000, 0x3ffffff9, 0x00000000, 0xea0ea0e7, 0x4f756110, 0xaaf179db, 0x00000000 }, /*  2.857142855144327632916696898E-2 */
+  { 0xffffffff, 0x3ffffff9, 0x00000000, 0xf83e0f87, 0x1c32e10d, 0x9e1ce640, 0x00000000 }, /* -3.030303032654156670955708734E-2 */
+  { 0x00000000, 0x3ffffffa, 0x00000000, 0x84210842, 0x318b527d, 0xda5fcfeb, 0x00000000 }, /*  3.225806451800646229185803935E-2 */
+  { 0xffffffff, 0x3ffffffa, 0x00000000, 0x8d3dcb08, 0xd1f5c1d6, 0xbebcdd5b, 0x00000000 }, /* -3.448275862058153444400503748E-2 */
+  { 0x00000000, 0x3ffffffa, 0x00000000, 0x97b425ed, 0x09208777, 0x3bc73120, 0x00000000 }, /*  3.703703703701689090868253161E-2 */
+  { 0xffffffff, 0x3ffffffa, 0x00000000, 0xa3d70a3d, 0x70a35130, 0x87adedb7, 0x00000000 }, /* -3.999999999999988390325866793E-2 */
+  { 0x00000000, 0x3ffffffa, 0x00000000, 0xb21642c8, 0x590b9c98, 0xb20fed28, 0x00000000 }, /*  4.347826086956532425474836688E-2 */
+  { 0xffffffff, 0x3ffffffa, 0x00000000, 0xc30c30c3, 0x0c30c70e, 0x898cdd44, 0x00000000 }, /* -4.761904761904762252501736713E-2 */
+  { 0x00000000, 0x3ffffffa, 0x00000000, 0xd79435e5, 0x0d794300, 0x80eac7b6, 0x00000000 }, /*  5.263157894736842073478345817E-2 */
+  { 0xffffffff, 0x3ffffffa, 0x00000000, 0xf0f0f0f0, 0xf0f0f0ec, 0x44463d44, 0x00000000 }, /* -5.882352941176470586651518790E-2 */
+  { 0x00000000, 0x3ffffffb, 0x00000000, 0x88888888, 0x88888888, 0x9c87defb, 0x00000000 }, /*  6.666666666666666666719599378E-2 */
+  { 0xffffffff, 0x3ffffffb, 0x00000000, 0x9d89d89d, 0x89d89d89, 0xd9e1d943, 0x00000000 }, /* -7.692307692307692307695660981E-2 */
+  { 0x00000000, 0x3ffffffb, 0x00000000, 0xba2e8ba2, 0xe8ba2e8b, 0xa2e439f8, 0x00000000 }, /*  9.090909090909090909090862553E-2 */
+  { 0xffffffff, 0x3ffffffb, 0x00000000, 0xe38e38e3, 0x8e38e38e, 0x38e33b21, 0x00000000 }, /* -1.111111111111111111111110775E-1 */
+  { 0x00000000, 0x3ffffffc, 0x00000000, 0x92492492, 0x49249249, 0x24924962, 0x00000000 }, /*  1.428571428571428571428571431E-1 */
+  { 0xffffffff, 0x3ffffffc, 0x00000000, 0xcccccccc, 0xcccccccc, 0xccccccd0, 0x00000000 }, /* -2.000000000000000000000000000E-1 */
+  { 0x00000000, 0x3ffffffd, 0x00000000, 0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa, 0x00000000 }  /*  3.333333333333333333333333333E-1 */
+};
+
+#else  /* BITS_PER_EMUSHORT != 32 */
+#error ei_atan2_001_emu32msb.dfn: ERROR: Failed size of EMUSHORT data type.
+#endif /* BITS_PER_EMUSHORT == 32 */
+
+#endif /* __REAL_EINTERNAL_ATAN2_001_32MSB */