[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[commits] r4234 - in /branches/libdfp/libc/dfp: ./ libdecnumber/ libdecnumber/bid/ libdecnumber/dpd/ sysdeps/dfp/stdio-common/ sysdeps...



Author: eberlein
Date: Fri Nov 16 16:56:23 2007
New Revision: 4234

Log:
2007-11-16  Pete Eberlein <eberlein@xxxxxxxxxx>

	* dfp/libdecnumber: New directory, copied from gcc
	* dfp/Makefile: changes to vpath and sysdep-CFLAGS for libdecnumber
	* dfp/sysdeps/dfp/stdlib/strtod32.c: MANT_DIG,DIG,MAX_10_EXP,MIN_10_EXP defines needed extra underscores
	* dfp/sysdeps/dfp/stdio-common/vfprintf.c: Merged latest with dfp types
	* dfp/sysdeps/dfp/stdio-common/printf-parse.h: Merged latest with dfp types
	* dfp/sysdeps/dfp/stdio-common/vfscanf.c: Merged latest with dfp types
	* dfp/sysdeps/dfp/stdio-common/printf.h: Merged latest with dfp types
	* dfp/sysdeps/ieee754r/dfpmacro.h: DFP_MIN,DFP_EPSILON defines needed extra underscores
	* dfp/sysdeps/ieee754r/d32/scalbnd32.c: Removed call to decFinalize, used decNumberScaleB instead
	* dfp/sysdeps/ieee754r/d32/scalblnd32.c: Removed call to decFinalize, used decNumberScaleB instead
	* dfp/sysdeps/ieee754r/d32/tgammad32.c: Removed call to __builtin_signbit, used < operator instead
	* dfp/Versions: Synced exported symbols with those in libdecnumber


Added:
    branches/libdfp/libc/dfp/libdecnumber/
    branches/libdfp/libc/dfp/libdecnumber/ChangeLog
    branches/libdfp/libc/dfp/libdecnumber/Makefile.in
    branches/libdfp/libc/dfp/libdecnumber/aclocal.m4
    branches/libdfp/libc/dfp/libdecnumber/bid/
    branches/libdfp/libc/dfp/libdecnumber/bid/bid-dpd.h
    branches/libdfp/libc/dfp/libdecnumber/bid/bid2dpd_dpd2bid.c
    branches/libdfp/libc/dfp/libdecnumber/bid/bid2dpd_dpd2bid.h
    branches/libdfp/libc/dfp/libdecnumber/bid/decimal128.c
    branches/libdfp/libc/dfp/libdecnumber/bid/decimal128.h
    branches/libdfp/libc/dfp/libdecnumber/bid/decimal128Local.h
    branches/libdfp/libc/dfp/libdecnumber/bid/decimal128Symbols.h
    branches/libdfp/libc/dfp/libdecnumber/bid/decimal32.c
    branches/libdfp/libc/dfp/libdecnumber/bid/decimal32.h
    branches/libdfp/libc/dfp/libdecnumber/bid/decimal32Symbols.h
    branches/libdfp/libc/dfp/libdecnumber/bid/decimal64.c
    branches/libdfp/libc/dfp/libdecnumber/bid/decimal64.h
    branches/libdfp/libc/dfp/libdecnumber/bid/decimal64Symbols.h
    branches/libdfp/libc/dfp/libdecnumber/bid/host-ieee128.c
    branches/libdfp/libc/dfp/libdecnumber/bid/host-ieee32.c
    branches/libdfp/libc/dfp/libdecnumber/bid/host-ieee64.c
    branches/libdfp/libc/dfp/libdecnumber/config.in
    branches/libdfp/libc/dfp/libdecnumber/configure   (with props)
    branches/libdfp/libc/dfp/libdecnumber/configure.ac
    branches/libdfp/libc/dfp/libdecnumber/decBasic.c
    branches/libdfp/libc/dfp/libdecnumber/decCommon.c
    branches/libdfp/libc/dfp/libdecnumber/decContext.c
    branches/libdfp/libc/dfp/libdecnumber/decContext.h
    branches/libdfp/libc/dfp/libdecnumber/decContextSymbols.h
    branches/libdfp/libc/dfp/libdecnumber/decDPD.h
    branches/libdfp/libc/dfp/libdecnumber/decDouble.c
    branches/libdfp/libc/dfp/libdecnumber/decDouble.h
    branches/libdfp/libc/dfp/libdecnumber/decDoubleSymbols.h
    branches/libdfp/libc/dfp/libdecnumber/decExcept.c
    branches/libdfp/libc/dfp/libdecnumber/decExcept.h
    branches/libdfp/libc/dfp/libdecnumber/decLibrary.c
    branches/libdfp/libc/dfp/libdecnumber/decNumber.c
    branches/libdfp/libc/dfp/libdecnumber/decNumber.h
    branches/libdfp/libc/dfp/libdecnumber/decNumberLocal.h
    branches/libdfp/libc/dfp/libdecnumber/decNumberMath.c
    branches/libdfp/libc/dfp/libdecnumber/decNumberMath.h
    branches/libdfp/libc/dfp/libdecnumber/decNumberSymbols.h
    branches/libdfp/libc/dfp/libdecnumber/decPacked.c
    branches/libdfp/libc/dfp/libdecnumber/decPacked.h
    branches/libdfp/libc/dfp/libdecnumber/decPackedSymbols.h
    branches/libdfp/libc/dfp/libdecnumber/decQuad.c
    branches/libdfp/libc/dfp/libdecnumber/decQuad.h
    branches/libdfp/libc/dfp/libdecnumber/decQuadSymbols.h
    branches/libdfp/libc/dfp/libdecnumber/decRound.c
    branches/libdfp/libc/dfp/libdecnumber/decRound.h
    branches/libdfp/libc/dfp/libdecnumber/decSingle.c
    branches/libdfp/libc/dfp/libdecnumber/decSingle.h
    branches/libdfp/libc/dfp/libdecnumber/decSingleSymbols.h
    branches/libdfp/libc/dfp/libdecnumber/dpd/
    branches/libdfp/libc/dfp/libdecnumber/dpd/decimal128.c
    branches/libdfp/libc/dfp/libdecnumber/dpd/decimal128.h
    branches/libdfp/libc/dfp/libdecnumber/dpd/decimal128Local.h
    branches/libdfp/libc/dfp/libdecnumber/dpd/decimal128Symbols.h
    branches/libdfp/libc/dfp/libdecnumber/dpd/decimal32.c
    branches/libdfp/libc/dfp/libdecnumber/dpd/decimal32.h
    branches/libdfp/libc/dfp/libdecnumber/dpd/decimal32Symbols.h
    branches/libdfp/libc/dfp/libdecnumber/dpd/decimal64.c
    branches/libdfp/libc/dfp/libdecnumber/dpd/decimal64.h
    branches/libdfp/libc/dfp/libdecnumber/dpd/decimal64Symbols.h
    branches/libdfp/libc/dfp/libdecnumber/gstdint.h
Removed:
    branches/libdfp/libc/dfp/decContext.c
    branches/libdfp/libc/dfp/decContext.h
    branches/libdfp/libc/dfp/decDPD.h
    branches/libdfp/libc/dfp/decNumber.c
    branches/libdfp/libc/dfp/decNumber.h
    branches/libdfp/libc/dfp/decNumberLocal.h
    branches/libdfp/libc/dfp/decNumberMath.c
    branches/libdfp/libc/dfp/decNumberMath.h
    branches/libdfp/libc/dfp/decimal128.c
    branches/libdfp/libc/dfp/decimal128.h
    branches/libdfp/libc/dfp/decimal32.c
    branches/libdfp/libc/dfp/decimal32.h
    branches/libdfp/libc/dfp/decimal64.c
    branches/libdfp/libc/dfp/decimal64.h
Modified:
    branches/libdfp/libc/dfp/Makefile
    branches/libdfp/libc/dfp/Versions
    branches/libdfp/libc/dfp/sysdeps/dfp/stdio-common/printf-parse.h
    branches/libdfp/libc/dfp/sysdeps/dfp/stdio-common/printf.h
    branches/libdfp/libc/dfp/sysdeps/dfp/stdio-common/vfprintf.c
    branches/libdfp/libc/dfp/sysdeps/dfp/stdio-common/vfscanf.c
    branches/libdfp/libc/dfp/sysdeps/dfp/stdlib/strtod32.c
    branches/libdfp/libc/dfp/sysdeps/ieee754r/d32/scalblnd32.c
    branches/libdfp/libc/dfp/sysdeps/ieee754r/d32/scalbnd32.c
    branches/libdfp/libc/dfp/sysdeps/ieee754r/d32/tgammad32.c
    branches/libdfp/libc/dfp/sysdeps/ieee754r/dfpmacro.h

Modified: branches/libdfp/libc/dfp/Makefile
==============================================================================
--- branches/libdfp/libc/dfp/Makefile (original)
+++ branches/libdfp/libc/dfp/Makefile Fri Nov 16 16:56:23 2007
@@ -10,21 +10,21 @@
 # install-lib-ldscripts := libdfp.so
 
 # The libdecnumber code is in the libdecnumber/ directory.
-#vpath %.c libdecnumber
-#vpath %.h libdecnumber
+vpath %.c libdecnumber:libdecnumber/dpd
+vpath %.h libdecnumber:libdecnumber/dpd
+
 
 # Some symbols need to be in libdfp.so as well as libc.
 libdfp-shared = fmt_d32 fmt_d64 fmt_d128 dfptypeconv decode-decimal
 
 # The libdecnumber printing functions need to be in libc.so as well as
 # libdecnumber.
-libdecnumber-shared = decNumber decimal32 decimal64 decimal128
+libdecnumber-shared = decNumber decimal32 decimal64 decimal128 decContext
 
 include ../Makeconfig
 
 # libDecNumber contains some functionality which isn't needed in libc.
-libdecnumber-routines := $(libdecnumber-shared) decContext \
-	decNumberMath
+libdecnumber-routines := $(libdecnumber-shared) decNumberMath
 
 # These get added to libdfp.  Anything in $(libdfp-shared) gets
 # added to libc.so as well because they're the printf helpers.
@@ -108,7 +108,8 @@
 
 # Will only apply to those C files being built into libdfp
 ifeq ($(subdir), dfp)
-sysdep-CFLAGS += -D__STDC_WANT_DEC_FP__=1
+sysdep-CFLAGS += -D__STDC_WANT_DEC_FP__=1 -DIN_LIBDFP \
+	-I../dfp/libdecnumber -I../dfp/libdecnumber/dpd
 endif
 
 ifneq ($(subdir), dfp)

Modified: branches/libdfp/libc/dfp/Versions
==============================================================================
--- branches/libdfp/libc/dfp/Versions (original)
+++ branches/libdfp/libc/dfp/Versions Fri Nov 16 16:56:23 2007
@@ -235,46 +235,135 @@
 }
 libdecnumber {
   GLIBC_2.5 {
-    ___decNumberFromString;
-    ___decNumberToString;
-    ___decNumberToEngString;
+#    ___decNumberFromString;
+#    ___decNumberToString;
+#    ___decNumberToEngString;
+#    ___decNumberAbs;
+#    ___decNumberAdd;
+#    ___decNumberCompare;
+#    ___decNumberCompareTotal;
+#    ___decNumberDivide;
+#    ___decNumberDivideInteger;
+#    ___decNumberExp;
+#    ___decNumberFromInt32;
+#    ___decNumberFromUInt32;
+#    ___decNumberLn;
+#    ___decNumberLog10;
+#    ___decNumberMax;
+#    ___decNumberMin;
+#    ___decNumberMinus;
+#    ___decNumberMultiply;
+#    ___decNumberNormalize;
+#    ___decNumberPlus;
+#    ___decNumberPower;
+#    ___decNumberQuantize;
+#    ___decNumberRemainder;
+#    ___decNumberRemainderNear;
+#    ___decNumberRescale;
+#    ___decNumberSameQuantum;
+#    ___decNumberScaleB;
+#    ___decNumberSquareRoot;
+#    ___decNumberSubtract;
+#    ___decNumberToIntegralValue;
+#    ___decNumberCopy;
+#    ___decNumberTrim;
+#    ___decNumberVersion;
+#    ___decNumberZero;
+#    ___decContextDefault;
+#    ___decContextSetStatus;
+#    ___decContextStatusToString;
+#    ___decContextSetStatusFromString;
+#    ___decNumberLog10;
+#    ___decNumberLn;
+#    ___decNumberExp;
+
+#    ___decNumberSquareRoot;
+#    ___decNumberMin;
+#    ___decNumberMax;
+
+# From decContext.c
+    ___decContextClearStatus;
+    ___decContextDefault;
+    ___decContextGetRounding;
+    ___decContextGetStatus;
+    ___decContextRestoreStatus;
+    ___decContextSaveStatus;
+    ___decContextSetRounding;
+    ___decContextSetStatus;
+    ___decContextSetStatusFromString;
+    ___decContextSetStatusFromStringQuiet;
+    ___decContextSetStatusQuiet;
+    ___decContextStatusToString;
+    ___decContextTestSavedStatus;
+    ___decContextTestStatus;
+    ___decContextZeroStatus;
+
+# From decNumber.c
     ___decNumberAbs;
     ___decNumberAdd;
+    ___decNumberAnd;
+    ___decNumberClass;
+    ___decNumberClassToString;
     ___decNumberCompare;
+    ___decNumberCompareSignal;
     ___decNumberCompareTotal;
+    ___decNumberCompareTotalMag;
+    ___decNumberCopy;
+    ___decNumberCopyAbs;
+    ___decNumberCopyNegate;
+    ___decNumberCopySign;
     ___decNumberDivide;
     ___decNumberDivideInteger;
     ___decNumberExp;
+    ___decNumberFMA;
+    ___decNumberFromInt32;
+    ___decNumberFromString;
+    ___decNumberFromUInt32;
+    ___decNumberGetBCD;
+    ___decNumberInvert;
+    ___decNumberIsNormal;
+    ___decNumberIsSubnormal;
     ___decNumberLn;
     ___decNumberLog10;
+    ___decNumberLogB;
     ___decNumberMax;
+    ___decNumberMaxMag;
     ___decNumberMin;
+    ___decNumberMinMag;
     ___decNumberMinus;
     ___decNumberMultiply;
+    ___decNumberNextMinus;
+    ___decNumberNextPlus;
+    ___decNumberNextToward;
     ___decNumberNormalize;
+    ___decNumberOr;
     ___decNumberPlus;
     ___decNumberPower;
     ___decNumberQuantize;
+    ___decNumberReduce;
     ___decNumberRemainder;
     ___decNumberRemainderNear;
     ___decNumberRescale;
+    ___decNumberRotate;
     ___decNumberSameQuantum;
+    ___decNumberScaleB;
+    ___decNumberSetBCD;
+    ___decNumberShift;
     ___decNumberSquareRoot;
     ___decNumberSubtract;
+    ___decNumberToEngString;
+    ___decNumberToInt32;
+    ___decNumberToIntegralExact;
     ___decNumberToIntegralValue;
-    ___decNumberCopy;
+    ___decNumberToString;
+    ___decNumberToUInt32;
     ___decNumberTrim;
     ___decNumberVersion;
+    ___decNumberXor;
     ___decNumberZero;
-    ___decContextDefault;
-    ___decContextSetStatus;
-    ___decContextStatusToString;
-    ___decContextSetStatusFromString;
-    ___decNumberLog10;
-    ___decNumberLn;
-    ___decNumberExp;
+
+# From decNumberMath.c
     ___decNumberPow;
-    ___decNumberSquareRoot;
     ___decNumberSinh;
     ___decNumberCosh;
     ___decNumberTanh;
@@ -282,8 +371,8 @@
     ___decNumberCos;
     ___decNumberTan;
     ___decNumberAtan;
-    ___decNumberMin;
-    ___decNumberMax;
+
+# From dpd/decimal*.c
     ___decimal128FromString;
     ___decimal128ToString;
     ___decimal128ToEngString;
@@ -299,7 +388,5 @@
     ___decimal32ToEngString;
     ___decimal32FromNumber;
     ___decimal32ToNumber;
-    # Questionable export
-    ___decFinalize;
   };
 }

