OSDN Git Service

2009-07-17 Chris Sutcliffe <ir0nh34d@users.sourceforge.net>
authorironhead <ironhead>
Sat, 18 Jul 2009 01:39:51 +0000 (01:39 +0000)
committerironhead <ironhead>
Sat, 18 Jul 2009 01:39:51 +0000 (01:39 +0000)
        * mingwex/math/cephes_mconf.h mingwex/math/erfl.c mingwex/math/lgamma.c
        mingwex/math/lgammal.c mingwex/math/powl.c mingwex/math/sinhl.c
        mingwex/math/tanhl.c mingwex/math/tgamma.c mingwex/math/tgammal.c: Based on
        the fixes from the mingw-w64 code tree, fixed strict-aliasing issues.

winsup/mingw/ChangeLog
winsup/mingw/mingwex/math/cephes_mconf.h
winsup/mingw/mingwex/math/erfl.c
winsup/mingw/mingwex/math/lgamma.c
winsup/mingw/mingwex/math/lgammal.c
winsup/mingw/mingwex/math/powl.c
winsup/mingw/mingwex/math/sinhl.c
winsup/mingw/mingwex/math/tanhl.c
winsup/mingw/mingwex/math/tgamma.c
winsup/mingw/mingwex/math/tgammal.c

index 320383c..d5313bc 100644 (file)
@@ -1,3 +1,10 @@
+2009-07-17  Chris Sutcliffe  <ir0nh34d@users.sourceforge.net>
+
+       * mingwex/math/cephes_mconf.h mingwex/math/erfl.c mingwex/math/lgamma.c
+       mingwex/math/lgammal.c mingwex/math/powl.c mingwex/math/sinhl.c
+       mingwex/math/tanhl.c mingwex/math/tgamma.c mingwex/math/tgammal.c: Based on
+       the fixes from the mingw-w64 code tree, fixed strict-aliasing issues.
+
 2009-07-12  Chris Sutcliffe  <ir0nh34d@users.sourceforge.net>
 
        * mingwex/stdio/pformat.c: Fix compiler warnings with GCC 4.4.0.
index 9818c45..3733d98 100644 (file)
 #define DENORMAL 1
 #define VOLATILE
 #define mtherr(fname, code) 
-#define XPD 0,
+#define XPD 0
+
+typedef union uLD { const unsigned short sh[6]; long double ld; } uLD;
+typedef union uD { const unsigned short sh[4]; double d; } uD;
 
 #define _CEPHES_USE_ERRNO
 
@@ -163,16 +166,17 @@ Direct inquiries to 30 Frost Street, Cambridge, MA 02140
  */
 static  __inline__ double polevl( x, p, n )
 double x;
