]> git.proxmox.com Git - mirror_edk2.git/blobdiff - StdLib/LibC/gdtoa/misc.c
edk2: Remove AppPkg, StdLib, StdLibPrivateInternalFiles
[mirror_edk2.git] / StdLib / LibC / gdtoa / misc.c
diff --git a/StdLib/LibC/gdtoa/misc.c b/StdLib/LibC/gdtoa/misc.c
deleted file mode 100644 (file)
index 9020745..0000000
+++ /dev/null
@@ -1,909 +0,0 @@
-/* $NetBSD: misc.c,v 1.3.12.1 2008/04/08 21:10:55 jdc Exp $ */\r
-\r
-/****************************************************************\r
-\r
-The author of this software is David M. Gay.\r
-\r
-Copyright (C) 1998, 1999 by Lucent Technologies\r
-All Rights Reserved\r
-\r
-Permission to use, copy, modify, and distribute this software and\r
-its documentation for any purpose and without fee is hereby\r
-granted, provided that the above copyright notice appear in all\r
-copies and that both that the copyright notice and this\r
-permission notice and warranty disclaimer appear in supporting\r
-documentation, and that the name of Lucent or any of its entities\r
-not be used in advertising or publicity pertaining to\r
-distribution of the software without specific, written prior\r
-permission.\r
-\r
-LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,\r
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.\r
-IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY\r
-SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\r
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER\r
-IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,\r
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\r
-THIS SOFTWARE.\r
-\r
-****************************************************************/\r
-\r
-/* Please send bug reports to David M. Gay (dmg at acm dot org,\r
- * with " at " changed at "@" and " dot " changed to ".").  */\r
-#include  <LibConfig.h>\r
-\r
-#include "gdtoaimp.h"\r
-\r
-#if defined(_MSC_VER)\r
-  // Disable warnings about assignment within conditional expressions.\r
-  #pragma warning ( disable : 4706 )\r
-#endif\r
-\r
-static Bigint *freelist[Kmax+1];\r
-#ifndef Omit_Private_Memory\r
-#ifndef PRIVATE_MEM\r
-#define PRIVATE_MEM 2304\r
-#endif\r
-#define PRIVATE_mem ((PRIVATE_MEM+sizeof(double)-1)/sizeof(double))\r
-static double private_mem[PRIVATE_mem], *pmem_next = private_mem;\r
-#endif\r
-\r
- Bigint *\r
-Balloc\r
-#ifdef KR_headers\r
-  (k) int k;\r
-#else\r
-  (int k)\r
-#endif\r
-{\r
-  int x;\r
-  Bigint *rv;\r
-#ifndef Omit_Private_Memory\r
-  unsigned int len;\r
-#endif\r
-\r
-  ACQUIRE_DTOA_LOCK(0);\r
-  if ( (rv = freelist[k]) !=0) {\r
-    freelist[k] = rv->next;\r
-    }\r
-  else {\r
-    x = 1 << k;\r
-#ifdef Omit_Private_Memory\r
-    rv = (Bigint *)MALLOC(sizeof(Bigint) + (x-1)*sizeof(ULong));\r
-#else\r
-    len = (sizeof(Bigint) + (x-1)*sizeof(ULong) + sizeof(double) - 1)\r
-      /sizeof(double);\r
-    if (pmem_next - private_mem + len <= PRIVATE_mem) {\r
-      rv = (Bigint*)(void *)pmem_next;\r
-      pmem_next += len;\r
-      }\r
-    else\r
-      rv = (Bigint*)MALLOC(len*sizeof(double));\r
-#endif\r
-    if (rv == NULL)\r
-      return NULL;\r
-    rv->k = k;\r
-    rv->maxwds = x;\r
-    }\r
-  FREE_DTOA_LOCK(0);\r
-  rv->sign = rv->wds = 0;\r
-  return rv;\r
-  }\r
-\r
- void\r
-Bfree\r
-#ifdef KR_headers\r
-  (v) Bigint *v;\r
-#else\r
-  (Bigint *v)\r
-#endif\r
-{\r
-  if (v) {\r
-    ACQUIRE_DTOA_LOCK(0);\r
-    v->next = freelist[v->k];\r
-    freelist[v->k] = v;\r
-    FREE_DTOA_LOCK(0);\r
-    }\r
-  }\r
-\r
- int\r
-lo0bits\r
-#ifdef KR_headers\r
-  (y) ULong *y;\r
-#else\r
-  (ULong *y)\r
-#endif\r
-{\r
-  int k;\r
-  ULong x = *y;\r
-\r
-  if (x & 7) {\r
-    if (x & 1)\r
-      return 0;\r
-    if (x & 2) {\r
-      *y = x >> 1;\r
-      return 1;\r
-      }\r
-    *y = x >> 2;\r
-    return 2;\r
-    }\r
-  k = 0;\r
-  if (!(x & 0xffff)) {\r
-    k = 16;\r
-    x >>= 16;\r
-    }\r
-  if (!(x & 0xff)) {\r
-    k += 8;\r
-    x >>= 8;\r
-    }\r
-  if (!(x & 0xf)) {\r
-    k += 4;\r
-    x >>= 4;\r
-    }\r
-  if (!(x & 0x3)) {\r
-    k += 2;\r
-    x >>= 2;\r
-    }\r
-  if (!(x & 1)) {\r
-    k++;\r
-    x >>= 1;\r
-    if (!x)\r
-      return 32;\r
-    }\r
-  *y = x;\r
-  return k;\r
-  }\r
-\r
- Bigint *\r
-multadd\r
-#ifdef KR_headers\r
-  (b, m, a) Bigint *b; int m, a;\r
-#else\r
-  (Bigint *b, int m, int a) /* multiply by m and add a */\r
-#endif\r
-{\r
-  int i, wds;\r
-#ifdef ULLong\r
-  ULong *x;\r
-  ULLong carry, y;\r
-#else\r
-  ULong carry, *x, y;\r
-#ifdef Pack_32\r
-  ULong xi, z;\r
-#endif\r
-#endif\r
-  Bigint *b1;\r
-\r
-  wds = b->wds;\r
-  x = b->x;\r
-  i = 0;\r
-  carry = a;\r
-  do {\r
-#ifdef ULLong\r
-    y = *x * (ULLong)m + carry;\r
-    carry = y >> 32;\r
-    /* LINTED conversion */\r
-    *x++ = (uint32_t)(y & 0xffffffffUL);\r
-#else\r
-#ifdef Pack_32\r
-    xi = *x;\r
-    y = (xi & 0xffff) * m + carry;\r
-    z = (xi >> 16) * m + (y >> 16);\r
-    carry = z >> 16;\r
-    *x++ = (z << 16) + (y & 0xffff);\r
-#else\r
-    y = *x * m + carry;\r
-    carry = y >> 16;\r
-    *x++ = y & 0xffff;\r
-#endif\r
-#endif\r
-    }\r
-    while(++i < wds);\r
-  if (carry) {\r
-    if (wds >= b->maxwds) {\r
-      b1 = Balloc(b->k+1);\r
-      if (b1 == NULL) {\r
-        Bfree(b);\r
-        return NULL;\r
-        }\r
-      Bcopy(b1, b);\r
-      Bfree(b);\r
-      b = b1;\r
-      }\r
-    /* LINTED conversion */\r
-      b->x[wds++] = (uint32_t)carry;\r
-    b->wds = wds;\r
-    }\r
-  return b;\r
-  }\r
-\r
- int\r
-hi0bits_D2A\r
-#ifdef KR_headers\r
-  (x) ULong x;\r
-#else\r
-  (ULong x)\r
-#endif\r
-{\r
-  int k = 0;\r
-\r
-  if (!(x & 0xffff0000)) {\r
-    k = 16;\r
-    x <<= 16;\r
-    }\r
-  if (!(x & 0xff000000)) {\r
-    k += 8;\r
-    x <<= 8;\r
-    }\r
-  if (!(x & 0xf0000000)) {\r
-    k += 4;\r
-    x <<= 4;\r
-    }\r
-  if (!(x & 0xc0000000)) {\r
-    k += 2;\r
-    x <<= 2;\r
-    }\r
-  if (!(x & 0x80000000)) {\r
-    k++;\r
-    if (!(x & 0x40000000))\r
-      return 32;\r
-    }\r
-  return k;\r
-  }\r
-\r
- Bigint *\r
-i2b\r
-#ifdef KR_headers\r
-  (i) int i;\r
-#else\r
-  (int i)\r
-#endif\r
-{\r
-  Bigint *b;\r
-\r
-  b = Balloc(1);\r
-  if (b == NULL)\r
-    return NULL;\r
-  b->x[0] = i;\r
-  b->wds = 1;\r
-  return b;\r
-  }\r
-\r
- Bigint *\r
-mult\r
-#ifdef KR_headers\r
-  (a, b) Bigint *a, *b;\r
-#else\r
-  (Bigint *a, Bigint *b)\r
-#endif\r
-{\r
-  Bigint *c;\r
-  int k, wa, wb, wc;\r
-  ULong *x, *xa, *xae, *xb, *xbe, *xc, *xc0;\r
-  ULong y;\r
-#ifdef ULLong\r
-  ULLong carry, z;\r
-#else\r
-  ULong carry, z;\r
-#ifdef Pack_32\r
-  ULong z2;\r
-#endif\r
-#endif\r
-\r
-  if (a->wds < b->wds) {\r
-    c = a;\r
-    a = b;\r
-    b = c;\r
-    }\r
-  k = a->k;\r
-  wa = a->wds;\r
-  wb = b->wds;\r
-  wc = wa + wb;\r
-  if (wc > a->maxwds)\r
-    k++;\r
-  c = Balloc(k);\r
-  if (c == NULL)\r
-    return NULL;\r
-  for(x = c->x, xa = x + wc; x < xa; x++)\r
-    *x = 0;\r
-  xa = a->x;\r
-  xae = xa + wa;\r
-  xb = b->x;\r
-  xbe = xb + wb;\r
-  xc0 = c->x;\r
-#ifdef ULLong\r
-  for(; xb < xbe; xc0++) {\r
-    if ( (y = *xb++) !=0) {\r
-      x = xa;\r
-      xc = xc0;\r
-      carry = 0;\r
-      do {\r
-        z = *x++ * (ULLong)y + *xc + carry;\r
-        carry = z >> 32;\r
-        /* LINTED conversion */\r
-        *xc++ = (uint32_t)(z & 0xffffffffUL);\r
-        }\r
-        while(x < xae);\r
-      /* LINTED conversion */\r
-        *xc = (uint32_t)carry;\r
-      }\r
-    }\r
-#else\r
-#ifdef Pack_32\r
-  for(; xb < xbe; xb++, xc0++) {\r
-    if ( (y = *xb & 0xffff) !=0) {\r
-      x = xa;\r
-      xc = xc0;\r
-      carry = 0;\r
-      do {\r
-        z = (*x & 0xffff) * y + (*xc & 0xffff) + carry;\r
-        carry = z >> 16;\r
-        z2 = (*x++ >> 16) * y + (*xc >> 16) + carry;\r
-        carry = z2 >> 16;\r
-        Storeinc(xc, z2, z);\r
-        }\r
-        while(x < xae);\r
-      *xc = carry;\r
-      }\r
-    if ( (y = *xb >> 16) !=0) {\r
-      x = xa;\r
-      xc = xc0;\r
-      carry = 0;\r
-      z2 = *xc;\r
-      do {\r
-        z = (*x & 0xffff) * y + (*xc >> 16) + carry;\r
-        carry = z >> 16;\r
-        Storeinc(xc, z, z2);\r
-        z2 = (*x++ >> 16) * y + (*xc & 0xffff) + carry;\r
-        carry = z2 >> 16;\r
-        }\r
-        while(x < xae);\r
-      *xc = z2;\r
-      }\r
-    }\r
-#else\r
-  for(; xb < xbe; xc0++) {\r
-    if ( (y = *xb++) !=0) {\r
-      x = xa;\r
-      xc = xc0;\r
-      carry = 0;\r
-      do {\r
-        z = *x++ * y + *xc + carry;\r
-        carry = z >> 16;\r
-        *xc++ = z & 0xffff;\r
-        }\r
-        while(x < xae);\r
-      *xc = carry;\r
-      }\r
-    }\r
-#endif\r
-#endif\r
-  for(xc0 = c->x, xc = xc0 + wc; wc > 0 && !*--xc; --wc) ;\r
-  c->wds = wc;\r
-  return c;\r
-  }\r
-\r
- static Bigint *p5s;\r
-\r
- Bigint *\r
-pow5mult\r
-#ifdef KR_headers\r
-  (b, k) Bigint *b; int k;\r
-#else\r
-  (Bigint *b, int k)\r
-#endif\r
-{\r
-  Bigint *b1, *p5, *p51;\r
-  int i;\r
-  static CONST int p05[3] = { 5, 25, 125 };\r
-\r
-  if ( (i = k & 3) !=0) {\r
-    b = multadd(b, p05[i-1], 0);\r
-    if (b == NULL)\r
-      return NULL;\r
-    }\r
-\r
-  if ((k = (unsigned int)k >> 2) == 0)\r
-    return b;\r
-  if ((p5 = p5s) == 0) {\r
-    /* first time */\r
-#ifdef MULTIPLE_THREADS\r
-    ACQUIRE_DTOA_LOCK(1);\r
-    if (!(p5 = p5s)) {\r
-      p5 = p5s = i2b(625);\r
-      if (p5 == NULL)\r
-        return NULL;\r
-      p5->next = 0;\r
-      }\r
-    FREE_DTOA_LOCK(1);\r
-#else\r
-    p5 = p5s = i2b(625);\r
-    if (p5 == NULL)\r
-      return NULL;\r
-    p5->next = 0;\r
-#endif\r
-    }\r
-  for(;;) {\r
-    if (k & 1) {\r
-      b1 = mult(b, p5);\r
-      if (b1 == NULL)\r
-        return NULL;\r
-      b = b1;\r
-      }\r
-    if ((k = (unsigned int)k >> 1) == 0)\r
-      break;\r
-    if ((p51 = p5->next) == 0) {\r
-#ifdef MULTIPLE_THREADS\r
-      ACQUIRE_DTOA_LOCK(1);\r
-      if (!(p51 = p5->next)) {\r
-        p51 = p5->next = mult(p5,p5);\r
-        if (p51 == NULL)\r
-          return NULL;\r
-        p51->next = 0;\r
-        }\r
-      FREE_DTOA_LOCK(1);\r
-#else\r
-      p51 = p5->next = mult(p5,p5);\r
-      if (p51 == NULL)\r
-        return NULL;\r
-      p51->next = 0;\r
-#endif\r
-      }\r
-    p5 = p51;\r
-    }\r
-  return b;\r
-  }\r
-\r
- Bigint *\r
-lshift\r
-#ifdef KR_headers\r
-  (b, k) Bigint *b; int k;\r
-#else\r
-  (Bigint *b, int k)\r
-#endif\r
-{\r
-  int i, k1, n, n1;\r
-  Bigint *b1;\r
-  ULong *x, *x1, *xe, z;\r
-\r
-  n = (unsigned int)k >> kshift;\r
-  k1 = b->k;\r
-  n1 = n + b->wds + 1;\r
-  for(i = b->maxwds; n1 > i; i <<= 1)\r
-    k1++;\r
-  b1 = Balloc(k1);\r
-  if (b1 == NULL)\r
-    return NULL;\r
-  x1 = b1->x;\r
-  for(i = 0; i < n; i++)\r
-    *x1++ = 0;\r
-  x = b->x;\r
-  xe = x + b->wds;\r
-  if (k &= kmask) {\r
-#ifdef Pack_32\r
-    k1 = 32 - k;\r
-    z = 0;\r
-    do {\r
-      *x1++ = *x << k | z;\r
-      z = *x++ >> k1;\r
-      }\r
-      while(x < xe);\r
-    if ((*x1 = z) !=0)\r
-      ++n1;\r
-#else\r
-    k1 = 16 - k;\r
-    z = 0;\r
-    do {\r
-      *x1++ = *x << k  & 0xffff | z;\r
-      z = *x++ >> k1;\r
-      }\r
-      while(x < xe);\r
-    if (*x1 = z)\r
-      ++n1;\r
-#endif\r
-    }\r
-  else do\r
-    *x1++ = *x++;\r
-    while(x < xe);\r
-  b1->wds = n1 - 1;\r
-  Bfree(b);\r
-  return b1;\r
-  }\r
-\r
- int\r
-cmp\r
-#ifdef KR_headers\r
-  (a, b) Bigint *a, *b;\r
-#else\r
-  (Bigint *a, Bigint *b)\r
-#endif\r
-{\r
-  ULong *xa, *xa0, *xb, *xb0;\r
-  int i, j;\r
-\r
-  i = a->wds;\r
-  j = b->wds;\r
-#ifdef DEBUG\r
-  if (i > 1 && !a->x[i-1])\r
-    Bug("cmp called with a->x[a->wds-1] == 0");\r
-  if (j > 1 && !b->x[j-1])\r
-    Bug("cmp called with b->x[b->wds-1] == 0");\r
-#endif\r
-  if (i -= j)\r
-    return i;\r
-  xa0 = a->x;\r
-  xa = xa0 + j;\r
-  xb0 = b->x;\r
-  xb = xb0 + j;\r
-  for(;;) {\r
-    if (*--xa != *--xb)\r
-      return *xa < *xb ? -1 : 1;\r
-    if (xa <= xa0)\r
-      break;\r
-    }\r
-  return 0;\r
-  }\r
-\r
- Bigint *\r
-diff\r
-#ifdef KR_headers\r
-  (a, b) Bigint *a, *b;\r
-#else\r
-  (Bigint *a, Bigint *b)\r
-#endif\r
-{\r
-  Bigint *c;\r
-  int i, wa, wb;\r
-  ULong *xa, *xae, *xb, *xbe, *xc;\r
-#ifdef ULLong\r
-  ULLong borrow, y;\r
-#else\r
-  ULong borrow, y;\r
-#ifdef Pack_32\r
-  ULong z;\r
-#endif\r
-#endif\r
-\r
-  i = cmp(a,b);\r
-  if (!i) {\r
-    c = Balloc(0);\r
-    if (c == NULL)\r
-      return NULL;\r
-    c->wds = 1;\r
-    c->x[0] = 0;\r
-    return c;\r
-    }\r
-  if (i < 0) {\r
-    c = a;\r
-    a = b;\r
-    b = c;\r
-    i = 1;\r
-    }\r
-  else\r
-    i = 0;\r
-  c = Balloc(a->k);\r
-  if (c == NULL)\r
-    return NULL;\r
-  c->sign = i;\r
-  wa = a->wds;\r
-  xa = a->x;\r
-  xae = xa + wa;\r
-  wb = b->wds;\r
-  xb = b->x;\r
-  xbe = xb + wb;\r
-  xc = c->x;\r
-  borrow = 0;\r
-#ifdef ULLong\r
-  do {\r
-    y = (ULLong)*xa++ - *xb++ - borrow;\r
-    borrow = y >> 32 & 1UL;\r
-    /* LINTED conversion */\r
-    *xc++ = (uint32_t)(y & 0xffffffffUL);\r
-    }\r
-    while(xb < xbe);\r
-  while(xa < xae) {\r
-    y = *xa++ - borrow;\r
-    borrow = y >> 32 & 1UL;\r
-    /* LINTED conversion */\r
-    *xc++ = (uint32_t)(y & 0xffffffffUL);\r
-    }\r
-#else\r
-#ifdef Pack_32\r
-  do {\r
-    y = (*xa & 0xffff) - (*xb & 0xffff) - borrow;\r
-    borrow = (y & 0x10000) >> 16;\r
-    z = (*xa++ >> 16) - (*xb++ >> 16) - borrow;\r
-    borrow = (z & 0x10000) >> 16;\r
-    Storeinc(xc, z, y);\r
-    }\r
-    while(xb < xbe);\r
-  while(xa < xae) {\r
-    y = (*xa & 0xffff) - borrow;\r
-    borrow = (y & 0x10000) >> 16;\r
-    z = (*xa++ >> 16) - borrow;\r
-    borrow = (z & 0x10000) >> 16;\r
-    Storeinc(xc, z, y);\r
-    }\r
-#else\r
-  do {\r
-    y = *xa++ - *xb++ - borrow;\r
-    borrow = (y & 0x10000) >> 16;\r
-    *xc++ = y & 0xffff;\r
-    }\r
-    while(xb < xbe);\r
-  while(xa < xae) {\r
-    y = *xa++ - borrow;\r
-    borrow = (y & 0x10000) >> 16;\r
-    *xc++ = y & 0xffff;\r
-    }\r
-#endif\r
-#endif\r
-  while(!*--xc)\r
-    wa--;\r
-  c->wds = wa;\r
-  return c;\r
-  }\r
-\r
- double\r
-b2d\r
-#ifdef KR_headers\r
-  (a, e) Bigint *a; int *e;\r
-#else\r
-  (Bigint *a, int *e)\r
-#endif\r
-{\r
-  ULong *xa, *xa0, w, y, z;\r
-  int k;\r
-  double d;\r
-#ifdef VAX\r
-  ULong d0, d1;\r
-#else\r
-#define d0 word0(d)\r
-#define d1 word1(d)\r
-#endif\r
-\r
-  xa0 = a->x;\r
-  xa = xa0 + a->wds;\r
-  y = *--xa;\r
-#ifdef DEBUG\r
-  if (!y) Bug("zero y in b2d");\r
-#endif\r
-  k = hi0bits(y);\r
-  *e = 32 - k;\r
-#ifdef Pack_32\r
-  if (k < Ebits) {\r
-    d0 = (UINT32)(Exp_1 | y >> (Ebits - k));\r
-    w = xa > xa0 ? *--xa : 0;\r
-    d1 = (UINT32)(y << ((32-Ebits) + k) | w >> (Ebits - k));\r
-    goto ret_d;\r
-    }\r
-  z = xa > xa0 ? *--xa : 0;\r
-  if (k -= Ebits) {\r
-    d0 = (UINT32)(Exp_1 | y << k | z >> (32 - k));\r
-    y = xa > xa0 ? *--xa : 0;\r
-    d1 = (UINT32)(z << k | y >> (32 - k));\r
-    }\r
-  else {\r
-    d0 = (UINT32)(Exp_1 | y);\r
-    d1 = (UINT32)z;\r
-    }\r
-#else\r
-  if (k < Ebits + 16) {\r
-    z = xa > xa0 ? *--xa : 0;\r
-    d0 = Exp_1 | y << k - Ebits | z >> Ebits + 16 - k;\r
-    w = xa > xa0 ? *--xa : 0;\r
-    y = xa > xa0 ? *--xa : 0;\r
-    d1 = z << k + 16 - Ebits | w << k - Ebits | y >> 16 + Ebits - k;\r
-    goto ret_d;\r
-    }\r
-  z = xa > xa0 ? *--xa : 0;\r
-  w = xa > xa0 ? *--xa : 0;\r
-  k -= Ebits + 16;\r
-  d0 = Exp_1 | y << k + 16 | z << k | w >> 16 - k;\r
-  y = xa > xa0 ? *--xa : 0;\r
-  d1 = w << k + 16 | y << k;\r
-#endif\r
- ret_d:\r
-#ifdef VAX\r
-  word0(d) = d0 >> 16 | d0 << 16;\r
-  word1(d) = d1 >> 16 | d1 << 16;\r
-#endif\r
-  return dval(d);\r
-  }\r
-#undef d0\r
-#undef d1\r
-\r
- Bigint *\r
-d2b\r
-#ifdef KR_headers\r
-  (d, e, bits) double d; int *e, *bits;\r
-#else\r
-  (double d, int *e, int *bits)\r
-#endif\r
-{\r
-  Bigint *b;\r
-#ifndef Sudden_Underflow\r
-  int i;\r
-#endif\r
-  int de, k;\r
-  ULong *x, y, z;\r
-#ifdef VAX\r
-  ULong d0, d1;\r
-  d0 = word0(d) >> 16 | word0(d) << 16;\r
-  d1 = word1(d) >> 16 | word1(d) << 16;\r
-#else\r
-#define d0 word0(d)\r
-#define d1 word1(d)\r
-#endif\r
-\r
-#ifdef Pack_32\r
-  b = Balloc(1);\r
-#else\r
-  b = Balloc(2);\r
-#endif\r
-  if (b == NULL)\r
-    return NULL;\r
-  x = b->x;\r
-\r
-  z = d0 & Frac_mask;\r
-  d0 &= 0x7fffffff; /* clear sign bit, which we ignore */\r
-#ifdef Sudden_Underflow\r
-  de = (int)(d0 >> Exp_shift);\r
-#ifndef IBM\r
-  z |= Exp_msk11;\r
-#endif\r
-#else\r
-  if ( (de = (int)(d0 >> Exp_shift)) !=0)\r
-    z |= Exp_msk1;\r
-#endif\r
-#ifdef Pack_32\r
-  if ( (y = d1) !=0) {\r
-    if ( (k = lo0bits(&y)) !=0) {\r
-      x[0] = y | z << (32 - k);\r
-      z >>= k;\r
-      }\r
-    else\r
-      x[0] = y;\r
-#ifndef Sudden_Underflow\r
-    i =\r
-#endif\r
-         b->wds = (x[1] = z) !=0 ? 2 : 1;\r
-    }\r
-  else {\r
-#ifdef DEBUG\r
-    if (!z)\r
-      Bug("Zero passed to d2b");\r
-#endif\r
-    k = lo0bits(&z);\r
-    x[0] = z;\r
-#ifndef Sudden_Underflow\r
-    i =\r
-#endif\r
-        b->wds = 1;\r
-    k += 32;\r
-    }\r
-#else\r
-  if ( (y = d1) !=0) {\r
-    if ( (k = lo0bits(&y)) !=0)\r
-      if (k >= 16) {\r
-        x[0] = y | z << 32 - k & 0xffff;\r
-        x[1] = z >> k - 16 & 0xffff;\r
-        x[2] = z >> k;\r
-        i = 2;\r
-        }\r
-      else {\r
-        x[0] = y & 0xffff;\r
-        x[1] = y >> 16 | z << 16 - k & 0xffff;\r
-        x[2] = z >> k & 0xffff;\r
-        x[3] = z >> k+16;\r
-        i = 3;\r
-        }\r
-    else {\r
-      x[0] = y & 0xffff;\r
-      x[1] = y >> 16;\r
-      x[2] = z & 0xffff;\r
-      x[3] = z >> 16;\r
-      i = 3;\r
-      }\r
-    }\r
-  else {\r
-#ifdef DEBUG\r
-    if (!z)\r
-      Bug("Zero passed to d2b");\r
-#endif\r
-    k = lo0bits(&z);\r
-    if (k >= 16) {\r
-      x[0] = z;\r
-      i = 0;\r
-      }\r
-    else {\r
-      x[0] = z & 0xffff;\r
-      x[1] = z >> 16;\r
-      i = 1;\r
-      }\r
-    k += 32;\r
-    }\r
-  while(!x[i])\r
-    --i;\r
-  b->wds = i + 1;\r
-#endif\r
-#ifndef Sudden_Underflow\r
-  if (de) {\r
-#endif\r
-#ifdef IBM\r
-    *e = (de - Bias - (P-1) << 2) + k;\r
-    *bits = 4*P + 8 - k - hi0bits(word0(d) & Frac_mask);\r
-#else\r
-    *e = de - Bias - (P-1) + k;\r
-    *bits = P - k;\r
-#endif\r
-#ifndef Sudden_Underflow\r
-    }\r
-  else {\r
-    *e = de - Bias - (P-1) + 1 + k;\r
-#ifdef Pack_32\r
-    *bits = 32*i - hi0bits(x[i-1]);\r
-#else\r
-    *bits = (i+2)*16 - hi0bits(x[i]);\r
-#endif\r
-    }\r
-#endif\r
-  return b;\r
-  }\r
-#undef d0\r
-#undef d1\r
-\r
- CONST double\r
-#ifdef IEEE_Arith\r
-bigtens[] = { 1e16, 1e32, 1e64, 1e128, 1e256 };\r
-CONST double tinytens[] = { 1e-16, 1e-32, 1e-64, 1e-128, 1e-256\r
-    };\r
-#else\r
-#ifdef IBM\r
-bigtens[] = { 1e16, 1e32, 1e64 };\r
-CONST double tinytens[] = { 1e-16, 1e-32, 1e-64 };\r
-#else\r
-bigtens[] = { 1e16, 1e32 };\r
-CONST double tinytens[] = { 1e-16, 1e-32 };\r
-#endif\r
-#endif\r
-\r
- CONST double\r
-tens[] = {\r
-    1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9,\r
-    1e10, 1e11, 1e12, 1e13, 1e14, 1e15, 1e16, 1e17, 1e18, 1e19,\r
-    1e20, 1e21, 1e22\r
-#ifdef VAX\r
-    , 1e23, 1e24\r
-#endif\r
-    };\r
-\r
- char *\r
-#ifdef KR_headers\r
-strcp_D2A(a, b) char *a; char *b;\r
-#else\r
-strcp_D2A(char *a, CONST char *b)\r
-#endif\r
-{\r
-  while((*a = *b++))\r
-    a++;\r
-  return a;\r
-  }\r
-\r
-#ifdef NO_STRING_H\r
-\r
- Char *\r
-#ifdef KR_headers\r
-memcpy_D2A(a, b, len) Char *a; Char *b; size_t len;\r
-#else\r
-memcpy_D2A(void *a1, void *b1, size_t len)\r
-#endif\r
-{\r
-  char *a = (char*)a1, *ae = a + len;\r
-  char *b = (char*)b1, *a0 = a;\r
-  while(a < ae)\r
-    *a++ = *b++;\r
-  return a0;\r
-  }\r
-\r
-#endif /* NO_STRING_H */\r