Added: branches/libdfp/libc/dfp/libdecnumber/ChangeLog
==============================================================================
--- branches/libdfp/libc/dfp/libdecnumber/ChangeLog (added)
+++ branches/libdfp/libc/dfp/libdecnumber/ChangeLog Fri Nov 16 16:56:23 2007
@@ -1,0 +1,323 @@
+2007-10-31  Thiago Jung Bauermann  <bauerman@xxxxxxxxxx>
+
+	* configure.ac: Add ADDITIONAL_OBJS variable.
+	* Makefile.in (bid_OBS): New.
+	(libdecnumber_a_OBJS): Add ADDITIONAL_OBJS, remove condition
+	on enable_decimal_float.
+	* configure: Regenerate.
+
+2007-09-10  Janis Johnson  <janis187@xxxxxxxxxx>
+	    Ben Elliston  <bje@xxxxxxxxxx>
+
+	* Makefile.in (libdecnumber_a_OBJS): Remove decUtility.o
+	(dependencies): Add Symbols headers.
+	* decContext.c: Upgrade to decNumber 3.53.
+	* decContext.h: Ditto.
+	* decDPD.h: Ditto.
+	* decNumber.c: Ditto.
+	* decNumber.h: Ditto.
+	* decNumberLocal.h: Ditto.
+	* decBasic.c: New file from decNumber 3.53.
+	* decCommon.c: Ditto.
+	* decDouble.c: Ditto.
+	* decDouble.h: Ditto.
+	* decQuad.c: Ditto.
+	* decQuad.h: Ditto.
+	* decSingle.c: Ditto.
+	* decSingle.h: Ditto.
+	* decPacked.c: Ditto.
+	* decPacked.h: Ditto.
+	* dpd/decimal128.c: Upgrade to decNumber 3.53.
+	* dpd/decimal128.h: Ditto.
+	* dpd/decimal32.c: Ditto.
+	* dpd/decimal32.h: Ditto.
+	* dpd/decimal64.c: Ditto.
+	* dpd/decimal64.h: Ditto.
+	* decLibrary.c (__dec_byte_swap): Remove.
+	* decContextSymbols.h: New file.
+	* decDoubleSymbols.h: New file.
+	* decNumberSymbols.h: New file.
+	* decPackedSymbols.h: New file.
+	* decQuadSymbols.h: New file.
+	* decSingleSymbols.h: New file.
+	* decUtility.c: Delete file.
+	* decUtility.h: Delete file.
+	* bid/decimal128Symbols.h: New file.
+	* bid/decimal128Local.h: New file.
+	* bid/decimal32Symbols.h: New file.
+	* bid/decimal64Symbols.h: New file.
+	* bid/host-ieee128.c (__swap128): Remove.
+	(__host_to_ieee_128, __ieee_to_host_128): Don't handle endianness.
+	* bid/host-ieee32.c (__dec_type_swap): Remove.
+	(__host_to_ieee_32, __ieee_to_host_32): Don't handle endianness.
+	* bid/host-ieee64.c (__swap64): Remove.
+	(__host_to_ieee_64, __ieee_to_host_64): Don't handle endianness.
+	* dpd/decimal32Symbols.h: New file.
+	* dpd/decimal64Symbols.h: New file.
+	* dpd/decimal128Symbols.h: New file.
+	* dpd/decimal128Local.h: New file.
+
+2007-06-18  Martin Michlmayr  <tbm@xxxxxxxxxx>
+	    H.J. Lu  <hongjiu.lu@xxxxxxxxx>
+
+	* configure.ac: Add AC_CANONICAL_TARGET.
+	* configure: Regenerated.
+
+2007-04-16  H.J. Lu  <hongjiu.lu@xxxxxxxxx>
+
+	* Makefile.in (aclocal.m4): Depend on stdint.m4 instead of
+	acx.m4.
+
+	* aclocal.m4: Regenerated by aclocal 1.9.6.
+
+2007-04-11  Kai Tietz   <kai.tietz@xxxxxxxxxxxxx>
+
+	* configure: Regenerate.
+
+2007-03-23  Michael Meissner  <michael.meissner@xxxxxxx>
+	    H.J. Lu  <hongjiu.lu@xxxxxxxxx>
+	    Marius Cornea  <marius.cornea@xxxxxxxxx>
+
+	* Makefile.in (enable_decimal_float): New.
+	(libdecnumber_a_OBJS): Add bid2dpd_dpd2bid.o, host-ieee32.o,
+	host-ieee64.o and host-ieee128.o for BID.
+	(libdecnumber_a_SOURCES): Support DPD and BID.
+	(decimal32.o): Support dependency for both DPD and BID.
+	(decimal64.o): Likewise.
+	(decimal128.o): Likewise.
+	(bid2dpd_dpd2bid.o): New target.
+	(host-ieee32.o): Likewise.
+	(host-ieee64.o): Likewise.
+	(host-ieee128.o): Likewise.
+
+	* bid/bid-dpd.h: New file.
+	* bid/decimal128.c: Likewise.
+	* bid/decimal128.h: Likewise.
+	* bid/decimal32.c: Likewise.
+	* bid/decimal32.h: Likewise.
+	* bid/decimal64.c: Likewise.
+	* bid/decimal64.h: Likewise.
+	* bid/host-ieee128.c: Likewise.
+	* bid/host-ieee32.c: Likewise.
+	* bid/host-ieee64.c: Likewise.
+	* bid/bid2dpd_dpd2bid.c: Likewise.
+	* bid/bid2dpd_dpd2bid.h: Likewise.
+
+	* decimal128.c: Moved to ...
+	* dpd/decimal128.c: This.
+	* decimal128.h:  Moved to ...
+	* dpd/decimal128.h: This.
+	* decimal32.c: Moved to ...
+	* dpd/decimal32.c: This.
+	* decimal32.h: Moved to ...
+	* dpd/decimal32.h: This.
+	* decimal64.c: Moved to ...
+	* dpd/decimal64.c: This.
+	* decimal64.h: Moved to ...
+	* dpd/decimal64.h: This.
+
+	* configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
+	Add AC_C_BIGENDIAN.  Substitute enable_decimal_float.
+	* config.in: Add decimal support variables.
+	* configure: Regenerate.
+
+	PR other/30530
+	* decimal128.h (decimal128ClearSign): New.
+	(decimal128FlipSign): Likewise.
+
+	* decimal32.h: (decimal32ClearSign): New.
+	(decimal32FlipSign): Likewise.
+
+	* decimal64.h (decimal64ClearSign): New.
+	(decimal64FlipSign): Likewise.
+
+2007-03-08  Ben Elliston  <bje@xxxxxxxxxx>
+
+	* decContext.c, decContext.h, decDPD.h, decimal128.c,
+	decimal128.h, decimal32.c, decimal32.h, decimal64.c, decimal64.h,
+	decLibrary.c, decNumber.c, decNumber.h, decNumberLocal.h,
+	decRound.c, decRound.h, decUtility.c, decUtility.h: Add
+	libgcc-style license exception clause.
+
+2007-03-01  Brooks Moses  <brooks.moses@xxxxxxxxxxxxxxxx>
+
+	* Makefile.in: Add dummy install-pdf target.
+
+2007-01-29  Janis Johnson  <janis187@xxxxxxxxxx>
+
+	* decExcept.c: New.
+	* decExcept.h: New.
+
+2006-11-29  Janis Johnson  <janis187@xxxxxxxxxx>
+
+	* decRound.c: Move declarations to new file, update comments.
+	* decRound.h: New file.
+
+2006-11-21  Janis Johnson  <janis187@xxxxxxxxxx>
+
+	* decLibrary.c (__dec_type_swap): Add prototype.
+	(__dfp_enable_traps, dfp_raise): Delete.
+
+	* Makefile.in: Don't include decRound in library used by compiler.
+
+2006-10-10  Brooks Moses  <bmoses@xxxxxxxxxxxx> 
+	* Makefile.in: Added empty "pdf" target.
+
+2006-09-15  Kaveh R. Ghazi  <ghazi@xxxxxxxxxxxxxxxx>
+
+	* decNumber.c (decNumberPower): Constify.
+	* decNumber.h (decNumberPower): Likewise.
+
+2006-09-07  Kaveh R. Ghazi  <ghazi@xxxxxxxxxxxxxxxx>
+
+	* configure.ac (ACX_PROG_CC_WARNING_OPTS): Add -Wcast-qual.
+	* configure, config.in: Regenerate.
+
+	* decContext.c (decContextStatusToString): Constify.
+	* decContext.h (decContextStatusToString): Likewise.
+	* decNumber.c (decNumberToString, decNumberToEngString,
+	decNumberAbs, decNumberAdd, decNumberCompare, decNumberDivide,
+	decNumberDivideInteger, decNumberMax, decNumberMin,
+	decNumberMinus, decNumberPlus, decNumberMultiply,
+	decNumberNormalize, decNumberQuantize, decNumberRescale,
+	 decNumberRemainder, decNumberRemainderNear,
+	decNumberSameQuantum, decNumberSquareRoot, decNumberSubtract,
+	decNumberToIntegralValue, decNumberCopy, decToString, decAddOp,
+	decDivideOp, decMultiplyOp, decQuantizeOp, decCompareOp,
+	decCompare, decUnitCompare, decUnitAddSub, decRoundOperand,
+	decCopyFit, decSetCoeff, decGetInt, decNaNs, decGetDigits,
+	decNumberShow, decDumpAr, decCheckOperands, decCheckNumber):
+	Likewise.
+	* decNumber.h (decNumberToString, decNumberToEngString,
+	decNumberAbs, decNumberAdd, decNumberCompare, decNumberDivide,
+	decNumberDivideInteger, decNumberMax, decNumberMin,
+	decNumberMinus, decNumberMultiply, decNumberNormalize,
+	decNumberPlus, decNumberQuantize, decNumberRemainder,
+	 decNumberRemainderNear, decNumberRescale,
+	decNumberSameQuantum, decNumberSquareRoot, decNumberSubtract,
+	decNumberToIntegralValue, decNumberCopy): Likewise.
+	* decUtility.c (decDensePackCoeff, decDenseUnpackCoeff):
+	Likewise.
+	* decUtility.h (decDensePackCoeff, decDenseUnpackCoeff):
+	Likewise.
+	* decimal128.c (decimal128FromNumber, decimal128ToNumber,
+	decimal128ToString, decimal128ToEngString, decimal128Show):
+	Likewise.
+	* decimal128.h (decimal128ToString, decimal128ToEngString,
+	decimal128FromNumber, decimal128ToNumber): Likewise.
+	* decimal32.c (decimal32FromNumber, decimal32ToNumber,
+	decimal32ToString, decimal32ToEngString, decimal32Show):
+	Likewise.
+	* decimal32.h (decimal32ToString, decimal32ToEngString,
+	decimal32FromNumber, decimal32ToNumber): Likewise.
+	* decimal64.c (decimal64FromNumber, decimal64ToNumber,
+	decimal64ToString, decimal64ToEngString, decimal64Show):
+	Likewise.
+	* decimal64.h (decimal64ToString, decimal64ToEngString,
+	decimal64FromNumber, decimal64ToNumber): Likewise.
+
+2006-08-21  Kaveh R. Ghazi  <ghazi@xxxxxxxxxxxxxxxx>
+
+	* decContext.c (decContextSetStatusFromString): Constify.
+	* decContext.h (decContextSetStatusFromString): Likewise.
+	* decNumber.c (decNumberFromString): Likewise.
+	* decNumber.h (decNumberFromString): Likewise.
+	* decimal128.c (decimal128FromString): Likewise.
+	* decimal128.h (decimal128FromString): Likewise.
+	* decimal32.c (decimal32FromString): Likewise.
+	* decimal32.h (decimal32FromString): Likewise.
+	* decimal64.c (decimal64FromString): Likewise.
+	* decimal64.h (decimal64FromString): Likewise.
+
+2006-07-25  Paolo Bonzini  <bonzini@xxxxxxx>
+
+	PR build/26188
+	* configure: Regenerate.
+
+2006-06-23  Ben Elliston  <bje@xxxxxxxxxx>
+
+	* decNumber.h (decNumberNegate): Remove.
+
+2006-05-23  Carlos O'Donell  <carlos@xxxxxxxxxxxxxxxx>
+
+	* Makefile.in: Add install-html target. Add install-html to .PHONY
+
+2006-02-06  Ben Elliston  <bje@xxxxxxxxxx>
+
+	* decLibrary.c (__dec_byte_swap): Use uint32_t for argument and
+	return types.
+
+2006-01-03  Roger Sayle  <roger@xxxxxxxxxxxx>
+	    Kaveh R. Ghazi  <ghazi@xxxxxxxxxxxxxxxx>
+
+	* decNumber.c (__NO_STRING_INLINES): Define to prevent glibc macro
+	definition of strcpy from generating compilation warnings.
+
+2006-01-02  Paolo Bonzini  <bonzini@xxxxxxx>
+
+        PR target/25259
+        * configure.ac: Use GCC_HEADER_STDINT.
+        * decContext.h: Include gstdint.h.
+        * aclocal.m4: Regenerate.
+        * configure: Regenerate.
+
+2005-12-20  Roger Sayle  <roger@xxxxxxxxxxxx>
+
+	* decNumber.c (decStrEq): Cast string contents to unsigned char
+	instead of int before calling tolower.
+
+2005-12-20  Roger Sayle  <roger@xxxxxxxxxxxx>
+
+	* decNumber.c (decStrEq): Cast operands to int before calling
+	tolower to avoid compilation warnings on Tru64.
+
+2005-12-05  Ben Elliston  <bje@xxxxxxxxxx>
+
+	* Makefile.in (clean): Remove stray reference to libcpp.a.
+
+	* decimal128.h, decContext.c, decRound.c, decimal32.c,
+	decNumber.c, decContext.h, decimal64.c, decimal32.h, decNumber.h,
+	decimal64.h, decUtility.c, decLibrary.c, configure.ac,
+	decNumberLocal.h, decUtility.h, decDPD.h, decimal128.c: Update FSF
+	office address.
+
+2005-12-01  Ben Elliston  <bje@xxxxxxxxxx>
+
+	* Makefile.in (libdecnumber_a_SOURCES): Drop decLibrary.c.
+	* decUtility.c (__dec_byte_swap): Move from here ..
+	* decLibrary.c: .. to here.
+
+2005-11-23  Gerald Pfeifer  <gerald@xxxxxxxxxxx>
+
+	* decContext.h: Properly guard inclusion of stdint.h
+	* decContext.c: Include config.h
+	* decLibrary.c: Ditto.
+	* decNumber.c: Ditto.
+	* decRound.c: Ditto.
+	* decUtility.c: Ditto.
+	* decimal32.c: Ditto.
+	* decimal64.c: Ditto.
+	* decimal128.c: Ditto.
+	
+2005-11-29  Ben Elliston  <bje@xxxxxxxxxx>
+
+	* decUtility.c: Remove redundant #includes.
+	* decUtility.h (__dec_byte_swap): Remove prototype.
+
+2005-11-29  Ben Elliston  <bje@xxxxxxxxxx>
+
+	* configure.ac: New file.
+	* aclocal.m4: Likewise.
+	* Makefile.in: Likewise.
+	* configure: Generate.
+	* config.in: Likewise.
+
+2005-11-29  Ben Elliston  <bje@xxxxxxxxxx>
+
+	* decimal32.h, decimal64.h, decimal128.h: New.
+        * decimal32.c, decimal64.c, decimal128.c: Likewise.
+	* decContext.c, decContext.h: Likewise.
+	* decUtility.c, decUtility.h: Likewise.
+	* decNumber.c, decNumber.h, decNumberLocal.h: Likewise.
+	* decDPD.h: Likewise.
+	* decLibrary.c, decRound.c: Likewise.