-const void *p;
+const uD *p;
 int n;
 {
 register double y;
-register double *P = (double *)p;
 
-y = *P++;
+y = p->d;
+p++;
 do
        {
-       y = y * x + *P++;
+       y = y * x + p->d;
+  p++;
        }
 while( --n );
 return(y);
@@ -185,17 +189,18 @@ return(y);
  */
 static __inline__  double p1evl( x, p, n )
 double x;
-const void *p;
+const uD *p;
 int n;
 {
 register double y;
-register double *P = (double *)p;
 
 n -= 1;
-y = x + *P++;
+y = x + p->d;
+p++;
 do
        {
-       y = y * x + *P++;
+       y = y * x + p->d;
+  p++;
        }
 while( --n );
 return( y );
@@ -259,16 +264,17 @@ Direct inquiries to 30 Frost Street, Cambridge, MA 02140
  */
 static  __inline__ long double polevll( x, p, n )
 long double x;
-const void *p;
+const uLD *p;
 int n;
 {
 register long double y;
-register long double *P = (long double *)p;
 
-y = *P++;
+y = p->ld;
+p++;
 do
        {
-       y = y * x + *P++;
+       y = y * x + p->ld;
+  p++;
        }
 while( --n );
 return(y);
@@ -281,17 +287,18 @@ return(y);
  */
 static __inline__ long double p1evll( x, p, n )
 long double x;
-const void *p;
+const uLD *p;
 int n;
 {
 register long double y;
-register long double *P = (long double *)p;
 
 n -= 1;
-y = x + *P++;
+y = x + p->ld;
+p++;
 do
        {
-       y = y * x + *P++;
+       y = y * x + p->ld;
+  p++;
        }
 while( --n );
 return( y );
index ac50d98..3f9b2b9 100755 (executable)
@@ -105,74 +105,71 @@ Copyright 1984, 1995 by Stephen L. Moshier
    1/8 <= 1/x <= 1
    Peak relative error 5.8e-21  */
 
-static const unsigned short P[] = {
-0x4bf0,0x9ad8,0x7a03,0x86c7,0x401d, XPD
-0xdf23,0xd843,0x4032,0x8881,0x401e, XPD
-0xd025,0xcfd5,0x8494,0x88d3,0x401e, XPD
-0xb6d0,0xc92b,0x5417,0xacb1,0x401d, XPD
-0xada8,0x356a,0x4982,0x94a6,0x401c, XPD
-0x4e13,0xcaee,0x9e31,0xb258,0x401a, XPD
-0x5840,0x554d,0x37a3,0x9239,0x4018, XPD
-0x3b58,0x3da2,0xaf02,0x9780,0x4015, XPD
-0x0144,0x489e,0xbe68,0x9c31,0x4011, XPD
-0x333b,0xd9e6,0xd404,0x986f,0xbfee, XPD
+static const uLD P[] = {
+{ { 0x4bf0,0x9ad8,0x7a03,0x86c7,0x401d, XPD } },
+{ { 0xdf23,0xd843,0x4032,0x8881,0x401e, XPD } },
+{ { 0xd025,0xcfd5,0x8494,0x88d3,0x401e, XPD } },
+{ { 0xb6d0,0xc92b,0x5417,0xacb1,0x401d, XPD } },
+{ { 0xada8,0x356a,0x4982,0x94a6,0x401c, XPD } },
+{ { 0x4e13,0xcaee,0x9e31,0xb258,0x401a, XPD } },
+{ { 0x5840,0x554d,0x37a3,0x9239,0x4018, XPD } },
+{ { 0x3b58,0x3da2,0xaf02,0x9780,0x4015, XPD } },
+{ { 0x0144,0x489e,0xbe68,0x9c31,0x4011, XPD } },
+{ { 0x333b,0xd9e6,0xd404,0x986f,0xbfee, XPD } }
 };
-static const unsigned short Q[] = {
-/* 0x0000,0x0000,0x0000,0x8000,0x3fff, XPD */
-0x0e43,0x302d,0x79ed,0x86c7,0x401d, XPD
-0xf817,0x9128,0xc0f8,0xd48b,0x401e, XPD
-0x8eae,0x8dad,0x6eb4,0x9aa2,0x401f, XPD
-0x00e7,0x7595,0xcd06,0x88bb,0x401f, XPD
-0x4991,0xcfda,0x52f1,0xa2a9,0x401e, XPD
-0xc39d,0xe415,0xc43d,0x87c0,0x401d, XPD
-0xa75d,0x436f,0x30dd,0xa027,0x401b, XPD
-0xc4cb,0x305a,0xbf78,0x8220,0x4019, XPD
-0x3708,0x33b1,0x07fa,0x8644,0x4016, XPD
-0x24fa,0x96f6,0x7153,0x8a6c,0x4012, XPD
+static const uLD Q[] = {
+{ { 0X0e43,0x302d,0x79ed,0x86c7,0x401d, XPD } },
+{ { 0xf817,0x9128,0xc0f8,0xd48b,0x401e, XPD } },
+{ { 0x8eae,0x8dad,0x6eb4,0x9aa2,0x401f, XPD } },
+{ { 0x00e7,0x7595,0xcd06,0x88bb,0x401f, XPD } },
+{ { 0x4991,0xcfda,0x52f1,0xa2a9,0x401e, XPD } },
+{ { 0xc39d,0xe415,0xc43d,0x87c0,0x401d, XPD } },
+{ { 0xa75d,0x436f,0x30dd,0xa027,0x401b, XPD } },
+{ { 0xc4cb,0x305a,0xbf78,0x8220,0x4019, XPD } },
+{ { 0x3708,0x33b1,0x07fa,0x8644,0x4016, XPD } },
+{ { 0x24fa,0x96f6,0x7153,0x8a6c,0x4012, XPD } }
 };
 
 /* erfc(x) = exp(-x^2) 1/x R(1/x^2) / S(1/x^2)
    1/128 <= 1/x < 1/8
    Peak relative error 1.9e-21  */
 
-static const unsigned short R[] = {
-0x260a,0xab95,0x2fc7,0xe7c4,0x4000, XPD
-0x4761,0x613e,0xdf6d,0xe58e,0x4001, XPD
-0x0615,0x4b00,0x575f,0xdc7b,0x4000, XPD
-0x521d,0x8527,0x3435,0x8dc2,0x3ffe, XPD
-0x22cf,0xc711,0x6c5b,0xdcfb,0x3ff9, XPD
+static const uLD R[] = {
+{ { 0x260a,0xab95,0x2fc7,0xe7c4,0x4000, XPD } },
+{ { 0x4761,0x613e,0xdf6d,0xe58e,0x4001, XPD } },
+{ { 0x0615,0x4b00,0x575f,0xdc7b,0x4000, XPD } },
+{ { 0x521d,0x8527,0x3435,0x8dc2,0x3ffe, XPD } },
+{ { 0x22cf,0xc711,0x6c5b,0xdcfb,0x3ff9, XPD } }
 };
-static const unsigned short S[] = {
-/* 0x0000,0x0000,0x0000,0x8000,0x3fff, XPD */
-0x5de6,0x17d7,0x54d6,0xaba9,0x4002, XPD
-0x55d5,0xd300,0xe71e,0xf564,0x4002, XPD
-0xb611,0x8f76,0xf020,0xd255,0x4001, XPD
-0x3684,0x3798,0xb793,0x80b0,0x3fff, XPD
-0xf5af,0x2fb2,0x1e57,0xc3d7,0x3ffa, XPD
+static const uLD S[] = {
+{ { 0x5de6,0x17d7,0x54d6,0xaba9,0x4002, XPD } },
+{ { 0x55d5,0xd300,0xe71e,0xf564,0x4002, XPD } },
+{ { 0xb611,0x8f76,0xf020,0xd255,0x4001, XPD } },
+{ { 0x3684,0x3798,0xb793,0x80b0,0x3fff, XPD } },
+{ { 0xf5af,0x2fb2,0x1e57,0xc3d7,0x3ffa, XPD } }
 };
 
 /* erf(x)  = x T(x^2)/U(x^2)
    0 <= x <= 1
    Peak relative error 7.6e-23  */
 
-static const unsigned short T[] = {
-0xfd7a,0x3a1a,0x705b,0xe0c4,0x3ffb, XPD
-0x3128,0xc337,0x3716,0xace5,0x4001, XPD
-0x9517,0x4e93,0x540e,0x8f97,0x4007, XPD
-0x6118,0x6059,0x9093,0xa757,0x400a, XPD
-0xb954,0xa987,0xc60c,0xbc83,0x400e, XPD
-0x7a56,0xe45a,0xa4bd,0x975b,0x4010, XPD
-0xc446,0x6bab,0x0b2a,0x86d0,0x4013, XPD
+static const uLD T[] = {
+{ { 0xfd7a,0x3a1a,0x705b,0xe0c4,0x3ffb, XPD } },
+{ { 0x3128,0xc337,0x3716,0xace5,0x4001, XPD } },
+{ { 0x9517,0x4e93,0x540e,0x8f97,0x4007, XPD } },
+{ { 0x6118,0x6059,0x9093,0xa757,0x400a, XPD } },
+{ { 0xb954,0xa987,0xc60c,0xbc83,0x400e, XPD } },
+{ { 0x7a56,0xe45a,0xa4bd,0x975b,0x4010, XPD } },
+{ { 0xc446,0x6bab,0x0b2a,0x86d0,0x4013, XPD } }
 };
 
-static const unsigned short U[] = {
-/* 0x0000,0x0000,0x0000,0x8000,0x3fff, XPD */
-0x3453,0x1f8e,0xf688,0xb507,0x4004, XPD
-0x71ac,0xb12f,0x21ca,0xf2e2,0x4008, XPD
-0xffe8,0x9cac,0x3b84,0xc2ac,0x400c, XPD
-0x481d,0x445b,0xc807,0xc232,0x400f, XPD
-0x9ad5,0x1aef,0x45b1,0xe25e,0x4011, XPD
-0x71a7,0x1cad,0x012e,0xeef3,0x4012, XPD
+static const uLD U[] = {
+{ { 0x3453,0x1f8e,0xf688,0xb507,0x4004, XPD } },
+{ { 0x71ac,0xb12f,0x21ca,0xf2e2,0x4008, XPD } },
+{ { 0xffe8,0x9cac,0x3b84,0xc2ac,0x400c, XPD } },
+{ { 0x481d,0x445b,0xc807,0xc232,0x400f, XPD } },
+{ { 0x9ad5,0x1aef,0x45b1,0xe25e,0x4011, XPD } },
+{ { 0x71a7,0x1cad,0x012e,0xeef3,0x4012, XPD } }
 };
 
 /*                                                     expx2l.c
index b569f9a..e4a67bc 100644 (file)
@@ -164,29 +164,28 @@ static const unsigned short LPI[4] = {
 #endif
 
 #ifdef IBMPC
-static const unsigned short A[] = {
-0x6661,0x2733,0x9850,0x3f4a,
-0xe943,0xb580,0x7fbd,0xbf43,
-0x5ebb,0x20dc,0x019f,0x3f4a,
-0xa5a1,0x16b0,0xc16c,0xbf66,
-0x554b,0x5555,0x5555,0x3fb5
+static const uD A[] = {
+{ { 0x6661,0x2733,0x9850,0x3f4a } },
+{ { 0xe943,0xb580,0x7fbd,0xbf43 } },
+{ { 0x5ebb,0x20dc,0x019f,0x3f4a } },
+{ { 0xa5a1,0x16b0,0xc16c,0xbf66 } },
+{ { 0x554b,0x5555,0x5555,0x3fb5 } }
 };
-static const unsigned short B[] = {
-0x6761,0x8ff3,0x8901,0xc095,
-0xb93e,0x355b,0xf234,0xc0e2,
-0x89e5,0xf890,0x3d73,0xc114,
-0xdb51,0xf994,0xbc82,0xc131,
-0xf20b,0x0219,0x4589,0xc13a,
-0x055e,0x5418,0x0c67,0xc12a
+static const uD B[] = {
+{ { 0x6761,0x8ff3,0x8901,0xc095 } },
+{ { 0xb93e,0x355b,0xf234,0xc0e2 } },
+{ { 0x89e5,0xf890,0x3d73,0xc114 } },
+{ { 0xdb51,0xf994,0xbc82,0xc131 } },
+{ { 0xf20b,0x0219,0x4589,0xc13a } },
+{ { 0x055e,0x5418,0x0c67,0xc12a } }
 };
-static const unsigned short C[] = {
-/*0x0000,0x0000,0x0000,0x3ff0,*/
-0x12b2,0x1cf3,0xfd0d,0xc075,
-0xd757,0x7b89,0xaa0d,0xc0d0,
-0x4c9b,0xb974,0xeb84,0xc10a,
-0x0043,0x7195,0x6286,0xc131,
-0xf34c,0x892f,0x5255,0xc143,
-0xe14a,0x6a11,0xce4b,0xc13e
+static const uD C[] = {
+{ { 0x12b2,0x1cf3,0xfd0d,0xc075 } },
+{ { 0xd757,0x7b89,0xaa0d,0xc0d0 } },
+{ { 0x4c9b,0xb974,0xeb84,0xc10a } },
+{ { 0x0043,0x7195,0x6286,0xc131 } },
+{ { 0xf34c,0x892f,0x5255,0xc143 } },
+{ { 0xe14a,0x6a11,0xce4b,0xc13e } }
 };
 /* log( sqrt( 2*pi ) ) */
 static const union
index d2b306a..54631fc 100644 (file)
@@ -97,16 +97,16 @@ static long double S[9] = {
 };
 #endif
 #if IBMPC
-static const unsigned short S[] = {
-0xbaeb,0xd6d3,0x25e5,0x9c7e,0xbff5, XPD
-0xfe9a,0xceb4,0xc74e,0xec9a,0x3ff7, XPD
-0x9225,0xdfef,0xb0e9,0x9da5,0xbff8, XPD
-0x10b0,0xec17,0x87dc,0xacd7,0xbffa, XPD
-0x6b8d,0x7515,0x1905,0xaa89,0x3ffc, XPD
-0xf183,0x126b,0xf47d,0xac0a,0xbffa, XPD
-0x7bf6,0x57d1,0xa013,0xa7e7,0xbffe, XPD
-0xc7a9,0x7db0,0x67e3,0x93c4,0x3ffe, XPD
-0x0000,0x0000,0x0000,0x8000,0x3fff, XPD
+static const uLD S[] = {
+{ { 0xbaeb,0xd6d3,0x25e5,0x9c7e,0xbff5, XPD } },
+{ { 0xfe9a,0xceb4,0xc74e,0xec9a,0x3ff7, XPD } },
+{ { 0x9225,0xdfef,0xb0e9,0x9da5,0xbff8, XPD } },
+{ { 0x10b0,0xec17,0x87dc,0xacd7,0xbffa, XPD } },
+{ { 0x6b8d,0x7515,0x1905,0xaa89,0x3ffc, XPD } },
+{ { 0xf183,0x126b,0xf47d,0xac0a,0xbffa, XPD } },
+{ { 0x7bf6,0x57d1,0xa013,0xa7e7,0xbffe, XPD } },
+{ { 0xc7a9,0x7db0,0x67e3,0x93c4,0x3ffe, XPD } },
+{ { 0x0000,0x0000,0x0000,0x8000,0x3fff, XPD } }
 };
 #endif
 #if MIEEE
@@ -137,16 +137,16 @@ static long double SN[9] = {
 };
 #endif
 #if IBMPC
-static const unsigned SN[] = {
-0x5dd1,0x02de,0xb9f7,0x948d,0x3ff5, XPD
-0x989b,0xdd68,0xc5f1,0xec9c,0x3ff7, XPD
-0x2ca1,0x18f0,0x386f,0x9da5,0x3ff8, XPD
-0x783f,0x41dd,0x87d1,0xacd7,0xbffa, XPD
-0x7a5b,0xd76d,0x1905,0xaa89,0xbffc, XPD
-0x7f64,0x1234,0xf47d,0xac0a,0xbffa, XPD
-0x5e26,0x57d1,0xa013,0xa7e7,0x3ffe, XPD
-0xc7aa,0x7db0,0x67e3,0x93c4,0x3ffe, XPD
-0x0000,0x0000,0x0000,0x8000,0xbfff, XPD
+static const uLD SN[] = {
+{ { 0x5dd1,0x02de,0xb9f7,0x948d,0x3ff5, XPD } },
+{ { 0x989b,0xdd68,0xc5f1,0xec9c,0x3ff7, XPD } },
+{ { 0x2ca1,0x18f0,0x386f,0x9da5,0x3ff8, XPD } },
+{ { 0x783f,0x41dd,0x87d1,0xacd7,0xbffa, XPD } },
+{ { 0x7a5b,0xd76d,0x1905,0xaa89,0xbffc, XPD } },
+{ { 0x7f64,0x1234,0xf47d,0xac0a,0xbffa, XPD } },
+{ { 0x5e26,0x57d1,0xa013,0xa7e7,0x3ffe, XPD } },
+{ { 0xc7aa,0x7db0,0x67e3,0x93c4,0x3ffe, XPD } },
+{ { 0x0000,0x0000,0x0000,0x8000,0xbfff, XPD } }
 };
 #endif
 #if MIEEE
@@ -186,14 +186,14 @@ static long double A[7] = {
 };
 #endif
 #if IBMPC
-static const unsigned short A[] = {
-0xd984,0xcc08,0x91c2,0xa012,0x3ff7, XPD
-0x3d91,0x0304,0x3da1,0xf685,0xbff5, XPD
-0x3bdc,0xaad1,0xd492,0xdc88,0x3ff4, XPD
-0x8b20,0x9fce,0x844e,0x9c09,0xbff4, XPD
-0xf8f2,0x30e5,0x0092,0xd00d,0x3ff4, XPD
-0x4d88,0x03a8,0x60b6,0xb60b,0xbff6, XPD
-0x9fcc,0xaaaa,0xaaaa,0xaaaa,0x3ffb, XPD
+static const uLD A[] = {
+{ { 0xd984,0xcc08,0x91c2,0xa012,0x3ff7, XPD } },
+{ { 0x3d91,0x0304,0x3da1,0xf685,0xbff5, XPD } },
+{ { 0x3bdc,0xaad1,0xd492,0xdc88,0x3ff4, XPD } },
+{ { 0x8b20,0x9fce,0x844e,0x9c09,0xbff4, XPD } },
+{ { 0xf8f2,0x30e5,0x0092,0xd00d,0x3ff4, XPD } },
+{ { 0x4d88,0x03a8,0x60b6,0xb60b,0xbff6, XPD } },
+{ { 0x9fcc,0xaaaa,0xaaaa,0xaaaa,0x3ffb, XPD } }
 };
 #endif
 #if MIEEE
@@ -235,24 +235,23 @@ static long double C[7] = {
 };
 #endif
 #if IBMPC
-static const unsigned short B[] = {
-0x9557,0x4995,0x0da1,0x873b,0xc00a, XPD
-0xfe44,0x9af8,0x5b8c,0xaa63,0xc00f, XPD
-0x5aa8,0x7cf5,0x3684,0x86ce,0xc013, XPD
-0x259a,0x258c,0xf206,0xba7f,0xc015, XPD
-0xbe18,0x1ca3,0xc0a0,0xf80a,0xc016, XPD
-0x168f,0x2c42,0x6717,0x98e3,0xc017, XPD
-0x2051,0x9d55,0x92c8,0x876e,0xc016, XPD
+static const uLD B[] = {
+{ { 0x9557,0x4995,0x0da1,0x873b,0xc00a, XPD } },
+{ { 0xfe44,0x9af8,0x5b8c,0xaa63,0xc00f, XPD } },
+{ { 0x5aa8,0x7cf5,0x3684,0x86ce,0xc013, XPD } },
+{ { 0x259a,0x258c,0xf206,0xba7f,0xc015, XPD } },
+{ { 0xbe18,0x1ca3,0xc0a0,0xf80a,0xc016, XPD } },
+{ { 0x168f,0x2c42,0x6717,0x98e3,0xc017, XPD } },
+{ { 0x2051,0x9d55,0x92c8,0x876e,0xc016, XPD } }
 };
-static const unsigned short C[] = {
-/*0x0000,0x0000,0x0000,0x8000,0x3fff, XPD*/
-0xaa77,0xcf2f,0xae76,0x807c,0xc008, XPD
-0xb280,0x0d74,0xb55a,0x84f3,0xc00e, XPD
-0xa505,0xcd30,0x81dc,0x9809,0xc012, XPD
-0x3369,0x4246,0xb8c2,0x92f0,0xc015, XPD
-0x63cf,0x6aee,0xbe6f,0x8837,0xc017, XPD
-0x26bb,0xccc7,0xb009,0xef75,0xc017, XPD
-0x462b,0xbae8,0xab96,0xa02a,0xc017, XPD
+static const uLD C[] = {
+{ { 0xaa77,0xcf2f,0xae76,0x807c,0xc008, XPD } },
+{ { 0xb280,0x0d74,0xb55a,0x84f3,0xc00e, XPD } },
+{ { 0xa505,0xcd30,0x81dc,0x9809,0xc012, XPD } },
+{ { 0x3369,0x4246,0xb8c2,0x92f0,0xc015, XPD } },
+{ { 0x63cf,0x6aee,0xbe6f,0x8837,0xc017, XPD } },
+{ { 0x26bb,0xccc7,0xb009,0xef75,0xc017, XPD } },
+{ { 0x462b,0xbae8,0xab96,0xa02a,0xc017, XPD } }
 };
 #endif
 #if MIEEE
index f85e556..75e6f7d 100644 (file)
@@ -184,85 +184,84 @@ static long double R[] = {
 
 
 #ifdef IBMPC
-static const unsigned short P[] = {
-0xb804,0xa8b7,0xc6f4,0xda6a,0x3ff4, XPD
-0x7de9,0xcf02,0x58c0,0xfae1,0x3ffd, XPD
-0x405a,0x3722,0x67c9,0xe000,0x3fff, XPD
-0xcd99,0x6b43,0x87ca,0xb333,0x3fff, XPD
+static const uLD P[] = {
+{ { 0xb804,0xa8b7,0xc6f4,0xda6a,0x3ff4, XPD } },
+{ { 0x7de9,0xcf02,0x58c0,0xfae1,0x3ffd, XPD } },
+{ { 0x405a,0x3722,0x67c9,0xe000,0x3fff, XPD } },
+{ { 0xcd99,0x6b43,0x87ca,0xb333,0x3fff, XPD } }
 };
-static const unsigned short Q[] = {
-/* 0x0000,0x0000,0x0000,0x8000,0x3fff, */
-0x6307,0xa469,0x3b33,0xa800,0x4001, XPD
-0xfec2,0x62d7,0xa51c,0x8666,0x4002, XPD
-0xda32,0xd072,0xa5d7,0x8666,0x4001, XPD
+static const uLD Q[] = {
+{ { 0x6307,0xa469,0x3b33,0xa800,0x4001, XPD } },
+{ { 0xfec2,0x62d7,0xa51c,0x8666,0x4002, XPD } },
+{ { 0xda32,0xd072,0xa5d7,0x8666,0x4001, XPD } }
 };
-static const unsigned short A[] = {
-0x0000,0x0000,0x0000,0x8000,0x3fff, XPD
-0x033a,0x722a,0xb2db,0xfa83,0x3ffe, XPD
-0xcc2c,0x2486,0x7d15,0xf525,0x3ffe, XPD
-0xf5cb,0xdcda,0xb99b,0xefe4,0x3ffe, XPD
-0x392f,0xdd24,0xc6e7,0xeac0,0x3ffe, XPD
-0x48a8,0x7c83,0x06e7,0xe5b9,0x3ffe, XPD
-0xe111,0x2a94,0xdeec,0xe0cc,0x3ffe, XPD
-0x3755,0xdaf2,0xb797,0xdbfb,0x3ffe, XPD
-0x6af4,0xd69d,0xfcca,0xd744,0x3ffe, XPD
-0xe45a,0xf12a,0x1d91,0xd2a8,0x3ffe, XPD
-0x80e4,0x1f84,0x8c15,0xce24,0x3ffe, XPD
-0x27a3,0x6e2f,0xbd86,0xc9b9,0x3ffe, XPD
-0xdadd,0x5506,0x2a11,0xc567,0x3ffe, XPD
-0x9456,0x6670,0x4cca,0xc12c,0x3ffe, XPD
-0x36bf,0x580c,0xa39f,0xbd08,0x3ffe, XPD
-0x9ee9,0x62fb,0xaf47,0xb8fb,0x3ffe, XPD
-0x6484,0xf9de,0xf333,0xb504,0x3ffe, XPD
-0x2590,0xd2ac,0xf581,0xb123,0x3ffe, XPD
-0x4ac6,0x42a1,0x3eea,0xad58,0x3ffe, XPD
-0x0ef8,0xea7c,0x5ab4,0xa9a1,0x3ffe, XPD
-0x38ea,0xb151,0xd6a9,0xa5fe,0x3ffe, XPD
-0x6819,0x0c49,0x4303,0xa270,0x3ffe, XPD
-0x11ae,0x91a1,0x3260,0x9ef5,0x3ffe, XPD
-0x5539,0xd54e,0x39b9,0x9b8d,0x3ffe, XPD
-0xa96f,0x8db8,0xf051,0x9837,0x3ffe, XPD
-0x0961,0xfef7,0xefa8,0x94f4,0x3ffe, XPD
-0xc336,0xab11,0xd373,0x91c3,0x3ffe, XPD
-0x53c0,0x45cd,0x398b,0x8ea4,0x3ffe, XPD
-0xd6e7,0xea8b,0xc1e3,0x8b95,0x3ffe, XPD
-0x8527,0x92da,0x0e80,0x8898,0x3ffe, XPD
-0x7b15,0xcc48,0xc367,0x85aa,0x3ffe, XPD
-0xa1d7,0xac2b,0x8698,0x82cd,0x3ffe, XPD
-0x0000,0x0000,0x0000,0x8000,0x3ffe, XPD
+static const uLD A[] = {
+{ { 0x0000,0x0000,0x0000,0x8000,0x3fff, XPD } },
+{ { 0x033a,0x722a,0xb2db,0xfa83,0x3ffe, XPD } },
+{ { 0xcc2c,0x2486,0x7d15,0xf525,0x3ffe, XPD } },
+{ { 0xf5cb,0xdcda,0xb99b,0xefe4,0x3ffe, XPD } },
+{ { 0x392f,0xdd24,0xc6e7,0xeac0,0x3ffe, XPD } },
+{ { 0x48a8,0x7c83,0x06e7,0xe5b9,0x3ffe, XPD } },
+{ { 0xe111,0x2a94,0xdeec,0xe0cc,0x3ffe, XPD } },
+{ { 0x3755,0xdaf2,0xb797,0xdbfb,0x3ffe, XPD } },
+{ { 0x6af4,0xd69d,0xfcca,0xd744,0x3ffe, XPD } },
+{ { 0xe45a,0xf12a,0x1d91,0xd2a8,0x3ffe, XPD } },
+{ { 0x80e4,0x1f84,0x8c15,0xce24,0x3ffe, XPD } },
+{ { 0x27a3,0x6e2f,0xbd86,0xc9b9,0x3ffe, XPD } },
+{ { 0xdadd,0x5506,0x2a11,0xc567,0x3ffe, XPD } },
+{ { 0x9456,0x6670,0x4cca,0xc12c,0x3ffe, XPD } },
+{ { 0x36bf,0x580c,0xa39f,0xbd08,0x3ffe, XPD } },
+{ { 0x9ee9,0x62fb,0xaf47,0xb8fb,0x3ffe, XPD } },
+{ { 0x6484,0xf9de,0xf333,0xb504,0x3ffe, XPD } },
+{ { 0x2590,0xd2ac,0xf581,0xb123,0x3ffe, XPD } },
+{ { 0x4ac6,0x42a1,0x3eea,0xad58,0x3ffe, XPD } },
+{ { 0x0ef8,0xea7c,0x5ab4,0xa9a1,0x3ffe, XPD } },
+{ { 0x38ea,0xb151,0xd6a9,0xa5fe,0x3ffe, XPD } },
+{ { 0x6819,0x0c49,0x4303,0xa270,0x3ffe, XPD } },
+{ { 0x11ae,0x91a1,0x3260,0x9ef5,0x3ffe, XPD } },
+{ { 0x5539,0xd54e,0x39b9,0x9b8d,0x3ffe, XPD } },
+{ { 0xa96f,0x8db8,0xf051,0x9837,0x3ffe, XPD } },
+{ { 0x0961,0xfef7,0xefa8,0x94f4,0x3ffe, XPD } },
+{ { 0xc336,0xab11,0xd373,0x91c3,0x3ffe, XPD } },
+{ { 0x53c0,0x45cd,0x398b,0x8ea4,0x3ffe, XPD } },
+{ { 0xd6e7,0xea8b,0xc1e3,0x8b95,0x3ffe, XPD } },
+{ { 0x8527,0x92da,0x0e80,0x8898,0x3ffe, XPD } },
+{ { 0x7b15,0xcc48,0xc367,0x85aa,0x3ffe, XPD } },
+{ { 0xa1d7,0xac2b,0x8698,0x82cd,0x3ffe, XPD } },
+{ { 0x0000,0x0000,0x0000,0x8000,0x3ffe, XPD } }
 };
-static const unsigned short B[] = {
-0x0000,0x0000,0x0000,0x0000,0x0000, XPD
-0x1f87,0xdb30,0x18f5,0xf73a,0x3fbd, XPD
-0xac15,0x3e46,0x2932,0xbf4a,0xbfbc, XPD
-0x7944,0xba66,0xa091,0xcb12,0x3fb9, XPD
-0xff78,0x40b4,0x2ee6,0xe69a,0x3fbc, XPD
-0xc895,0x5069,0xe383,0xee53,0xbfbb, XPD
-0x7cde,0x9376,0x4325,0xf8ab,0x3fbc, XPD
-0xa10c,0x25e0,0xc093,0xaefd,0xbfbd, XPD
-0x7d3e,0xea95,0x1366,0xb2fb,0x3fbd, XPD
-0x5d89,0xeb34,0x5191,0x9301,0x3fbd, XPD
-0x80d9,0xb883,0xfb10,0xe5eb,0x3fbb, XPD
-0x045d,0x288c,0xc1ec,0xbedd,0xbfbd, XPD
-0xeded,0x5c85,0x4630,0x8d5a,0x3fbd, XPD
-0x9d82,0xe5ac,0x8e0a,0xfd6d,0x3fba, XPD
-0x6dfd,0xeb58,0xaf14,0x8373,0xbfb9, XPD
-0xf938,0x7aac,0x91cf,0xe8da,0xbfbc, XPD
-0x0000,0x0000,0x0000,0x0000,0x0000, XPD
+static const uLD B[] = {
+{ { 0x0000,0x0000,0x0000,0x0000,0x0000, XPD } },
+{ { 0x1f87,0xdb30,0x18f5,0xf73a,0x3fbd, XPD } },
+{ { 0xac15,0x3e46,0x2932,0xbf4a,0xbfbc, XPD } },
+{ { 0x7944,0xba66,0xa091,0xcb12,0x3fb9, XPD } },
+{ { 0xff78,0x40b4,0x2ee6,0xe69a,0x3fbc, XPD } },
+{ { 0xc895,0x5069,0xe383,0xee53,0xbfbb, XPD } },
+{ { 0x7cde,0x9376,0x4325,0xf8ab,0x3fbc, XPD } },
+{ { 0xa10c,0x25e0,0xc093,0xaefd,0xbfbd, XPD } },
+{ { 0x7d3e,0xea95,0x1366,0xb2fb,0x3fbd, XPD } },
+{ { 0x5d89,0xeb34,0x5191,0x9301,0x3fbd, XPD } },
+{ { 0x80d9,0xb883,0xfb10,0xe5eb,0x3fbb, XPD } },
+{ { 0x045d,0x288c,0xc1ec,0xbedd,0xbfbd, XPD } },
+{ { 0xeded,0x5c85,0x4630,0x8d5a,0x3fbd, XPD } },
+{ { 0x9d82,0xe5ac,0x8e0a,0xfd6d,0x3fba, XPD } },
+{ { 0x6dfd,0xeb58,0xaf14,0x8373,0xbfb9, XPD } },
+{ { 0xf938,0x7aac,0x91cf,0xe8da,0xbfbc, XPD } },
+{ { 0x0000,0x0000,0x0000,0x0000,0x0000, XPD } }
 };
-static const unsigned short R[] = {
-0xa69b,0x530e,0xee1d,0xfd2a,0x3fee, XPD
-0xc746,0x8e7e,0x5960,0xa182,0x3ff2, XPD
-0x63b6,0xadda,0xfd6a,0xaec3,0x3ff5, XPD
-0xc104,0xfd99,0x5b7c,0x9d95,0x3ff8, XPD
-0xe05e,0x249d,0x46b8,0xe358,0x3ffa, XPD
-0x5d1d,0x162c,0xeffc,0xf5fd,0x3ffc, XPD
-0x79aa,0xd1cf,0x17f7,0xb172,0x3ffe, XPD
+static const uLD R[] = {
+{ { 0xa69b,0x530e,0xee1d,0xfd2a,0x3fee, XPD } },
+{ { 0xc746,0x8e7e,0x5960,0xa182,0x3ff2, XPD } },
+{ { 0x63b6,0xadda,0xfd6a,0xaec3,0x3ff5, XPD } },
+{ { 0xc104,0xfd99,0x5b7c,0x9d95,0x3ff8, XPD } },
+{ { 0xe05e,0x249d,0x46b8,0xe358,0x3ffa, XPD } },
+{ { 0x5d1d,0x162c,0xeffc,0xf5fd,0x3ffc, XPD } },
+{ { 0x79aa,0xd1cf,0x17f7,0xb172,0x3ffe, XPD } }
 };
 
 /* 10 byte sizes versus 12 byte */
-#define douba(k) (*(long double *)(&A[(sizeof( long double )/2)*(k)]))
-#define doubb(k) (*(long double *)(&B[(sizeof( long double )/2)*(k)]))
+#define douba(k) (A[(k)].ld)
+#define doubb(k) (B[(k)].ld)
 #define MEXP (NXT*16384.0L)
 #ifdef DENORMAL
 #define MNEXP (-NXT*(16384.0L+64.0L))
index ca6a370..18ac5da 100644 (file)
@@ -69,18 +69,18 @@ static long double Q[] = {
 #endif
 
 #ifdef IBMPC
-static const unsigned short P[] = {
-0xec6a,0xd942,0xfbb3,0xeb8f,0x3feb, XPD
-0x365e,0xb30a,0xe437,0xda86,0x3ff3, XPD
-0x8890,0x01f6,0x2612,0xfde6,0x3ff9, XPD
-0x0000,0x0000,0x0000,0x8000,0x3fff, XPD
+static const uLD P[] = {
+{ { 0xec6a,0xd942,0xfbb3,0xeb8f,0x3feb, XPD } },
+{ { 0x365e,0xb30a,0xe437,0xda86,0x3ff3, XPD } },
+{ { 0x8890,0x01f6,0x2612,0xfde6,0x3ff9, XPD } },
+{ { 0x0000,0x0000,0x0000,0x8000,0x3fff, XPD } }
 };
-static const unsigned short Q[] = {
-0x4edd,0x4c21,0xad09,0x95ed,0x3fe5, XPD
-0x4376,0x9b70,0xd605,0xc65c,0xbfed, XPD
-0xc8ad,0x5d21,0x3069,0x8aed,0x3ff5, XPD
-0x9c32,0x6374,0x2d4b,0xe98d,0xbffb, XPD
-0x0000,0x0000,0x0000,0xc000,0x4001, XPD
+static const uLD Q[] = {
+{ { 0x4edd,0x4c21,0xad09,0x95ed,0x3fe5, XPD } },
+{ { 0x4376,0x9b70,0xd605,0xc65c,0xbfed, XPD } },
+{ { 0xc8ad,0x5d21,0x3069,0x8aed,0x3ff5, XPD } },
+{ { 0x9c32,0x6374,0x2d4b,0xe98d,0xbffb, XPD } },
+{ { 0x0000,0x0000,0x0000,0xc000,0x4001, XPD } }
 };
 #endif
 
index d5d86d0..a589e51 100644 (file)
@@ -68,17 +68,16 @@ static long double Q[] = {
 #endif
 
 #ifdef IBMPC
-static unsigned short P[] = {
-0xd2a4,0x1b0c,0x8f15,0x8f99,0xbff1, XPD
-0x5959,0x9111,0x9cc7,0xf4e2,0xbffe, XPD
-0xb576,0xef5e,0x6d57,0xa81b,0xc005, XPD
-0xe3be,0xbfbd,0x5cbc,0xa381,0xc009, XPD
+static uLD P[] = {
+{ { 0xd2a4,0x1b0c,0x8f15,0x8f99,0xbff1, XPD } },
+{ { 0x5959,0x9111,0x9cc7,0xf4e2,0xbffe, XPD } },
+{ { 0xb576,0xef5e,0x6d57,0xa81b,0xc005, XPD } },
+{ { 0xe3be,0xbfbd,0x5cbc,0xa381,0xc009, XPD } }
 };
-static unsigned short Q[] = {
-/*0x0000,0x0000,0x0000,0x8000,0x3fff,*/
-0x687f,0xce24,0xdd6c,0xc084,0x4005, XPD
-0x3793,0xc95f,0xfa2f,0xe3b9,0x4009, XPD
-0xd5a2,0x1f9c,0x0b1b,0xf542,0x400a, XPD
+static uLD Q[] = {
+{ { 0x687f,0xce24,0xdd6c,0xc084,0x4005, XPD } },
+{ { 0x3793,0xc95f,0xfa2f,0xe3b9,0x4009, XPD } },
+{ { 0xd5a2,0x1f9c,0x0b1b,0xf542,0x400a, XPD } }
 };
 #endif
 
index b48ac5c..2e60c9e 100644 (file)
@@ -108,24 +108,24 @@ static const unsigned short Q[] = {
 #endif
 
 #ifdef IBMPC
-static const unsigned short P[] = {
-0x2153,0x3998,0xfcb8,0x3f24,
-0xbfab,0xe686,0x84e3,0x3f53,
-0x14b0,0xe9db,0x57cd,0x3f85,
-0x23d3,0x18c4,0x63d9,0x3fa8,
-0x7d31,0xdcae,0x8da9,0x3fca,
-0xe312,0x3993,0xa137,0x3fdf,
-0x0000,0x0000,0x0000,0x3ff0
+static const uD P[] = {
+{ { 0x2153,0x3998,0xfcb8,0x3f24 } },
+{ { 0xbfab,0xe686,0x84e3,0x3f53 } },
+{ { 0x14b0,0xe9db,0x57cd,0x3f85 } },
+{ { 0x23d3,0x18c4,0x63d9,0x3fa8 } },
+{ { 0x7d31,0xdcae,0x8da9,0x3fca } },
+{ { 0xe312,0x3993,0xa137,0x3fdf } },
+{ { 0x0000,0x0000,0x0000,0x3ff0 } }
 };
-static const unsigned short Q[] = {
-0xd3af,0x8400,0x487a,0xbef8,
-0x2573,0x2915,0xae8a,0x3f41,
-0xb44a,0xe750,0x40e4,0xbf72,
-0xb117,0x5b1b,0x31ed,0x3f88,
-0xde67,0xe33f,0x5779,0x3fa2,
-0x87c2,0x9d42,0x071a,0xbfce,
-0x3c51,0xc9cd,0x4944,0x3fb2,
-0x0000,0x0000,0x0000,0x3ff0
+static const uD Q[] = {
+{ { 0xd3af,0x8400,0x487a,0xbef8 } },
+{ { 0x2573,0x2915,0xae8a,0x3f41 } },
+{ { 0xb44a,0xe750,0x40e4,0xbf72 } },
+{ { 0xb117,0x5b1b,0x31ed,0x3f88 } },
+{ { 0xde67,0xe33f,0x5779,0x3fa2 } },
+{ { 0x87c2,0x9d42,0x071a,0xbfce } },
+{ { 0x3c51,0xc9cd,0x4944,0x3fb2 } },
+{ { 0x0000,0x0000,0x0000,0x3ff0 } }
 };
 #define MAXGAM 171.624376956302725
 #endif 
@@ -180,12 +180,12 @@ static const unsigned short SQT[4] = {
 #define SQTPI *(double *)SQT
 #endif
 #if IBMPC
-static const unsigned short STIR[20] = {
-0x7293,0x592d,0xcc72,0x3f49,
-0x1d7c,0x27e6,0x166b,0xbf2e,
-0x4fd7,0x07d4,0xf726,0xbf65,
-0xc5fd,0x1b98,0x71c7,0x3f6c,
-0x5986,0x5555,0x5555,0x3fb5,
+static const uD STIR[] = {
+{ { 0x7293,0x592d,0xcc72,0x3f49 } },
+{ { 0x1d7c,0x27e6,0x166b,0xbf2e } },
+{ { 0x4fd7,0x07d4,0xf726,0xbf65 } },
+{ { 0xc5fd,0x1b98,0x71c7,0x3f6c } },
+{ { 0x5986,0x5555,0x5555,0x3fb5 } }
 };
 #define MAXSTIR 143.01608
 
index 6db4e3a..f9fe285 100644 (file)
@@ -88,26 +88,26 @@ static const long double Q[9] = {
 };
 #endif
 #if IBMPC
-static const unsigned short P[] = {
-0x434a,0x3f22,0x2bda,0xb0b2,0x3ff0, XPD
-0xf5aa,0xe82f,0x335b,0xee2e,0x3ff3, XPD
-0xbe6c,0x3757,0xc717,0x861b,0x3ff7, XPD
-0x7f43,0x5196,0xb166,0xc368,0x3ff9, XPD
-0x9549,0x8eb5,0x8c3a,0xe3f4,0x3ffb, XPD
-0x8d75,0x23af,0xc8e4,0xb9d4,0x3ffd, XPD
-0x29cf,0x19b3,0x16c8,0xd67a,0x3ffe, XPD
-0x0000,0x0000,0x0000,0x8000,0x3fff, XPD
+static const uLD P[] = {
+{ { 0x434a,0x3f22,0x2bda,0xb0b2,0x3ff0, XPD } },
+{ { 0xf5aa,0xe82f,0x335b,0xee2e,0x3ff3, XPD } },
+{ { 0xbe6c,0x3757,0xc717,0x861b,0x3ff7, XPD } },
+{ { 0x7f43,0x5196,0xb166,0xc368,0x3ff9, XPD } },
+{ { 0x9549,0x8eb5,0x8c3a,0xe3f4,0x3ffb, XPD } },
+{ { 0x8d75,0x23af,0xc8e4,0xb9d4,0x3ffd, XPD } },
+{ { 0x29cf,0x19b3,0x16c8,0xd67a,0x3ffe, XPD } },
+{ { 0x0000,0x0000,0x0000,0x8000,0x3fff, XPD } }
 };
-static const unsigned short Q[] = {
-0x5473,0x2de8,0x1268,0xea67,0xbfee, XPD
-0x334b,0xc2f0,0xa2dd,0xf60e,0x3ff2, XPD
-0xbeed,0x1853,0xa691,0xa23d,0xbff5, XPD
-0x296e,0x7cb1,0x5dfd,0xd08f,0xbff4, XPD
-0x0417,0x7989,0xd7bc,0xe338,0x3ff9, XPD
-0x3295,0x3698,0xd580,0xbdcd,0xbffa, XPD
-0x75ef,0x3ab7,0x4ad3,0xe5bc,0xbffc, XPD
-0xe458,0x2ec7,0xfd57,0xd47c,0x3ffd, XPD
-0x0000,0x0000,0x0000,0x8000,0x3fff, XPD
+static const uLD Q[] = {
+{ { 0x5473,0x2de8,0x1268,0xea67,0xbfee, XPD } },
+{ { 0x334b,0xc2f0,0xa2dd,0xf60e,0x3ff2, XPD } },
+{ { 0xbeed,0x1853,0xa691,0xa23d,0xbff5, XPD } },
+{ { 0x296e,0x7cb1,0x5dfd,0xd08f,0xbff4, XPD } },
+{ { 0x0417,0x7989,0xd7bc,0xe338,0x3ff9, XPD } },
+{ { 0x3295,0x3698,0xd580,0xbdcd,0xbffa, XPD } },
+{ { 0x75ef,0x3ab7,0x4ad3,0xe5bc,0xbffc, XPD } },
+{ { 0xe458,0x2ec7,0xfd57,0xd47c,0x3ffd, XPD } },
+{ { 0x0000,0x0000,0x0000,0x8000,0x3fff, XPD } }
 };
 #endif
 #if MIEEE
@@ -182,16 +182,16 @@ static const long double STIR[9] = {
 };
 #endif
 #if IBMPC
-static const unsigned short STIR[] = {
-0x6ede,0x69f7,0x54e3,0xbb5d,0x3ff4, XPD
-0xc395,0x0295,0x4443,0xc64b,0xbfef, XPD
-0xba6f,0x7c59,0x5e47,0x9bfb,0xbff4, XPD
-0x5704,0x1a39,0xb11d,0x9293,0x3ff1, XPD
-0x30b7,0x1a21,0x98b2,0xcd87,0x3ff4, XPD
-0xbef3,0x7023,0x6a08,0xf09e,0xbff2, XPD
-0x3a1c,0x5ac8,0x3478,0xafb9,0xbff6, XPD
-0xc3c9,0x906e,0x38e3,0xe38e,0x3ff6, XPD
-0xa1d5,0xaaaa,0xaaaa,0xaaaa,0x3ffb, XPD
+static const uLD STIR[] = {
+{ { 0x6ede,0x69f7,0x54e3,0xbb5d,0x3ff4, XPD } },
+{ { 0xc395,0x0295,0x4443,0xc64b,0xbfef, XPD } },
+{ { 0xba6f,0x7c59,0x5e47,0x9bfb,0xbff4, XPD } },
+{ { 0x5704,0x1a39,0xb11d,0x9293,0x3ff1, XPD } },
+{ { 0x30b7,0x1a21,0x98b2,0xcd87,0x3ff4, XPD } },
+{ { 0xbef3,0x7023,0x6a08,0xf09e,0xbff2, XPD } },
+{ { 0x3a1c,0x5ac8,0x3478,0xafb9,0xbff6, XPD } },
+{ { 0xc3c9,0x906e,0x38e3,0xe38e,0x3ff6, XPD } },
+{ { 0xa1d5,0xaaaa,0xaaaa,0xaaaa,0x3ffb, XPD } }
 };
 #endif
 #if MIEEE
@@ -229,16 +229,16 @@ static const long double S[9] = {
 };
 #endif
 #if IBMPC
-static const unsigned short S[] = {
-0xbaeb,0xd6d3,0x25e5,0x9c7e,0xbff5, XPD
-0xfe9a,0xceb4,0xc74e,0xec9a,0x3ff7, XPD
-0x9225,0xdfef,0xb0e9,0x9da5,0xbff8, XPD
-0x10b0,0xec17,0x87dc,0xacd7,0xbffa, XPD
-0x6b8d,0x7515,0x1905,0xaa89,0x3ffc, XPD
-0xf183,0x126b,0xf47d,0xac0a,0xbffa, XPD
-0x7bf6,0x57d1,0xa013,0xa7e7,0xbffe, XPD
-0xc7a9,0x7db0,0x67e3,0x93c4,0x3ffe, XPD
-0x0000,0x0000,0x0000,0x8000,0x3fff, XPD
+static const uLD S[] = {
+{ { 0xbaeb,0xd6d3,0x25e5,0x9c7e,0xbff5, XPD } },
+{ { 0xfe9a,0xceb4,0xc74e,0xec9a,0x3ff7, XPD } },
+{ { 0x9225,0xdfef,0xb0e9,0x9da5,0xbff8, XPD } },
+{ { 0x10b0,0xec17,0x87dc,0xacd7,0xbffa, XPD } },
+{ { 0x6b8d,0x7515,0x1905,0xaa89,0x3ffc, XPD } },
+{ { 0xf183,0x126b,0xf47d,0xac0a,0xbffa, XPD } },
+{ { 0x7bf6,0x57d1,0xa013,0xa7e7,0xbffe, XPD } },
+{ { 0xc7a9,0x7db0,0x67e3,0x93c4,0x3ffe, XPD } },
+{ { 0x0000,0x0000,0x0000,0x8000,0x3fff, XPD } }
 };
 #endif
 #if MIEEE
@@ -274,16 +274,16 @@ static const long double SN[9] = {
 };
 #endif
 #if IBMPC
-static const unsigned short SN[] = {
-0x5dd1,0x02de,0xb9f7,0x948d,0x3ff5, XPD
-0x989b,0xdd68,0xc5f1,0xec9c,0x3ff7, XPD
-0x2ca1,0x18f0,0x386f,0x9da5,0x3ff8, XPD
-0x783f,0x41dd,0x87d1,0xacd7,0xbffa, XPD
-0x7a5b,0xd76d,0x1905,0xaa89,0xbffc, XPD
-0x7f64,0x1234,0xf47d,0xac0a,0xbffa, XPD
-0x5e26,0x57d1,0xa013,0xa7e7,0x3ffe, XPD
-0xc7aa,0x7db0,0x67e3,0x93c4,0x3ffe, XPD
-0x0000,0x0000,0x0000,0x8000,0xbfff, XPD
+static const uLD SN[] = {
+{ { 0x5dd1,0x02de,0xb9f7,0x948d,0x3ff5, XPD } },
+{ { 0x989b,0xdd68,0xc5f1,0xec9c,0x3ff7, XPD } },
+{ { 0x2ca1,0x18f0,0x386f,0x9da5,0x3ff8, XPD } },
+{ { 0x783f,0x41dd,0x87d1,0xacd7,0xbffa, XPD } },
+{ { 0x7a5b,0xd76d,0x1905,0xaa89,0xbffc, XPD } },
+{ { 0x7f64,0x1234,0xf47d,0xac0a,0xbffa, XPD } },
+{ { 0x5e26,0x57d1,0xa013,0xa7e7,0x3ffe, XPD } },
+{ { 0xc7aa,0x7db0,0x67e3,0x93c4,0x3ffe, XPD } },
+{ { 0x0000,0x0000,0x0000,0x8000,0xbfff, XPD } }
 };
 #endif
 #if MIEEE