Added: branches/libdfp/libc/dfp/libdecnumber/Makefile.in
==============================================================================
--- branches/libdfp/libc/dfp/libdecnumber/Makefile.in (added)
+++ branches/libdfp/libc/dfp/libdecnumber/Makefile.in Fri Nov 16 16:56:23 2007
@@ -1,0 +1,185 @@
+# @configure_input@
+# Makefile for libdecnumber.  Run 'configure' to generate Makefile from Makefile.in
+
+# Copyright (C) 2005, 2007 Free Software Foundation, Inc.
+
+#This file is part of GCC.
+
+#GCC is free software; you can redistribute it and/or modify
+#it under the terms of the GNU General Public License as published by
+#the Free Software Foundation; either version 2, or (at your option)
+#any later version.
+
+#GCC is distributed in the hope that it will be useful,
+#but WITHOUT ANY WARRANTY; without even the implied warranty of
+#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#GNU General Public License for more details.
+
+#You should have received a copy of the GNU General Public License
+#along with GCC; see the file COPYING.  If not, write to
+#the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+#Boston MA 02110-1301, USA.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_builddir = .
+VPATH = @srcdir@
+INSTALL = @INSTALL@
+AR = ar
+ARFLAGS = cru
+ACLOCAL = @ACLOCAL@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+CC = @CC@
+CFLAGS = @CFLAGS@
+WARN_CFLAGS = @WARN_CFLAGS@ @WARN_PEDANTIC@ @WERROR@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+PACKAGE = @PACKAGE@
+RANLIB = @RANLIB@
+SHELL = @SHELL@
+
+datadir = @datadir@
+exec_prefix = @prefix@
+libdir = @libdir@
+localedir = $(datadir)/locale
+prefix = @prefix@
+
+ADDITIONAL_OBJS = @ADDITIONAL_OBJS@
+
+enable_decimal_float= @enable_decimal_float@
+
+INCLUDES = -I$(srcdir) -I.
+
+ALL_CFLAGS = $(CFLAGS) $(WARN_CFLAGS) $(INCLUDES) $(CPPFLAGS)
+
+bid_OBJS = bid2dpd_dpd2bid.o host-ieee32.o host-ieee64.o host-ieee128.o
+
+libdecnumber_a_OBJS = decNumber.o decContext.o \
+	decimal32.o decimal64.o decimal128.o $(ADDITIONAL_OBJS)
+
+libdecnumber_a_SOURCES = decContext.c decContext.h decDPD.h \
+	decNumber.c decNumber.h decNumberLocal.h \
+	dpd/decimal128.c dpd/decimal128.h \
+	dpd/decimal32.c dpd/decimal32.h \
+	dpd/decimal64.c dpd/decimal64.h \
+	bid/decimal128.c bid/decimal128.h \
+	bid/decimal32.c bid/decimal32.h \
+	bid/decimal64.c bid/decimal64.h
+
+all: libdecnumber.a
+
+.SUFFIXES:
+.SUFFIXES: .c .o .obj
+
+libdecnumber.a: $(libdecnumber_a_OBJS)
+	-rm -f $@
+	$(AR) $(ARFLAGS) $@ $(libdecnumber_a_OBJS)
+	$(RANLIB) $@
+
+# Rules to rebuild the configuration
+
+Makefile: $(srcdir)/Makefile.in config.status
+	$(SHELL) ./config.status Makefile
+
+config.status: $(srcdir)/configure
+	$(SHELL) ./config.status --recheck
+
+$(srcdir)/configure: @MAINT@ $(srcdir)/aclocal.m4
+	cd $(srcdir) && $(AUTOCONF)
+
+$(srcdir)/aclocal.m4: @MAINT@ $(srcdir)/../config/stdint.m4 \
+	$(srcdir)/../config/warnings.m4 \
+	$(srcdir)/configure.ac
+	cd $(srcdir) && $(ACLOCAL) -I ../config
+
+config.h: stamp-h1
+	test -f config.h || (rm -f stamp-h1 && $(MAKE) stamp-h1)
+
+stamp-h1: $(srcdir)/config.in config.status
+	-rm -f stamp-h1
+	$(SHELL) ./config.status config.h
+
+$(srcdir)/config.in: @MAINT@ $(srcdir)/configure
+	cd $(srcdir) && $(AUTOHEADER)
+	-rm -f stamp-h1
+
+# Dependencies.
+
+decContext.o: decContext.c decContext.h decNumberLocal.h \
+	decContextSymbols.h
+decNumber.o:  decNumber.c decNumber.h decContext.h decNumberLocal.h \
+	decNumberSymbols.h
+decimal32.o:  $(enable_decimal_float)/decimal32.c \
+   $(enable_decimal_float)/decimal32.h \
+   $(enable_decimal_float)/decimal32Symbols.h \
+   decNumber.h decContext.h decNumberLocal.h
+	$(COMPILE) $<
+decimal64.o:  $(enable_decimal_float)/decimal64.c \
+   $(enable_decimal_float)/decimal64.h \
+   $(enable_decimal_float)/decimal64Symbols.h \
+   decNumber.h decContext.h decNumberLocal.h
+	$(COMPILE) $<
+decimal128.o:  $(enable_decimal_float)/decimal128.c \
+   $(enable_decimal_float)/decimal128.h \
+   $(enable_decimal_float)/decimal128Symbols.h\
+   $(enable_decimal_float)/decimal128Local.h\
+   decNumber.h decContext.h decNumberLocal.h 
+	$(COMPILE) $<
+bid2dpd_dpd2bid.o : bid/bid2dpd_dpd2bid.c bid/bid2dpd_dpd2bid.h
+	$(COMPILE) $<
+host-ieee32.o : bid/host-ieee32.c bid/decimal32.h
+	$(COMPILE) $<
+host-ieee64.o : bid/host-ieee64.c bid/decimal64.h
+	$(COMPILE) $<
+host-ieee128.o : bid/host-ieee128.c bid/decimal128.h
+	$(COMPILE) $<
+# Other miscellaneous targets.
+
+mostlyclean:
+	-rm -f *.o
+
+clean: mostlyclean
+	-rm -rf makedepend$(EXEEXT) libdecnumber.a $(srcdir)/autom4te.cache
+
+distclean: clean
+	-rm -f config.h stamp-h1 config.status config.cache config.log \
+	  configure.lineno configure.status.lineno Makefile localedir.h \
+	  localedir.hs
+
+maintainer-clean: distclean
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+	-rm -f $(srcdir)/configure $(srcdir)/aclocal.m4
+
+check:
+installcheck:
+dvi:
+pdf:
+html:
+info:
+install-info:
+install-pdf:
+install-man:
+install-html:
+install:
+
+.PHONY: installdirs install install-strip mostlyclean clean distclean \
+  maintainer-clean check installcheck dvi pdf html info install-info \
+  install-pdf install-man update-po install-html
+
+COMPILE = source='$<' object='$@' libtool=no $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(ALL_CFLAGS) -c
+
+# Implicit rules
+
+.c.o:
+	$(COMPILE) $<
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: branches/libdfp/libc/dfp/libdecnumber/aclocal.m4
==============================================================================
--- branches/libdfp/libc/dfp/libdecnumber/aclocal.m4 (added)
+++ branches/libdfp/libc/dfp/libdecnumber/aclocal.m4 Fri Nov 16 16:56:23 2007
@@ -1,0 +1,15 @@
+# generated automatically by aclocal 1.9.6 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005  Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_include([../config/stdint.m4])
+m4_include([../config/warnings.m4])

Added: branches/libdfp/libc/dfp/libdecnumber/bid/bid-dpd.h
==============================================================================
--- branches/libdfp/libc/dfp/libdecnumber/bid/bid-dpd.h (added)
+++ branches/libdfp/libc/dfp/libdecnumber/bid/bid-dpd.h Fri Nov 16 16:56:23 2007
@@ -1,0 +1,43 @@
+/* Copyright (C) 2007
+   Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING.  If not, write to the Free
+Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301, USA.  */
+
+/* As a special exception, if you link this library with other files,
+   some of which are compiled with GCC, to produce an executable,
+   this library does not by itself cause the resulting executable
+   to be covered by the GNU General Public License.
+   This exception does not however invalidate any other reasons why
+   the executable file might be covered by the GNU General Public License.  */
+
+typedef unsigned int UINT32;
+typedef unsigned long long UINT64;
+typedef struct { UINT64 w[2]; } UINT128;
+
+#ifndef IN_LIBGCC2
+#define _Decimal32 UINT32
+#define _Decimal64 UINT64
+#define _Decimal128 UINT128
+#endif
+
+void _bid_to_dpd32 (_Decimal32 *, _Decimal32 *);
+void _dpd_to_bid32 (_Decimal32 *, _Decimal32 *);
+void _bid_to_dpd64 (_Decimal64 *, _Decimal64 *);
+void _dpd_to_bid64 (_Decimal64 *, _Decimal64 *);
+void _bid_to_dpd128 (_Decimal128 *, _Decimal128 *);
+void _dpd_to_bid128 (_Decimal128 *, _Decimal128 *);

Added: branches/libdfp/libc/dfp/libdecnumber/bid/bid2dpd_dpd2bid.c
==============================================================================
--- branches/libdfp/libc/dfp/libdecnumber/bid/bid2dpd_dpd2bid.c (added)
+++ branches/libdfp/libc/dfp/libdecnumber/bid/bid2dpd_dpd2bid.c Fri Nov 16 16:56:23 2007
@@ -1,0 +1,428 @@
+/* Copyright (C) 2007  Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2, or (at your option) any later
+version.
+
+In addition to the permissions in the GNU General Public License, the
+Free Software Foundation gives you unlimited permission to link the
+compiled version of this file into combinations with other programs,
+and to distribute those combinations without any restriction coming
+from the use of this file.  (The General Public License restrictions
+do apply in other respects; for example, they cover modification of
+the file, and distribution when not linked into a combine
+executable.)
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING.  If not, write to the Free
+Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301, USA.  */
+
+#undef IN_LIBGCC2
+#include "bid-dpd.h"
+
+/* get full 64x64bit product */
+#define __mul_64x64_to_128(P, CX, CY)             \
+{                                                 \
+  UINT64 CXH, CXL, CYH,CYL,PL,PH,PM,PM2;  \
+  CXH = (CX) >> 32;                               \
+  CXL = (UINT32)(CX);                             \
+  CYH = (CY) >> 32;                               \
+  CYL = (UINT32)(CY);                             \
+                                                  \
+  PM = CXH*CYL;                                   \
+  PH = CXH*CYH;                                   \
+  PL = CXL*CYL;                                   \
+  PM2 = CXL*CYH;                                  \
+  PH += (PM>>32);                                 \
+  PM = (UINT64)((UINT32)PM)+PM2+(PL>>32);         \
+                                                  \
+  (P).w[1] = PH + (PM>>32);                       \
+  (P).w[0] = (PM<<32)+(UINT32)PL;                 \
+}
+
+/* add 64-bit value to 128-bit */
+#define __add_128_64(R128, A128, B64)             \
+{                                                 \
+  UINT64 R64H;                                    \
+  R64H = (A128).w[1];                             \
+  (R128).w[0] = (B64) + (A128).w[0];              \
+  if((R128).w[0] < (B64)) R64H ++;                \
+  (R128).w[1] = R64H;                             \
+}
+
+/* add 128-bit value to 128-bit (assume no carry-out) */
+#define __add_128_128(R128, A128, B128)           \
+{                                                 \
+  UINT128 Q128;                                   \
+  Q128.w[1] = (A128).w[1]+(B128).w[1];            \
+  Q128.w[0] = (B128).w[0] + (A128).w[0];          \
+  if(Q128.w[0] < (B128).w[0]) Q128.w[1] ++;       \
+  (R128).w[1] = Q128.w[1];                        \
+  (R128).w[0] = Q128.w[0];                        \
+}
+
+#define __mul_128x128_high(Q, A, B)               \
+{                                                 \
+  UINT128 ALBL, ALBH, AHBL, AHBH, QM, QM2;        \
+                                                  \
+  __mul_64x64_to_128(ALBH, (A).w[0], (B).w[1]);   \
+  __mul_64x64_to_128(AHBL, (B).w[0], (A).w[1]);   \
+  __mul_64x64_to_128(ALBL, (A).w[0], (B).w[0]);   \
+  __mul_64x64_to_128(AHBH, (A).w[1],(B).w[1]);    \
+                                                  \
+  __add_128_128(QM, ALBH, AHBL);                  \
+  __add_128_64(QM2, QM, ALBL.w[1]);               \
+  __add_128_64((Q), AHBH, QM2.w[1]);              \
+}
+
+#include "bid2dpd_dpd2bid.h"
+
+static const unsigned int dm103[] =
+  { 0, 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000, 11000 };
+
+void _bid_to_dpd32 (_Decimal32 *, _Decimal32 *);
+
+void
+_bid_to_dpd32 (_Decimal32 *pres, _Decimal32 *px) {
+  unsigned int sign, coefficient_x, exp, dcoeff;
+  unsigned int b2, b1, b0, b01, res;
+  _Decimal32 x = *px;
+
+  sign = (x & 0x80000000);
+  if ((x & 0x60000000ul) == 0x60000000ul) {
+    /* special encodings */
+    if ((x & 0x78000000ul) == 0x78000000ul) {
+      *pres = x; /* NaN or Infinity */
+      return;
+    }
+    /* coefficient */
+    coefficient_x = (x & 0x001ffffful) | 0x00800000ul;
+    if (coefficient_x >= 10000000) coefficient_x = 0;
+    /* get exponent */
+    exp = (x >> 21) & 0xff;
+  } else {
+    exp = (x >> 23) & 0xff;
+    coefficient_x = (x & 0x007ffffful);
+  }
+  b01 = coefficient_x / 1000;
+  b2 = coefficient_x - 1000 * b01;
+  b0 = b01 / 1000;
+  b1 = b01 - 1000 * b0;
+  dcoeff = b2d[b2] | b2d2[b1];
+  if (b0 >= 8) { /* is b0 8 or 9? */
+    res = sign | ((0x600 | ((exp >> 6) << 7) | 
+        ((b0 & 1) << 6) | (exp & 0x3f)) << 20) | dcoeff;
+  } else { /* else b0 is 0..7 */
+    res = sign | ((((exp >> 6) << 9) | (b0 << 6) | 
+        (exp & 0x3f)) << 20) | dcoeff;
+  }
+  *pres = res;
+}
+
+void _dpd_to_bid32 (_Decimal32 *, _Decimal32 *);
+
+void
+_dpd_to_bid32 (_Decimal32 *pres, _Decimal32 *px) {
+  unsigned int r;
+  unsigned int sign, exp, bcoeff;
+  UINT64 trailing;
+  unsigned int d0, d1, d2;
+  _Decimal32 x = *px;
+
+  sign = (x & 0x80000000);
+  trailing = (x & 0x000fffff);
+  if ((x & 0x78000000) == 0x78000000) {
+    *pres = x;
+    return;
+  } else { /* normal number */
+    if ((x & 0x60000000) == 0x60000000) { /* G0..G1 = 11 -> d0 = 8 + G4 */
+      d0 = d2b3[((x >> 26) & 1) | 8]; /* d0 = (comb & 0x0100 ? 9 : 8); */
+      exp = (x >> 27) & 3; /* exp leading bits are G2..G3 */
+    } else {
+      d0 = d2b3[(x >> 26) & 0x7];
+      exp = (x >> 29) & 3; /* exp loading bits are G0..G1 */
+    }
+    d1 = d2b2[(trailing >> 10) & 0x3ff];
+    d2 = d2b[(trailing) & 0x3ff];
+    bcoeff = d2 + d1 + d0;
+    exp = (exp << 6) + ((x >> 20) & 0x3f);
+    if (bcoeff < (1 << 23)) {
+      r = exp;
+      r <<= 23;
+      r |= (bcoeff | sign);
+    } else {
+      r = exp;
+      r <<= 21;
+      r |= (sign | 0x60000000ul);
+      /* add coeff, without leading bits */
+      r |= (((unsigned int) bcoeff) & 0x1fffff);
+    }
+  }
+  *pres = r;
+}
+
+void _bid_to_dpd64 (_Decimal64 *, _Decimal64 *);
+
+void
+_bid_to_dpd64 (_Decimal64 *pres, _Decimal64 *px) {
+  UINT64 res;
+  UINT64 sign, comb, exp, B34, B01;
+  UINT64 d103, D61;
+  UINT64 b0, b2, b3, b5;
+  unsigned int b1, b4;
+  UINT64 bcoeff;
+  UINT64 dcoeff;
+  unsigned int yhi, ylo;
+  _Decimal64 x = *px;
+
+  sign = (x & 0x8000000000000000ull);
+  comb = (x & 0x7ffc000000000000ull) >> 51;
+  if ((comb & 0xf00) == 0xf00) {
+    *pres = x;
+    return;
+  } else { /* Normal number */
+    if ((comb & 0xc00) == 0xc00) { /* G0..G1 = 11 -> exp is G2..G11 */
+      exp = (comb) & 0x3ff;
+      bcoeff = (x & 0x0007ffffffffffffull) | 0x0020000000000000ull;
+    } else {
+      exp = (comb >> 2) & 0x3ff;
+      bcoeff = (x & 0x001fffffffffffffull);
+    }
+    D61 = 2305843009ull; /* Floor(2^61 / 10^9) */
+    /* Multiply the binary coefficient by ceil(2^64 / 1000), and take the upper
+       64-bits in order to compute a division by 1000. */
+    yhi = (D61 * (UINT64)(bcoeff >> (UINT64)27)) >> (UINT64)34;
+    ylo = bcoeff - 1000000000ull * yhi;
+    if (ylo >= 1000000000) {
+      ylo = ylo - 1000000000;
+      yhi = yhi + 1;
+    }
+    d103 = 0x4189374c;
+    B34 = ((UINT64) ylo * d103) >> (32 + 8);
+    B01 = ((UINT64) yhi * d103) >> (32 + 8);
+    b5 = ylo - B34 * 1000;
+    b2 = yhi - B01 * 1000;
+    b3 = ((UINT64) B34 * d103) >> (32 + 8);
+    b0 = ((UINT64) B01 * d103) >> (32 + 8);
+    b4 = (unsigned int) B34 - (unsigned int) b3 *1000;
+    b1 = (unsigned int) B01 - (unsigned int) dm103[b0];
+    dcoeff = b2d[b5] | b2d2[b4] | b2d3[b3] | b2d4[b2] | b2d5[b1];
+    if (b0 >= 8) /* is b0 8 or 9? */
+      res = sign | ((0x1800 | ((exp >> 8) << 9) | ((b0 & 1) << 8) | 
+          (exp & 0xff)) << 50) | dcoeff;
+    else /* else b0 is 0..7 */
+      res = sign | ((((exp >> 8) << 11) | (b0 << 8) | 
+          (exp & 0xff)) << 50) | dcoeff;
+  }
+  *pres = res;
+}
+
+void _dpd_to_bid64 (_Decimal64 *, _Decimal64 *);
+
+void
+_dpd_to_bid64 (_Decimal64 *pres, _Decimal64 *px) {
+  UINT64 res;
+  UINT64 sign, comb, exp;
+  UINT64 trailing;
+  UINT64 d0, d1, d2;
+  unsigned int d3, d4, d5;
+  UINT64 bcoeff, mask;
+  _Decimal64 x = *px;
+
+  sign = (x & 0x8000000000000000ull);
+  comb = (x & 0x7ffc000000000000ull) >> 50;
+  trailing = (x & 0x0003ffffffffffffull);
+  if ((comb & 0x1e00) == 0x1e00) {
+    if ((comb & 0x1f00) == 0x1f00) { /* G0..G4 = 11111 -> NaN */
+      if (comb & 0x0100) { /* G5 = 1 -> sNaN */
+        *pres = x;
+      } else { /* G5 = 0 -> qNaN */
+        *pres = x;
+      }
+    } else { /*if ((comb & 0x1e00) == 0x1e00); G0..G4 = 11110 -> INF */
+      *pres = x;
+    }
+    return;
+  } else { /* normal number */
+    if ((comb & 0x1800) == 0x1800) { /* G0..G1 = 11 -> d0 = 8 + G4 */
+      d0 = d2b6[((comb >> 8) & 1) | 8]; /* d0 = (comb & 0x0100 ? 9 : 8); */
+      exp = (comb & 0x600) >> 1; /* exp = (comb & 0x0400 ? 1 : 0) * 0x200 + 
+          (comb & 0x0200 ? 1 : 0) * 0x100; exp leading bits are G2..G3 */
+    } else {
+      d0 = d2b6[(comb >> 8) & 0x7];
+      exp = (comb & 0x1800) >> 3; /* exp = (comb & 0x1000 ? 1 : 0) * 0x200 + 
+          (comb & 0x0800 ? 1 : 0) * 0x100; exp loading bits are G0..G1 */
+    }
+    d1 = d2b5[(trailing >> 40) & 0x3ff];
+    d2 = d2b4[(trailing >> 30) & 0x3ff];
+    d3 = d2b3[(trailing >> 20) & 0x3ff];
+    d4 = d2b2[(trailing >> 10) & 0x3ff];
+    d5 = d2b[(trailing) & 0x3ff];
+    bcoeff = (d5 + d4 + d3) + d2 + d1 + d0;
+    exp += (comb & 0xff);
+    mask = 1;
+    mask <<= 53;
+    if (bcoeff < mask) { /* check whether coefficient fits in 10*5+3 bits */
+      res = exp;
+      res <<= 53;
+      res |= (bcoeff | sign);
+      *pres = res;
+      return;
+    }
+    /* special format */
+    res = (exp << 51) | (sign | 0x6000000000000000ull);
+    /* add coeff, without leading bits */
+    mask = (mask >> 2) - 1;
+    bcoeff &= mask;
+    res |= bcoeff;
+  }
+  *pres = res;
+}
+
+void _bid_to_dpd128 (_Decimal128 *, _Decimal128 *);
+
+void
+_bid_to_dpd128 (_Decimal128 *pres, _Decimal128 *px) {
+  UINT128 res;
+  UINT128 sign;
+  unsigned int comb;
+  UINT128 bcoeff;
+  UINT128 dcoeff;
+  UINT128 BH, d1018, BT2, BT1;
+  UINT64 exp, BL, d109;
+  UINT64 d106, d103;
+  UINT64 k1, k2, k4, k5, k7, k8, k10, k11;
+  unsigned int BHH32, BLL32, BHL32, BLH32, k0, k3, k6, k9, amount;
+  _Decimal128 x = *px;
+
+  sign.w[1] = (x.w[1] & 0x8000000000000000ull);
+  sign.w[0] = 0;
+  comb = (x.w[1] /*& 0x7fffc00000000000ull */ ) >> 46;
+  exp = 0;
+  if ((comb & 0x1e000) == 0x1e000) {
+    if ((comb & 0x1f000) == 0x1f000) { /* G0..G4 = 11111 -> NaN */
+      if (comb & 0x01000) { /* G5 = 1 -> sNaN */
+        res = x;
+      } else { /* G5 = 0 -> qNaN */
+        res = x;
+      }
+    } else { /* G0..G4 = 11110 -> INF */
+      res = x;
+    }
+  } else { /* normal number */
+    exp = ((x.w[1] & 0x7fff000000000000ull) >> 49) & 0x3fff;
+    bcoeff.w[1] = (x.w[1] & 0x0001ffffffffffffull);
+    bcoeff.w[0] = x.w[0];
+    d1018 = reciprocals10_128[18];
+    __mul_128x128_high (BH, bcoeff, d1018);
+    amount = recip_scale[18];
+    BH.w[0] = (BH.w[0] >> amount) | (BH.w[1] << (64 - amount));
+    BL = bcoeff.w[0] - BH.w[0] * 1000000000000000000ull;
+    d109 = reciprocals10_64[9];
+    __mul_64x64_to_128 (BT1, BH.w[0], d109);
+    BHH32 = (unsigned int) (BT1.w[1] >> short_recip_scale[9]);
+    BHL32 = (unsigned int) BH.w[0] - BHH32 * 1000000000;
+    __mul_64x64_to_128 (BT2, BL, d109);
+    BLH32 = (unsigned int) (BT2.w[1] >> short_recip_scale[9]);
+    BLL32 = (unsigned int) BL - BLH32 * 1000000000;
+    d106 = 0x431BDE83;
+    d103 = 0x4189374c;
+    k0 = ((UINT64) BHH32 * d106) >> (32 + 18);
+    BHH32 -= (unsigned int) k0 *1000000;
+    k1 = ((UINT64) BHH32 * d103) >> (32 + 8);
+    k2 = BHH32 - (unsigned int) k1 *1000;
+    k3 = ((UINT64) BHL32 * d106) >> (32 + 18);
+    BHL32 -= (unsigned int) k3 *1000000;
+    k4 = ((UINT64) BHL32 * d103) >> (32 + 8);
+    k5 = BHL32 - (unsigned int) k4 *1000;
+    k6 = ((UINT64) BLH32 * d106) >> (32 + 18);
+    BLH32 -= (unsigned int) k6 *1000000;
+    k7 = ((UINT64) BLH32 * d103) >> (32 + 8);
+    k8 = BLH32 - (unsigned int) k7 *1000;
+    k9 = ((UINT64) BLL32 * d106) >> (32 + 18);
+    BLL32 -= (unsigned int) k9 *1000000;
+    k10 = ((UINT64) BLL32 * d103) >> (32 + 8);
+    k11 = BLL32 - (unsigned int) k10 *1000;
+    dcoeff.w[1] = (b2d[k5] >> 4) | (b2d[k4] << 6) | (b2d[k3] << 16) | 
+        (b2d[k2] << 26) | (b2d[k1] << 36);
+    dcoeff.w[0] = b2d[k11] | (b2d[k10] << 10) | (b2d[k9] << 20) | 
+        (b2d[k8] << 30) | (b2d[k7] << 40) | (b2d[k6] << 50) | (b2d[k5] << 60);
+    res.w[0] = dcoeff.w[0];
+    if (k0 >= 8) {
+      res.w[1] = sign.w[1] | ((0x18000 | ((exp >> 12) << 13) | 
+          ((k0 & 1) << 12) | (exp & 0xfff)) << 46) | dcoeff.w[1];
+    } else {
+      res.w[1] = sign.w[1] | ((((exp >> 12) << 15) | (k0 << 12) | 
+          (exp & 0xfff)) << 46) | dcoeff.w[1];
+    }
+  }
+  *pres = res;
+}
+
+void _dpd_to_bid128 (_Decimal128 *, _Decimal128 *);
+
+void
+_dpd_to_bid128 (_Decimal128 *pres, _Decimal128 *px) {
+  UINT128 res;
+  UINT128 sign;
+  UINT64 exp, comb;
+  UINT128 trailing;
+  UINT64 d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11;
+  UINT128 bcoeff;
+  UINT64 tl, th;
+  _Decimal128 x = *px;
+
+  sign.w[1] = (x.w[1] & 0x8000000000000000ull);
+  sign.w[0] = 0;
+  comb = (x.w[1] & 0x7fffc00000000000ull) >> 46;
+  trailing.w[1] = x.w[1];
+  trailing.w[0] = x.w[0];
+  if ((comb & 0x1e000) == 0x1e000) {
+    if ((comb & 0x1f000) == 0x1f000) { /* G0..G4 = 11111 -> NaN */
+      if (comb & 0x01000) { /* G5 = 1 -> sNaN */
+        *pres = x;
+      } else { /* G5 = 0 -> qNaN */
+        *pres = x;
+      }
+    } else { /* G0..G4 = 11110 -> INF */
+      *pres = x;
+    }
+    return;
+  } else { /* Normal number */
+    if ((comb & 0x18000) == 0x18000) { /* G0..G1 = 11 -> d0 = 8 + G4 */
+      d0 = d2b6[8 + ((comb & 0x01000) >> 12)];
+      exp = (comb & 0x06000) >> 1;  /* exp leading bits are G2..G3 */
+    } else {
+      d0 = d2b6[((comb & 0x07000) >> 12)];
+      exp = (comb & 0x18000) >> 3;  /* exp loading bits are G0..G1 */
+    }
+    d11 = d2b[(trailing.w[0]) & 0x3ff];
+    d10 = d2b2[(trailing.w[0] >> 10) & 0x3ff];
+    d9 = d2b3[(trailing.w[0] >> 20) & 0x3ff];
+    d8 = d2b4[(trailing.w[0] >> 30) & 0x3ff];
+    d7 = d2b5[(trailing.w[0] >> 40) & 0x3ff];
+    d6 = d2b6[(trailing.w[0] >> 50) & 0x3ff];
+    d5 = d2b[(trailing.w[0] >> 60) | ((trailing.w[1] & 0x3f) << 4)];
+    d4 = d2b2[(trailing.w[1] >> 6) & 0x3ff];
+    d3 = d2b3[(trailing.w[1] >> 16) & 0x3ff];
+    d2 = d2b4[(trailing.w[1] >> 26) & 0x3ff];
+    d1 = d2b5[(trailing.w[1] >> 36) & 0x3ff];
+    tl = d11 + d10 + d9 + d8 + d7 + d6;
+    th = d5 + d4 + d3 + d2 + d1 + d0;
+    __mul_64x64_to_128 (bcoeff, th, 1000000000000000000ull);
+    __add_128_64 (bcoeff, bcoeff, tl);
+    exp += (comb & 0xfff);
+    res.w[0] = bcoeff.w[0];
+    res.w[1] = (exp << 49) | sign.w[1] | bcoeff.w[1];
+  }
+  *pres = res;
+}

Added: branches/libdfp/libc/dfp/libdecnumber/bid/bid2dpd_dpd2bid.h
==============================================================================
--- branches/libdfp/libc/dfp/libdecnumber/bid/bid2dpd_dpd2bid.h (added)
+++ branches/libdfp/libc/dfp/libdecnumber/bid/bid2dpd_dpd2bid.h Fri Nov 16 16:56:23 2007
@@ -1,0 +1,10407 @@
+/* Copyright (C) 2007  Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2, or (at your option) any later
+version.
+
+In addition to the permissions in the GNU General Public License, the
+Free Software Foundation gives you unlimited permission to link the
+compiled version of this file into combinations with other programs,
+and to distribute those combinations without any restriction coming
+from the use of this file.  (The General Public License restrictions
+do apply in other respects; for example, they cover modification of
+the file, and distribution when not linked into a combine
+executable.)
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING.  If not, write to the Free
+Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301, USA.  */
+
+static const UINT128 reciprocals10_128[] = {
+  { { 0ull, 0ull } }, /* 0 extra digits */
+  { { 0x3333333333333334ull ,0x3333333333333333ull } }, /* 1 extra digit */
+  { { 0x51eb851eb851eb86ull ,0x051eb851eb851eb8ull } }, /* 2 extra digits */
+  { { 0x3b645a1cac083127ull, 0x0083126e978d4fdfull } }, /* 3 extra digits */
+  { { 0x4af4f0d844d013aaULL, 0x00346dc5d6388659ULL } }, /*  10^(-4) * 2^131 */
+  { { 0x08c3f3e0370cdc88ULL, 0x0029f16b11c6d1e1ULL } }, /*  10^(-5) * 2^134 */
+  { { 0x6d698fe69270b06dULL, 0x00218def416bdb1aULL } }, /*  10^(-6) * 2^137 */
+  { { 0xaf0f4ca41d811a47ULL, 0x0035afe535795e90ULL } }, /*  10^(-7) * 2^141 */
+  { { 0xbf3f70834acdaea0ULL, 0x002af31dc4611873ULL } }, /*  10^(-8) * 2^144 */
+  { { 0x65cc5a02a23e254dULL, 0x00225c17d04dad29ULL } }, /*  10^(-9) * 2^147 */
+  { { 0x6fad5cd10396a214ULL, 0x0036f9bfb3af7b75ULL } }, /* 10^(-10) * 2^151 */
+  { { 0xbfbde3da69454e76ULL, 0x002bfaffc2f2c92aULL } }, /* 10^(-11) * 2^154 */
+  { { 0x32fe4fe1edd10b92ULL, 0x00232f33025bd422ULL } }, /* 10^(-12) * 2^157 */
+  { { 0x84ca19697c81ac1cULL, 0x00384b84d092ed03ULL } }, /* 10^(-13) * 2^161 */
+  { { 0x03d4e1213067bce4ULL, 0x002d09370d425736ULL } }, /* 10^(-14) * 2^164 */
+  { { 0x3643e74dc052fd83ULL, 0x0024075f3dceac2bULL } }, /* 10^(-15) * 2^167 */
+  { { 0x56d30baf9a1e626bULL, 0x0039a5652fb11378ULL } }, /* 10^(-16) * 2^171 */
+  { { 0x12426fbfae7eb522ULL, 0x002e1dea8c8da92dULL } }, /* 10^(-17) * 2^174 */
+  { { 0x41cebfcc8b9890e8ULL, 0x0024e4bba3a48757ULL } }, /* 10^(-18) * 2^177 */
+  { { 0x694acc7a78f41b0dULL, 0x003b07929f6da558ULL } }, /* 10^(-19) * 2^181 */
+  { { 0xbaa23d2ec729af3eULL, 0x002f394219248446ULL } }, /* 10^(-20) * 2^184 */
+  { { 0xfbb4fdbf05baf298ULL, 0x0025c768141d369eULL } }, /* 10^(-21) * 2^187 */
+  { { 0x2c54c931a2c4b759ULL, 0x003c7240202ebdcbULL } }, /* 10^(-22) * 2^191 */
+  { { 0x89dd6dc14f03c5e1ULL, 0x00305b66802564a2ULL } }, /* 10^(-23) * 2^194 */
+  { { 0xd4b1249aa59c9e4eULL, 0x0026af8533511d4eULL } }, /* 10^(-24) * 2^197 */
+  { { 0x544ea0f76f60fd49ULL, 0x003de5a1ebb4fbb1ULL } }, /* 10^(-25) * 2^201 */
+  { { 0x76a54d92bf80caa1ULL, 0x00318481895d9627ULL } }, /* 10^(-26) * 2^204 */
+  { { 0x921dd7a89933d54eULL, 0x00279d346de4781fULL } }, /* 10^(-27) * 2^207 */
+  { { 0x8362f2a75b862215ULL, 0x003f61ed7ca0c032ULL } }, /* 10^(-28) * 2^211 */
+  { { 0xcf825bb91604e811ULL, 0x0032b4bdfd4d668eULL } }, /* 10^(-29) * 2^214 */
+  { { 0x0c684960de6a5341ULL, 0x00289097fdd7853fULL } }, /* 10^(-30) * 2^217 */
+  { { 0x3d203ab3e521dc34ULL, 0x002073accb12d0ffULL } }, /* 10^(-31) * 2^220 */
+  { { 0x2e99f7863b696053ULL, 0x0033ec47ab514e65ULL } }, /* 10^(-32) * 2^224 */
+  { { 0x587b2c6b62bab376ULL, 0x002989d2ef743eb7ULL } }, /* 10^(-33) * 2^227 */
+  { { 0xad2f56bc4efbc2c5ULL, 0x00213b0f25f69892ULL } }, /* 10^(-34) * 2^230 */
+  { { 0x0f2abc9d8c9689d1ull, 0x01a95a5b7f87a0efull } } /* 35 extra digits */
+};
+
+static const int recip_scale[] = {
+  129 - 128,  /* 1 */
+  129 - 128,  /* 1/10 */
+  129 - 128,  /* 1/10^2 */
+  129 - 128,  /* 1/10^3 */
+  3, /* 131 - 128 */
+  6, /* 134 - 128 */
+  9, /* 137 - 128 */
+  13, /* 141 - 128 */
+  16, /* 144 - 128 */
+  19, /* 147 - 128 */
+  23, /* 151 - 128 */
+  26, /* 154 - 128 */
+  29, /* 157 - 128 */
+  33, /* 161 - 128 */
+  36, /* 164 - 128 */
+  39, /* 167 - 128 */
+  43, /* 171 - 128 */
+  46, /* 174 - 128 */
+  49, /* 177 - 128 */
+  53, /* 181 - 128 */
+  56, /* 184 - 128 */
+  59, /* 187 - 128 */
+  63, /* 191 - 128 */
+
+  66, /* 194 - 128 */
+  69, /* 197 - 128 */
+  73, /* 201 - 128 */
+  76, /* 204 - 128 */
+  79, /* 207 - 128 */
+  83, /* 211 - 128 */
+  86, /* 214 - 128 */
+  89, /* 217 - 128 */
+  92, /* 220 - 128 */
+  96, /* 224 - 128 */
+  99, /* 227 - 128 */
+  102, /* 230 - 128 */
+  237 - 128,  /* 1/10^35 */
+};
+
+static const int short_recip_scale[] = {
+  1, 
+  65 - 64,
+  69 - 64,
+  71 - 64,
+  75 - 64, 
+  78 - 64,
+  81 - 64,
+  85 - 64,
+  88 - 64,
+  91 - 64,
+  95 - 64,
+  98 - 64,
+  101 - 64,
+  105 - 64,
+  108 - 64,
+  111 - 64,
+  115 - 64, /* 114 - 64 */
+  118 - 64
+};
+
+static const unsigned long long reciprocals10_64[] = {
+  1ull, /* dummy value for 0 extra digits */
+  0x3333333333333334ull,   /* 1 extra digit */
+  0x51eb851eb851eb86ull,
+  0x20c49ba5e353f7cfull,
+  0x346dc5d63886594bull,
+  0x29f16b11c6d1e109ull,
+  0x218def416bdb1a6eull,
+  0x35afe535795e90b0ull,
+  0x2af31dc4611873c0ull,
+  0x225c17d04dad2966ull,
+  0x36f9bfb3af7b7570ull,
+  0x2bfaffc2f2c92ac0ull,
+  0x232f33025bd42233ull,
+  0x384b84d092ed0385ull,
+  0x2d09370d42573604ull,
+  0x24075f3dceac2b37ull,
+  0x39a5652fb1137857ull,   
+  0x2e1dea8c8da92d13ull
+};
+
+static const UINT64 d2b[] = {  
+    0,   1,   2,   3,   4,   5,   6,   7,
+    8,   9,  80,  81, 800, 801, 880, 881,
+    10,  11,  12,  13,  14,  15,  16,  17,
+    18,  19,  90,  91, 810, 811, 890, 891,
+    20,  21,  22,  23,  24,  25,  26,  27,
+    28,  29,  82,  83, 820, 821, 808, 809,
+    30,  31,  32,  33,  34,  35,  36,  37,
+    38,  39,  92,  93, 830, 831, 818, 819,
+    40,  41,  42,  43,  44,  45,  46,  47,
+    48,  49,  84,  85, 840, 841,  88,  89,
+    50,  51,  52,  53,  54,  55,  56,  57,
+    58,  59,  94,  95, 850, 851,  98,  99,
+    60,  61,  62,  63,  64,  65,  66,  67,
+    68,  69,  86,  87, 860, 861, 888, 889,
+    70,  71,  72,  73,  74,  75,  76,  77,
+    78,  79,  96,  97, 870, 871, 898, 899,
+    100, 101, 102, 103, 104, 105, 106, 107,
+    108, 109, 180, 181, 900, 901, 980, 981,
+    110, 111, 112, 113, 114, 115, 116, 117,
+    118, 119, 190, 191, 910, 911, 990, 991,
+    120, 121, 122, 123, 124, 125, 126, 127,
+    128, 129, 182, 183, 920, 921, 908, 909,
+    130, 131, 132, 133, 134, 135, 136, 137,
+    138, 139, 192, 193, 930, 931, 918, 919,
+    140, 141, 142, 143, 144, 145, 146, 147,
+    148, 149, 184, 185, 940, 941, 188, 189,
+    150, 151, 152, 153, 154, 155, 156, 157,
+    158, 159, 194, 195, 950, 951, 198, 199,
+    160, 161, 162, 163, 164, 165, 166, 167,
+    168, 169, 186, 187, 960, 961, 988, 989,
+    170, 171, 172, 173, 174, 175, 176, 177,
+    178, 179, 196, 197, 970, 971, 998, 999,
+    200, 201, 202, 203, 204, 205, 206, 207,
+    208, 209, 280, 281, 802, 803, 882, 883,
+    210, 211, 212, 213, 214, 215, 216, 217,
+    218, 219, 290, 291, 812, 813, 892, 893,
+    220, 221, 222, 223, 224, 225, 226, 227,
+    228, 229, 282, 283, 822, 823, 828, 829,
+    230, 231, 232, 233, 234, 235, 236, 237,
+    238, 239, 292, 293, 832, 833, 838, 839,
+    240, 241, 242, 243, 244, 245, 246, 247,
+    248, 249, 284, 285, 842, 843, 288, 289,
+    250, 251, 252, 253, 254, 255, 256, 257,
+    258, 259, 294, 295, 852, 853, 298, 299,
+    260, 261, 262, 263, 264, 265, 266, 267,
+    268, 269, 286, 287, 862, 863, 888, 889,
+    270, 271, 272, 273, 274, 275, 276, 277,
+    278, 279, 296, 297, 872, 873, 898, 899,
+    300, 301, 302, 303, 304, 305, 306, 307,
+    308, 309, 380, 381, 902, 903, 982, 983,
+    310, 311, 312, 313, 314, 315, 316, 317,
+    318, 319, 390, 391, 912, 913, 992, 993,
+    320, 321, 322, 323, 324, 325, 326, 327,
+    328, 329, 382, 383, 922, 923, 928, 929,
+    330, 331, 332, 333, 334, 335, 336, 337,
+    338, 339, 392, 393, 932, 933, 938, 939,
+    340, 341, 342, 343, 344, 345, 346, 347,
+    348, 349, 384, 385, 942, 943, 388, 389,
+    350, 351, 352, 353, 354, 355, 356, 357,
+    358, 359, 394, 395, 952, 953, 398, 399,
+    360, 361, 362, 363, 364, 365, 366, 367,
+    368, 369, 386, 387, 962, 963, 988, 989,
+    370, 371, 372, 373, 374, 375, 376, 377,
+    378, 379, 396, 397, 972, 973, 998, 999,
+    400, 401, 402, 403, 404, 405, 406, 407,
+    408, 409, 480, 481, 804, 805, 884, 885,
+    410, 411, 412, 413, 414, 415, 416, 417,
+    418, 419, 490, 491, 814, 815, 894, 895,
+    420, 421, 422, 423, 424, 425, 426, 427,
+    428, 429, 482, 483, 824, 825, 848, 849,
+    430, 431, 432, 433, 434, 435, 436, 437,
+    438, 439, 492, 493, 834, 835, 858, 859,
+    440, 441, 442, 443, 444, 445, 446, 447,
+    448, 449, 484, 485, 844, 845, 488, 489,
+    450, 451, 452, 453, 454, 455, 456, 457,
+    458, 459, 494, 495, 854, 855, 498, 499,
+    460, 461, 462, 463, 464, 465, 466, 467,
+    468, 469, 486, 487, 864, 865, 888, 889,
+    470, 471, 472, 473, 474, 475, 476, 477,
+    478, 479, 496, 497, 874, 875, 898, 899,
+    500, 501, 502, 503, 504, 505, 506, 507,
+    508, 509, 580, 581, 904, 905, 984, 985,
+    510, 511, 512, 513, 514, 515, 516, 517,
+    518, 519, 590, 591, 914, 915, 994, 995,
+    520, 521, 522, 523, 524, 525, 526, 527,
+    528, 529, 582, 583, 924, 925, 948, 949,
+    530, 531, 532, 533, 534, 535, 536, 537,
+    538, 539, 592, 593, 934, 935, 958, 959,
+    540, 541, 542, 543, 544, 545, 546, 547,
+    548, 549, 584, 585, 944, 945, 588, 589,
+    550, 551, 552, 553, 554, 555, 556, 557,
+    558, 559, 594, 595, 954, 955, 598, 599,
+    560, 561, 562, 563, 564, 565, 566, 567,
+    568, 569, 586, 587, 964, 965, 988, 989,
+    570, 571, 572, 573, 574, 575, 576, 577,
+    578, 579, 596, 597, 974, 975, 998, 999,
+    600, 601, 602, 603, 604, 605, 606, 607,
+    608, 609, 680, 681, 806, 807, 886, 887,
+    610, 611, 612, 613, 614, 615, 616, 617,
+    618, 619, 690, 691, 816, 817, 896, 897,
+    620, 621, 622, 623, 624, 625, 626, 627,
+    628, 629, 682, 683, 826, 827, 868, 869,
+    630, 631, 632, 633, 634, 635, 636, 637,
+    638, 639, 692, 693, 836, 837, 878, 879,
+    640, 641, 642, 643, 644, 645, 646, 647,
+    648, 649, 684, 685, 846, 847, 688, 689,
+    650, 651, 652, 653, 654, 655, 656, 657,
+    658, 659, 694, 695, 856, 857, 698, 699,
+    660, 661, 662, 663, 664, 665, 666, 667,
+    668, 669, 686, 687, 866, 867, 888, 889,
+    670, 671, 672, 673, 674, 675, 676, 677,
+    678, 679, 696, 697, 876, 877, 898, 899,
+    700, 701, 702, 703, 704, 705, 706, 707,
+    708, 709, 780, 781, 906, 907, 986, 987,
+    710, 711, 712, 713, 714, 715, 716, 717,
+    718, 719, 790, 791, 916, 917, 996, 997,
+    720, 721, 722, 723, 724, 725, 726, 727,
+    728, 729, 782, 783, 926, 927, 968, 969,
+    730, 731, 732, 733, 734, 735, 736, 737,
+    738, 739, 792, 793, 936, 937, 978, 979,
+    740, 741, 742, 743, 744, 745, 746, 747,
+    748, 749, 784, 785, 946, 947, 788, 789,
+    750, 751, 752, 753, 754, 755, 756, 757,
+    758, 759, 794, 795, 956, 957, 798, 799,
+    760, 761, 762, 763, 764, 765, 766, 767,
+    768, 769, 786, 787, 966, 967, 988, 989,
+    770, 771, 772, 773, 774, 775, 776, 777,
+    778, 779, 796, 797, 976, 977, 998, 999 };
+
+static const UINT64 d2b2[] = {  
+    0000ull, 1000ull, 2000ull, 3000ull,
+    4000ull, 5000ull, 6000ull, 7000ull,
+    8000ull, 9000ull, 80000ull, 81000ull,
+    800000ull, 801000ull, 880000ull, 881000ull,
+    10000ull, 11000ull, 12000ull, 13000ull,
+    14000ull, 15000ull, 16000ull, 17000ull,
+    18000ull, 19000ull, 90000ull, 91000ull,
+    810000ull, 811000ull, 890000ull, 891000ull,
+    20000ull, 21000ull, 22000ull, 23000ull,
+    24000ull, 25000ull, 26000ull, 27000ull,
+    28000ull, 29000ull, 82000ull, 83000ull,
+    820000ull, 821000ull, 808000ull, 809000ull,
+    30000ull, 31000ull, 32000ull, 33000ull,
+    34000ull, 35000ull, 36000ull, 37000ull,
+    38000ull, 39000ull, 92000ull, 93000ull,
+    830000ull, 831000ull, 818000ull, 819000ull,
+    40000ull, 41000ull, 42000ull, 43000ull,
+    44000ull, 45000ull, 46000ull, 47000ull,
+    48000ull, 49000ull, 84000ull, 85000ull,
+    840000ull, 841000ull, 88000ull, 89000ull,
+    50000ull, 51000ull, 52000ull, 53000ull,
+    54000ull, 55000ull, 56000ull, 57000ull,
+    58000ull, 59000ull, 94000ull, 95000ull,
+    850000ull, 851000ull, 98000ull, 99000ull,
+    60000ull, 61000ull, 62000ull, 63000ull,
+    64000ull, 65000ull, 66000ull, 67000ull,
+    68000ull, 69000ull, 86000ull, 87000ull,
+    860000ull, 861000ull, 888000ull, 889000ull,
+    70000ull, 71000ull, 72000ull, 73000ull,
+    74000ull, 75000ull, 76000ull, 77000ull,
+    78000ull, 79000ull, 96000ull, 97000ull,
+    870000ull, 871000ull, 898000ull, 899000ull,
+    100000ull, 101000ull, 102000ull, 103000ull,
+    104000ull, 105000ull, 106000ull, 107000ull,
+    108000ull, 109000ull, 180000ull, 181000ull,
+    900000ull, 901000ull, 980000ull, 981000ull,
+    110000ull, 111000ull, 112000ull, 113000ull,
+    114000ull, 115000ull, 116000ull, 117000ull,
+    118000ull, 119000ull, 190000ull, 191000ull,
+    910000ull, 911000ull, 990000ull, 991000ull,
+    120000ull, 121000ull, 122000ull, 123000ull,
+    124000ull, 125000ull, 126000ull, 127000ull,
+    128000ull, 129000ull, 182000ull, 183000ull,
+    920000ull, 921000ull, 908000ull, 909000ull,
+    130000ull, 131000ull, 132000ull, 133000ull,
+    134000ull, 135000ull, 136000ull, 137000ull,
+    138000ull, 139000ull, 192000ull, 193000ull,
+    930000ull, 931000ull, 918000ull, 919000ull,
+    140000ull, 141000ull, 142000ull, 143000ull,
+    144000ull, 145000ull, 146000ull, 147000ull,
+    148000ull, 149000ull, 184000ull, 185000ull,
+    940000ull, 941000ull, 188000ull, 189000ull,
+    150000ull, 151000ull, 152000ull, 153000ull,
+    154000ull, 155000ull, 156000ull, 157000ull,
+    158000ull, 159000ull, 194000ull, 195000ull,
+    950000ull, 951000ull, 198000ull, 199000ull,
+    160000ull, 161000ull, 162000ull, 163000ull,
+    164000ull, 165000ull, 166000ull, 167000ull,
+    168000ull, 169000ull, 186000ull, 187000ull,
+    960000ull, 961000ull, 988000ull, 989000ull,
+    170000ull, 171000ull, 172000ull, 173000ull,
+    174000ull, 175000ull, 176000ull, 177000ull,
+    178000ull, 179000ull, 196000ull, 197000ull,
+    970000ull, 971000ull, 998000ull, 999000ull,
+    200000ull, 201000ull, 202000ull, 203000ull,
+    204000ull, 205000ull, 206000ull, 207000ull,
+    208000ull, 209000ull, 280000ull, 281000ull,
+    802000ull, 803000ull, 882000ull, 883000ull,
+    210000ull, 211000ull, 212000ull, 213000ull,
+    214000ull, 215000ull, 216000ull, 217000ull,
+    218000ull, 219000ull, 290000ull, 291000ull,
+    812000ull, 813000ull, 892000ull, 893000ull,
+    220000ull, 221000ull, 222000ull, 223000ull,
+    224000ull, 225000ull, 226000ull, 227000ull,
+    228000ull, 229000ull, 282000ull, 283000ull,
+    822000ull, 823000ull, 828000ull, 829000ull,
+    230000ull, 231000ull, 232000ull, 233000ull,
+    234000ull, 235000ull, 236000ull, 237000ull,
+    238000ull, 239000ull, 292000ull, 293000ull,
+    832000ull, 833000ull, 838000ull, 839000ull,
+    240000ull, 241000ull, 242000ull, 243000ull,
+    244000ull, 245000ull, 246000ull, 247000ull,
+    248000ull, 249000ull, 284000ull, 285000ull,
+    842000ull, 843000ull, 288000ull, 289000ull,
+    250000ull, 251000ull, 252000ull, 253000ull,
+    254000ull, 255000ull, 256000ull, 257000ull,
+    258000ull, 259000ull, 294000ull, 295000ull,
+    852000ull, 853000ull, 298000ull, 299000ull,
+    260000ull, 261000ull, 262000ull, 263000ull,
+    264000ull, 265000ull, 266000ull, 267000ull,
+    268000ull, 269000ull, 286000ull, 287000ull,
+    862000ull, 863000ull, 888000ull, 889000ull,
+    270000ull, 271000ull, 272000ull, 273000ull,
+    274000ull, 275000ull, 276000ull, 277000ull,
+    278000ull, 279000ull, 296000ull, 297000ull,
+    872000ull, 873000ull, 898000ull, 899000ull,
+    300000ull, 301000ull, 302000ull, 303000ull,
+    304000ull, 305000ull, 306000ull, 307000ull,
+    308000ull, 309000ull, 380000ull, 381000ull,
+    902000ull, 903000ull, 982000ull, 983000ull,
+    310000ull, 311000ull, 312000ull, 313000ull,
+    314000ull, 315000ull, 316000ull, 317000ull,
+    318000ull, 319000ull, 390000ull, 391000ull,
+    912000ull, 913000ull, 992000ull, 993000ull,
+    320000ull, 321000ull, 322000ull, 323000ull,
+    324000ull, 325000ull, 326000ull, 327000ull,
+    328000ull, 329000ull, 382000ull, 383000ull,
+    922000ull, 923000ull, 928000ull, 929000ull,
+    330000ull, 331000ull, 332000ull, 333000ull,
+    334000ull, 335000ull, 336000ull, 337000ull,
+    338000ull, 339000ull, 392000ull, 393000ull,
+    932000ull, 933000ull, 938000ull, 939000ull,
+    340000ull, 341000ull, 342000ull, 343000ull,
+    344000ull, 345000ull, 346000ull, 347000ull,
+    348000ull, 349000ull, 384000ull, 385000ull,
+    942000ull, 943000ull, 388000ull, 389000ull,
+    350000ull, 351000ull, 352000ull, 353000ull,
+    354000ull, 355000ull, 356000ull, 357000ull,
+    358000ull, 359000ull, 394000ull, 395000ull,
+    952000ull, 953000ull, 398000ull, 399000ull,
+    360000ull, 361000ull, 362000ull, 363000ull,
+    364000ull, 365000ull, 366000ull, 367000ull,
+    368000ull, 369000ull, 386000ull, 387000ull,
+    962000ull, 963000ull, 988000ull, 989000ull,
+    370000ull, 371000ull, 372000ull, 373000ull,
+    374000ull, 375000ull, 376000ull, 377000ull,
+    378000ull, 379000ull, 396000ull, 397000ull,
+    972000ull, 973000ull, 998000ull, 999000ull,
+    400000ull, 401000ull, 402000ull, 403000ull,
+    404000ull, 405000ull, 406000ull, 407000ull,
+    408000ull, 409000ull, 480000ull, 481000ull,
+    804000ull, 805000ull, 884000ull, 885000ull,
+    410000ull, 411000ull, 412000ull, 413000ull,
+    414000ull, 415000ull, 416000ull, 417000ull,
+    418000ull, 419000ull, 490000ull, 491000ull,
+    814000ull, 815000ull, 894000ull, 895000ull,
+    420000ull, 421000ull, 422000ull, 423000ull,
+    424000ull, 425000ull, 426000ull, 427000ull,
+    428000ull, 429000ull, 482000ull, 483000ull,
+    824000ull, 825000ull, 848000ull, 849000ull,
+    430000ull, 431000ull, 432000ull, 433000ull,
+    434000ull, 435000ull, 436000ull, 437000ull,
+    438000ull, 439000ull, 492000ull, 493000ull,
+    834000ull, 835000ull, 858000ull, 859000ull,
+    440000ull, 441000ull, 442000ull, 443000ull,
+    444000ull, 445000ull, 446000ull, 447000ull,
+    448000ull, 449000ull, 484000ull, 485000ull,
+    844000ull, 845000ull, 488000ull, 489000ull,
+    450000ull, 451000ull, 452000ull, 453000ull,
+    454000ull, 455000ull, 456000ull, 457000ull,
+    458000ull, 459000ull, 494000ull, 495000ull,
+    854000ull, 855000ull, 498000ull, 499000ull,
+    460000ull, 461000ull, 462000ull, 463000ull,
+    464000ull, 465000ull, 466000ull, 467000ull,
+    468000ull, 469000ull, 486000ull, 487000ull,
+    864000ull, 865000ull, 888000ull, 889000ull,
+    470000ull, 471000ull, 472000ull, 473000ull,
+    474000ull, 475000ull, 476000ull, 477000ull,
+    478000ull, 479000ull, 496000ull, 497000ull,
+    874000ull, 875000ull, 898000ull, 899000ull,
+    500000ull, 501000ull, 502000ull, 503000ull,
+    504000ull, 505000ull, 506000ull, 507000ull,
+    508000ull, 509000ull, 580000ull, 581000ull,
+    904000ull, 905000ull, 984000ull, 985000ull,
+    510000ull, 511000ull, 512000ull, 513000ull,
+    514000ull, 515000ull, 516000ull, 517000ull,
+    518000ull, 519000ull, 590000ull, 591000ull,
+    914000ull, 915000ull, 994000ull, 995000ull,
+    520000ull, 521000ull, 522000ull, 523000ull,
+    524000ull, 525000ull, 526000ull, 527000ull,
+    528000ull, 529000ull, 582000ull, 583000ull,
+    924000ull, 925000ull, 948000ull, 949000ull,
+    530000ull, 531000ull, 532000ull, 533000ull,
+    534000ull, 535000ull, 536000ull, 537000ull,
+    538000ull, 539000ull, 592000ull, 593000ull,
+    934000ull, 935000ull, 958000ull, 959000ull,
+    540000ull, 541000ull, 542000ull, 543000ull,
+    544000ull, 545000ull, 546000ull, 547000ull,
+    548000ull, 549000ull, 584000ull, 585000ull,
+    944000ull, 945000ull, 588000ull, 589000ull,
+    550000ull, 551000ull, 552000ull, 553000ull,
+    554000ull, 555000ull, 556000ull, 557000ull,
+    558000ull, 559000ull, 594000ull, 595000ull,
+    954000ull, 955000ull, 598000ull, 599000ull,
+    560000ull, 561000ull, 562000ull, 563000ull,
+    564000ull, 565000ull, 566000ull, 567000ull,
+    568000ull, 569000ull, 586000ull, 587000ull,
+    964000ull, 965000ull, 988000ull, 989000ull,
+    570000ull, 571000ull, 572000ull, 573000ull,
+    574000ull, 575000ull, 576000ull, 577000ull,
+    578000ull, 579000ull, 596000ull, 597000ull,
+    974000ull, 975000ull, 998000ull, 999000ull,
+    600000ull, 601000ull, 602000ull, 603000ull,
+    604000ull, 605000ull, 606000ull, 607000ull,
+    608000ull, 609000ull, 680000ull, 681000ull,
+    806000ull, 807000ull, 886000ull, 887000ull,
+    610000ull, 611000ull, 612000ull, 613000ull,
+    614000ull, 615000ull, 616000ull, 617000ull,
+    618000ull, 619000ull, 690000ull, 691000ull,
+    816000ull, 817000ull, 896000ull, 897000ull,
+    620000ull, 621000ull, 622000ull, 623000ull,
+    624000ull, 625000ull, 626000ull, 627000ull,
+    628000ull, 629000ull, 682000ull, 683000ull,
+    826000ull, 827000ull, 868000ull, 869000ull,
+    630000ull, 631000ull, 632000ull, 633000ull,
+    634000ull, 635000ull, 636000ull, 637000ull,
+    638000ull, 639000ull, 692000ull, 693000ull,
+    836000ull, 837000ull, 878000ull, 879000ull,
+    640000ull, 641000ull, 642000ull, 643000ull,
+    644000ull, 645000ull, 646000ull, 647000ull,
+    648000ull, 649000ull, 684000ull, 685000ull,
+    846000ull, 847000ull, 688000ull, 689000ull,
+    650000ull, 651000ull, 652000ull, 653000ull,
+    654000ull, 655000ull, 656000ull, 657000ull,
+    658000ull, 659000ull, 694000ull, 695000ull,
+    856000ull, 857000ull, 698000ull, 699000ull,
+    660000ull, 661000ull, 662000ull, 663000ull,
+    664000ull, 665000ull, 666000ull, 667000ull,
+    668000ull, 669000ull, 686000ull, 687000ull,
+    866000ull, 867000ull, 888000ull, 889000ull,
+    670000ull, 671000ull, 672000ull, 673000ull,
+    674000ull, 675000ull, 676000ull, 677000ull,
+    678000ull, 679000ull, 696000ull, 697000ull,
+    876000ull, 877000ull, 898000ull, 899000ull,
+    700000ull, 701000ull, 702000ull, 703000ull,
+    704000ull, 705000ull, 706000ull, 707000ull,
+    708000ull, 709000ull, 780000ull, 781000ull,
+    906000ull, 907000ull, 986000ull, 987000ull,
+    710000ull, 711000ull, 712000ull, 713000ull,
+    714000ull, 715000ull, 716000ull, 717000ull,
+    718000ull, 719000ull, 790000ull, 791000ull,
+    916000ull, 917000ull, 996000ull, 997000ull,
+    720000ull, 721000ull, 722000ull, 723000ull,
+    724000ull, 725000ull, 726000ull, 727000ull,
+    728000ull, 729000ull, 782000ull, 783000ull,
+    926000ull, 927000ull, 968000ull, 969000ull,
+    730000ull, 731000ull, 732000ull, 733000ull,
+    734000ull, 735000ull, 736000ull, 737000ull,
+    738000ull, 739000ull, 792000ull, 793000ull,
+    936000ull, 937000ull, 978000ull, 979000ull,
+    740000ull, 741000ull, 742000ull, 743000ull,
+    744000ull, 745000ull, 746000ull, 747000ull,
+    748000ull, 749000ull, 784000ull, 785000ull,
+    946000ull, 947000ull, 788000ull, 789000ull,
+    750000ull, 751000ull, 752000ull, 753000ull,
+    754000ull, 755000ull, 756000ull, 757000ull,
+    758000ull, 759000ull, 794000ull, 795000ull,
+    956000ull, 957000ull, 798000ull, 799000ull,
+    760000ull, 761000ull, 762000ull, 763000ull,
+    764000ull, 765000ull, 766000ull, 767000ull,
+    768000ull, 769000ull, 786000ull, 787000ull,
+    966000ull, 967000ull, 988000ull, 989000ull,
+    770000ull, 771000ull, 772000ull, 773000ull,
+    774000ull, 775000ull, 776000ull, 777000ull,
+    778000ull, 779000ull, 796000ull, 797000ull,
+    976000ull, 977000ull, 998000ull, 999000ull 
+};
+
+static const UINT64 d2b3[] = {  
+    0000000ull,
+    1000000ull,
+    2000000ull,
+    3000000ull,
+    4000000ull,
+    5000000ull,
+    6000000ull,
+    7000000ull,
+    8000000ull,
+    9000000ull,
+    80000000ull,
+    81000000ull,
+    800000000ull,
+    801000000ull,
+    880000000ull,
+    881000000ull,
+    
+    10000000ull,
+    11000000ull,
+    12000000ull,
+    13000000ull,
+    14000000ull,
+    15000000ull,
+    16000000ull,
+    17000000ull,
+    18000000ull,
+    19000000ull,
+    90000000ull,
+    91000000ull,
+    810000000ull,
+    811000000ull,
+    890000000ull,
+    891000000ull,
+    
+    20000000ull,
+    21000000ull,
+    22000000ull,
+    23000000ull,
+    24000000ull,
+    25000000ull,
+    26000000ull,
+    27000000ull,
+    28000000ull,
+    29000000ull,
+    82000000ull,
+    83000000ull,
+    820000000ull,
+    821000000ull,
+    808000000ull,
+    809000000ull,
+    
+    30000000ull,
+    31000000ull,
+    32000000ull,
+    33000000ull,
+    34000000ull,
+    35000000ull,
+    36000000ull,
+    37000000ull,
+    38000000ull,
+    39000000ull,
+    92000000ull,
+    93000000ull,
+    830000000ull,
+    831000000ull,
+    818000000ull,
+    819000000ull,
+    
+    40000000ull,
+    41000000ull,
+    42000000ull,
+    43000000ull,
+    44000000ull,
+    45000000ull,
+    46000000ull,
+    47000000ull,
+    48000000ull,
+    49000000ull,
+    84000000ull,
+    85000000ull,
+    840000000ull,
+    841000000ull,
+    88000000ull,
+    89000000ull,
+    
+    50000000ull,
+    51000000ull,
+    52000000ull,
+    53000000ull,
+    54000000ull,
+    55000000ull,
+    56000000ull,
+    57000000ull,
+    58000000ull,
+    59000000ull,
+    94000000ull,
+    95000000ull,
+    850000000ull,
+    851000000ull,
+    98000000ull,
+    99000000ull,
+    
+    60000000ull,
+    61000000ull,
+    62000000ull,
+    63000000ull,
+    64000000ull,
+    65000000ull,
+    66000000ull,
+    67000000ull,
+    68000000ull,
+    69000000ull,
+    86000000ull,
+    87000000ull,
+    860000000ull,
+    861000000ull,
+    888000000ull,
+    889000000ull,
+    
+    70000000ull,
+    71000000ull,
+    72000000ull,
+    73000000ull,
+    74000000ull,
+    75000000ull,
+    76000000ull,
+    77000000ull,
+    78000000ull,
+    79000000ull,
+    96000000ull,
+    97000000ull,
+    870000000ull,
+    871000000ull,
+    898000000ull,
+    899000000ull,
+    
+    100000000ull,
+    101000000ull,
+    102000000ull,
+    103000000ull,
+    104000000ull,
+    105000000ull,
+    106000000ull,
+    107000000ull,
+    108000000ull,
+    109000000ull,
+    180000000ull,
+    181000000ull,
+    900000000ull,
+    901000000ull,
+    980000000ull,
+    981000000ull,
+    
+    110000000ull,
+    111000000ull,
+    112000000ull,
+    113000000ull,
+    114000000ull,
+    115000000ull,
+    116000000ull,
+    117000000ull,
+    118000000ull,
+    119000000ull,
+    190000000ull,
+    191000000ull,
+    910000000ull,
+    911000000ull,
+    990000000ull,
+    991000000ull,
+    
+    120000000ull,
+    121000000ull,
+    122000000ull,
+    123000000ull,
+    124000000ull,
+    125000000ull,
+    126000000ull,
+    127000000ull,
+    128000000ull,
+    129000000ull,
+    182000000ull,
+    183000000ull,
+    920000000ull,
+    921000000ull,
+    908000000ull,
+    909000000ull,
+    
+    130000000ull,
+    131000000ull,
+    132000000ull,
+    133000000ull,
+    134000000ull,
+    135000000ull,
+    136000000ull,
+    137000000ull,
+    138000000ull,
+    139000000ull,
+    192000000ull,
+    193000000ull,
+    930000000ull,
+    931000000ull,
+    918000000ull,
+    919000000ull,
+    
+    140000000ull,
+    141000000ull,
+    142000000ull,
+    143000000ull,
+    144000000ull,
+    145000000ull,
+    146000000ull,
+    147000000ull,
+    148000000ull,
+    149000000ull,
+    184000000ull,
+    185000000ull,
+    940000000ull,
+    941000000ull,
+    188000000ull,
+    189000000ull,
+    
+    150000000ull,
+    151000000ull,
+    152000000ull,
+    153000000ull,
+    154000000ull,
+    155000000ull,
+    156000000ull,
+    157000000ull,
+    158000000ull,
+    159000000ull,
+    194000000ull,
+    195000000ull,
+    950000000ull,
+    951000000ull,
+    198000000ull,
+    199000000ull,
+    
+    160000000ull,
+    161000000ull,
+    162000000ull,
+    163000000ull,
+    164000000ull,
+    165000000ull,
+    166000000ull,
+    167000000ull,
+    168000000ull,
+    169000000ull,
+    186000000ull,
+    187000000ull,
+    960000000ull,
+    961000000ull,
+    988000000ull,
+    989000000ull,
+    
+    170000000ull,
+    171000000ull,
+    172000000ull,
+    173000000ull,
+    174000000ull,
+    175000000ull,
+    176000000ull,
+    177000000ull,
+    178000000ull,
+    179000000ull,
+    196000000ull,
+    197000000ull,
+    970000000ull,
+    971000000ull,
+    998000000ull,
+    999000000ull,
+    
+    200000000ull,
+    201000000ull,
+    202000000ull,
+    203000000ull,
+    204000000ull,
+    205000000ull,
+    206000000ull,
+    207000000ull,
+    208000000ull,
+    209000000ull,
+    280000000ull,
+    281000000ull,
+    802000000ull,
+    803000000ull,
+    882000000ull,
+    883000000ull,
+    
+    210000000ull,
+    211000000ull,
+    212000000ull,
+    213000000ull,
+    214000000ull,
+    215000000ull,
+    216000000ull,
+    217000000ull,
+    218000000ull,
+    219000000ull,
+    290000000ull,
+    291000000ull,
+    812000000ull,
+    813000000ull,
+    892000000ull,
+    893000000ull,
+    
+    220000000ull,
+    221000000ull,
+    222000000ull,
+    223000000ull,
+    224000000ull,
+    225000000ull,
+    226000000ull,
+    227000000ull,
+    228000000ull,
+    229000000ull,
+    282000000ull,
+    283000000ull,
+    822000000ull,
+    823000000ull,
+    828000000ull,
+    829000000ull,
+    
+    230000000ull,
+    231000000ull,
+    232000000ull,
+    233000000ull,
+    234000000ull,
+    235000000ull,
+    236000000ull,
+    237000000ull,
+    238000000ull,
+    239000000ull,
+    292000000ull,
+    293000000ull,
+    832000000ull,
+    833000000ull,
+    838000000ull,
+    839000000ull,
+    
+    240000000ull,
+    241000000ull,
+    242000000ull,
+    243000000ull,
+    244000000ull,
+    245000000ull,
+    246000000ull,
+    247000000ull,
+    248000000ull,
+    249000000ull,
+    284000000ull,
+    285000000ull,
+    842000000ull,
+    843000000ull,
+    288000000ull,
+    289000000ull,
+    
+    250000000ull,
+    251000000ull,
+    252000000ull,
+    253000000ull,
+    254000000ull,
+    255000000ull,
+    256000000ull,
+    257000000ull,
+    258000000ull,
+    259000000ull,
+    294000000ull,
+    295000000ull,
+    852000000ull,
+    853000000ull,
+    298000000ull,
+    299000000ull,
+    
+    260000000ull,
+    261000000ull,
+    262000000ull,
+    263000000ull,
+    264000000ull,
+    265000000ull,
+    266000000ull,
+    267000000ull,
+    268000000ull,
+    269000000ull,
+    286000000ull,
+    287000000ull,
+    862000000ull,
+    863000000ull,
+    888000000ull,
+    889000000ull,
+    
+    270000000ull,
+    271000000ull,
+    272000000ull,
+    273000000ull,
+    274000000ull,
+    275000000ull,
+    276000000ull,
+    277000000ull,
+    278000000ull,
+    279000000ull,
+    296000000ull,
+    297000000ull,
+    872000000ull,
+    873000000ull,
+    898000000ull,
+    899000000ull,
+    
+    300000000ull,
+    301000000ull,
+    302000000ull,
+    303000000ull,
+    304000000ull,
+    305000000ull,
+    306000000ull,
+    307000000ull,
+    308000000ull,
+    309000000ull,
+    380000000ull,
+    381000000ull,
+    902000000ull,
+    903000000ull,
+    982000000ull,
+    983000000ull,
+    
+    310000000ull,
+    311000000ull,
+    312000000ull,
+    313000000ull,
+    314000000ull,
+    315000000ull,
+    316000000ull,
+    317000000ull,
+    318000000ull,
+    319000000ull,
+    390000000ull,
+    391000000ull,
+    912000000ull,
+    913000000ull,
+    992000000ull,
+    993000000ull,
+    
+    320000000ull,
+    321000000ull,
+    322000000ull,
+    323000000ull,
+    324000000ull,
+    325000000ull,
+    326000000ull,
+    327000000ull,
+    328000000ull,
+    329000000ull,
+    382000000ull,
+    383000000ull,
+    922000000ull,
+    923000000ull,
+    928000000ull,
+    929000000ull,
+    
+    330000000ull,
+    331000000ull,
+    332000000ull,
+    333000000ull,
+    334000000ull,
+    335000000ull,
+    336000000ull,
+    337000000ull,
+    338000000ull,
+    339000000ull,
+    392000000ull,
+    393000000ull,
+    932000000ull,
+    933000000ull,
+    938000000ull,
+    939000000ull,
+    
+    340000000ull,
+    341000000ull,
+    342000000ull,
+    343000000ull,
+    344000000ull,
+    345000000ull,
+    346000000ull,
+    347000000ull,
+    348000000ull,
+    349000000ull,
+    384000000ull,
+    385000000ull,
+    942000000ull,
+    943000000ull,
+    388000000ull,
+    389000000ull,
+    
+    350000000ull,
+    351000000ull,
+    352000000ull,
+    353000000ull,
+    354000000ull,
+    355000000ull,
+    356000000ull,
+    357000000ull,
+    358000000ull,
+    359000000ull,
+    394000000ull,
+    395000000ull,
+    952000000ull,
+    953000000ull,
+    398000000ull,
+    399000000ull,
+    
+    360000000ull,
+    361000000ull,
+    362000000ull,
+    363000000ull,
+    364000000ull,
+    365000000ull,
+    366000000ull,
+    367000000ull,
+    368000000ull,
+    369000000ull,
+    386000000ull,
+    387000000ull,
+    962000000ull,
+    963000000ull,
+    988000000ull,
+    989000000ull,
+    
+    370000000ull,
+    371000000ull,
+    372000000ull,
+    373000000ull,
+    374000000ull,
+    375000000ull,
+    376000000ull,
+    377000000ull,
+    378000000ull,
+    379000000ull,
+    396000000ull,
+    397000000ull,
+    972000000ull,
+    973000000ull,
+    998000000ull,
+    999000000ull,
+    
+    400000000ull,
+    401000000ull,
+    402000000ull,
+    403000000ull,
+    404000000ull,
+    405000000ull,
+    406000000ull,
+    407000000ull,
+    408000000ull,
+    409000000ull,
+    480000000ull,
+    481000000ull,
+    804000000ull,
+    805000000ull,
+    884000000ull,
+    885000000ull,
+    
+    410000000ull,
+    411000000ull,
+    412000000ull,
+    413000000ull,
+    414000000ull,
+    415000000ull,
+    416000000ull,
+    417000000ull,
+    418000000ull,
+    419000000ull,
+    490000000ull,
+    491000000ull,
+    814000000ull,
+    815000000ull,
+    894000000ull,
+    895000000ull,
+    
+    420000000ull,
+    421000000ull,
+    422000000ull,
+    423000000ull,
+    424000000ull,
+    425000000ull,
+    426000000ull,
+    427000000ull,
+    428000000ull,
+    429000000ull,
+    482000000ull,
+    483000000ull,
+    824000000ull,
+    825000000ull,
+    848000000ull,
+    849000000ull,
+    
+    430000000ull,
+    431000000ull,
+    432000000ull,
+    433000000ull,
+    434000000ull,
+    435000000ull,
+    436000000ull,
+    437000000ull,
+    438000000ull,
+    439000000ull,
+    492000000ull,
+    493000000ull,
+    834000000ull,
+    835000000ull,
+    858000000ull,
+    859000000ull,
+    
+    440000000ull,
+    441000000ull,
+    442000000ull,
+    443000000ull,
+    444000000ull,
+    445000000ull,
+    446000000ull,
+    447000000ull,
+    448000000ull,
+    449000000ull,
+    484000000ull,
+    485000000ull,
+    844000000ull,
+    845000000ull,
+    488000000ull,
+    489000000ull,
+    
+    450000000ull,
+    451000000ull,
+    452000000ull,
+    453000000ull,
+    454000000ull,
+    455000000ull,
+    456000000ull,
+    457000000ull,
+    458000000ull,
+    459000000ull,
+    494000000ull,
+    495000000ull,
+    854000000ull,
+    855000000ull,
+    498000000ull,
+    499000000ull,
+    
+    460000000ull,
+    461000000ull,
+    462000000ull,
+    463000000ull,
+    464000000ull,
+    465000000ull,
+    466000000ull,
+    467000000ull,
+    468000000ull,
+    469000000ull,
+    486000000ull,
+    487000000ull,
+    864000000ull,
+    865000000ull,
+    888000000ull,
+    889000000ull,
+    
+    470000000ull,
+    471000000ull,
+    472000000ull,
+    473000000ull,
+    474000000ull,
+    475000000ull,
+    476000000ull,
+    477000000ull,
+    478000000ull,
+    479000000ull,
+    496000000ull,
+    497000000ull,
+    874000000ull,
+    875000000ull,
+    898000000ull,
+    899000000ull,
+    
+    500000000ull,
+    501000000ull,
+    502000000ull,
+    503000000ull,
+    504000000ull,
+    505000000ull,
+    506000000ull,
+    507000000ull,
+    508000000ull,
+    509000000ull,
+    580000000ull,
+    581000000ull,
+    904000000ull,
+    905000000ull,
+    984000000ull,
+    985000000ull,
+    
+    510000000ull,
+    511000000ull,
+    512000000ull,
+    513000000ull,
+    514000000ull,
+    515000000ull,
+    516000000ull,
+    517000000ull,
+    518000000ull,
+    519000000ull,
+    590000000ull,
+    591000000ull,
+    914000000ull,
+    915000000ull,
+    994000000ull,
+    995000000ull,
+    
+    520000000ull,
+    521000000ull,
+    522000000ull,
+    523000000ull,
+    524000000ull,
+    525000000ull,
+    526000000ull,
+    527000000ull,
+    528000000ull,
+    529000000ull,
+    582000000ull,
+    583000000ull,
+    924000000ull,
+    925000000ull,
+    948000000ull,
+    949000000ull,
+    
+    530000000ull,
+    531000000ull,
+    532000000ull,
+    533000000ull,
+    534000000ull,
+    535000000ull,
+    536000000ull,
+    537000000ull,
+    538000000ull,
+    539000000ull,
+    592000000ull,
+    593000000ull,
+    934000000ull,
+    935000000ull,
+    958000000ull,
+    959000000ull,
+    
+    540000000ull,
+    541000000ull,
+    542000000ull,
+    543000000ull,
+    544000000ull,
+    545000000ull,
+    546000000ull,
+    547000000ull,
+    548000000ull,
+    549000000ull,
+    584000000ull,
+    585000000ull,
+    944000000ull,
+    945000000ull,
+    588000000ull,
+    589000000ull,
+    
+    550000000ull,
+    551000000ull,
+    552000000ull,
+    553000000ull,
+    554000000ull,
+    555000000ull,
+    556000000ull,
+    557000000ull,
+    558000000ull,
+    559000000ull,
+    594000000ull,
+    595000000ull,
+    954000000ull,
+    955000000ull,
+    598000000ull,
+    599000000ull,
+    
+    560000000ull,
+    561000000ull,
+    562000000ull,
+    563000000ull,
+    564000000ull,
+    565000000ull,
+    566000000ull,
+    567000000ull,
+    568000000ull,
+    569000000ull,
+    586000000ull,
+    587000000ull,
+    964000000ull,
+    965000000ull,
+    988000000ull,
+    989000000ull,
+    
+    570000000ull,
+    571000000ull,
+    572000000ull,
+    573000000ull,
+    574000000ull,
+    575000000ull,
+    576000000ull,
+    577000000ull,
+    578000000ull,
+    579000000ull,
+    596000000ull,
+    597000000ull,
+    974000000ull,
+    975000000ull,
+    998000000ull,
+    999000000ull,
+    
+    600000000ull,
+    601000000ull,
+    602000000ull,
+    603000000ull,
+    604000000ull,
+    605000000ull,
+    606000000ull,
+    607000000ull,
+    608000000ull,
+    609000000ull,
+    680000000ull,
+    681000000ull,
+    806000000ull,
+    807000000ull,
+    886000000ull,
+    887000000ull,
+    
+    610000000ull,
+    611000000ull,
+    612000000ull,
+    613000000ull,
+    614000000ull,
+    615000000ull,
+    616000000ull,
+    617000000ull,
+    618000000ull,
+    619000000ull,
+    690000000ull,
+    691000000ull,
+    816000000ull,
+    817000000ull,
+    896000000ull,
+    897000000ull,
+    
+    620000000ull,
+    621000000ull,
+    622000000ull,
+    623000000ull,
+    624000000ull,
+    625000000ull,
+    626000000ull,
+    627000000ull,
+    628000000ull,
+    629000000ull,
+    682000000ull,
+    683000000ull,
+    826000000ull,
+    827000000ull,
+    868000000ull,
+    869000000ull,
+    
+    630000000ull,
+    631000000ull,
+    632000000ull,
+    633000000ull,
+    634000000ull,
+    635000000ull,
+    636000000ull,
+    637000000ull,
+    638000000ull,
+    639000000ull,
+    692000000ull,
+    693000000ull,
+    836000000ull,
+    837000000ull,
+    878000000ull,
+    879000000ull,
+    
+    640000000ull,
+    641000000ull,
+    642000000ull,
+    643000000ull,
+    644000000ull,
+    645000000ull,
+    646000000ull,
+    647000000ull,
+    648000000ull,
+    649000000ull,
+    684000000ull,
+    685000000ull,
+    846000000ull,
+    847000000ull,
+    688000000ull,
+    689000000ull,
+    
+    650000000ull,
+    651000000ull,
+    652000000ull,
+    653000000ull,
+    654000000ull,
+    655000000ull,
+    656000000ull,
+    657000000ull,
+    658000000ull,
+    659000000ull,
+    694000000ull,
+    695000000ull,
+    856000000ull,
+    857000000ull,
+    698000000ull,
+    699000000ull,
+    
+    660000000ull,
+    661000000ull,
+    662000000ull,
+    663000000ull,
+    664000000ull,
+    665000000ull,
+    666000000ull,
+    667000000ull,
+    668000000ull,
+    669000000ull,
+    686000000ull,
+    687000000ull,
+    866000000ull,
+    867000000ull,
+    888000000ull,
+    889000000ull,
+    
+    670000000ull,
+    671000000ull,
+    672000000ull,
+    673000000ull,
+    674000000ull,
+    675000000ull,
+    676000000ull,
+    677000000ull,
+    678000000ull,
+    679000000ull,
+    696000000ull,
+    697000000ull,
+    876000000ull,
+    877000000ull,
+    898000000ull,
+    899000000ull,
+    
+    700000000ull,
+    701000000ull,
+    702000000ull,
+    703000000ull,
+    704000000ull,
+    705000000ull,
+    706000000ull,
+    707000000ull,
+    708000000ull,
+    709000000ull,
+    780000000ull,
+    781000000ull,
+    906000000ull,
+    907000000ull,
+    986000000ull,
+    987000000ull,
+    
+    710000000ull,
+    711000000ull,
+    712000000ull,
+    713000000ull,
+    714000000ull,
+    715000000ull,
+    716000000ull,
+    717000000ull,
+    718000000ull,
+    719000000ull,
+    790000000ull,
+    791000000ull,
+    916000000ull,
+    917000000ull,
+    996000000ull,
+    997000000ull,
+    
+    720000000ull,
+    721000000ull,
+    722000000ull,
+    723000000ull,
+    724000000ull,
+    725000000ull,
+    726000000ull,
+    727000000ull,
+    728000000ull,
+    729000000ull,
+    782000000ull,
+    783000000ull,
+    926000000ull,
+    927000000ull,
+    968000000ull,
+    969000000ull,
+    
+    730000000ull,
+    731000000ull,
+    732000000ull,
+    733000000ull,
+    734000000ull,
+    735000000ull,
+    736000000ull,
+    737000000ull,
+    738000000ull,
+    739000000ull,
+    792000000ull,
+    793000000ull,
+    936000000ull,
+    937000000ull,
+    978000000ull,
+    979000000ull,
+    
+    740000000ull,
+    741000000ull,
+    742000000ull,
+    743000000ull,
+    744000000ull,
+    745000000ull,
+    746000000ull,
+    747000000ull,
+    748000000ull,
+    749000000ull,
+    784000000ull,
+    785000000ull,
+    946000000ull,
+    947000000ull,
+    788000000ull,
+    789000000ull,
+    
+    750000000ull,
+    751000000ull,
+    752000000ull,
+    753000000ull,
+    754000000ull,
+    755000000ull,
+    756000000ull,
+    757000000ull,
+    758000000ull,
+    759000000ull,
+    794000000ull,
+    795000000ull,
+    956000000ull,
+    957000000ull,
+    798000000ull,
+    799000000ull,
+    
+    760000000ull,
+    761000000ull,
+    762000000ull,
+    763000000ull,
+    764000000ull,
+    765000000ull,
+    766000000ull,
+    767000000ull,
+    768000000ull,
+    769000000ull,
+    786000000ull,
+    787000000ull,
+    966000000ull,
+    967000000ull,
+    988000000ull,
+    989000000ull,
+    
+    770000000ull,
+    771000000ull,
+    772000000ull,
+    773000000ull,
+    774000000ull,
+    775000000ull,
+    776000000ull,
+    777000000ull,
+    778000000ull,
+    779000000ull,
+    796000000ull,
+    797000000ull,
+    976000000ull,
+    977000000ull,
+    998000000ull,
+    999000000ull };
+    
+static const UINT64 d2b4[] = {  
+    0000000000ull,
+    1000000000ull,
+    2000000000ull,
+    3000000000ull,
+    4000000000ull,
+    5000000000ull,
+    6000000000ull,
+    7000000000ull,
+    8000000000ull,
+    9000000000ull,
+    80000000000ull,
+    81000000000ull,
+    800000000000ull,
+    801000000000ull,
+    880000000000ull,
+    881000000000ull,
+    
+    10000000000ull,
+    11000000000ull,
+    12000000000ull,
+    13000000000ull,
+    14000000000ull,
+    15000000000ull,
+    16000000000ull,
+    17000000000ull,
+    18000000000ull,
+    19000000000ull,
+    90000000000ull,
+    91000000000ull,
+    810000000000ull,
+    811000000000ull,
+    890000000000ull,
+    891000000000ull,
+    
+    20000000000ull,
+    21000000000ull,
+    22000000000ull,
+    23000000000ull,
+    24000000000ull,
+    25000000000ull,
+    26000000000ull,
+    27000000000ull,
+    28000000000ull,
+    29000000000ull,
+    82000000000ull,
+    83000000000ull,
+    820000000000ull,
+    821000000000ull,
+    808000000000ull,
+    809000000000ull,
+    
+    30000000000ull,
+    31000000000ull,
+    32000000000ull,
+    33000000000ull,
+    34000000000ull,
+    35000000000ull,
+    36000000000ull,
+    37000000000ull,
+    38000000000ull,
+    39000000000ull,
+    92000000000ull,
+    93000000000ull,
+    830000000000ull,
+    831000000000ull,
+    818000000000ull,
+    819000000000ull,
+    
+    40000000000ull,
+    41000000000ull,
+    42000000000ull,
+    43000000000ull,
+    44000000000ull,
+    45000000000ull,
+    46000000000ull,
+    47000000000ull,
+    48000000000ull,
+    49000000000ull,
+    84000000000ull,
+    85000000000ull,
+    840000000000ull,
+    841000000000ull,
+    88000000000ull,
+    89000000000ull,
+    
+    50000000000ull,
+    51000000000ull,
+    52000000000ull,
+    53000000000ull,
+    54000000000ull,
+    55000000000ull,
+    56000000000ull,
+    57000000000ull,
+    58000000000ull,
+    59000000000ull,
+    94000000000ull,
+    95000000000ull,
+    850000000000ull,
+    851000000000ull,
+    98000000000ull,
+    99000000000ull,
+    
+    60000000000ull,
+    61000000000ull,
+    62000000000ull,
+    63000000000ull,
+    64000000000ull,
+    65000000000ull,
+    66000000000ull,
+    67000000000ull,
+    68000000000ull,
+    69000000000ull,
+    86000000000ull,
+    87000000000ull,
+    860000000000ull,
+    861000000000ull,
+    888000000000ull,
+    889000000000ull,
+    
+    70000000000ull,
+    71000000000ull,
+    72000000000ull,
+    73000000000ull,
+    74000000000ull,
+    75000000000ull,
+    76000000000ull,
+    77000000000ull,
+    78000000000ull,
+    79000000000ull,
+    96000000000ull,
+    97000000000ull,
+    870000000000ull,
+    871000000000ull,
+    898000000000ull,
+    899000000000ull,
+    
+    100000000000ull,
+    101000000000ull,
+    102000000000ull,
+    103000000000ull,
+    104000000000ull,
+    105000000000ull,
+    106000000000ull,
+    107000000000ull,
+    108000000000ull,
+    109000000000ull,
+    180000000000ull,
+    181000000000ull,
+    900000000000ull,
+    901000000000ull,
+    980000000000ull,
+    981000000000ull,
+    
+    110000000000ull,
+    111000000000ull,
+    112000000000ull,
+    113000000000ull,
+    114000000000ull,
+    115000000000ull,
+    116000000000ull,
+    117000000000ull,
+    118000000000ull,
+    119000000000ull,
+    190000000000ull,
+    191000000000ull,
+    910000000000ull,
+    911000000000ull,
+    990000000000ull,
+    991000000000ull,
+    
+    120000000000ull,
+    121000000000ull,
+    122000000000ull,
+    123000000000ull,
+    124000000000ull,
+    125000000000ull,
+    126000000000ull,
+    127000000000ull,
+    128000000000ull,
+    129000000000ull,
+    182000000000ull,
+    183000000000ull,
+    920000000000ull,
+    921000000000ull,
+    908000000000ull,
+    909000000000ull,
+    
+    130000000000ull,
+    131000000000ull,
+    132000000000ull,
+    133000000000ull,
+    134000000000ull,
+    135000000000ull,
+    136000000000ull,
+    137000000000ull,
+    138000000000ull,
+    139000000000ull,
+    192000000000ull,
+    193000000000ull,
+    930000000000ull,
+    931000000000ull,
+    918000000000ull,
+    919000000000ull,
+    
+    140000000000ull,
+    141000000000ull,
+    142000000000ull,
+    143000000000ull,
+    144000000000ull,
+    145000000000ull,
+    146000000000ull,
+    147000000000ull,
+    148000000000ull,
+    149000000000ull,
+    184000000000ull,
+    185000000000ull,
+    940000000000ull,
+    941000000000ull,
+    188000000000ull,
+    189000000000ull,
+    
+    150000000000ull,
+    151000000000ull,
+    152000000000ull,
+    153000000000ull,
+    154000000000ull,
+    155000000000ull,
+    156000000000ull,
+    157000000000ull,
+    158000000000ull,
+    159000000000ull,
+    194000000000ull,
+    195000000000ull,
+    950000000000ull,
+    951000000000ull,
+    198000000000ull,
+    199000000000ull,
+    
+    160000000000ull,
+    161000000000ull,
+    162000000000ull,
+    163000000000ull,
+    164000000000ull,
+    165000000000ull,
+    166000000000ull,
+    167000000000ull,
+    168000000000ull,
+    169000000000ull,
+    186000000000ull,
+    187000000000ull,
+    960000000000ull,
+    961000000000ull,
+    988000000000ull,
+    989000000000ull,
+    
+    170000000000ull,
+    171000000000ull,
+    172000000000ull,
+    173000000000ull,
+    174000000000ull,
+    175000000000ull,
+    176000000000ull,
+    177000000000ull,
+    178000000000ull,
+    179000000000ull,
+    196000000000ull,
+    197000000000ull,
+    970000000000ull,
+    971000000000ull,
+    998000000000ull,
+    999000000000ull,
+    
+    200000000000ull,
+    201000000000ull,
+    202000000000ull,
+    203000000000ull,
+    204000000000ull,
+    205000000000ull,
+    206000000000ull,
+    207000000000ull,
+    208000000000ull,
+    209000000000ull,
+    280000000000ull,
+    281000000000ull,
+    802000000000ull,
+    803000000000ull,
+    882000000000ull,
+    883000000000ull,
+    
+    210000000000ull,
+    211000000000ull,
+    212000000000ull,
+    213000000000ull,
+    214000000000ull,
+    215000000000ull,
+    216000000000ull,
+    217000000000ull,
+    218000000000ull,
+    219000000000ull,
+    290000000000ull,
+    291000000000ull,
+    812000000000ull,
+    813000000000ull,
+    892000000000ull,
+    893000000000ull,
+    
+    220000000000ull,
+    221000000000ull,
+    222000000000ull,
+    223000000000ull,
+    224000000000ull,
+    225000000000ull,
+    226000000000ull,
+    227000000000ull,
+    228000000000ull,
+    229000000000ull,
+    282000000000ull,
+    283000000000ull,
+    822000000000ull,
+    823000000000ull,
+    828000000000ull,
+    829000000000ull,
+    
+    230000000000ull,
+    231000000000ull,
+    232000000000ull,
+    233000000000ull,
+    234000000000ull,
+    235000000000ull,
+    236000000000ull,
+    237000000000ull,
+    238000000000ull,
+    239000000000ull,
+    292000000000ull,
+    293000000000ull,
+    832000000000ull,
+    833000000000ull,
+    838000000000ull,
+    839000000000ull,
+    
+    240000000000ull,
+    241000000000ull,
+    242000000000ull,
+    243000000000ull,
+    244000000000ull,
+    245000000000ull,
+    246000000000ull,
+    247000000000ull,
+    248000000000ull,
+    249000000000ull,
+    284000000000ull,
+    285000000000ull,
+    842000000000ull,
+    843000000000ull,
+    288000000000ull,
+    289000000000ull,
+    
+    250000000000ull,
+    251000000000ull,
+    252000000000ull,
+    253000000000ull,
+    254000000000ull,
+    255000000000ull,
+    256000000000ull,
+    257000000000ull,
+    258000000000ull,
+    259000000000ull,
+    294000000000ull,
+    295000000000ull,
+    852000000000ull,
+    853000000000ull,
+    298000000000ull,
+    299000000000ull,
+    
+    260000000000ull,
+    261000000000ull,
+    262000000000ull,
+    263000000000ull,
+    264000000000ull,
+    265000000000ull,
+    266000000000ull,
+    267000000000ull,
+    268000000000ull,
+    269000000000ull,
+    286000000000ull,
+    287000000000ull,
+    862000000000ull,
+    863000000000ull,
+    888000000000ull,
+    889000000000ull,
+    
+    270000000000ull,

[... 42278 lines stripped ...]