diff options
author | Ben Cheng <bccheng@google.com> | 2012-10-01 10:30:31 -0700 |
---|---|---|
committer | Ben Cheng <bccheng@google.com> | 2012-10-01 10:30:31 -0700 |
commit | 82bcbebce43f0227f506d75a5b764b6847041bae (patch) | |
tree | fe9f8597b48a430c4daeb5123e3e8eb28e6f9da9 /gcc-4.7/libdecnumber | |
parent | 3c052de3bb16ac53b6b6ed659ec7557eb84c7590 (diff) | |
download | toolchain_gcc-82bcbebce43f0227f506d75a5b764b6847041bae.tar.gz toolchain_gcc-82bcbebce43f0227f506d75a5b764b6847041bae.tar.bz2 toolchain_gcc-82bcbebce43f0227f506d75a5b764b6847041bae.zip |
Initial check-in of gcc 4.7.2.
Change-Id: I4a2f5a921c21741a0e18bda986d77e5f1bef0365
Diffstat (limited to 'gcc-4.7/libdecnumber')
63 files changed, 39894 insertions, 0 deletions
diff --git a/gcc-4.7/libdecnumber/.gitignore b/gcc-4.7/libdecnumber/.gitignore new file mode 100644 index 000000000..7e47161d6 --- /dev/null +++ b/gcc-4.7/libdecnumber/.gitignore @@ -0,0 +1 @@ +/gstdint.h diff --git a/gcc-4.7/libdecnumber/ChangeLog b/gcc-4.7/libdecnumber/ChangeLog new file mode 100644 index 000000000..5efe05532 --- /dev/null +++ b/gcc-4.7/libdecnumber/ChangeLog @@ -0,0 +1,597 @@ +2012-09-20 Release Manager + + * GCC 4.7.2 released. + +2012-06-14 Release Manager + + * GCC 4.7.1 released. + +2012-03-22 Release Manager + + * GCC 4.7.0 released. + +2011-12-20 Andreas Schwab <schwab@linux-m68k.org> + + * configure: Regenerate. + +2011-12-19 Andreas Schwab <schwab@linux-m68k.org> + + * configure: Regenerate. + +2011-04-20 Jim Meyering <meyering@redhat.com> + + * decNumber.c (decNumberFromString): Remove useless + if-before-free test. + (decNumberCompareTotalMag, decNumberExp, decNumberFMA): Likewise. + (decNumberLn, decNumberLog10, decNumberPower): Likewise. + (decNumberReduce, decNumberSquareRoot, decAddOp): Likewise. + (decDivideOp, NEEDTWO, decExpOp, LN2): Likewise. + +2011-03-28 Mike Frysinger <vapier@gentoo.org> + + * .gitignore: New file. + +2010-11-24 Nathan Froyd <froydnj@codesourcery.com> + + * dconfig.h (LIBGCC2_FLOAT_WORDS_BIG_ENDIAN): Delete. + (WORDS_BIG_ENDIAN): Define based on value of __FLOAT_WORD_ORDER__. + +2010-10-23 Nathan Froyd <froydnj@codesourcery.com> + + * dconfig.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete. + (LIBGCC2_FLOAT_WORDS_BIG_ENDIAN): Test __BYTE_ORDER__. + +2010-09-10 Kai Tietz <kai.tietz@onevision.com> + + * configure: Regenerated. + +2010-09-08 Tristan Gingold <gingold@adacore.com> + + PR 44001 + * Makefile.in (objext): New variable. + (bid_OBJS): Use $(objext) for extension. + (libdecnumber_a_OBJS): Ditto. + (mostlyclean): Ditto + (.c.o): Ditto. + Update dependencies. + +2010-09-06 H.J. Lu <hongjiu.lu@intel.com> + + PR target/45524 + * configure.ac (enable_decimal_float): Set to + $default_decimal_float. + * configure: Regenerated. + +2010-09-06 Andreas Schwab <schwab@redhat.com> + + * configure: Regenerate. + +2010-09-03 Andreas Krebbel <Andreas.Krebbel@de.ibm.com> + + * configure.ac: Use the GCC_AC_ENABLE_DECIMAL_FLOAT macro. + * Makefile.in: Add aclocal.m4 dependency to dfp.m4. + * configure: Regenerate. + * aclocal.m4: Regenerate. + +2010-08-21 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + * configure: Regenerate. + +2010-04-02 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + * aclocal.m4: Regenerate. + +2010-01-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * configure: Regenerate. + +2009-11-28 Jakub Jelinek <jakub@redhat.com> + + * decContext.c (decContextTestEndian): Move adj definition into + #if DECCHECK guarded code. + +2009-09-09 Paolo Bonzini <bonzini@gnu.org> + + * configure: Regenerate. + +2009-09-08 Paolo Bonzini <bonzini@gnu.org> + + * configure: Regenerate. + +2009-08-24 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + * configure.ac (AC_PREREQ): Bump to 2.64. + +2009-08-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + * aclocal.m4: Regenerate. + * configure: Regenerate. + * config.in: Regenerate. + +2009-08-13 Janis Johnson <janis187@us.ibm.com> + + PR c/41046 + * decContext.c (decContextTestEndian): Call printf only if DECCHECK. + * decCommon.c ( decFloatShow): Define function only for DECCHECK + or DECTRACE. + +2009-07-30 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + * Makefile.in (aclocal_deps): New variable. + ($(srcdir)/aclocal.m4): Use it, for portable makefile syntax. + +2009-05-31 Ian Lance Taylor <iant@google.com> + + * decContext.h: Add extern "C" if compiling with C++. + * decDPD.h: Likewise. + * decNumber.h: Likewise. + * dpd/decimal32.h: Likewise. + * dpd/decimal64.h: Likewise. + * dpd/decimal128.h: Likewise. + +2009-04-09 Nick Clifton <nickc@redhat.com> + + * decRound.c: Change copyright header to refer to version 3 of + the GNU General Public License with version 3.1 of the GCC + Runtime Library Exception and to point readers at the COPYING3 + and COPYING3.RUNTIME files and the FSF's license web page. + * bid/bid-dpd.h: Likewise. + * bid/bid2dpd_dpd2bid.c: Likewise. + * bid/bid2dpd_dpd2bid.h: Likewise. + * bid/decimal128.c: Likewise. + * bid/decimal32.c: Likewise. + * bid/decimal64.c: Likewise. + * bid/host-ieee128.c: Likewise. + * bid/host-ieee32.c: Likewise. + * bid/host-ieee64.c: Likewise. + * dconfig.h: Likewise. + * decBasic.c: Likewise. + * decCommon.c: Likewise. + * decContext.c: Likewise. + * decContext.h: Likewise. + * decDPD.h: Likewise. + * decDouble.c: Likewise. + * decDouble.h: Likewise. + * decExcept.c: Likewise. + * decExcept.h: Likewise. + * decLibrary.c: Likewise. + * decNumber.c: Likewise. + * decNumber.h: Likewise. + * decNumberLocal.h: Likewise. + * decPacked.c: Likewise. + * decPacked.h: Likewise. + * decQuad.c: Likewise. + * decQuad.h: Likewise. + * decRound.h: Likewise. + * decSingle.c: Likewise. + * decSingle.h: Likewise. + * dpd/decimal128.c: Likewise. + * dpd/decimal128.h: Likewise. + * dpd/decimal128Local.h: Likewise. + * dpd/decimal32.c: Likewise. + * dpd/decimal32.h: Likewise. + * dpd/decimal64.c: Likewise. + * dpd/decimal64.h: Likewise. + +2009-04-09 Jakub Jelinek <jakub@redhat.com> + + * Makefile.in: Change copyright header to refer to version + 3 of the GNU General Public License and to point readers at the + COPYING3 file and the FSF's license web page. + * configure.ac: Likewise. + +2009-04-01 Ben Elliston <bje@au.ibm.com> + + * decContext.h: Include gstdint.h instead of <stdint.h>. + +2009-03-30 Ben Elliston <bje@au.ibm.com> + + * decNumber.c, decNumber.h, decNumberLocal.h, decDouble.c, + decDouble.h, decSingle.c, decContext.c, decSingle.h, decPacked.c, + decCommon.c, decContext.h, decQuad.c, decPacked.h, decQuad.h, + decDPD.h, decBasic.c: Upgrade to decNumber 3.61. + * dpd/decimal128.h, dpd/decimal32.c, dpd/decimal32.h, + dpd/decimal64.c, dpd/decimal128.c, dpd/decimal64.h: Likewise. + +2009-02-10 Joseph Myers <joseph@codesourcery.com> + + * Makefile.in (clean): Don't remove makedepend$(EXEEXT). + +2008-10-27 Janis Johnson <janis187@us.ibm.com> + + PR other/37897 + * decDouble.h (decDouble): Replace struct with union accessible + by more types. + * decSingle.h (decSingle): Ditto. + * decQuad.h (decQuad): Ditto. + * decNumberLocal.h (DFWORD, DFBYTE, DFWWORD): access decFloat via + new members. + * decBasic.c (decFloatCompareTotal): Avoid type-pun violation. + (decNumberCompare): Ditto. + +2008-06-17 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + * Makefile.in ($(srcdir)/aclocal.m4): Update dependencies. + * configure: Regenerate. + +2008-06-16 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + * Makefile.in (datarootdir): New variable. + +2008-06-10 Joseph Myers <joseph@codesourcery.com> + + * dconfig.h: New. + * decContext.c, decExcept.c, decExcept.h, decLibrary.c, + decNumber.c, decNumberLocal.h, decRound.c, dpd/decimal128.c, + dpd/decimal32.c, dpd/decimal64.c: Include dconfig.h not config.h. + * dpd/decimal128Local.h (decimal128SetSign, decimal128ClearSign, + decimal128FlipSign): Use WORDS_BIGENDIAN not + FLOAT_WORDS_BIG_ENDIAN. + * bid/host-ieee128.c: Include dconfig.h. + (__host_to_ieee_128, __ieee_to_host_128): Swap 64-bit halves of + value if WORDS_BIGENDIAN. + +2008-04-18 Paolo Bonzini <bonzini@gnu.org> + + PR bootstrap/35457 + * aclocal.m4: Regenerate. + * configure: Regenerate. + +2008-04-18 Ben Elliston <bje@au.ibm.com> + + * Makefile.in (distclean): Add gstdint.h. + +2008-01-25 Janis Johnson <janis187@us.ibm.com> + + * decCommonSymbols.h: Commit. + * decDPDSybmols.h: Commit. + + * Makefile.in (libdecnumber_a_SOURCES): List Symbols headers. + * decCommonSymbols.h: New file. + * decCommon.c: Include it. + * decDPDSymbols.h: New file. + * decDPD.h: Include it. + * decNumberLocal.h: Include the two new files. + * decContextSymbols.h (DECPOWERS, DECSTICKYTAB): New. + * decNumberSymbols.h (LNnn, d2utable): New. + * dpd/decimal32Symbols.h (COMBEXP, COMBMSD, DPD2BIN, BIN2DPD): New. + * dpd/decimal64Symbols.h (COMBEXP, COMBMSD, DPD2BIN, BIN2DPD): New. + * dpd/decimal128Symbols.h (COMBEXP, COMBMSD, DPD2BIN, BIN2DPD): New. + * dpd/decimal32.c: Remove redefine of DPD2BIN, BIN2DPD. + * dpd/decimal64.c: Ditto. + * dpd/decimal128.c: Ditto. + +2007-11-26 Thiago Jung Bauermann <bauerman@br.ibm.com> + + * Makefile.in (decimal32.o): Prepend $(srcdir) to dependencies + and substitute $< for the source file in compilation command. + (decimal64.o): Likewise. + (decimal128.o): Likewise. + (bid2dpd_dpd2bid.o): Likewise. + (host-ieee32.o): Likewise. + (host-ieee64.o): Likewise. + (host-ieee128.o): Likewise. + +2007-10-31 Thiago Jung Bauermann <bauerman@br.ibm.com> + + * 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@us.ibm.com> + Ben Elliston <bje@au.ibm.com> + + * 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@cyrius.com> + H.J. Lu <hongjiu.lu@intel.com> + + * configure.ac: Add AC_CANONICAL_TARGET. + * configure: Regenerated. + +2007-04-16 H.J. Lu <hongjiu.lu@intel.com> + + * 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@onevision.com> + + * configure: Regenerate. + +2007-03-23 Michael Meissner <michael.meissner@amd.com> + H.J. Lu <hongjiu.lu@intel.com> + Marius Cornea <marius.cornea@intel.com> + + * 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@au.ibm.com> + + * 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@codesourcery.com> + + * Makefile.in: Add dummy install-pdf target. + +2007-01-29 Janis Johnson <janis187@us.ibm.com> + + * decExcept.c: New. + * decExcept.h: New. + +2006-11-29 Janis Johnson <janis187@us.ibm.com> + + * decRound.c: Move declarations to new file, update comments. + * decRound.h: New file. + +2006-11-21 Janis Johnson <janis187@us.ibm.com> + + * 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@stanford.edu> + * Makefile.in: Added empty "pdf" target. + +2006-09-15 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> + + * decNumber.c (decNumberPower): Constify. + * decNumber.h (decNumberPower): Likewise. + +2006-09-07 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> + + * 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@caip.rutgers.edu> + + * 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@gnu.org> + + PR build/26188 + * configure: Regenerate. + +2006-06-23 Ben Elliston <bje@au.ibm.com> + + * decNumber.h (decNumberNegate): Remove. + +2006-05-23 Carlos O'Donell <carlos@codesourcery.com> + + * Makefile.in: Add install-html target. Add install-html to .PHONY + +2006-02-06 Ben Elliston <bje@au.ibm.com> + + * decLibrary.c (__dec_byte_swap): Use uint32_t for argument and + return types. + +2006-01-03 Roger Sayle <roger@eyesopen.com> + Kaveh R. Ghazi <ghazi@caip.rutgers.edu> + + * decNumber.c (__NO_STRING_INLINES): Define to prevent glibc macro + definition of strcpy from generating compilation warnings. + +2006-01-02 Paolo Bonzini <bonzini@gnu.org> + + 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@eyesopen.com> + + * decNumber.c (decStrEq): Cast string contents to unsigned char + instead of int before calling tolower. + +2005-12-20 Roger Sayle <roger@eyesopen.com> + + * decNumber.c (decStrEq): Cast operands to int before calling + tolower to avoid compilation warnings on Tru64. + +2005-12-05 Ben Elliston <bje@au.ibm.com> + + * 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@au.ibm.com> + + * 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@pfeifer.com> + + * 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@au.ibm.com> + + * decUtility.c: Remove redundant #includes. + * decUtility.h (__dec_byte_swap): Remove prototype. + +2005-11-29 Ben Elliston <bje@au.ibm.com> + + * configure.ac: New file. + * aclocal.m4: Likewise. + * Makefile.in: Likewise. + * configure: Generate. + * config.in: Likewise. + +2005-11-29 Ben Elliston <bje@au.ibm.com> + + * 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. diff --git a/gcc-4.7/libdecnumber/Makefile.in b/gcc-4.7/libdecnumber/Makefile.in new file mode 100644 index 000000000..c64f22c98 --- /dev/null +++ b/gcc-4.7/libdecnumber/Makefile.in @@ -0,0 +1,195 @@ +# @configure_input@ +# Makefile for libdecnumber. Run 'configure' to generate Makefile from Makefile.in + +# Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 +# 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 3, 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 COPYING3. If not see +#<http://www.gnu.org/licenses/>. + +@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@ +objext = @OBJEXT@ + +datarootdir = @datarootdir@ +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.$(objext) host-ieee32.$(objext) \ + host-ieee64.$(objext) host-ieee128.$(objext) + +libdecnumber_a_OBJS = decNumber.$(objext) decContext.$(objext) \ + decimal32.$(objext) decimal64.$(objext) decimal128.$(objext) \ + $(ADDITIONAL_OBJS) + +libdecnumber_a_SOURCES = decContext.c decContext.h decDPD.h \ + decNumber.c decNumber.h decNumberLocal.h \ + decContextSymbols.h decDPDSymbols.h decNumberSymbols.h \ + dpd/decimal128.c dpd/decimal128.h dpd/decimal128Symbols.h \ + dpd/decimal32.c dpd/decimal32.h dpd/decimal32Symbols.h \ + dpd/decimal64.c dpd/decimal64.h dpd/decimal64Symbols.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) + +aclocal_deps = \ + $(srcdir)/../config/stdint.m4 \ + $(srcdir)/../config/warnings.m4 \ + $(srcdir)/../config/override.m4 \ + $(srcdir)/../config/dfp.m4 \ + $(srcdir)/configure.ac + +$(srcdir)/aclocal.m4: @MAINT@ $(aclocal_deps) + 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.$(objext): decContext.c decContext.h decNumberLocal.h \ + decContextSymbols.h +decNumber.$(objext): decNumber.c decNumber.h decContext.h decNumberLocal.h \ + decNumberSymbols.h +decimal32.$(objext): $(srcdir)/$(enable_decimal_float)/decimal32.c \ + $(srcdir)/$(enable_decimal_float)/decimal32.h \ + $(srcdir)/$(enable_decimal_float)/decimal32Symbols.h \ + decNumber.h decContext.h decNumberLocal.h + $(COMPILE) $(srcdir)/$(enable_decimal_float)/decimal32.c +decimal64.$(objext): $(srcdir)/$(enable_decimal_float)/decimal64.c \ + $(srcdir)/$(enable_decimal_float)/decimal64.h \ + $(srcdir)/$(enable_decimal_float)/decimal64Symbols.h \ + decNumber.h decContext.h decNumberLocal.h + $(COMPILE) $(srcdir)/$(enable_decimal_float)/decimal64.c +decimal128.$(objext): $(srcdir)/$(enable_decimal_float)/decimal128.c \ + $(srcdir)/$(enable_decimal_float)/decimal128.h \ + $(srcdir)/$(enable_decimal_float)/decimal128Symbols.h\ + $(srcdir)/$(enable_decimal_float)/decimal128Local.h\ + decNumber.h decContext.h decNumberLocal.h + $(COMPILE) $(srcdir)/$(enable_decimal_float)/decimal128.c +bid2dpd_dpd2bid.$(objext) : $(srcdir)/bid/bid2dpd_dpd2bid.c $(srcdir)/bid/bid2dpd_dpd2bid.h + $(COMPILE) $(srcdir)/bid/bid2dpd_dpd2bid.c +host-ieee32.$(objext) : $(srcdir)/bid/host-ieee32.c $(srcdir)/bid/decimal32.h + $(COMPILE) $(srcdir)/bid/host-ieee32.c +host-ieee64.$(objext) : $(srcdir)/bid/host-ieee64.c $(srcdir)/bid/decimal64.h + $(COMPILE) $(srcdir)/bid/host-ieee64.c +host-ieee128.$(objext) : $(srcdir)/bid/host-ieee128.c $(srcdir)/bid/decimal128.h + $(COMPILE) $(srcdir)/bid/host-ieee128.c +# Other miscellaneous targets. + +mostlyclean: + -rm -f *.$(objext) + +clean: mostlyclean + -rm -rf 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 gstdint.h + +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.$(objext): + $(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: diff --git a/gcc-4.7/libdecnumber/aclocal.m4 b/gcc-4.7/libdecnumber/aclocal.m4 new file mode 100644 index 000000000..fda021e81 --- /dev/null +++ b/gcc-4.7/libdecnumber/aclocal.m4 @@ -0,0 +1,17 @@ +# generated automatically by aclocal 1.11.1 -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005, 2006, 2007, 2008, 2009 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/dfp.m4]) +m4_include([../config/override.m4]) +m4_include([../config/stdint.m4]) +m4_include([../config/warnings.m4]) diff --git a/gcc-4.7/libdecnumber/bid/bid-dpd.h b/gcc-4.7/libdecnumber/bid/bid-dpd.h new file mode 100644 index 000000000..e100cc916 --- /dev/null +++ b/gcc-4.7/libdecnumber/bid/bid-dpd.h @@ -0,0 +1,40 @@ +/* Copyright (C) 2007, 2009 + 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 3, 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. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +<http://www.gnu.org/licenses/>. */ + +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 *); diff --git a/gcc-4.7/libdecnumber/bid/bid2dpd_dpd2bid.c b/gcc-4.7/libdecnumber/bid/bid2dpd_dpd2bid.c new file mode 100644 index 000000000..7e55eb015 --- /dev/null +++ b/gcc-4.7/libdecnumber/bid/bid2dpd_dpd2bid.c @@ -0,0 +1,423 @@ +/* Copyright (C) 2007, 2009 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 3, 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. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +<http://www.gnu.org/licenses/>. */ + +#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; +} diff --git a/gcc-4.7/libdecnumber/bid/bid2dpd_dpd2bid.h b/gcc-4.7/libdecnumber/bid/bid2dpd_dpd2bid.h new file mode 100644 index 000000000..b501bdcc0 --- /dev/null +++ b/gcc-4.7/libdecnumber/bid/bid2dpd_dpd2bid.h @@ -0,0 +1,10402 @@ +/* Copyright (C) 2007, 2009 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 3, 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. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +<http://www.gnu.org/licenses/>. */ + +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, + 271000000000ull, + 272000000000ull, + 273000000000ull, + 274000000000ull, + 275000000000ull, + 276000000000ull, + 277000000000ull, + 278000000000ull, + 279000000000ull, + 296000000000ull, + 297000000000ull, + 872000000000ull, + 873000000000ull, + 898000000000ull, + 899000000000ull, + + 300000000000ull, + 301000000000ull, + 302000000000ull, + 303000000000ull, + 304000000000ull, + 305000000000ull, + 306000000000ull, + 307000000000ull, + 308000000000ull, + 309000000000ull, + 380000000000ull, + 381000000000ull, + 902000000000ull, + 903000000000ull, + 982000000000ull, + 983000000000ull, + + 310000000000ull, + 311000000000ull, + 312000000000ull, + 313000000000ull, + 314000000000ull, + 315000000000ull, + 316000000000ull, + 317000000000ull, + 318000000000ull, + 319000000000ull, + 390000000000ull, + 391000000000ull, + 912000000000ull, + 913000000000ull, + 992000000000ull, + 993000000000ull, + + 320000000000ull, + 321000000000ull, + 322000000000ull, + 323000000000ull, + 324000000000ull, + 325000000000ull, + 326000000000ull, + 327000000000ull, + 328000000000ull, + 329000000000ull, + 382000000000ull, + 383000000000ull, + 922000000000ull, + 923000000000ull, + 928000000000ull, + 929000000000ull, + + 330000000000ull, + 331000000000ull, + 332000000000ull, + 333000000000ull, + 334000000000ull, + 335000000000ull, + 336000000000ull, + 337000000000ull, + 338000000000ull, + 339000000000ull, + 392000000000ull, + 393000000000ull, + 932000000000ull, + 933000000000ull, + 938000000000ull, + 939000000000ull, + + 340000000000ull, + 341000000000ull, + 342000000000ull, + 343000000000ull, + 344000000000ull, + 345000000000ull, + 346000000000ull, + 347000000000ull, + 348000000000ull, + 349000000000ull, + 384000000000ull, + 385000000000ull, + 942000000000ull, + 943000000000ull, + 388000000000ull, + 389000000000ull, + + 350000000000ull, + 351000000000ull, + 352000000000ull, + 353000000000ull, + 354000000000ull, + 355000000000ull, + 356000000000ull, + 357000000000ull, + 358000000000ull, + 359000000000ull, + 394000000000ull, + 395000000000ull, + 952000000000ull, + 953000000000ull, + 398000000000ull, + 399000000000ull, + + 360000000000ull, + 361000000000ull, + 362000000000ull, + 363000000000ull, + 364000000000ull, + 365000000000ull, + 366000000000ull, + 367000000000ull, + 368000000000ull, + 369000000000ull, + 386000000000ull, + 387000000000ull, + 962000000000ull, + 963000000000ull, + 988000000000ull, + 989000000000ull, + + 370000000000ull, + 371000000000ull, + 372000000000ull, + 373000000000ull, + 374000000000ull, + 375000000000ull, + 376000000000ull, + 377000000000ull, + 378000000000ull, + 379000000000ull, + 396000000000ull, + 397000000000ull, + 972000000000ull, + 973000000000ull, + 998000000000ull, + 999000000000ull, + + 400000000000ull, + 401000000000ull, + 402000000000ull, + 403000000000ull, + 404000000000ull, + 405000000000ull, + 406000000000ull, + 407000000000ull, + 408000000000ull, + 409000000000ull, + 480000000000ull, + 481000000000ull, + 804000000000ull, + 805000000000ull, + 884000000000ull, + 885000000000ull, + + 410000000000ull, + 411000000000ull, + 412000000000ull, + 413000000000ull, + 414000000000ull, + 415000000000ull, + 416000000000ull, + 417000000000ull, + 418000000000ull, + 419000000000ull, + 490000000000ull, + 491000000000ull, + 814000000000ull, + 815000000000ull, + 894000000000ull, + 895000000000ull, + + 420000000000ull, + 421000000000ull, + 422000000000ull, + 423000000000ull, + 424000000000ull, + 425000000000ull, + 426000000000ull, + 427000000000ull, + 428000000000ull, + 429000000000ull, + 482000000000ull, + 483000000000ull, + 824000000000ull, + 825000000000ull, + 848000000000ull, + 849000000000ull, + + 430000000000ull, + 431000000000ull, + 432000000000ull, + 433000000000ull, + 434000000000ull, + 435000000000ull, + 436000000000ull, + 437000000000ull, + 438000000000ull, + 439000000000ull, + 492000000000ull, + 493000000000ull, + 834000000000ull, + 835000000000ull, + 858000000000ull, + 859000000000ull, + + 440000000000ull, + 441000000000ull, + 442000000000ull, + 443000000000ull, + 444000000000ull, + 445000000000ull, + 446000000000ull, + 447000000000ull, + 448000000000ull, + 449000000000ull, + 484000000000ull, + 485000000000ull, + 844000000000ull, + 845000000000ull, + 488000000000ull, + 489000000000ull, + + 450000000000ull, + 451000000000ull, + 452000000000ull, + 453000000000ull, + 454000000000ull, + 455000000000ull, + 456000000000ull, + 457000000000ull, + 458000000000ull, + 459000000000ull, + 494000000000ull, + 495000000000ull, + 854000000000ull, + 855000000000ull, + 498000000000ull, + 499000000000ull, + + 460000000000ull, + 461000000000ull, + 462000000000ull, + 463000000000ull, + 464000000000ull, + 465000000000ull, + 466000000000ull, + 467000000000ull, + 468000000000ull, + 469000000000ull, + 486000000000ull, + 487000000000ull, + 864000000000ull, + 865000000000ull, + 888000000000ull, + 889000000000ull, + + 470000000000ull, + 471000000000ull, + 472000000000ull, + 473000000000ull, + 474000000000ull, + 475000000000ull, + 476000000000ull, + 477000000000ull, + 478000000000ull, + 479000000000ull, + 496000000000ull, + 497000000000ull, + 874000000000ull, + 875000000000ull, + 898000000000ull, + 899000000000ull, + + 500000000000ull, + 501000000000ull, + 502000000000ull, + 503000000000ull, + 504000000000ull, + 505000000000ull, + 506000000000ull, + 507000000000ull, + 508000000000ull, + 509000000000ull, + 580000000000ull, + 581000000000ull, + 904000000000ull, + 905000000000ull, + 984000000000ull, + 985000000000ull, + + 510000000000ull, + 511000000000ull, + 512000000000ull, + 513000000000ull, + 514000000000ull, + 515000000000ull, + 516000000000ull, + 517000000000ull, + 518000000000ull, + 519000000000ull, + 590000000000ull, + 591000000000ull, + 914000000000ull, + 915000000000ull, + 994000000000ull, + 995000000000ull, + + 520000000000ull, + 521000000000ull, + 522000000000ull, + 523000000000ull, + 524000000000ull, + 525000000000ull, + 526000000000ull, + 527000000000ull, + 528000000000ull, + 529000000000ull, + 582000000000ull, + 583000000000ull, + 924000000000ull, + 925000000000ull, + 948000000000ull, + 949000000000ull, + + 530000000000ull, + 531000000000ull, + 532000000000ull, + 533000000000ull, + 534000000000ull, + 535000000000ull, + 536000000000ull, + 537000000000ull, + 538000000000ull, + 539000000000ull, + 592000000000ull, + 593000000000ull, + 934000000000ull, + 935000000000ull, + 958000000000ull, + 959000000000ull, + + 540000000000ull, + 541000000000ull, + 542000000000ull, + 543000000000ull, + 544000000000ull, + 545000000000ull, + 546000000000ull, + 547000000000ull, + 548000000000ull, + 549000000000ull, + 584000000000ull, + 585000000000ull, + 944000000000ull, + 945000000000ull, + 588000000000ull, + 589000000000ull, + + 550000000000ull, + 551000000000ull, + 552000000000ull, + 553000000000ull, + 554000000000ull, + 555000000000ull, + 556000000000ull, + 557000000000ull, + 558000000000ull, + 559000000000ull, + 594000000000ull, + 595000000000ull, + 954000000000ull, + 955000000000ull, + 598000000000ull, + 599000000000ull, + + 560000000000ull, + 561000000000ull, + 562000000000ull, + 563000000000ull, + 564000000000ull, + 565000000000ull, + 566000000000ull, + 567000000000ull, + 568000000000ull, + 569000000000ull, + 586000000000ull, + 587000000000ull, + 964000000000ull, + 965000000000ull, + 988000000000ull, + 989000000000ull, + + 570000000000ull, + 571000000000ull, + 572000000000ull, + 573000000000ull, + 574000000000ull, + 575000000000ull, + 576000000000ull, + 577000000000ull, + 578000000000ull, + 579000000000ull, + 596000000000ull, + 597000000000ull, + 974000000000ull, + 975000000000ull, + 998000000000ull, + 999000000000ull, + + 600000000000ull, + 601000000000ull, + 602000000000ull, + 603000000000ull, + 604000000000ull, + 605000000000ull, + 606000000000ull, + 607000000000ull, + 608000000000ull, + 609000000000ull, + 680000000000ull, + 681000000000ull, + 806000000000ull, + 807000000000ull, + 886000000000ull, + 887000000000ull, + + 610000000000ull, + 611000000000ull, + 612000000000ull, + 613000000000ull, + 614000000000ull, + 615000000000ull, + 616000000000ull, + 617000000000ull, + 618000000000ull, + 619000000000ull, + 690000000000ull, + 691000000000ull, + 816000000000ull, + 817000000000ull, + 896000000000ull, + 897000000000ull, + + 620000000000ull, + 621000000000ull, + 622000000000ull, + 623000000000ull, + 624000000000ull, + 625000000000ull, + 626000000000ull, + 627000000000ull, + 628000000000ull, + 629000000000ull, + 682000000000ull, + 683000000000ull, + 826000000000ull, + 827000000000ull, + 868000000000ull, + 869000000000ull, + + 630000000000ull, + 631000000000ull, + 632000000000ull, + 633000000000ull, + 634000000000ull, + 635000000000ull, + 636000000000ull, + 637000000000ull, + 638000000000ull, + 639000000000ull, + 692000000000ull, + 693000000000ull, + 836000000000ull, + 837000000000ull, + 878000000000ull, + 879000000000ull, + + 640000000000ull, + 641000000000ull, + 642000000000ull, + 643000000000ull, + 644000000000ull, + 645000000000ull, + 646000000000ull, + 647000000000ull, + 648000000000ull, + 649000000000ull, + 684000000000ull, + 685000000000ull, + 846000000000ull, + 847000000000ull, + 688000000000ull, + 689000000000ull, + + 650000000000ull, + 651000000000ull, + 652000000000ull, + 653000000000ull, + 654000000000ull, + 655000000000ull, + 656000000000ull, + 657000000000ull, + 658000000000ull, + 659000000000ull, + 694000000000ull, + 695000000000ull, + 856000000000ull, + 857000000000ull, + 698000000000ull, + 699000000000ull, + + 660000000000ull, + 661000000000ull, + 662000000000ull, + 663000000000ull, + 664000000000ull, + 665000000000ull, + 666000000000ull, + 667000000000ull, + 668000000000ull, + 669000000000ull, + 686000000000ull, + 687000000000ull, + 866000000000ull, + 867000000000ull, + 888000000000ull, + 889000000000ull, + + 670000000000ull, + 671000000000ull, + 672000000000ull, + 673000000000ull, + 674000000000ull, + 675000000000ull, + 676000000000ull, + 677000000000ull, + 678000000000ull, + 679000000000ull, + 696000000000ull, + 697000000000ull, + 876000000000ull, + 877000000000ull, + 898000000000ull, + 899000000000ull, + + 700000000000ull, + 701000000000ull, + 702000000000ull, + 703000000000ull, + 704000000000ull, + 705000000000ull, + 706000000000ull, + 707000000000ull, + 708000000000ull, + 709000000000ull, + 780000000000ull, + 781000000000ull, + 906000000000ull, + 907000000000ull, + 986000000000ull, + 987000000000ull, + + 710000000000ull, + 711000000000ull, + 712000000000ull, + 713000000000ull, + 714000000000ull, + 715000000000ull, + 716000000000ull, + 717000000000ull, + 718000000000ull, + 719000000000ull, + 790000000000ull, + 791000000000ull, + 916000000000ull, + 917000000000ull, + 996000000000ull, + 997000000000ull, + + 720000000000ull, + 721000000000ull, + 722000000000ull, + 723000000000ull, + 724000000000ull, + 725000000000ull, + 726000000000ull, + 727000000000ull, + 728000000000ull, + 729000000000ull, + 782000000000ull, + 783000000000ull, + 926000000000ull, + 927000000000ull, + 968000000000ull, + 969000000000ull, + + 730000000000ull, + 731000000000ull, + 732000000000ull, + 733000000000ull, + 734000000000ull, + 735000000000ull, + 736000000000ull, + 737000000000ull, + 738000000000ull, + 739000000000ull, + 792000000000ull, + 793000000000ull, + 936000000000ull, + 937000000000ull, + 978000000000ull, + 979000000000ull, + + 740000000000ull, + 741000000000ull, + 742000000000ull, + 743000000000ull, + 744000000000ull, + 745000000000ull, + 746000000000ull, + 747000000000ull, + 748000000000ull, + 749000000000ull, + 784000000000ull, + 785000000000ull, + 946000000000ull, + 947000000000ull, + 788000000000ull, + 789000000000ull, + + 750000000000ull, + 751000000000ull, + 752000000000ull, + 753000000000ull, + 754000000000ull, + 755000000000ull, + 756000000000ull, + 757000000000ull, + 758000000000ull, + 759000000000ull, + 794000000000ull, + 795000000000ull, + 956000000000ull, + 957000000000ull, + 798000000000ull, + 799000000000ull, + + 760000000000ull, + 761000000000ull, + 762000000000ull, + 763000000000ull, + 764000000000ull, + 765000000000ull, + 766000000000ull, + 767000000000ull, + 768000000000ull, + 769000000000ull, + 786000000000ull, + 787000000000ull, + 966000000000ull, + 967000000000ull, + 988000000000ull, + 989000000000ull, + + 770000000000ull, + 771000000000ull, + 772000000000ull, + 773000000000ull, + 774000000000ull, + 775000000000ull, + 776000000000ull, + 777000000000ull, + 778000000000ull, + 779000000000ull, + 796000000000ull, + 797000000000ull, + 976000000000ull, + 977000000000ull, + 998000000000ull, + 999000000000ull +}; + +static const UINT64 d2b5[] = { + 0000000000000ull, + 1000000000000ull, + 2000000000000ull, + 3000000000000ull, + 4000000000000ull, + 5000000000000ull, + 6000000000000ull, + 7000000000000ull, + 8000000000000ull, + 9000000000000ull, + 80000000000000ull, + 81000000000000ull, + 800000000000000ull, + 801000000000000ull, + 880000000000000ull, + 881000000000000ull, + + 10000000000000ull, + 11000000000000ull, + 12000000000000ull, + 13000000000000ull, + 14000000000000ull, + 15000000000000ull, + 16000000000000ull, + 17000000000000ull, + 18000000000000ull, + 19000000000000ull, + 90000000000000ull, + 91000000000000ull, + 810000000000000ull, + 811000000000000ull, + 890000000000000ull, + 891000000000000ull, + + 20000000000000ull, + 21000000000000ull, + 22000000000000ull, + 23000000000000ull, + 24000000000000ull, + 25000000000000ull, + 26000000000000ull, + 27000000000000ull, + 28000000000000ull, + 29000000000000ull, + 82000000000000ull, + 83000000000000ull, + 820000000000000ull, + 821000000000000ull, + 808000000000000ull, + 809000000000000ull, + + 30000000000000ull, + 31000000000000ull, + 32000000000000ull, + 33000000000000ull, + 34000000000000ull, + 35000000000000ull, + 36000000000000ull, + 37000000000000ull, + 38000000000000ull, + 39000000000000ull, + 92000000000000ull, + 93000000000000ull, + 830000000000000ull, + 831000000000000ull, + 818000000000000ull, + 819000000000000ull, + + 40000000000000ull, + 41000000000000ull, + 42000000000000ull, + 43000000000000ull, + 44000000000000ull, + 45000000000000ull, + 46000000000000ull, + 47000000000000ull, + 48000000000000ull, + 49000000000000ull, + 84000000000000ull, + 85000000000000ull, + 840000000000000ull, + 841000000000000ull, + 88000000000000ull, + 89000000000000ull, + + 50000000000000ull, + 51000000000000ull, + 52000000000000ull, + 53000000000000ull, + 54000000000000ull, + 55000000000000ull, + 56000000000000ull, + 57000000000000ull, + 58000000000000ull, + 59000000000000ull, + 94000000000000ull, + 95000000000000ull, + 850000000000000ull, + 851000000000000ull, + 98000000000000ull, + 99000000000000ull, + + 60000000000000ull, + 61000000000000ull, + 62000000000000ull, + 63000000000000ull, + 64000000000000ull, + 65000000000000ull, + 66000000000000ull, + 67000000000000ull, + 68000000000000ull, + 69000000000000ull, + 86000000000000ull, + 87000000000000ull, + 860000000000000ull, + 861000000000000ull, + 888000000000000ull, + 889000000000000ull, + + 70000000000000ull, + 71000000000000ull, + 72000000000000ull, + 73000000000000ull, + 74000000000000ull, + 75000000000000ull, + 76000000000000ull, + 77000000000000ull, + 78000000000000ull, + 79000000000000ull, + 96000000000000ull, + 97000000000000ull, + 870000000000000ull, + 871000000000000ull, + 898000000000000ull, + 899000000000000ull, + + 100000000000000ull, + 101000000000000ull, + 102000000000000ull, + 103000000000000ull, + 104000000000000ull, + 105000000000000ull, + 106000000000000ull, + 107000000000000ull, + 108000000000000ull, + 109000000000000ull, + 180000000000000ull, + 181000000000000ull, + 900000000000000ull, + 901000000000000ull, + 980000000000000ull, + 981000000000000ull, + + 110000000000000ull, + 111000000000000ull, + 112000000000000ull, + 113000000000000ull, + 114000000000000ull, + 115000000000000ull, + 116000000000000ull, + 117000000000000ull, + 118000000000000ull, + 119000000000000ull, + 190000000000000ull, + 191000000000000ull, + 910000000000000ull, + 911000000000000ull, + 990000000000000ull, + 991000000000000ull, + + 120000000000000ull, + 121000000000000ull, + 122000000000000ull, + 123000000000000ull, + 124000000000000ull, + 125000000000000ull, + 126000000000000ull, + 127000000000000ull, + 128000000000000ull, + 129000000000000ull, + 182000000000000ull, + 183000000000000ull, + 920000000000000ull, + 921000000000000ull, + 908000000000000ull, + 909000000000000ull, + + 130000000000000ull, + 131000000000000ull, + 132000000000000ull, + 133000000000000ull, + 134000000000000ull, + 135000000000000ull, + 136000000000000ull, + 137000000000000ull, + 138000000000000ull, + 139000000000000ull, + 192000000000000ull, + 193000000000000ull, + 930000000000000ull, + 931000000000000ull, + 918000000000000ull, + 919000000000000ull, + + 140000000000000ull, + 141000000000000ull, + 142000000000000ull, + 143000000000000ull, + 144000000000000ull, + 145000000000000ull, + 146000000000000ull, + 147000000000000ull, + 148000000000000ull, + 149000000000000ull, + 184000000000000ull, + 185000000000000ull, + 940000000000000ull, + 941000000000000ull, + 188000000000000ull, + 189000000000000ull, + + 150000000000000ull, + 151000000000000ull, + 152000000000000ull, + 153000000000000ull, + 154000000000000ull, + 155000000000000ull, + 156000000000000ull, + 157000000000000ull, + 158000000000000ull, + 159000000000000ull, + 194000000000000ull, + 195000000000000ull, + 950000000000000ull, + 951000000000000ull, + 198000000000000ull, + 199000000000000ull, + + 160000000000000ull, + 161000000000000ull, + 162000000000000ull, + 163000000000000ull, + 164000000000000ull, + 165000000000000ull, + 166000000000000ull, + 167000000000000ull, + 168000000000000ull, + 169000000000000ull, + 186000000000000ull, + 187000000000000ull, + 960000000000000ull, + 961000000000000ull, + 988000000000000ull, + 989000000000000ull, + + 170000000000000ull, + 171000000000000ull, + 172000000000000ull, + 173000000000000ull, + 174000000000000ull, + 175000000000000ull, + 176000000000000ull, + 177000000000000ull, + 178000000000000ull, + 179000000000000ull, + 196000000000000ull, + 197000000000000ull, + 970000000000000ull, + 971000000000000ull, + 998000000000000ull, + 999000000000000ull, + + 200000000000000ull, + 201000000000000ull, + 202000000000000ull, + 203000000000000ull, + 204000000000000ull, + 205000000000000ull, + 206000000000000ull, + 207000000000000ull, + 208000000000000ull, + 209000000000000ull, + 280000000000000ull, + 281000000000000ull, + 802000000000000ull, + 803000000000000ull, + 882000000000000ull, + 883000000000000ull, + + 210000000000000ull, + 211000000000000ull, + 212000000000000ull, + 213000000000000ull, + 214000000000000ull, + 215000000000000ull, + 216000000000000ull, + 217000000000000ull, + 218000000000000ull, + 219000000000000ull, + 290000000000000ull, + 291000000000000ull, + 812000000000000ull, + 813000000000000ull, + 892000000000000ull, + 893000000000000ull, + + 220000000000000ull, + 221000000000000ull, + 222000000000000ull, + 223000000000000ull, + 224000000000000ull, + 225000000000000ull, + 226000000000000ull, + 227000000000000ull, + 228000000000000ull, + 229000000000000ull, + 282000000000000ull, + 283000000000000ull, + 822000000000000ull, + 823000000000000ull, + 828000000000000ull, + 829000000000000ull, + + 230000000000000ull, + 231000000000000ull, + 232000000000000ull, + 233000000000000ull, + 234000000000000ull, + 235000000000000ull, + 236000000000000ull, + 237000000000000ull, + 238000000000000ull, + 239000000000000ull, + 292000000000000ull, + 293000000000000ull, + 832000000000000ull, + 833000000000000ull, + 838000000000000ull, + 839000000000000ull, + + 240000000000000ull, + 241000000000000ull, + 242000000000000ull, + 243000000000000ull, + 244000000000000ull, + 245000000000000ull, + 246000000000000ull, + 247000000000000ull, + 248000000000000ull, + 249000000000000ull, + 284000000000000ull, + 285000000000000ull, + 842000000000000ull, + 843000000000000ull, + 288000000000000ull, + 289000000000000ull, + + 250000000000000ull, + 251000000000000ull, + 252000000000000ull, + 253000000000000ull, + 254000000000000ull, + 255000000000000ull, + 256000000000000ull, + 257000000000000ull, + 258000000000000ull, + 259000000000000ull, + 294000000000000ull, + 295000000000000ull, + 852000000000000ull, + 853000000000000ull, + 298000000000000ull, + 299000000000000ull, + + 260000000000000ull, + 261000000000000ull, + 262000000000000ull, + 263000000000000ull, + 264000000000000ull, + 265000000000000ull, + 266000000000000ull, + 267000000000000ull, + 268000000000000ull, + 269000000000000ull, + 286000000000000ull, + 287000000000000ull, + 862000000000000ull, + 863000000000000ull, + 888000000000000ull, + 889000000000000ull, + + 270000000000000ull, + 271000000000000ull, + 272000000000000ull, + 273000000000000ull, + 274000000000000ull, + 275000000000000ull, + 276000000000000ull, + 277000000000000ull, + 278000000000000ull, + 279000000000000ull, + 296000000000000ull, + 297000000000000ull, + 872000000000000ull, + 873000000000000ull, + 898000000000000ull, + 899000000000000ull, + + 300000000000000ull, + 301000000000000ull, + 302000000000000ull, + 303000000000000ull, + 304000000000000ull, + 305000000000000ull, + 306000000000000ull, + 307000000000000ull, + 308000000000000ull, + 309000000000000ull, + 380000000000000ull, + 381000000000000ull, + 902000000000000ull, + 903000000000000ull, + 982000000000000ull, + 983000000000000ull, + + 310000000000000ull, + 311000000000000ull, + 312000000000000ull, + 313000000000000ull, + 314000000000000ull, + 315000000000000ull, + 316000000000000ull, + 317000000000000ull, + 318000000000000ull, + 319000000000000ull, + 390000000000000ull, + 391000000000000ull, + 912000000000000ull, + 913000000000000ull, + 992000000000000ull, + 993000000000000ull, + + 320000000000000ull, + 321000000000000ull, + 322000000000000ull, + 323000000000000ull, + 324000000000000ull, + 325000000000000ull, + 326000000000000ull, + 327000000000000ull, + 328000000000000ull, + 329000000000000ull, + 382000000000000ull, + 383000000000000ull, + 922000000000000ull, + 923000000000000ull, + 928000000000000ull, + 929000000000000ull, + + 330000000000000ull, + 331000000000000ull, + 332000000000000ull, + 333000000000000ull, + 334000000000000ull, + 335000000000000ull, + 336000000000000ull, + 337000000000000ull, + 338000000000000ull, + 339000000000000ull, + 392000000000000ull, + 393000000000000ull, + 932000000000000ull, + 933000000000000ull, + 938000000000000ull, + 939000000000000ull, + + 340000000000000ull, + 341000000000000ull, + 342000000000000ull, + 343000000000000ull, + 344000000000000ull, + 345000000000000ull, + 346000000000000ull, + 347000000000000ull, + 348000000000000ull, + 349000000000000ull, + 384000000000000ull, + 385000000000000ull, + 942000000000000ull, + 943000000000000ull, + 388000000000000ull, + 389000000000000ull, + + 350000000000000ull, + 351000000000000ull, + 352000000000000ull, + 353000000000000ull, + 354000000000000ull, + 355000000000000ull, + 356000000000000ull, + 357000000000000ull, + 358000000000000ull, + 359000000000000ull, + 394000000000000ull, + 395000000000000ull, + 952000000000000ull, + 953000000000000ull, + 398000000000000ull, + 399000000000000ull, + + 360000000000000ull, + 361000000000000ull, + 362000000000000ull, + 363000000000000ull, + 364000000000000ull, + 365000000000000ull, + 366000000000000ull, + 367000000000000ull, + 368000000000000ull, + 369000000000000ull, + 386000000000000ull, + 387000000000000ull, + 962000000000000ull, + 963000000000000ull, + 988000000000000ull, + 989000000000000ull, + + 370000000000000ull, + 371000000000000ull, + 372000000000000ull, + 373000000000000ull, + 374000000000000ull, + 375000000000000ull, + 376000000000000ull, + 377000000000000ull, + 378000000000000ull, + 379000000000000ull, + 396000000000000ull, + 397000000000000ull, + 972000000000000ull, + 973000000000000ull, + 998000000000000ull, + 999000000000000ull, + + 400000000000000ull, + 401000000000000ull, + 402000000000000ull, + 403000000000000ull, + 404000000000000ull, + 405000000000000ull, + 406000000000000ull, + 407000000000000ull, + 408000000000000ull, + 409000000000000ull, + 480000000000000ull, + 481000000000000ull, + 804000000000000ull, + 805000000000000ull, + 884000000000000ull, + 885000000000000ull, + + 410000000000000ull, + 411000000000000ull, + 412000000000000ull, + 413000000000000ull, + 414000000000000ull, + 415000000000000ull, + 416000000000000ull, + 417000000000000ull, + 418000000000000ull, + 419000000000000ull, + 490000000000000ull, + 491000000000000ull, + 814000000000000ull, + 815000000000000ull, + 894000000000000ull, + 895000000000000ull, + + 420000000000000ull, + 421000000000000ull, + 422000000000000ull, + 423000000000000ull, + 424000000000000ull, + 425000000000000ull, + 426000000000000ull, + 427000000000000ull, + 428000000000000ull, + 429000000000000ull, + 482000000000000ull, + 483000000000000ull, + 824000000000000ull, + 825000000000000ull, + 848000000000000ull, + 849000000000000ull, + + 430000000000000ull, + 431000000000000ull, + 432000000000000ull, + 433000000000000ull, + 434000000000000ull, + 435000000000000ull, + 436000000000000ull, + 437000000000000ull, + 438000000000000ull, + 439000000000000ull, + 492000000000000ull, + 493000000000000ull, + 834000000000000ull, + 835000000000000ull, + 858000000000000ull, + 859000000000000ull, + + 440000000000000ull, + 441000000000000ull, + 442000000000000ull, + 443000000000000ull, + 444000000000000ull, + 445000000000000ull, + 446000000000000ull, + 447000000000000ull, + 448000000000000ull, + 449000000000000ull, + 484000000000000ull, + 485000000000000ull, + 844000000000000ull, + 845000000000000ull, + 488000000000000ull, + 489000000000000ull, + + 450000000000000ull, + 451000000000000ull, + 452000000000000ull, + 453000000000000ull, + 454000000000000ull, + 455000000000000ull, + 456000000000000ull, + 457000000000000ull, + 458000000000000ull, + 459000000000000ull, + 494000000000000ull, + 495000000000000ull, + 854000000000000ull, + 855000000000000ull, + 498000000000000ull, + 499000000000000ull, + + 460000000000000ull, + 461000000000000ull, + 462000000000000ull, + 463000000000000ull, + 464000000000000ull, + 465000000000000ull, + 466000000000000ull, + 467000000000000ull, + 468000000000000ull, + 469000000000000ull, + 486000000000000ull, + 487000000000000ull, + 864000000000000ull, + 865000000000000ull, + 888000000000000ull, + 889000000000000ull, + + 470000000000000ull, + 471000000000000ull, + 472000000000000ull, + 473000000000000ull, + 474000000000000ull, + 475000000000000ull, + 476000000000000ull, + 477000000000000ull, + 478000000000000ull, + 479000000000000ull, + 496000000000000ull, + 497000000000000ull, + 874000000000000ull, + 875000000000000ull, + 898000000000000ull, + 899000000000000ull, + + 500000000000000ull, + 501000000000000ull, + 502000000000000ull, + 503000000000000ull, + 504000000000000ull, + 505000000000000ull, + 506000000000000ull, + 507000000000000ull, + 508000000000000ull, + 509000000000000ull, + 580000000000000ull, + 581000000000000ull, + 904000000000000ull, + 905000000000000ull, + 984000000000000ull, + 985000000000000ull, + + 510000000000000ull, + 511000000000000ull, + 512000000000000ull, + 513000000000000ull, + 514000000000000ull, + 515000000000000ull, + 516000000000000ull, + 517000000000000ull, + 518000000000000ull, + 519000000000000ull, + 590000000000000ull, + 591000000000000ull, + 914000000000000ull, + 915000000000000ull, + 994000000000000ull, + 995000000000000ull, + + 520000000000000ull, + 521000000000000ull, + 522000000000000ull, + 523000000000000ull, + 524000000000000ull, + 525000000000000ull, + 526000000000000ull, + 527000000000000ull, + 528000000000000ull, + 529000000000000ull, + 582000000000000ull, + 583000000000000ull, + 924000000000000ull, + 925000000000000ull, + 948000000000000ull, + 949000000000000ull, + + 530000000000000ull, + 531000000000000ull, + 532000000000000ull, + 533000000000000ull, + 534000000000000ull, + 535000000000000ull, + 536000000000000ull, + 537000000000000ull, + 538000000000000ull, + 539000000000000ull, + 592000000000000ull, + 593000000000000ull, + 934000000000000ull, + 935000000000000ull, + 958000000000000ull, + 959000000000000ull, + + 540000000000000ull, + 541000000000000ull, + 542000000000000ull, + 543000000000000ull, + 544000000000000ull, + 545000000000000ull, + 546000000000000ull, + 547000000000000ull, + 548000000000000ull, + 549000000000000ull, + 584000000000000ull, + 585000000000000ull, + 944000000000000ull, + 945000000000000ull, + 588000000000000ull, + 589000000000000ull, + + 550000000000000ull, + 551000000000000ull, + 552000000000000ull, + 553000000000000ull, + 554000000000000ull, + 555000000000000ull, + 556000000000000ull, + 557000000000000ull, + 558000000000000ull, + 559000000000000ull, + 594000000000000ull, + 595000000000000ull, + 954000000000000ull, + 955000000000000ull, + 598000000000000ull, + 599000000000000ull, + + 560000000000000ull, + 561000000000000ull, + 562000000000000ull, + 563000000000000ull, + 564000000000000ull, + 565000000000000ull, + 566000000000000ull, + 567000000000000ull, + 568000000000000ull, + 569000000000000ull, + 586000000000000ull, + 587000000000000ull, + 964000000000000ull, + 965000000000000ull, + 988000000000000ull, + 989000000000000ull, + + 570000000000000ull, + 571000000000000ull, + 572000000000000ull, + 573000000000000ull, + 574000000000000ull, + 575000000000000ull, + 576000000000000ull, + 577000000000000ull, + 578000000000000ull, + 579000000000000ull, + 596000000000000ull, + 597000000000000ull, + 974000000000000ull, + 975000000000000ull, + 998000000000000ull, + 999000000000000ull, + + 600000000000000ull, + 601000000000000ull, + 602000000000000ull, + 603000000000000ull, + 604000000000000ull, + 605000000000000ull, + 606000000000000ull, + 607000000000000ull, + 608000000000000ull, + 609000000000000ull, + 680000000000000ull, + 681000000000000ull, + 806000000000000ull, + 807000000000000ull, + 886000000000000ull, + 887000000000000ull, + + 610000000000000ull, + 611000000000000ull, + 612000000000000ull, + 613000000000000ull, + 614000000000000ull, + 615000000000000ull, + 616000000000000ull, + 617000000000000ull, + 618000000000000ull, + 619000000000000ull, + 690000000000000ull, + 691000000000000ull, + 816000000000000ull, + 817000000000000ull, + 896000000000000ull, + 897000000000000ull, + + 620000000000000ull, + 621000000000000ull, + 622000000000000ull, + 623000000000000ull, + 624000000000000ull, + 625000000000000ull, + 626000000000000ull, + 627000000000000ull, + 628000000000000ull, + 629000000000000ull, + 682000000000000ull, + 683000000000000ull, + 826000000000000ull, + 827000000000000ull, + 868000000000000ull, + 869000000000000ull, + + 630000000000000ull, + 631000000000000ull, + 632000000000000ull, + 633000000000000ull, + 634000000000000ull, + 635000000000000ull, + 636000000000000ull, + 637000000000000ull, + 638000000000000ull, + 639000000000000ull, + 692000000000000ull, + 693000000000000ull, + 836000000000000ull, + 837000000000000ull, + 878000000000000ull, + 879000000000000ull, + + 640000000000000ull, + 641000000000000ull, + 642000000000000ull, + 643000000000000ull, + 644000000000000ull, + 645000000000000ull, + 646000000000000ull, + 647000000000000ull, + 648000000000000ull, + 649000000000000ull, + 684000000000000ull, + 685000000000000ull, + 846000000000000ull, + 847000000000000ull, + 688000000000000ull, + 689000000000000ull, + + 650000000000000ull, + 651000000000000ull, + 652000000000000ull, + 653000000000000ull, + 654000000000000ull, + 655000000000000ull, + 656000000000000ull, + 657000000000000ull, + 658000000000000ull, + 659000000000000ull, + 694000000000000ull, + 695000000000000ull, + 856000000000000ull, + 857000000000000ull, + 698000000000000ull, + 699000000000000ull, + + 660000000000000ull, + 661000000000000ull, + 662000000000000ull, + 663000000000000ull, + 664000000000000ull, + 665000000000000ull, + 666000000000000ull, + 667000000000000ull, + 668000000000000ull, + 669000000000000ull, + 686000000000000ull, + 687000000000000ull, + 866000000000000ull, + 867000000000000ull, + 888000000000000ull, + 889000000000000ull, + + 670000000000000ull, + 671000000000000ull, + 672000000000000ull, + 673000000000000ull, + 674000000000000ull, + 675000000000000ull, + 676000000000000ull, + 677000000000000ull, + 678000000000000ull, + 679000000000000ull, + 696000000000000ull, + 697000000000000ull, + 876000000000000ull, + 877000000000000ull, + 898000000000000ull, + 899000000000000ull, + + 700000000000000ull, + 701000000000000ull, + 702000000000000ull, + 703000000000000ull, + 704000000000000ull, + 705000000000000ull, + 706000000000000ull, + 707000000000000ull, + 708000000000000ull, + 709000000000000ull, + 780000000000000ull, + 781000000000000ull, + 906000000000000ull, + 907000000000000ull, + 986000000000000ull, + 987000000000000ull, + + 710000000000000ull, + 711000000000000ull, + 712000000000000ull, + 713000000000000ull, + 714000000000000ull, + 715000000000000ull, + 716000000000000ull, + 717000000000000ull, + 718000000000000ull, + 719000000000000ull, + 790000000000000ull, + 791000000000000ull, + 916000000000000ull, + 917000000000000ull, + 996000000000000ull, + 997000000000000ull, + + 720000000000000ull, + 721000000000000ull, + 722000000000000ull, + 723000000000000ull, + 724000000000000ull, + 725000000000000ull, + 726000000000000ull, + 727000000000000ull, + 728000000000000ull, + 729000000000000ull, + 782000000000000ull, + 783000000000000ull, + 926000000000000ull, + 927000000000000ull, + 968000000000000ull, + 969000000000000ull, + + 730000000000000ull, + 731000000000000ull, + 732000000000000ull, + 733000000000000ull, + 734000000000000ull, + 735000000000000ull, + 736000000000000ull, + 737000000000000ull, + 738000000000000ull, + 739000000000000ull, + 792000000000000ull, + 793000000000000ull, + 936000000000000ull, + 937000000000000ull, + 978000000000000ull, + 979000000000000ull, + + 740000000000000ull, + 741000000000000ull, + 742000000000000ull, + 743000000000000ull, + 744000000000000ull, + 745000000000000ull, + 746000000000000ull, + 747000000000000ull, + 748000000000000ull, + 749000000000000ull, + 784000000000000ull, + 785000000000000ull, + 946000000000000ull, + 947000000000000ull, + 788000000000000ull, + 789000000000000ull, + + 750000000000000ull, + 751000000000000ull, + 752000000000000ull, + 753000000000000ull, + 754000000000000ull, + 755000000000000ull, + 756000000000000ull, + 757000000000000ull, + 758000000000000ull, + 759000000000000ull, + 794000000000000ull, + 795000000000000ull, + 956000000000000ull, + 957000000000000ull, + 798000000000000ull, + 799000000000000ull, + + 760000000000000ull, + 761000000000000ull, + 762000000000000ull, + 763000000000000ull, + 764000000000000ull, + 765000000000000ull, + 766000000000000ull, + 767000000000000ull, + 768000000000000ull, + 769000000000000ull, + 786000000000000ull, + 787000000000000ull, + 966000000000000ull, + 967000000000000ull, + 988000000000000ull, + 989000000000000ull, + + 770000000000000ull, + 771000000000000ull, + 772000000000000ull, + 773000000000000ull, + 774000000000000ull, + 775000000000000ull, + 776000000000000ull, + 777000000000000ull, + 778000000000000ull, + 779000000000000ull, + 796000000000000ull, + 797000000000000ull, + 976000000000000ull, + 977000000000000ull, + 998000000000000ull, + 999000000000000ull +}; + +static const UINT64 d2b6[] = { + 0000000000000000ull, + 1000000000000000ull, + 2000000000000000ull, + 3000000000000000ull, + 4000000000000000ull, + 5000000000000000ull, + 6000000000000000ull, + 7000000000000000ull, + 8000000000000000ull, + 9000000000000000ull, + 80000000000000000ull, + 81000000000000000ull, + 800000000000000000ull, + 801000000000000000ull, + 880000000000000000ull, + 881000000000000000ull, + + 10000000000000000ull, + 11000000000000000ull, + 12000000000000000ull, + 13000000000000000ull, + 14000000000000000ull, + 15000000000000000ull, + 16000000000000000ull, + 17000000000000000ull, + 18000000000000000ull, + 19000000000000000ull, + 90000000000000000ull, + 91000000000000000ull, + 810000000000000000ull, + 811000000000000000ull, + 890000000000000000ull, + 891000000000000000ull, + + 20000000000000000ull, + 21000000000000000ull, + 22000000000000000ull, + 23000000000000000ull, + 24000000000000000ull, + 25000000000000000ull, + 26000000000000000ull, + 27000000000000000ull, + 28000000000000000ull, + 29000000000000000ull, + 82000000000000000ull, + 83000000000000000ull, + 820000000000000000ull, + 821000000000000000ull, + 808000000000000000ull, + 809000000000000000ull, + + 30000000000000000ull, + 31000000000000000ull, + 32000000000000000ull, + 33000000000000000ull, + 34000000000000000ull, + 35000000000000000ull, + 36000000000000000ull, + 37000000000000000ull, + 38000000000000000ull, + 39000000000000000ull, + 92000000000000000ull, + 93000000000000000ull, + 830000000000000000ull, + 831000000000000000ull, + 818000000000000000ull, + 819000000000000000ull, + + 40000000000000000ull, + 41000000000000000ull, + 42000000000000000ull, + 43000000000000000ull, + 44000000000000000ull, + 45000000000000000ull, + 46000000000000000ull, + 47000000000000000ull, + 48000000000000000ull, + 49000000000000000ull, + 84000000000000000ull, + 85000000000000000ull, + 840000000000000000ull, + 841000000000000000ull, + 88000000000000000ull, + 89000000000000000ull, + + 50000000000000000ull, + 51000000000000000ull, + 52000000000000000ull, + 53000000000000000ull, + 54000000000000000ull, + 55000000000000000ull, + 56000000000000000ull, + 57000000000000000ull, + 58000000000000000ull, + 59000000000000000ull, + 94000000000000000ull, + 95000000000000000ull, + 850000000000000000ull, + 851000000000000000ull, + 98000000000000000ull, + 99000000000000000ull, + + 60000000000000000ull, + 61000000000000000ull, + 62000000000000000ull, + 63000000000000000ull, + 64000000000000000ull, + 65000000000000000ull, + 66000000000000000ull, + 67000000000000000ull, + 68000000000000000ull, + 69000000000000000ull, + 86000000000000000ull, + 87000000000000000ull, + 860000000000000000ull, + 861000000000000000ull, + 888000000000000000ull, + 889000000000000000ull, + + 70000000000000000ull, + 71000000000000000ull, + 72000000000000000ull, + 73000000000000000ull, + 74000000000000000ull, + 75000000000000000ull, + 76000000000000000ull, + 77000000000000000ull, + 78000000000000000ull, + 79000000000000000ull, + 96000000000000000ull, + 97000000000000000ull, + 870000000000000000ull, + 871000000000000000ull, + 898000000000000000ull, + 899000000000000000ull, + + 100000000000000000ull, + 101000000000000000ull, + 102000000000000000ull, + 103000000000000000ull, + 104000000000000000ull, + 105000000000000000ull, + 106000000000000000ull, + 107000000000000000ull, + 108000000000000000ull, + 109000000000000000ull, + 180000000000000000ull, + 181000000000000000ull, + 900000000000000000ull, + 901000000000000000ull, + 980000000000000000ull, + 981000000000000000ull, + + 110000000000000000ull, + 111000000000000000ull, + 112000000000000000ull, + 113000000000000000ull, + 114000000000000000ull, + 115000000000000000ull, + 116000000000000000ull, + 117000000000000000ull, + 118000000000000000ull, + 119000000000000000ull, + 190000000000000000ull, + 191000000000000000ull, + 910000000000000000ull, + 911000000000000000ull, + 990000000000000000ull, + 991000000000000000ull, + + 120000000000000000ull, + 121000000000000000ull, + 122000000000000000ull, + 123000000000000000ull, + 124000000000000000ull, + 125000000000000000ull, + 126000000000000000ull, + 127000000000000000ull, + 128000000000000000ull, + 129000000000000000ull, + 182000000000000000ull, + 183000000000000000ull, + 920000000000000000ull, + 921000000000000000ull, + 908000000000000000ull, + 909000000000000000ull, + + 130000000000000000ull, + 131000000000000000ull, + 132000000000000000ull, + 133000000000000000ull, + 134000000000000000ull, + 135000000000000000ull, + 136000000000000000ull, + 137000000000000000ull, + 138000000000000000ull, + 139000000000000000ull, + 192000000000000000ull, + 193000000000000000ull, + 930000000000000000ull, + 931000000000000000ull, + 918000000000000000ull, + 919000000000000000ull, + + 140000000000000000ull, + 141000000000000000ull, + 142000000000000000ull, + 143000000000000000ull, + 144000000000000000ull, + 145000000000000000ull, + 146000000000000000ull, + 147000000000000000ull, + 148000000000000000ull, + 149000000000000000ull, + 184000000000000000ull, + 185000000000000000ull, + 940000000000000000ull, + 941000000000000000ull, + 188000000000000000ull, + 189000000000000000ull, + + 150000000000000000ull, + 151000000000000000ull, + 152000000000000000ull, + 153000000000000000ull, + 154000000000000000ull, + 155000000000000000ull, + 156000000000000000ull, + 157000000000000000ull, + 158000000000000000ull, + 159000000000000000ull, + 194000000000000000ull, + 195000000000000000ull, + 950000000000000000ull, + 951000000000000000ull, + 198000000000000000ull, + 199000000000000000ull, + + 160000000000000000ull, + 161000000000000000ull, + 162000000000000000ull, + 163000000000000000ull, + 164000000000000000ull, + 165000000000000000ull, + 166000000000000000ull, + 167000000000000000ull, + 168000000000000000ull, + 169000000000000000ull, + 186000000000000000ull, + 187000000000000000ull, + 960000000000000000ull, + 961000000000000000ull, + 988000000000000000ull, + 989000000000000000ull, + + 170000000000000000ull, + 171000000000000000ull, + 172000000000000000ull, + 173000000000000000ull, + 174000000000000000ull, + 175000000000000000ull, + 176000000000000000ull, + 177000000000000000ull, + 178000000000000000ull, + 179000000000000000ull, + 196000000000000000ull, + 197000000000000000ull, + 970000000000000000ull, + 971000000000000000ull, + 998000000000000000ull, + 999000000000000000ull, + + 200000000000000000ull, + 201000000000000000ull, + 202000000000000000ull, + 203000000000000000ull, + 204000000000000000ull, + 205000000000000000ull, + 206000000000000000ull, + 207000000000000000ull, + 208000000000000000ull, + 209000000000000000ull, + 280000000000000000ull, + 281000000000000000ull, + 802000000000000000ull, + 803000000000000000ull, + 882000000000000000ull, + 883000000000000000ull, + + 210000000000000000ull, + 211000000000000000ull, + 212000000000000000ull, + 213000000000000000ull, + 214000000000000000ull, + 215000000000000000ull, + 216000000000000000ull, + 217000000000000000ull, + 218000000000000000ull, + 219000000000000000ull, + 290000000000000000ull, + 291000000000000000ull, + 812000000000000000ull, + 813000000000000000ull, + 892000000000000000ull, + 893000000000000000ull, + + 220000000000000000ull, + 221000000000000000ull, + 222000000000000000ull, + 223000000000000000ull, + 224000000000000000ull, + 225000000000000000ull, + 226000000000000000ull, + 227000000000000000ull, + 228000000000000000ull, + 229000000000000000ull, + 282000000000000000ull, + 283000000000000000ull, + 822000000000000000ull, + 823000000000000000ull, + 828000000000000000ull, + 829000000000000000ull, + + 230000000000000000ull, + 231000000000000000ull, + 232000000000000000ull, + 233000000000000000ull, + 234000000000000000ull, + 235000000000000000ull, + 236000000000000000ull, + 237000000000000000ull, + 238000000000000000ull, + 239000000000000000ull, + 292000000000000000ull, + 293000000000000000ull, + 832000000000000000ull, + 833000000000000000ull, + 838000000000000000ull, + 839000000000000000ull, + + 240000000000000000ull, + 241000000000000000ull, + 242000000000000000ull, + 243000000000000000ull, + 244000000000000000ull, + 245000000000000000ull, + 246000000000000000ull, + 247000000000000000ull, + 248000000000000000ull, + 249000000000000000ull, + 284000000000000000ull, + 285000000000000000ull, + 842000000000000000ull, + 843000000000000000ull, + 288000000000000000ull, + 289000000000000000ull, + + 250000000000000000ull, + 251000000000000000ull, + 252000000000000000ull, + 253000000000000000ull, + 254000000000000000ull, + 255000000000000000ull, + 256000000000000000ull, + 257000000000000000ull, + 258000000000000000ull, + 259000000000000000ull, + 294000000000000000ull, + 295000000000000000ull, + 852000000000000000ull, + 853000000000000000ull, + 298000000000000000ull, + 299000000000000000ull, + + 260000000000000000ull, + 261000000000000000ull, + 262000000000000000ull, + 263000000000000000ull, + 264000000000000000ull, + 265000000000000000ull, + 266000000000000000ull, + 267000000000000000ull, + 268000000000000000ull, + 269000000000000000ull, + 286000000000000000ull, + 287000000000000000ull, + 862000000000000000ull, + 863000000000000000ull, + 888000000000000000ull, + 889000000000000000ull, + + 270000000000000000ull, + 271000000000000000ull, + 272000000000000000ull, + 273000000000000000ull, + 274000000000000000ull, + 275000000000000000ull, + 276000000000000000ull, + 277000000000000000ull, + 278000000000000000ull, + 279000000000000000ull, + 296000000000000000ull, + 297000000000000000ull, + 872000000000000000ull, + 873000000000000000ull, + 898000000000000000ull, + 899000000000000000ull, + + 300000000000000000ull, + 301000000000000000ull, + 302000000000000000ull, + 303000000000000000ull, + 304000000000000000ull, + 305000000000000000ull, + 306000000000000000ull, + 307000000000000000ull, + 308000000000000000ull, + 309000000000000000ull, + 380000000000000000ull, + 381000000000000000ull, + 902000000000000000ull, + 903000000000000000ull, + 982000000000000000ull, + 983000000000000000ull, + + 310000000000000000ull, + 311000000000000000ull, + 312000000000000000ull, + 313000000000000000ull, + 314000000000000000ull, + 315000000000000000ull, + 316000000000000000ull, + 317000000000000000ull, + 318000000000000000ull, + 319000000000000000ull, + 390000000000000000ull, + 391000000000000000ull, + 912000000000000000ull, + 913000000000000000ull, + 992000000000000000ull, + 993000000000000000ull, + + 320000000000000000ull, + 321000000000000000ull, + 322000000000000000ull, + 323000000000000000ull, + 324000000000000000ull, + 325000000000000000ull, + 326000000000000000ull, + 327000000000000000ull, + 328000000000000000ull, + 329000000000000000ull, + 382000000000000000ull, + 383000000000000000ull, + 922000000000000000ull, + 923000000000000000ull, + 928000000000000000ull, + 929000000000000000ull, + + 330000000000000000ull, + 331000000000000000ull, + 332000000000000000ull, + 333000000000000000ull, + 334000000000000000ull, + 335000000000000000ull, + 336000000000000000ull, + 337000000000000000ull, + 338000000000000000ull, + 339000000000000000ull, + 392000000000000000ull, + 393000000000000000ull, + 932000000000000000ull, + 933000000000000000ull, + 938000000000000000ull, + 939000000000000000ull, + + 340000000000000000ull, + 341000000000000000ull, + 342000000000000000ull, + 343000000000000000ull, + 344000000000000000ull, + 345000000000000000ull, + 346000000000000000ull, + 347000000000000000ull, + 348000000000000000ull, + 349000000000000000ull, + 384000000000000000ull, + 385000000000000000ull, + 942000000000000000ull, + 943000000000000000ull, + 388000000000000000ull, + 389000000000000000ull, + + 350000000000000000ull, + 351000000000000000ull, + 352000000000000000ull, + 353000000000000000ull, + 354000000000000000ull, + 355000000000000000ull, + 356000000000000000ull, + 357000000000000000ull, + 358000000000000000ull, + 359000000000000000ull, + 394000000000000000ull, + 395000000000000000ull, + 952000000000000000ull, + 953000000000000000ull, + 398000000000000000ull, + 399000000000000000ull, + + 360000000000000000ull, + 361000000000000000ull, + 362000000000000000ull, + 363000000000000000ull, + 364000000000000000ull, + 365000000000000000ull, + 366000000000000000ull, + 367000000000000000ull, + 368000000000000000ull, + 369000000000000000ull, + 386000000000000000ull, + 387000000000000000ull, + 962000000000000000ull, + 963000000000000000ull, + 988000000000000000ull, + 989000000000000000ull, + + 370000000000000000ull, + 371000000000000000ull, + 372000000000000000ull, + 373000000000000000ull, + 374000000000000000ull, + 375000000000000000ull, + 376000000000000000ull, + 377000000000000000ull, + 378000000000000000ull, + 379000000000000000ull, + 396000000000000000ull, + 397000000000000000ull, + 972000000000000000ull, + 973000000000000000ull, + 998000000000000000ull, + 999000000000000000ull, + + 400000000000000000ull, + 401000000000000000ull, + 402000000000000000ull, + 403000000000000000ull, + 404000000000000000ull, + 405000000000000000ull, + 406000000000000000ull, + 407000000000000000ull, + 408000000000000000ull, + 409000000000000000ull, + 480000000000000000ull, + 481000000000000000ull, + 804000000000000000ull, + 805000000000000000ull, + 884000000000000000ull, + 885000000000000000ull, + + 410000000000000000ull, + 411000000000000000ull, + 412000000000000000ull, + 413000000000000000ull, + 414000000000000000ull, + 415000000000000000ull, + 416000000000000000ull, + 417000000000000000ull, + 418000000000000000ull, + 419000000000000000ull, + 490000000000000000ull, + 491000000000000000ull, + 814000000000000000ull, + 815000000000000000ull, + 894000000000000000ull, + 895000000000000000ull, + + 420000000000000000ull, + 421000000000000000ull, + 422000000000000000ull, + 423000000000000000ull, + 424000000000000000ull, + 425000000000000000ull, + 426000000000000000ull, + 427000000000000000ull, + 428000000000000000ull, + 429000000000000000ull, + 482000000000000000ull, + 483000000000000000ull, + 824000000000000000ull, + 825000000000000000ull, + 848000000000000000ull, + 849000000000000000ull, + + 430000000000000000ull, + 431000000000000000ull, + 432000000000000000ull, + 433000000000000000ull, + 434000000000000000ull, + 435000000000000000ull, + 436000000000000000ull, + 437000000000000000ull, + 438000000000000000ull, + 439000000000000000ull, + 492000000000000000ull, + 493000000000000000ull, + 834000000000000000ull, + 835000000000000000ull, + 858000000000000000ull, + 859000000000000000ull, + + 440000000000000000ull, + 441000000000000000ull, + 442000000000000000ull, + 443000000000000000ull, + 444000000000000000ull, + 445000000000000000ull, + 446000000000000000ull, + 447000000000000000ull, + 448000000000000000ull, + 449000000000000000ull, + 484000000000000000ull, + 485000000000000000ull, + 844000000000000000ull, + 845000000000000000ull, + 488000000000000000ull, + 489000000000000000ull, + + 450000000000000000ull, + 451000000000000000ull, + 452000000000000000ull, + 453000000000000000ull, + 454000000000000000ull, + 455000000000000000ull, + 456000000000000000ull, + 457000000000000000ull, + 458000000000000000ull, + 459000000000000000ull, + 494000000000000000ull, + 495000000000000000ull, + 854000000000000000ull, + 855000000000000000ull, + 498000000000000000ull, + 499000000000000000ull, + + 460000000000000000ull, + 461000000000000000ull, + 462000000000000000ull, + 463000000000000000ull, + 464000000000000000ull, + 465000000000000000ull, + 466000000000000000ull, + 467000000000000000ull, + 468000000000000000ull, + 469000000000000000ull, + 486000000000000000ull, + 487000000000000000ull, + 864000000000000000ull, + 865000000000000000ull, + 888000000000000000ull, + 889000000000000000ull, + + 470000000000000000ull, + 471000000000000000ull, + 472000000000000000ull, + 473000000000000000ull, + 474000000000000000ull, + 475000000000000000ull, + 476000000000000000ull, + 477000000000000000ull, + 478000000000000000ull, + 479000000000000000ull, + 496000000000000000ull, + 497000000000000000ull, + 874000000000000000ull, + 875000000000000000ull, + 898000000000000000ull, + 899000000000000000ull, + + 500000000000000000ull, + 501000000000000000ull, + 502000000000000000ull, + 503000000000000000ull, + 504000000000000000ull, + 505000000000000000ull, + 506000000000000000ull, + 507000000000000000ull, + 508000000000000000ull, + 509000000000000000ull, + 580000000000000000ull, + 581000000000000000ull, + 904000000000000000ull, + 905000000000000000ull, + 984000000000000000ull, + 985000000000000000ull, + + 510000000000000000ull, + 511000000000000000ull, + 512000000000000000ull, + 513000000000000000ull, + 514000000000000000ull, + 515000000000000000ull, + 516000000000000000ull, + 517000000000000000ull, + 518000000000000000ull, + 519000000000000000ull, + 590000000000000000ull, + 591000000000000000ull, + 914000000000000000ull, + 915000000000000000ull, + 994000000000000000ull, + 995000000000000000ull, + + 520000000000000000ull, + 521000000000000000ull, + 522000000000000000ull, + 523000000000000000ull, + 524000000000000000ull, + 525000000000000000ull, + 526000000000000000ull, + 527000000000000000ull, + 528000000000000000ull, + 529000000000000000ull, + 582000000000000000ull, + 583000000000000000ull, + 924000000000000000ull, + 925000000000000000ull, + 948000000000000000ull, + 949000000000000000ull, + + 530000000000000000ull, + 531000000000000000ull, + 532000000000000000ull, + 533000000000000000ull, + 534000000000000000ull, + 535000000000000000ull, + 536000000000000000ull, + 537000000000000000ull, + 538000000000000000ull, + 539000000000000000ull, + 592000000000000000ull, + 593000000000000000ull, + 934000000000000000ull, + 935000000000000000ull, + 958000000000000000ull, + 959000000000000000ull, + + 540000000000000000ull, + 541000000000000000ull, + 542000000000000000ull, + 543000000000000000ull, + 544000000000000000ull, + 545000000000000000ull, + 546000000000000000ull, + 547000000000000000ull, + 548000000000000000ull, + 549000000000000000ull, + 584000000000000000ull, + 585000000000000000ull, + 944000000000000000ull, + 945000000000000000ull, + 588000000000000000ull, + 589000000000000000ull, + + 550000000000000000ull, + 551000000000000000ull, + 552000000000000000ull, + 553000000000000000ull, + 554000000000000000ull, + 555000000000000000ull, + 556000000000000000ull, + 557000000000000000ull, + 558000000000000000ull, + 559000000000000000ull, + 594000000000000000ull, + 595000000000000000ull, + 954000000000000000ull, + 955000000000000000ull, + 598000000000000000ull, + 599000000000000000ull, + + 560000000000000000ull, + 561000000000000000ull, + 562000000000000000ull, + 563000000000000000ull, + 564000000000000000ull, + 565000000000000000ull, + 566000000000000000ull, + 567000000000000000ull, + 568000000000000000ull, + 569000000000000000ull, + 586000000000000000ull, + 587000000000000000ull, + 964000000000000000ull, + 965000000000000000ull, + 988000000000000000ull, + 989000000000000000ull, + + 570000000000000000ull, + 571000000000000000ull, + 572000000000000000ull, + 573000000000000000ull, + 574000000000000000ull, + 575000000000000000ull, + 576000000000000000ull, + 577000000000000000ull, + 578000000000000000ull, + 579000000000000000ull, + 596000000000000000ull, + 597000000000000000ull, + 974000000000000000ull, + 975000000000000000ull, + 998000000000000000ull, + 999000000000000000ull, + + 600000000000000000ull, + 601000000000000000ull, + 602000000000000000ull, + 603000000000000000ull, + 604000000000000000ull, + 605000000000000000ull, + 606000000000000000ull, + 607000000000000000ull, + 608000000000000000ull, + 609000000000000000ull, + 680000000000000000ull, + 681000000000000000ull, + 806000000000000000ull, + 807000000000000000ull, + 886000000000000000ull, + 887000000000000000ull, + + 610000000000000000ull, + 611000000000000000ull, + 612000000000000000ull, + 613000000000000000ull, + 614000000000000000ull, + 615000000000000000ull, + 616000000000000000ull, + 617000000000000000ull, + 618000000000000000ull, + 619000000000000000ull, + 690000000000000000ull, + 691000000000000000ull, + 816000000000000000ull, + 817000000000000000ull, + 896000000000000000ull, + 897000000000000000ull, + + 620000000000000000ull, + 621000000000000000ull, + 622000000000000000ull, + 623000000000000000ull, + 624000000000000000ull, + 625000000000000000ull, + 626000000000000000ull, + 627000000000000000ull, + 628000000000000000ull, + 629000000000000000ull, + 682000000000000000ull, + 683000000000000000ull, + 826000000000000000ull, + 827000000000000000ull, + 868000000000000000ull, + 869000000000000000ull, + + 630000000000000000ull, + 631000000000000000ull, + 632000000000000000ull, + 633000000000000000ull, + 634000000000000000ull, + 635000000000000000ull, + 636000000000000000ull, + 637000000000000000ull, + 638000000000000000ull, + 639000000000000000ull, + 692000000000000000ull, + 693000000000000000ull, + 836000000000000000ull, + 837000000000000000ull, + 878000000000000000ull, + 879000000000000000ull, + + 640000000000000000ull, + 641000000000000000ull, + 642000000000000000ull, + 643000000000000000ull, + 644000000000000000ull, + 645000000000000000ull, + 646000000000000000ull, + 647000000000000000ull, + 648000000000000000ull, + 649000000000000000ull, + 684000000000000000ull, + 685000000000000000ull, + 846000000000000000ull, + 847000000000000000ull, + 688000000000000000ull, + 689000000000000000ull, + + 650000000000000000ull, + 651000000000000000ull, + 652000000000000000ull, + 653000000000000000ull, + 654000000000000000ull, + 655000000000000000ull, + 656000000000000000ull, + 657000000000000000ull, + 658000000000000000ull, + 659000000000000000ull, + 694000000000000000ull, + 695000000000000000ull, + 856000000000000000ull, + 857000000000000000ull, + 698000000000000000ull, + 699000000000000000ull, + + 660000000000000000ull, + 661000000000000000ull, + 662000000000000000ull, + 663000000000000000ull, + 664000000000000000ull, + 665000000000000000ull, + 666000000000000000ull, + 667000000000000000ull, + 668000000000000000ull, + 669000000000000000ull, + 686000000000000000ull, + 687000000000000000ull, + 866000000000000000ull, + 867000000000000000ull, + 888000000000000000ull, + 889000000000000000ull, + + 670000000000000000ull, + 671000000000000000ull, + 672000000000000000ull, + 673000000000000000ull, + 674000000000000000ull, + 675000000000000000ull, + 676000000000000000ull, + 677000000000000000ull, + 678000000000000000ull, + 679000000000000000ull, + 696000000000000000ull, + 697000000000000000ull, + 876000000000000000ull, + 877000000000000000ull, + 898000000000000000ull, + 899000000000000000ull, + + 700000000000000000ull, + 701000000000000000ull, + 702000000000000000ull, + 703000000000000000ull, + 704000000000000000ull, + 705000000000000000ull, + 706000000000000000ull, + 707000000000000000ull, + 708000000000000000ull, + 709000000000000000ull, + 780000000000000000ull, + 781000000000000000ull, + 906000000000000000ull, + 907000000000000000ull, + 986000000000000000ull, + 987000000000000000ull, + + 710000000000000000ull, + 711000000000000000ull, + 712000000000000000ull, + 713000000000000000ull, + 714000000000000000ull, + 715000000000000000ull, + 716000000000000000ull, + 717000000000000000ull, + 718000000000000000ull, + 719000000000000000ull, + 790000000000000000ull, + 791000000000000000ull, + 916000000000000000ull, + 917000000000000000ull, + 996000000000000000ull, + 997000000000000000ull, + + 720000000000000000ull, + 721000000000000000ull, + 722000000000000000ull, + 723000000000000000ull, + 724000000000000000ull, + 725000000000000000ull, + 726000000000000000ull, + 727000000000000000ull, + 728000000000000000ull, + 729000000000000000ull, + 782000000000000000ull, + 783000000000000000ull, + 926000000000000000ull, + 927000000000000000ull, + 968000000000000000ull, + 969000000000000000ull, + + 730000000000000000ull, + 731000000000000000ull, + 732000000000000000ull, + 733000000000000000ull, + 734000000000000000ull, + 735000000000000000ull, + 736000000000000000ull, + 737000000000000000ull, + 738000000000000000ull, + 739000000000000000ull, + 792000000000000000ull, + 793000000000000000ull, + 936000000000000000ull, + 937000000000000000ull, + 978000000000000000ull, + 979000000000000000ull, + + 740000000000000000ull, + 741000000000000000ull, + 742000000000000000ull, + 743000000000000000ull, + 744000000000000000ull, + 745000000000000000ull, + 746000000000000000ull, + 747000000000000000ull, + 748000000000000000ull, + 749000000000000000ull, + 784000000000000000ull, + 785000000000000000ull, + 946000000000000000ull, + 947000000000000000ull, + 788000000000000000ull, + 789000000000000000ull, + + 750000000000000000ull, + 751000000000000000ull, + 752000000000000000ull, + 753000000000000000ull, + 754000000000000000ull, + 755000000000000000ull, + 756000000000000000ull, + 757000000000000000ull, + 758000000000000000ull, + 759000000000000000ull, + 794000000000000000ull, + 795000000000000000ull, + 956000000000000000ull, + 957000000000000000ull, + 798000000000000000ull, + 799000000000000000ull, + + 760000000000000000ull, + 761000000000000000ull, + 762000000000000000ull, + 763000000000000000ull, + 764000000000000000ull, + 765000000000000000ull, + 766000000000000000ull, + 767000000000000000ull, + 768000000000000000ull, + 769000000000000000ull, + 786000000000000000ull, + 787000000000000000ull, + 966000000000000000ull, + 967000000000000000ull, + 988000000000000000ull, + 989000000000000000ull, + + 770000000000000000ull, + 771000000000000000ull, + 772000000000000000ull, + 773000000000000000ull, + 774000000000000000ull, + 775000000000000000ull, + 776000000000000000ull, + 777000000000000000ull, + 778000000000000000ull, + 779000000000000000ull, + 796000000000000000ull, + 797000000000000000ull, + 976000000000000000ull, + 977000000000000000ull, + 998000000000000000ull, + 999000000000000000ull +}; + +static const UINT64 b2d[] = { + 0x000ull, + 0x001ull, + 0x002ull, + 0x003ull, + 0x004ull, + 0x005ull, + 0x006ull, + 0x007ull, + 0x008ull, + 0x009ull, + + 0x010ull, + 0x011ull, + 0x012ull, + 0x013ull, + 0x014ull, + 0x015ull, + 0x016ull, + 0x017ull, + 0x018ull, + 0x019ull, + + 0x020ull, + 0x021ull, + 0x022ull, + 0x023ull, + 0x024ull, + 0x025ull, + 0x026ull, + 0x027ull, + 0x028ull, + 0x029ull, + + 0x030ull, + 0x031ull, + 0x032ull, + 0x033ull, + 0x034ull, + 0x035ull, + 0x036ull, + 0x037ull, + 0x038ull, + 0x039ull, + + 0x040ull, + 0x041ull, + 0x042ull, + 0x043ull, + 0x044ull, + 0x045ull, + 0x046ull, + 0x047ull, + 0x048ull, + 0x049ull, + + 0x050ull, + 0x051ull, + 0x052ull, + 0x053ull, + 0x054ull, + 0x055ull, + 0x056ull, + 0x057ull, + 0x058ull, + 0x059ull, + + 0x060ull, + 0x061ull, + 0x062ull, + 0x063ull, + 0x064ull, + 0x065ull, + 0x066ull, + 0x067ull, + 0x068ull, + 0x069ull, + + 0x070ull, + 0x071ull, + 0x072ull, + 0x073ull, + 0x074ull, + 0x075ull, + 0x076ull, + 0x077ull, + 0x078ull, + 0x079ull, + + 0x00aull, + 0x00bull, + 0x02aull, + 0x02bull, + 0x04aull, + 0x04bull, + 0x06aull, + 0x06bull, + 0x04eull, + 0x04full, + + 0x01aull, + 0x01bull, + 0x03aull, + 0x03bull, + 0x05aull, + 0x05bull, + 0x07aull, + 0x07bull, + 0x05eull, + 0x05full, + + 0x080ull, + 0x081ull, + 0x082ull, + 0x083ull, + 0x084ull, + 0x085ull, + 0x086ull, + 0x087ull, + 0x088ull, + 0x089ull, + + 0x090ull, + 0x091ull, + 0x092ull, + 0x093ull, + 0x094ull, + 0x095ull, + 0x096ull, + 0x097ull, + 0x098ull, + 0x099ull, + + 0x0a0ull, + 0x0a1ull, + 0x0a2ull, + 0x0a3ull, + 0x0a4ull, + 0x0a5ull, + 0x0a6ull, + 0x0a7ull, + 0x0a8ull, + 0x0a9ull, + + 0x0b0ull, + 0x0b1ull, + 0x0b2ull, + 0x0b3ull, + 0x0b4ull, + 0x0b5ull, + 0x0b6ull, + 0x0b7ull, + 0x0b8ull, + 0x0b9ull, + + 0x0c0ull, + 0x0c1ull, + 0x0c2ull, + 0x0c3ull, + 0x0c4ull, + 0x0c5ull, + 0x0c6ull, + 0x0c7ull, + 0x0c8ull, + 0x0c9ull, + + 0x0d0ull, + 0x0d1ull, + 0x0d2ull, + 0x0d3ull, + 0x0d4ull, + 0x0d5ull, + 0x0d6ull, + 0x0d7ull, + 0x0d8ull, + 0x0d9ull, + + 0x0e0ull, + 0x0e1ull, + 0x0e2ull, + 0x0e3ull, + 0x0e4ull, + 0x0e5ull, + 0x0e6ull, + 0x0e7ull, + 0x0e8ull, + 0x0e9ull, + + 0x0f0ull, + 0x0f1ull, + 0x0f2ull, + 0x0f3ull, + 0x0f4ull, + 0x0f5ull, + 0x0f6ull, + 0x0f7ull, + 0x0f8ull, + 0x0f9ull, + + 0x08aull, + 0x08bull, + 0x0aaull, + 0x0abull, + 0x0caull, + 0x0cbull, + 0x0eaull, + 0x0ebull, + 0x0ceull, + 0x0cfull, + + 0x09aull, + 0x09bull, + 0x0baull, + 0x0bbull, + 0x0daull, + 0x0dbull, + 0x0faull, + 0x0fbull, + 0x0deull, + 0x0dfull, + + 0x100ull, + 0x101ull, + 0x102ull, + 0x103ull, + 0x104ull, + 0x105ull, + 0x106ull, + 0x107ull, + 0x108ull, + 0x109ull, + + 0x110ull, + 0x111ull, + 0x112ull, + 0x113ull, + 0x114ull, + 0x115ull, + 0x116ull, + 0x117ull, + 0x118ull, + 0x119ull, + + 0x120ull, + 0x121ull, + 0x122ull, + 0x123ull, + 0x124ull, + 0x125ull, + 0x126ull, + 0x127ull, + 0x128ull, + 0x129ull, + + 0x130ull, + 0x131ull, + 0x132ull, + 0x133ull, + 0x134ull, + 0x135ull, + 0x136ull, + 0x137ull, + 0x138ull, + 0x139ull, + + 0x140ull, + 0x141ull, + 0x142ull, + 0x143ull, + 0x144ull, + 0x145ull, + 0x146ull, + 0x147ull, + 0x148ull, + 0x149ull, + + 0x150ull, + 0x151ull, + 0x152ull, + 0x153ull, + 0x154ull, + 0x155ull, + 0x156ull, + 0x157ull, + 0x158ull, + 0x159ull, + + 0x160ull, + 0x161ull, + 0x162ull, + 0x163ull, + 0x164ull, + 0x165ull, + 0x166ull, + 0x167ull, + 0x168ull, + 0x169ull, + + 0x170ull, + 0x171ull, + 0x172ull, + 0x173ull, + 0x174ull, + 0x175ull, + 0x176ull, + 0x177ull, + 0x178ull, + 0x179ull, + + 0x10aull, + 0x10bull, + 0x12aull, + 0x12bull, + 0x14aull, + 0x14bull, + 0x16aull, + 0x16bull, + 0x14eull, + 0x14full, + + 0x11aull, + 0x11bull, + 0x13aull, + 0x13bull, + 0x15aull, + 0x15bull, + 0x17aull, + 0x17bull, + 0x15eull, + 0x15full, + + 0x180ull, + 0x181ull, + 0x182ull, + 0x183ull, + 0x184ull, + 0x185ull, + 0x186ull, + 0x187ull, + 0x188ull, + 0x189ull, + + 0x190ull, + 0x191ull, + 0x192ull, + 0x193ull, + 0x194ull, + 0x195ull, + 0x196ull, + 0x197ull, + 0x198ull, + 0x199ull, + + 0x1a0ull, + 0x1a1ull, + 0x1a2ull, + 0x1a3ull, + 0x1a4ull, + 0x1a5ull, + 0x1a6ull, + 0x1a7ull, + 0x1a8ull, + 0x1a9ull, + + 0x1b0ull, + 0x1b1ull, + 0x1b2ull, + 0x1b3ull, + 0x1b4ull, + 0x1b5ull, + 0x1b6ull, + 0x1b7ull, + 0x1b8ull, + 0x1b9ull, + + 0x1c0ull, + 0x1c1ull, + 0x1c2ull, + 0x1c3ull, + 0x1c4ull, + 0x1c5ull, + 0x1c6ull, + 0x1c7ull, + 0x1c8ull, + 0x1c9ull, + + 0x1d0ull, + 0x1d1ull, + 0x1d2ull, + 0x1d3ull, + 0x1d4ull, + 0x1d5ull, + 0x1d6ull, + 0x1d7ull, + 0x1d8ull, + 0x1d9ull, + + 0x1e0ull, + 0x1e1ull, + 0x1e2ull, + 0x1e3ull, + 0x1e4ull, + 0x1e5ull, + 0x1e6ull, + 0x1e7ull, + 0x1e8ull, + 0x1e9ull, + + 0x1f0ull, + 0x1f1ull, + 0x1f2ull, + 0x1f3ull, + 0x1f4ull, + 0x1f5ull, + 0x1f6ull, + 0x1f7ull, + 0x1f8ull, + 0x1f9ull, + + 0x18aull, + 0x18bull, + 0x1aaull, + 0x1abull, + 0x1caull, + 0x1cbull, + 0x1eaull, + 0x1ebull, + 0x1ceull, + 0x1cfull, + + 0x19aull, + 0x19bull, + 0x1baull, + 0x1bbull, + 0x1daull, + 0x1dbull, + 0x1faull, + 0x1fbull, + 0x1deull, + 0x1dfull, + + 0x200ull, + 0x201ull, + 0x202ull, + 0x203ull, + 0x204ull, + 0x205ull, + 0x206ull, + 0x207ull, + 0x208ull, + 0x209ull, + + 0x210ull, + 0x211ull, + 0x212ull, + 0x213ull, + 0x214ull, + 0x215ull, + 0x216ull, + 0x217ull, + 0x218ull, + 0x219ull, + + 0x220ull, + 0x221ull, + 0x222ull, + 0x223ull, + 0x224ull, + 0x225ull, + 0x226ull, + 0x227ull, + 0x228ull, + 0x229ull, + + 0x230ull, + 0x231ull, + 0x232ull, + 0x233ull, + 0x234ull, + 0x235ull, + 0x236ull, + 0x237ull, + 0x238ull, + 0x239ull, + + 0x240ull, + 0x241ull, + 0x242ull, + 0x243ull, + 0x244ull, + 0x245ull, + 0x246ull, + 0x247ull, + 0x248ull, + 0x249ull, + + 0x250ull, + 0x251ull, + 0x252ull, + 0x253ull, + 0x254ull, + 0x255ull, + 0x256ull, + 0x257ull, + 0x258ull, + 0x259ull, + + 0x260ull, + 0x261ull, + 0x262ull, + 0x263ull, + 0x264ull, + 0x265ull, + 0x266ull, + 0x267ull, + 0x268ull, + 0x269ull, + + 0x270ull, + 0x271ull, + 0x272ull, + 0x273ull, + 0x274ull, + 0x275ull, + 0x276ull, + 0x277ull, + 0x278ull, + 0x279ull, + + 0x20aull, + 0x20bull, + 0x22aull, + 0x22bull, + 0x24aull, + 0x24bull, + 0x26aull, + 0x26bull, + 0x24eull, + 0x24full, + + 0x21aull, + 0x21bull, + 0x23aull, + 0x23bull, + 0x25aull, + 0x25bull, + 0x27aull, + 0x27bull, + 0x25eull, + 0x25full, + + 0x280ull, + 0x281ull, + 0x282ull, + 0x283ull, + 0x284ull, + 0x285ull, + 0x286ull, + 0x287ull, + 0x288ull, + 0x289ull, + + 0x290ull, + 0x291ull, + 0x292ull, + 0x293ull, + 0x294ull, + 0x295ull, + 0x296ull, + 0x297ull, + 0x298ull, + 0x299ull, + + 0x2a0ull, + 0x2a1ull, + 0x2a2ull, + 0x2a3ull, + 0x2a4ull, + 0x2a5ull, + 0x2a6ull, + 0x2a7ull, + 0x2a8ull, + 0x2a9ull, + + 0x2b0ull, + 0x2b1ull, + 0x2b2ull, + 0x2b3ull, + 0x2b4ull, + 0x2b5ull, + 0x2b6ull, + 0x2b7ull, + 0x2b8ull, + 0x2b9ull, + + 0x2c0ull, + 0x2c1ull, + 0x2c2ull, + 0x2c3ull, + 0x2c4ull, + 0x2c5ull, + 0x2c6ull, + 0x2c7ull, + 0x2c8ull, + 0x2c9ull, + + 0x2d0ull, + 0x2d1ull, + 0x2d2ull, + 0x2d3ull, + 0x2d4ull, + 0x2d5ull, + 0x2d6ull, + 0x2d7ull, + 0x2d8ull, + 0x2d9ull, + + 0x2e0ull, + 0x2e1ull, + 0x2e2ull, + 0x2e3ull, + 0x2e4ull, + 0x2e5ull, + 0x2e6ull, + 0x2e7ull, + 0x2e8ull, + 0x2e9ull, + + 0x2f0ull, + 0x2f1ull, + 0x2f2ull, + 0x2f3ull, + 0x2f4ull, + 0x2f5ull, + 0x2f6ull, + 0x2f7ull, + 0x2f8ull, + 0x2f9ull, + + 0x28aull, + 0x28bull, + 0x2aaull, + 0x2abull, + 0x2caull, + 0x2cbull, + 0x2eaull, + 0x2ebull, + 0x2ceull, + 0x2cfull, + + 0x29aull, + 0x29bull, + 0x2baull, + 0x2bbull, + 0x2daull, + 0x2dbull, + 0x2faull, + 0x2fbull, + 0x2deull, + 0x2dfull, + + 0x300ull, + 0x301ull, + 0x302ull, + 0x303ull, + 0x304ull, + 0x305ull, + 0x306ull, + 0x307ull, + 0x308ull, + 0x309ull, + + 0x310ull, + 0x311ull, + 0x312ull, + 0x313ull, + 0x314ull, + 0x315ull, + 0x316ull, + 0x317ull, + 0x318ull, + 0x319ull, + + 0x320ull, + 0x321ull, + 0x322ull, + 0x323ull, + 0x324ull, + 0x325ull, + 0x326ull, + 0x327ull, + 0x328ull, + 0x329ull, + + 0x330ull, + 0x331ull, + 0x332ull, + 0x333ull, + 0x334ull, + 0x335ull, + 0x336ull, + 0x337ull, + 0x338ull, + 0x339ull, + + 0x340ull, + 0x341ull, + 0x342ull, + 0x343ull, + 0x344ull, + 0x345ull, + 0x346ull, + 0x347ull, + 0x348ull, + 0x349ull, + + 0x350ull, + 0x351ull, + 0x352ull, + 0x353ull, + 0x354ull, + 0x355ull, + 0x356ull, + 0x357ull, + 0x358ull, + 0x359ull, + + 0x360ull, + 0x361ull, + 0x362ull, + 0x363ull, + 0x364ull, + 0x365ull, + 0x366ull, + 0x367ull, + 0x368ull, + 0x369ull, + + 0x370ull, + 0x371ull, + 0x372ull, + 0x373ull, + 0x374ull, + 0x375ull, + 0x376ull, + 0x377ull, + 0x378ull, + 0x379ull, + + 0x30aull, + 0x30bull, + 0x32aull, + 0x32bull, + 0x34aull, + 0x34bull, + 0x36aull, + 0x36bull, + 0x34eull, + 0x34full, + + 0x31aull, + 0x31bull, + 0x33aull, + 0x33bull, + 0x35aull, + 0x35bull, + 0x37aull, + 0x37bull, + 0x35eull, + 0x35full, + + 0x380ull, + 0x381ull, + 0x382ull, + 0x383ull, + 0x384ull, + 0x385ull, + 0x386ull, + 0x387ull, + 0x388ull, + 0x389ull, + + 0x390ull, + 0x391ull, + 0x392ull, + 0x393ull, + 0x394ull, + 0x395ull, + 0x396ull, + 0x397ull, + 0x398ull, + 0x399ull, + + 0x3a0ull, + 0x3a1ull, + 0x3a2ull, + 0x3a3ull, + 0x3a4ull, + 0x3a5ull, + 0x3a6ull, + 0x3a7ull, + 0x3a8ull, + 0x3a9ull, + + 0x3b0ull, + 0x3b1ull, + 0x3b2ull, + 0x3b3ull, + 0x3b4ull, + 0x3b5ull, + 0x3b6ull, + 0x3b7ull, + 0x3b8ull, + 0x3b9ull, + + 0x3c0ull, + 0x3c1ull, + 0x3c2ull, + 0x3c3ull, + 0x3c4ull, + 0x3c5ull, + 0x3c6ull, + 0x3c7ull, + 0x3c8ull, + 0x3c9ull, + + 0x3d0ull, + 0x3d1ull, + 0x3d2ull, + 0x3d3ull, + 0x3d4ull, + 0x3d5ull, + 0x3d6ull, + 0x3d7ull, + 0x3d8ull, + 0x3d9ull, + + 0x3e0ull, + 0x3e1ull, + 0x3e2ull, + 0x3e3ull, + 0x3e4ull, + 0x3e5ull, + 0x3e6ull, + 0x3e7ull, + 0x3e8ull, + 0x3e9ull, + + 0x3f0ull, + 0x3f1ull, + 0x3f2ull, + 0x3f3ull, + 0x3f4ull, + 0x3f5ull, + 0x3f6ull, + 0x3f7ull, + 0x3f8ull, + 0x3f9ull, + + 0x38aull, + 0x38bull, + 0x3aaull, + 0x3abull, + 0x3caull, + 0x3cbull, + 0x3eaull, + 0x3ebull, + 0x3ceull, + 0x3cfull, + + 0x39aull, + 0x39bull, + 0x3baull, + 0x3bbull, + 0x3daull, + 0x3dbull, + 0x3faull, + 0x3fbull, + 0x3deull, + 0x3dfull, + + 0x00cull, + 0x00dull, + 0x10cull, + 0x10dull, + 0x20cull, + 0x20dull, + 0x30cull, + 0x30dull, + 0x02eull, + 0x02full, + + 0x01cull, + 0x01dull, + 0x11cull, + 0x11dull, + 0x21cull, + 0x21dull, + 0x31cull, + 0x31dull, + 0x03eull, + 0x03full, + + 0x02cull, + 0x02dull, + 0x12cull, + 0x12dull, + 0x22cull, + 0x22dull, + 0x32cull, + 0x32dull, + 0x12eull, + 0x12full, + + 0x03cull, + 0x03dull, + 0x13cull, + 0x13dull, + 0x23cull, + 0x23dull, + 0x33cull, + 0x33dull, + 0x13eull, + 0x13full, + + 0x04cull, + 0x04dull, + 0x14cull, + 0x14dull, + 0x24cull, + 0x24dull, + 0x34cull, + 0x34dull, + 0x22eull, + 0x22full, + + 0x05cull, + 0x05dull, + 0x15cull, + 0x15dull, + 0x25cull, + 0x25dull, + 0x35cull, + 0x35dull, + 0x23eull, + 0x23full, + + 0x06cull, + 0x06dull, + 0x16cull, + 0x16dull, + 0x26cull, + 0x26dull, + 0x36cull, + 0x36dull, + 0x32eull, + 0x32full, + + 0x07cull, + 0x07dull, + 0x17cull, + 0x17dull, + 0x27cull, + 0x27dull, + 0x37cull, + 0x37dull, + 0x33eull, + 0x33full, + + 0x00eull, + 0x00full, + 0x10eull, + 0x10full, + 0x20eull, + 0x20full, + 0x30eull, + 0x30full, + 0x06eull, + 0x06full, + + 0x01eull, + 0x01full, + 0x11eull, + 0x11full, + 0x21eull, + 0x21full, + 0x31eull, + 0x31full, + 0x07eull, + 0x07full, + + 0x08cull, + 0x08dull, + 0x18cull, + 0x18dull, + 0x28cull, + 0x28dull, + 0x38cull, + 0x38dull, + 0x0aeull, + 0x0afull, + + 0x09cull, + 0x09dull, + 0x19cull, + 0x19dull, + 0x29cull, + 0x29dull, + 0x39cull, + 0x39dull, + 0x0beull, + 0x0bfull, + + 0x0acull, + 0x0adull, + 0x1acull, + 0x1adull, + 0x2acull, + 0x2adull, + 0x3acull, + 0x3adull, + 0x1aeull, + 0x1afull, + + 0x0bcull, + 0x0bdull, + 0x1bcull, + 0x1bdull, + 0x2bcull, + 0x2bdull, + 0x3bcull, + 0x3bdull, + 0x1beull, + 0x1bfull, + + 0x0ccull, + 0x0cdull, + 0x1ccull, + 0x1cdull, + 0x2ccull, + 0x2cdull, + 0x3ccull, + 0x3cdull, + 0x2aeull, + 0x2afull, + + 0x0dcull, + 0x0ddull, + 0x1dcull, + 0x1ddull, + 0x2dcull, + 0x2ddull, + 0x3dcull, + 0x3ddull, + 0x2beull, + 0x2bfull, + + 0x0ecull, + 0x0edull, + 0x1ecull, + 0x1edull, + 0x2ecull, + 0x2edull, + 0x3ecull, + 0x3edull, + 0x3aeull, + 0x3afull, + + 0x0fcull, + 0x0fdull, + 0x1fcull, + 0x1fdull, + 0x2fcull, + 0x2fdull, + 0x3fcull, + 0x3fdull, + 0x3beull, + 0x3bfull, + + 0x08eull, + 0x08full, + 0x18eull, + 0x18full, + 0x28eull, + 0x28full, + 0x38eull, + 0x38full, + 0x0eeull, + 0x0efull, + + 0x09eull, + 0x09full, + 0x19eull, + 0x19full, + 0x29eull, + 0x29full, + 0x39eull, + 0x39full, + 0x0feull, + 0x0ffull +}; + +static const UINT64 b2d2[] = { + 0x000ull << 10, + 0x001ull << 10, + 0x002ull << 10, + 0x003ull << 10, + 0x004ull << 10, + 0x005ull << 10, + 0x006ull << 10, + 0x007ull << 10, + 0x008ull << 10, + 0x009ull << 10, + + 0x010ull << 10, + 0x011ull << 10, + 0x012ull << 10, + 0x013ull << 10, + 0x014ull << 10, + 0x015ull << 10, + 0x016ull << 10, + 0x017ull << 10, + 0x018ull << 10, + 0x019ull << 10, + + 0x020ull << 10, + 0x021ull << 10, + 0x022ull << 10, + 0x023ull << 10, + 0x024ull << 10, + 0x025ull << 10, + 0x026ull << 10, + 0x027ull << 10, + 0x028ull << 10, + 0x029ull << 10, + + 0x030ull << 10, + 0x031ull << 10, + 0x032ull << 10, + 0x033ull << 10, + 0x034ull << 10, + 0x035ull << 10, + 0x036ull << 10, + 0x037ull << 10, + 0x038ull << 10, + 0x039ull << 10, + + 0x040ull << 10, + 0x041ull << 10, + 0x042ull << 10, + 0x043ull << 10, + 0x044ull << 10, + 0x045ull << 10, + 0x046ull << 10, + 0x047ull << 10, + 0x048ull << 10, + 0x049ull << 10, + + 0x050ull << 10, + 0x051ull << 10, + 0x052ull << 10, + 0x053ull << 10, + 0x054ull << 10, + 0x055ull << 10, + 0x056ull << 10, + 0x057ull << 10, + 0x058ull << 10, + 0x059ull << 10, + + 0x060ull << 10, + 0x061ull << 10, + 0x062ull << 10, + 0x063ull << 10, + 0x064ull << 10, + 0x065ull << 10, + 0x066ull << 10, + 0x067ull << 10, + 0x068ull << 10, + 0x069ull << 10, + + 0x070ull << 10, + 0x071ull << 10, + 0x072ull << 10, + 0x073ull << 10, + 0x074ull << 10, + 0x075ull << 10, + 0x076ull << 10, + 0x077ull << 10, + 0x078ull << 10, + 0x079ull << 10, + + 0x00aull << 10, + 0x00bull << 10, + 0x02aull << 10, + 0x02bull << 10, + 0x04aull << 10, + 0x04bull << 10, + 0x06aull << 10, + 0x06bull << 10, + 0x04eull << 10, + 0x04full << 10, + + 0x01aull << 10, + 0x01bull << 10, + 0x03aull << 10, + 0x03bull << 10, + 0x05aull << 10, + 0x05bull << 10, + 0x07aull << 10, + 0x07bull << 10, + 0x05eull << 10, + 0x05full << 10, + + 0x080ull << 10, + 0x081ull << 10, + 0x082ull << 10, + 0x083ull << 10, + 0x084ull << 10, + 0x085ull << 10, + 0x086ull << 10, + 0x087ull << 10, + 0x088ull << 10, + 0x089ull << 10, + + 0x090ull << 10, + 0x091ull << 10, + 0x092ull << 10, + 0x093ull << 10, + 0x094ull << 10, + 0x095ull << 10, + 0x096ull << 10, + 0x097ull << 10, + 0x098ull << 10, + 0x099ull << 10, + + 0x0a0ull << 10, + 0x0a1ull << 10, + 0x0a2ull << 10, + 0x0a3ull << 10, + 0x0a4ull << 10, + 0x0a5ull << 10, + 0x0a6ull << 10, + 0x0a7ull << 10, + 0x0a8ull << 10, + 0x0a9ull << 10, + + 0x0b0ull << 10, + 0x0b1ull << 10, + 0x0b2ull << 10, + 0x0b3ull << 10, + 0x0b4ull << 10, + 0x0b5ull << 10, + 0x0b6ull << 10, + 0x0b7ull << 10, + 0x0b8ull << 10, + 0x0b9ull << 10, + + 0x0c0ull << 10, + 0x0c1ull << 10, + 0x0c2ull << 10, + 0x0c3ull << 10, + 0x0c4ull << 10, + 0x0c5ull << 10, + 0x0c6ull << 10, + 0x0c7ull << 10, + 0x0c8ull << 10, + 0x0c9ull << 10, + + 0x0d0ull << 10, + 0x0d1ull << 10, + 0x0d2ull << 10, + 0x0d3ull << 10, + 0x0d4ull << 10, + 0x0d5ull << 10, + 0x0d6ull << 10, + 0x0d7ull << 10, + 0x0d8ull << 10, + 0x0d9ull << 10, + + 0x0e0ull << 10, + 0x0e1ull << 10, + 0x0e2ull << 10, + 0x0e3ull << 10, + 0x0e4ull << 10, + 0x0e5ull << 10, + 0x0e6ull << 10, + 0x0e7ull << 10, + 0x0e8ull << 10, + 0x0e9ull << 10, + + 0x0f0ull << 10, + 0x0f1ull << 10, + 0x0f2ull << 10, + 0x0f3ull << 10, + 0x0f4ull << 10, + 0x0f5ull << 10, + 0x0f6ull << 10, + 0x0f7ull << 10, + 0x0f8ull << 10, + 0x0f9ull << 10, + + 0x08aull << 10, + 0x08bull << 10, + 0x0aaull << 10, + 0x0abull << 10, + 0x0caull << 10, + 0x0cbull << 10, + 0x0eaull << 10, + 0x0ebull << 10, + 0x0ceull << 10, + 0x0cfull << 10, + + 0x09aull << 10, + 0x09bull << 10, + 0x0baull << 10, + 0x0bbull << 10, + 0x0daull << 10, + 0x0dbull << 10, + 0x0faull << 10, + 0x0fbull << 10, + 0x0deull << 10, + 0x0dfull << 10, + + 0x100ull << 10, + 0x101ull << 10, + 0x102ull << 10, + 0x103ull << 10, + 0x104ull << 10, + 0x105ull << 10, + 0x106ull << 10, + 0x107ull << 10, + 0x108ull << 10, + 0x109ull << 10, + + 0x110ull << 10, + 0x111ull << 10, + 0x112ull << 10, + 0x113ull << 10, + 0x114ull << 10, + 0x115ull << 10, + 0x116ull << 10, + 0x117ull << 10, + 0x118ull << 10, + 0x119ull << 10, + + 0x120ull << 10, + 0x121ull << 10, + 0x122ull << 10, + 0x123ull << 10, + 0x124ull << 10, + 0x125ull << 10, + 0x126ull << 10, + 0x127ull << 10, + 0x128ull << 10, + 0x129ull << 10, + + 0x130ull << 10, + 0x131ull << 10, + 0x132ull << 10, + 0x133ull << 10, + 0x134ull << 10, + 0x135ull << 10, + 0x136ull << 10, + 0x137ull << 10, + 0x138ull << 10, + 0x139ull << 10, + + 0x140ull << 10, + 0x141ull << 10, + 0x142ull << 10, + 0x143ull << 10, + 0x144ull << 10, + 0x145ull << 10, + 0x146ull << 10, + 0x147ull << 10, + 0x148ull << 10, + 0x149ull << 10, + + 0x150ull << 10, + 0x151ull << 10, + 0x152ull << 10, + 0x153ull << 10, + 0x154ull << 10, + 0x155ull << 10, + 0x156ull << 10, + 0x157ull << 10, + 0x158ull << 10, + 0x159ull << 10, + + 0x160ull << 10, + 0x161ull << 10, + 0x162ull << 10, + 0x163ull << 10, + 0x164ull << 10, + 0x165ull << 10, + 0x166ull << 10, + 0x167ull << 10, + 0x168ull << 10, + 0x169ull << 10, + + 0x170ull << 10, + 0x171ull << 10, + 0x172ull << 10, + 0x173ull << 10, + 0x174ull << 10, + 0x175ull << 10, + 0x176ull << 10, + 0x177ull << 10, + 0x178ull << 10, + 0x179ull << 10, + + 0x10aull << 10, + 0x10bull << 10, + 0x12aull << 10, + 0x12bull << 10, + 0x14aull << 10, + 0x14bull << 10, + 0x16aull << 10, + 0x16bull << 10, + 0x14eull << 10, + 0x14full << 10, + + 0x11aull << 10, + 0x11bull << 10, + 0x13aull << 10, + 0x13bull << 10, + 0x15aull << 10, + 0x15bull << 10, + 0x17aull << 10, + 0x17bull << 10, + 0x15eull << 10, + 0x15full << 10, + + 0x180ull << 10, + 0x181ull << 10, + 0x182ull << 10, + 0x183ull << 10, + 0x184ull << 10, + 0x185ull << 10, + 0x186ull << 10, + 0x187ull << 10, + 0x188ull << 10, + 0x189ull << 10, + + 0x190ull << 10, + 0x191ull << 10, + 0x192ull << 10, + 0x193ull << 10, + 0x194ull << 10, + 0x195ull << 10, + 0x196ull << 10, + 0x197ull << 10, + 0x198ull << 10, + 0x199ull << 10, + + 0x1a0ull << 10, + 0x1a1ull << 10, + 0x1a2ull << 10, + 0x1a3ull << 10, + 0x1a4ull << 10, + 0x1a5ull << 10, + 0x1a6ull << 10, + 0x1a7ull << 10, + 0x1a8ull << 10, + 0x1a9ull << 10, + + 0x1b0ull << 10, + 0x1b1ull << 10, + 0x1b2ull << 10, + 0x1b3ull << 10, + 0x1b4ull << 10, + 0x1b5ull << 10, + 0x1b6ull << 10, + 0x1b7ull << 10, + 0x1b8ull << 10, + 0x1b9ull << 10, + + 0x1c0ull << 10, + 0x1c1ull << 10, + 0x1c2ull << 10, + 0x1c3ull << 10, + 0x1c4ull << 10, + 0x1c5ull << 10, + 0x1c6ull << 10, + 0x1c7ull << 10, + 0x1c8ull << 10, + 0x1c9ull << 10, + + 0x1d0ull << 10, + 0x1d1ull << 10, + 0x1d2ull << 10, + 0x1d3ull << 10, + 0x1d4ull << 10, + 0x1d5ull << 10, + 0x1d6ull << 10, + 0x1d7ull << 10, + 0x1d8ull << 10, + 0x1d9ull << 10, + + 0x1e0ull << 10, + 0x1e1ull << 10, + 0x1e2ull << 10, + 0x1e3ull << 10, + 0x1e4ull << 10, + 0x1e5ull << 10, + 0x1e6ull << 10, + 0x1e7ull << 10, + 0x1e8ull << 10, + 0x1e9ull << 10, + + 0x1f0ull << 10, + 0x1f1ull << 10, + 0x1f2ull << 10, + 0x1f3ull << 10, + 0x1f4ull << 10, + 0x1f5ull << 10, + 0x1f6ull << 10, + 0x1f7ull << 10, + 0x1f8ull << 10, + 0x1f9ull << 10, + + 0x18aull << 10, + 0x18bull << 10, + 0x1aaull << 10, + 0x1abull << 10, + 0x1caull << 10, + 0x1cbull << 10, + 0x1eaull << 10, + 0x1ebull << 10, + 0x1ceull << 10, + 0x1cfull << 10, + + 0x19aull << 10, + 0x19bull << 10, + 0x1baull << 10, + 0x1bbull << 10, + 0x1daull << 10, + 0x1dbull << 10, + 0x1faull << 10, + 0x1fbull << 10, + 0x1deull << 10, + 0x1dfull << 10, + + 0x200ull << 10, + 0x201ull << 10, + 0x202ull << 10, + 0x203ull << 10, + 0x204ull << 10, + 0x205ull << 10, + 0x206ull << 10, + 0x207ull << 10, + 0x208ull << 10, + 0x209ull << 10, + + 0x210ull << 10, + 0x211ull << 10, + 0x212ull << 10, + 0x213ull << 10, + 0x214ull << 10, + 0x215ull << 10, + 0x216ull << 10, + 0x217ull << 10, + 0x218ull << 10, + 0x219ull << 10, + + 0x220ull << 10, + 0x221ull << 10, + 0x222ull << 10, + 0x223ull << 10, + 0x224ull << 10, + 0x225ull << 10, + 0x226ull << 10, + 0x227ull << 10, + 0x228ull << 10, + 0x229ull << 10, + + 0x230ull << 10, + 0x231ull << 10, + 0x232ull << 10, + 0x233ull << 10, + 0x234ull << 10, + 0x235ull << 10, + 0x236ull << 10, + 0x237ull << 10, + 0x238ull << 10, + 0x239ull << 10, + + 0x240ull << 10, + 0x241ull << 10, + 0x242ull << 10, + 0x243ull << 10, + 0x244ull << 10, + 0x245ull << 10, + 0x246ull << 10, + 0x247ull << 10, + 0x248ull << 10, + 0x249ull << 10, + + 0x250ull << 10, + 0x251ull << 10, + 0x252ull << 10, + 0x253ull << 10, + 0x254ull << 10, + 0x255ull << 10, + 0x256ull << 10, + 0x257ull << 10, + 0x258ull << 10, + 0x259ull << 10, + + 0x260ull << 10, + 0x261ull << 10, + 0x262ull << 10, + 0x263ull << 10, + 0x264ull << 10, + 0x265ull << 10, + 0x266ull << 10, + 0x267ull << 10, + 0x268ull << 10, + 0x269ull << 10, + + 0x270ull << 10, + 0x271ull << 10, + 0x272ull << 10, + 0x273ull << 10, + 0x274ull << 10, + 0x275ull << 10, + 0x276ull << 10, + 0x277ull << 10, + 0x278ull << 10, + 0x279ull << 10, + + 0x20aull << 10, + 0x20bull << 10, + 0x22aull << 10, + 0x22bull << 10, + 0x24aull << 10, + 0x24bull << 10, + 0x26aull << 10, + 0x26bull << 10, + 0x24eull << 10, + 0x24full << 10, + + 0x21aull << 10, + 0x21bull << 10, + 0x23aull << 10, + 0x23bull << 10, + 0x25aull << 10, + 0x25bull << 10, + 0x27aull << 10, + 0x27bull << 10, + 0x25eull << 10, + 0x25full << 10, + + 0x280ull << 10, + 0x281ull << 10, + 0x282ull << 10, + 0x283ull << 10, + 0x284ull << 10, + 0x285ull << 10, + 0x286ull << 10, + 0x287ull << 10, + 0x288ull << 10, + 0x289ull << 10, + + 0x290ull << 10, + 0x291ull << 10, + 0x292ull << 10, + 0x293ull << 10, + 0x294ull << 10, + 0x295ull << 10, + 0x296ull << 10, + 0x297ull << 10, + 0x298ull << 10, + 0x299ull << 10, + + 0x2a0ull << 10, + 0x2a1ull << 10, + 0x2a2ull << 10, + 0x2a3ull << 10, + 0x2a4ull << 10, + 0x2a5ull << 10, + 0x2a6ull << 10, + 0x2a7ull << 10, + 0x2a8ull << 10, + 0x2a9ull << 10, + + 0x2b0ull << 10, + 0x2b1ull << 10, + 0x2b2ull << 10, + 0x2b3ull << 10, + 0x2b4ull << 10, + 0x2b5ull << 10, + 0x2b6ull << 10, + 0x2b7ull << 10, + 0x2b8ull << 10, + 0x2b9ull << 10, + + 0x2c0ull << 10, + 0x2c1ull << 10, + 0x2c2ull << 10, + 0x2c3ull << 10, + 0x2c4ull << 10, + 0x2c5ull << 10, + 0x2c6ull << 10, + 0x2c7ull << 10, + 0x2c8ull << 10, + 0x2c9ull << 10, + + 0x2d0ull << 10, + 0x2d1ull << 10, + 0x2d2ull << 10, + 0x2d3ull << 10, + 0x2d4ull << 10, + 0x2d5ull << 10, + 0x2d6ull << 10, + 0x2d7ull << 10, + 0x2d8ull << 10, + 0x2d9ull << 10, + + 0x2e0ull << 10, + 0x2e1ull << 10, + 0x2e2ull << 10, + 0x2e3ull << 10, + 0x2e4ull << 10, + 0x2e5ull << 10, + 0x2e6ull << 10, + 0x2e7ull << 10, + 0x2e8ull << 10, + 0x2e9ull << 10, + + 0x2f0ull << 10, + 0x2f1ull << 10, + 0x2f2ull << 10, + 0x2f3ull << 10, + 0x2f4ull << 10, + 0x2f5ull << 10, + 0x2f6ull << 10, + 0x2f7ull << 10, + 0x2f8ull << 10, + 0x2f9ull << 10, + + 0x28aull << 10, + 0x28bull << 10, + 0x2aaull << 10, + 0x2abull << 10, + 0x2caull << 10, + 0x2cbull << 10, + 0x2eaull << 10, + 0x2ebull << 10, + 0x2ceull << 10, + 0x2cfull << 10, + + 0x29aull << 10, + 0x29bull << 10, + 0x2baull << 10, + 0x2bbull << 10, + 0x2daull << 10, + 0x2dbull << 10, + 0x2faull << 10, + 0x2fbull << 10, + 0x2deull << 10, + 0x2dfull << 10, + + 0x300ull << 10, + 0x301ull << 10, + 0x302ull << 10, + 0x303ull << 10, + 0x304ull << 10, + 0x305ull << 10, + 0x306ull << 10, + 0x307ull << 10, + 0x308ull << 10, + 0x309ull << 10, + + 0x310ull << 10, + 0x311ull << 10, + 0x312ull << 10, + 0x313ull << 10, + 0x314ull << 10, + 0x315ull << 10, + 0x316ull << 10, + 0x317ull << 10, + 0x318ull << 10, + 0x319ull << 10, + + 0x320ull << 10, + 0x321ull << 10, + 0x322ull << 10, + 0x323ull << 10, + 0x324ull << 10, + 0x325ull << 10, + 0x326ull << 10, + 0x327ull << 10, + 0x328ull << 10, + 0x329ull << 10, + + 0x330ull << 10, + 0x331ull << 10, + 0x332ull << 10, + 0x333ull << 10, + 0x334ull << 10, + 0x335ull << 10, + 0x336ull << 10, + 0x337ull << 10, + 0x338ull << 10, + 0x339ull << 10, + + 0x340ull << 10, + 0x341ull << 10, + 0x342ull << 10, + 0x343ull << 10, + 0x344ull << 10, + 0x345ull << 10, + 0x346ull << 10, + 0x347ull << 10, + 0x348ull << 10, + 0x349ull << 10, + + 0x350ull << 10, + 0x351ull << 10, + 0x352ull << 10, + 0x353ull << 10, + 0x354ull << 10, + 0x355ull << 10, + 0x356ull << 10, + 0x357ull << 10, + 0x358ull << 10, + 0x359ull << 10, + + 0x360ull << 10, + 0x361ull << 10, + 0x362ull << 10, + 0x363ull << 10, + 0x364ull << 10, + 0x365ull << 10, + 0x366ull << 10, + 0x367ull << 10, + 0x368ull << 10, + 0x369ull << 10, + + 0x370ull << 10, + 0x371ull << 10, + 0x372ull << 10, + 0x373ull << 10, + 0x374ull << 10, + 0x375ull << 10, + 0x376ull << 10, + 0x377ull << 10, + 0x378ull << 10, + 0x379ull << 10, + + 0x30aull << 10, + 0x30bull << 10, + 0x32aull << 10, + 0x32bull << 10, + 0x34aull << 10, + 0x34bull << 10, + 0x36aull << 10, + 0x36bull << 10, + 0x34eull << 10, + 0x34full << 10, + + 0x31aull << 10, + 0x31bull << 10, + 0x33aull << 10, + 0x33bull << 10, + 0x35aull << 10, + 0x35bull << 10, + 0x37aull << 10, + 0x37bull << 10, + 0x35eull << 10, + 0x35full << 10, + + 0x380ull << 10, + 0x381ull << 10, + 0x382ull << 10, + 0x383ull << 10, + 0x384ull << 10, + 0x385ull << 10, + 0x386ull << 10, + 0x387ull << 10, + 0x388ull << 10, + 0x389ull << 10, + + 0x390ull << 10, + 0x391ull << 10, + 0x392ull << 10, + 0x393ull << 10, + 0x394ull << 10, + 0x395ull << 10, + 0x396ull << 10, + 0x397ull << 10, + 0x398ull << 10, + 0x399ull << 10, + + 0x3a0ull << 10, + 0x3a1ull << 10, + 0x3a2ull << 10, + 0x3a3ull << 10, + 0x3a4ull << 10, + 0x3a5ull << 10, + 0x3a6ull << 10, + 0x3a7ull << 10, + 0x3a8ull << 10, + 0x3a9ull << 10, + + 0x3b0ull << 10, + 0x3b1ull << 10, + 0x3b2ull << 10, + 0x3b3ull << 10, + 0x3b4ull << 10, + 0x3b5ull << 10, + 0x3b6ull << 10, + 0x3b7ull << 10, + 0x3b8ull << 10, + 0x3b9ull << 10, + + 0x3c0ull << 10, + 0x3c1ull << 10, + 0x3c2ull << 10, + 0x3c3ull << 10, + 0x3c4ull << 10, + 0x3c5ull << 10, + 0x3c6ull << 10, + 0x3c7ull << 10, + 0x3c8ull << 10, + 0x3c9ull << 10, + + 0x3d0ull << 10, + 0x3d1ull << 10, + 0x3d2ull << 10, + 0x3d3ull << 10, + 0x3d4ull << 10, + 0x3d5ull << 10, + 0x3d6ull << 10, + 0x3d7ull << 10, + 0x3d8ull << 10, + 0x3d9ull << 10, + + 0x3e0ull << 10, + 0x3e1ull << 10, + 0x3e2ull << 10, + 0x3e3ull << 10, + 0x3e4ull << 10, + 0x3e5ull << 10, + 0x3e6ull << 10, + 0x3e7ull << 10, + 0x3e8ull << 10, + 0x3e9ull << 10, + + 0x3f0ull << 10, + 0x3f1ull << 10, + 0x3f2ull << 10, + 0x3f3ull << 10, + 0x3f4ull << 10, + 0x3f5ull << 10, + 0x3f6ull << 10, + 0x3f7ull << 10, + 0x3f8ull << 10, + 0x3f9ull << 10, + + 0x38aull << 10, + 0x38bull << 10, + 0x3aaull << 10, + 0x3abull << 10, + 0x3caull << 10, + 0x3cbull << 10, + 0x3eaull << 10, + 0x3ebull << 10, + 0x3ceull << 10, + 0x3cfull << 10, + + 0x39aull << 10, + 0x39bull << 10, + 0x3baull << 10, + 0x3bbull << 10, + 0x3daull << 10, + 0x3dbull << 10, + 0x3faull << 10, + 0x3fbull << 10, + 0x3deull << 10, + 0x3dfull << 10, + + 0x00cull << 10, + 0x00dull << 10, + 0x10cull << 10, + 0x10dull << 10, + 0x20cull << 10, + 0x20dull << 10, + 0x30cull << 10, + 0x30dull << 10, + 0x02eull << 10, + 0x02full << 10, + + 0x01cull << 10, + 0x01dull << 10, + 0x11cull << 10, + 0x11dull << 10, + 0x21cull << 10, + 0x21dull << 10, + 0x31cull << 10, + 0x31dull << 10, + 0x03eull << 10, + 0x03full << 10, + + 0x02cull << 10, + 0x02dull << 10, + 0x12cull << 10, + 0x12dull << 10, + 0x22cull << 10, + 0x22dull << 10, + 0x32cull << 10, + 0x32dull << 10, + 0x12eull << 10, + 0x12full << 10, + + 0x03cull << 10, + 0x03dull << 10, + 0x13cull << 10, + 0x13dull << 10, + 0x23cull << 10, + 0x23dull << 10, + 0x33cull << 10, + 0x33dull << 10, + 0x13eull << 10, + 0x13full << 10, + + 0x04cull << 10, + 0x04dull << 10, + 0x14cull << 10, + 0x14dull << 10, + 0x24cull << 10, + 0x24dull << 10, + 0x34cull << 10, + 0x34dull << 10, + 0x22eull << 10, + 0x22full << 10, + + 0x05cull << 10, + 0x05dull << 10, + 0x15cull << 10, + 0x15dull << 10, + 0x25cull << 10, + 0x25dull << 10, + 0x35cull << 10, + 0x35dull << 10, + 0x23eull << 10, + 0x23full << 10, + + 0x06cull << 10, + 0x06dull << 10, + 0x16cull << 10, + 0x16dull << 10, + 0x26cull << 10, + 0x26dull << 10, + 0x36cull << 10, + 0x36dull << 10, + 0x32eull << 10, + 0x32full << 10, + + 0x07cull << 10, + 0x07dull << 10, + 0x17cull << 10, + 0x17dull << 10, + 0x27cull << 10, + 0x27dull << 10, + 0x37cull << 10, + 0x37dull << 10, + 0x33eull << 10, + 0x33full << 10, + + 0x00eull << 10, + 0x00full << 10, + 0x10eull << 10, + 0x10full << 10, + 0x20eull << 10, + 0x20full << 10, + 0x30eull << 10, + 0x30full << 10, + 0x06eull << 10, + 0x06full << 10, + + 0x01eull << 10, + 0x01full << 10, + 0x11eull << 10, + 0x11full << 10, + 0x21eull << 10, + 0x21full << 10, + 0x31eull << 10, + 0x31full << 10, + 0x07eull << 10, + 0x07full << 10, + + 0x08cull << 10, + 0x08dull << 10, + 0x18cull << 10, + 0x18dull << 10, + 0x28cull << 10, + 0x28dull << 10, + 0x38cull << 10, + 0x38dull << 10, + 0x0aeull << 10, + 0x0afull << 10, + + 0x09cull << 10, + 0x09dull << 10, + 0x19cull << 10, + 0x19dull << 10, + 0x29cull << 10, + 0x29dull << 10, + 0x39cull << 10, + 0x39dull << 10, + 0x0beull << 10, + 0x0bfull << 10, + + 0x0acull << 10, + 0x0adull << 10, + 0x1acull << 10, + 0x1adull << 10, + 0x2acull << 10, + 0x2adull << 10, + 0x3acull << 10, + 0x3adull << 10, + 0x1aeull << 10, + 0x1afull << 10, + + 0x0bcull << 10, + 0x0bdull << 10, + 0x1bcull << 10, + 0x1bdull << 10, + 0x2bcull << 10, + 0x2bdull << 10, + 0x3bcull << 10, + 0x3bdull << 10, + 0x1beull << 10, + 0x1bfull << 10, + + 0x0ccull << 10, + 0x0cdull << 10, + 0x1ccull << 10, + 0x1cdull << 10, + 0x2ccull << 10, + 0x2cdull << 10, + 0x3ccull << 10, + 0x3cdull << 10, + 0x2aeull << 10, + 0x2afull << 10, + + 0x0dcull << 10, + 0x0ddull << 10, + 0x1dcull << 10, + 0x1ddull << 10, + 0x2dcull << 10, + 0x2ddull << 10, + 0x3dcull << 10, + 0x3ddull << 10, + 0x2beull << 10, + 0x2bfull << 10, + + 0x0ecull << 10, + 0x0edull << 10, + 0x1ecull << 10, + 0x1edull << 10, + 0x2ecull << 10, + 0x2edull << 10, + 0x3ecull << 10, + 0x3edull << 10, + 0x3aeull << 10, + 0x3afull << 10, + + 0x0fcull << 10, + 0x0fdull << 10, + 0x1fcull << 10, + 0x1fdull << 10, + 0x2fcull << 10, + 0x2fdull << 10, + 0x3fcull << 10, + 0x3fdull << 10, + 0x3beull << 10, + 0x3bfull << 10, + + 0x08eull << 10, + 0x08full << 10, + 0x18eull << 10, + 0x18full << 10, + 0x28eull << 10, + 0x28full << 10, + 0x38eull << 10, + 0x38full << 10, + 0x0eeull << 10, + 0x0efull << 10, + + 0x09eull << 10, + 0x09full << 10, + 0x19eull << 10, + 0x19full << 10, + 0x29eull << 10, + 0x29full << 10, + 0x39eull << 10, + 0x39full << 10, + 0x0feull << 10, + 0x0ffull << 10 +}; + +static const UINT64 b2d3[] = { + 0x000ull << 20, + 0x001ull << 20, + 0x002ull << 20, + 0x003ull << 20, + 0x004ull << 20, + 0x005ull << 20, + 0x006ull << 20, + 0x007ull << 20, + 0x008ull << 20, + 0x009ull << 20, + + 0x010ull << 20, + 0x011ull << 20, + 0x012ull << 20, + 0x013ull << 20, + 0x014ull << 20, + 0x015ull << 20, + 0x016ull << 20, + 0x017ull << 20, + 0x018ull << 20, + 0x019ull << 20, + + 0x020ull << 20, + 0x021ull << 20, + 0x022ull << 20, + 0x023ull << 20, + 0x024ull << 20, + 0x025ull << 20, + 0x026ull << 20, + 0x027ull << 20, + 0x028ull << 20, + 0x029ull << 20, + + 0x030ull << 20, + 0x031ull << 20, + 0x032ull << 20, + 0x033ull << 20, + 0x034ull << 20, + 0x035ull << 20, + 0x036ull << 20, + 0x037ull << 20, + 0x038ull << 20, + 0x039ull << 20, + + 0x040ull << 20, + 0x041ull << 20, + 0x042ull << 20, + 0x043ull << 20, + 0x044ull << 20, + 0x045ull << 20, + 0x046ull << 20, + 0x047ull << 20, + 0x048ull << 20, + 0x049ull << 20, + + 0x050ull << 20, + 0x051ull << 20, + 0x052ull << 20, + 0x053ull << 20, + 0x054ull << 20, + 0x055ull << 20, + 0x056ull << 20, + 0x057ull << 20, + 0x058ull << 20, + 0x059ull << 20, + + 0x060ull << 20, + 0x061ull << 20, + 0x062ull << 20, + 0x063ull << 20, + 0x064ull << 20, + 0x065ull << 20, + 0x066ull << 20, + 0x067ull << 20, + 0x068ull << 20, + 0x069ull << 20, + + 0x070ull << 20, + 0x071ull << 20, + 0x072ull << 20, + 0x073ull << 20, + 0x074ull << 20, + 0x075ull << 20, + 0x076ull << 20, + 0x077ull << 20, + 0x078ull << 20, + 0x079ull << 20, + + 0x00aull << 20, + 0x00bull << 20, + 0x02aull << 20, + 0x02bull << 20, + 0x04aull << 20, + 0x04bull << 20, + 0x06aull << 20, + 0x06bull << 20, + 0x04eull << 20, + 0x04full << 20, + + 0x01aull << 20, + 0x01bull << 20, + 0x03aull << 20, + 0x03bull << 20, + 0x05aull << 20, + 0x05bull << 20, + 0x07aull << 20, + 0x07bull << 20, + 0x05eull << 20, + 0x05full << 20, + + 0x080ull << 20, + 0x081ull << 20, + 0x082ull << 20, + 0x083ull << 20, + 0x084ull << 20, + 0x085ull << 20, + 0x086ull << 20, + 0x087ull << 20, + 0x088ull << 20, + 0x089ull << 20, + + 0x090ull << 20, + 0x091ull << 20, + 0x092ull << 20, + 0x093ull << 20, + 0x094ull << 20, + 0x095ull << 20, + 0x096ull << 20, + 0x097ull << 20, + 0x098ull << 20, + 0x099ull << 20, + + 0x0a0ull << 20, + 0x0a1ull << 20, + 0x0a2ull << 20, + 0x0a3ull << 20, + 0x0a4ull << 20, + 0x0a5ull << 20, + 0x0a6ull << 20, + 0x0a7ull << 20, + 0x0a8ull << 20, + 0x0a9ull << 20, + + 0x0b0ull << 20, + 0x0b1ull << 20, + 0x0b2ull << 20, + 0x0b3ull << 20, + 0x0b4ull << 20, + 0x0b5ull << 20, + 0x0b6ull << 20, + 0x0b7ull << 20, + 0x0b8ull << 20, + 0x0b9ull << 20, + + 0x0c0ull << 20, + 0x0c1ull << 20, + 0x0c2ull << 20, + 0x0c3ull << 20, + 0x0c4ull << 20, + 0x0c5ull << 20, + 0x0c6ull << 20, + 0x0c7ull << 20, + 0x0c8ull << 20, + 0x0c9ull << 20, + + 0x0d0ull << 20, + 0x0d1ull << 20, + 0x0d2ull << 20, + 0x0d3ull << 20, + 0x0d4ull << 20, + 0x0d5ull << 20, + 0x0d6ull << 20, + 0x0d7ull << 20, + 0x0d8ull << 20, + 0x0d9ull << 20, + + 0x0e0ull << 20, + 0x0e1ull << 20, + 0x0e2ull << 20, + 0x0e3ull << 20, + 0x0e4ull << 20, + 0x0e5ull << 20, + 0x0e6ull << 20, + 0x0e7ull << 20, + 0x0e8ull << 20, + 0x0e9ull << 20, + + 0x0f0ull << 20, + 0x0f1ull << 20, + 0x0f2ull << 20, + 0x0f3ull << 20, + 0x0f4ull << 20, + 0x0f5ull << 20, + 0x0f6ull << 20, + 0x0f7ull << 20, + 0x0f8ull << 20, + 0x0f9ull << 20, + + 0x08aull << 20, + 0x08bull << 20, + 0x0aaull << 20, + 0x0abull << 20, + 0x0caull << 20, + 0x0cbull << 20, + 0x0eaull << 20, + 0x0ebull << 20, + 0x0ceull << 20, + 0x0cfull << 20, + + 0x09aull << 20, + 0x09bull << 20, + 0x0baull << 20, + 0x0bbull << 20, + 0x0daull << 20, + 0x0dbull << 20, + 0x0faull << 20, + 0x0fbull << 20, + 0x0deull << 20, + 0x0dfull << 20, + + 0x100ull << 20, + 0x101ull << 20, + 0x102ull << 20, + 0x103ull << 20, + 0x104ull << 20, + 0x105ull << 20, + 0x106ull << 20, + 0x107ull << 20, + 0x108ull << 20, + 0x109ull << 20, + + 0x110ull << 20, + 0x111ull << 20, + 0x112ull << 20, + 0x113ull << 20, + 0x114ull << 20, + 0x115ull << 20, + 0x116ull << 20, + 0x117ull << 20, + 0x118ull << 20, + 0x119ull << 20, + + 0x120ull << 20, + 0x121ull << 20, + 0x122ull << 20, + 0x123ull << 20, + 0x124ull << 20, + 0x125ull << 20, + 0x126ull << 20, + 0x127ull << 20, + 0x128ull << 20, + 0x129ull << 20, + + 0x130ull << 20, + 0x131ull << 20, + 0x132ull << 20, + 0x133ull << 20, + 0x134ull << 20, + 0x135ull << 20, + 0x136ull << 20, + 0x137ull << 20, + 0x138ull << 20, + 0x139ull << 20, + + 0x140ull << 20, + 0x141ull << 20, + 0x142ull << 20, + 0x143ull << 20, + 0x144ull << 20, + 0x145ull << 20, + 0x146ull << 20, + 0x147ull << 20, + 0x148ull << 20, + 0x149ull << 20, + + 0x150ull << 20, + 0x151ull << 20, + 0x152ull << 20, + 0x153ull << 20, + 0x154ull << 20, + 0x155ull << 20, + 0x156ull << 20, + 0x157ull << 20, + 0x158ull << 20, + 0x159ull << 20, + + 0x160ull << 20, + 0x161ull << 20, + 0x162ull << 20, + 0x163ull << 20, + 0x164ull << 20, + 0x165ull << 20, + 0x166ull << 20, + 0x167ull << 20, + 0x168ull << 20, + 0x169ull << 20, + + 0x170ull << 20, + 0x171ull << 20, + 0x172ull << 20, + 0x173ull << 20, + 0x174ull << 20, + 0x175ull << 20, + 0x176ull << 20, + 0x177ull << 20, + 0x178ull << 20, + 0x179ull << 20, + + 0x10aull << 20, + 0x10bull << 20, + 0x12aull << 20, + 0x12bull << 20, + 0x14aull << 20, + 0x14bull << 20, + 0x16aull << 20, + 0x16bull << 20, + 0x14eull << 20, + 0x14full << 20, + + 0x11aull << 20, + 0x11bull << 20, + 0x13aull << 20, + 0x13bull << 20, + 0x15aull << 20, + 0x15bull << 20, + 0x17aull << 20, + 0x17bull << 20, + 0x15eull << 20, + 0x15full << 20, + + 0x180ull << 20, + 0x181ull << 20, + 0x182ull << 20, + 0x183ull << 20, + 0x184ull << 20, + 0x185ull << 20, + 0x186ull << 20, + 0x187ull << 20, + 0x188ull << 20, + 0x189ull << 20, + + 0x190ull << 20, + 0x191ull << 20, + 0x192ull << 20, + 0x193ull << 20, + 0x194ull << 20, + 0x195ull << 20, + 0x196ull << 20, + 0x197ull << 20, + 0x198ull << 20, + 0x199ull << 20, + + 0x1a0ull << 20, + 0x1a1ull << 20, + 0x1a2ull << 20, + 0x1a3ull << 20, + 0x1a4ull << 20, + 0x1a5ull << 20, + 0x1a6ull << 20, + 0x1a7ull << 20, + 0x1a8ull << 20, + 0x1a9ull << 20, + + 0x1b0ull << 20, + 0x1b1ull << 20, + 0x1b2ull << 20, + 0x1b3ull << 20, + 0x1b4ull << 20, + 0x1b5ull << 20, + 0x1b6ull << 20, + 0x1b7ull << 20, + 0x1b8ull << 20, + 0x1b9ull << 20, + + 0x1c0ull << 20, + 0x1c1ull << 20, + 0x1c2ull << 20, + 0x1c3ull << 20, + 0x1c4ull << 20, + 0x1c5ull << 20, + 0x1c6ull << 20, + 0x1c7ull << 20, + 0x1c8ull << 20, + 0x1c9ull << 20, + + 0x1d0ull << 20, + 0x1d1ull << 20, + 0x1d2ull << 20, + 0x1d3ull << 20, + 0x1d4ull << 20, + 0x1d5ull << 20, + 0x1d6ull << 20, + 0x1d7ull << 20, + 0x1d8ull << 20, + 0x1d9ull << 20, + + 0x1e0ull << 20, + 0x1e1ull << 20, + 0x1e2ull << 20, + 0x1e3ull << 20, + 0x1e4ull << 20, + 0x1e5ull << 20, + 0x1e6ull << 20, + 0x1e7ull << 20, + 0x1e8ull << 20, + 0x1e9ull << 20, + + 0x1f0ull << 20, + 0x1f1ull << 20, + 0x1f2ull << 20, + 0x1f3ull << 20, + 0x1f4ull << 20, + 0x1f5ull << 20, + 0x1f6ull << 20, + 0x1f7ull << 20, + 0x1f8ull << 20, + 0x1f9ull << 20, + + 0x18aull << 20, + 0x18bull << 20, + 0x1aaull << 20, + 0x1abull << 20, + 0x1caull << 20, + 0x1cbull << 20, + 0x1eaull << 20, + 0x1ebull << 20, + 0x1ceull << 20, + 0x1cfull << 20, + + 0x19aull << 20, + 0x19bull << 20, + 0x1baull << 20, + 0x1bbull << 20, + 0x1daull << 20, + 0x1dbull << 20, + 0x1faull << 20, + 0x1fbull << 20, + 0x1deull << 20, + 0x1dfull << 20, + + 0x200ull << 20, + 0x201ull << 20, + 0x202ull << 20, + 0x203ull << 20, + 0x204ull << 20, + 0x205ull << 20, + 0x206ull << 20, + 0x207ull << 20, + 0x208ull << 20, + 0x209ull << 20, + + 0x210ull << 20, + 0x211ull << 20, + 0x212ull << 20, + 0x213ull << 20, + 0x214ull << 20, + 0x215ull << 20, + 0x216ull << 20, + 0x217ull << 20, + 0x218ull << 20, + 0x219ull << 20, + + 0x220ull << 20, + 0x221ull << 20, + 0x222ull << 20, + 0x223ull << 20, + 0x224ull << 20, + 0x225ull << 20, + 0x226ull << 20, + 0x227ull << 20, + 0x228ull << 20, + 0x229ull << 20, + + 0x230ull << 20, + 0x231ull << 20, + 0x232ull << 20, + 0x233ull << 20, + 0x234ull << 20, + 0x235ull << 20, + 0x236ull << 20, + 0x237ull << 20, + 0x238ull << 20, + 0x239ull << 20, + + 0x240ull << 20, + 0x241ull << 20, + 0x242ull << 20, + 0x243ull << 20, + 0x244ull << 20, + 0x245ull << 20, + 0x246ull << 20, + 0x247ull << 20, + 0x248ull << 20, + 0x249ull << 20, + + 0x250ull << 20, + 0x251ull << 20, + 0x252ull << 20, + 0x253ull << 20, + 0x254ull << 20, + 0x255ull << 20, + 0x256ull << 20, + 0x257ull << 20, + 0x258ull << 20, + 0x259ull << 20, + + 0x260ull << 20, + 0x261ull << 20, + 0x262ull << 20, + 0x263ull << 20, + 0x264ull << 20, + 0x265ull << 20, + 0x266ull << 20, + 0x267ull << 20, + 0x268ull << 20, + 0x269ull << 20, + + 0x270ull << 20, + 0x271ull << 20, + 0x272ull << 20, + 0x273ull << 20, + 0x274ull << 20, + 0x275ull << 20, + 0x276ull << 20, + 0x277ull << 20, + 0x278ull << 20, + 0x279ull << 20, + + 0x20aull << 20, + 0x20bull << 20, + 0x22aull << 20, + 0x22bull << 20, + 0x24aull << 20, + 0x24bull << 20, + 0x26aull << 20, + 0x26bull << 20, + 0x24eull << 20, + 0x24full << 20, + + 0x21aull << 20, + 0x21bull << 20, + 0x23aull << 20, + 0x23bull << 20, + 0x25aull << 20, + 0x25bull << 20, + 0x27aull << 20, + 0x27bull << 20, + 0x25eull << 20, + 0x25full << 20, + + 0x280ull << 20, + 0x281ull << 20, + 0x282ull << 20, + 0x283ull << 20, + 0x284ull << 20, + 0x285ull << 20, + 0x286ull << 20, + 0x287ull << 20, + 0x288ull << 20, + 0x289ull << 20, + + 0x290ull << 20, + 0x291ull << 20, + 0x292ull << 20, + 0x293ull << 20, + 0x294ull << 20, + 0x295ull << 20, + 0x296ull << 20, + 0x297ull << 20, + 0x298ull << 20, + 0x299ull << 20, + + 0x2a0ull << 20, + 0x2a1ull << 20, + 0x2a2ull << 20, + 0x2a3ull << 20, + 0x2a4ull << 20, + 0x2a5ull << 20, + 0x2a6ull << 20, + 0x2a7ull << 20, + 0x2a8ull << 20, + 0x2a9ull << 20, + + 0x2b0ull << 20, + 0x2b1ull << 20, + 0x2b2ull << 20, + 0x2b3ull << 20, + 0x2b4ull << 20, + 0x2b5ull << 20, + 0x2b6ull << 20, + 0x2b7ull << 20, + 0x2b8ull << 20, + 0x2b9ull << 20, + + 0x2c0ull << 20, + 0x2c1ull << 20, + 0x2c2ull << 20, + 0x2c3ull << 20, + 0x2c4ull << 20, + 0x2c5ull << 20, + 0x2c6ull << 20, + 0x2c7ull << 20, + 0x2c8ull << 20, + 0x2c9ull << 20, + + 0x2d0ull << 20, + 0x2d1ull << 20, + 0x2d2ull << 20, + 0x2d3ull << 20, + 0x2d4ull << 20, + 0x2d5ull << 20, + 0x2d6ull << 20, + 0x2d7ull << 20, + 0x2d8ull << 20, + 0x2d9ull << 20, + + 0x2e0ull << 20, + 0x2e1ull << 20, + 0x2e2ull << 20, + 0x2e3ull << 20, + 0x2e4ull << 20, + 0x2e5ull << 20, + 0x2e6ull << 20, + 0x2e7ull << 20, + 0x2e8ull << 20, + 0x2e9ull << 20, + + 0x2f0ull << 20, + 0x2f1ull << 20, + 0x2f2ull << 20, + 0x2f3ull << 20, + 0x2f4ull << 20, + 0x2f5ull << 20, + 0x2f6ull << 20, + 0x2f7ull << 20, + 0x2f8ull << 20, + 0x2f9ull << 20, + + 0x28aull << 20, + 0x28bull << 20, + 0x2aaull << 20, + 0x2abull << 20, + 0x2caull << 20, + 0x2cbull << 20, + 0x2eaull << 20, + 0x2ebull << 20, + 0x2ceull << 20, + 0x2cfull << 20, + + 0x29aull << 20, + 0x29bull << 20, + 0x2baull << 20, + 0x2bbull << 20, + 0x2daull << 20, + 0x2dbull << 20, + 0x2faull << 20, + 0x2fbull << 20, + 0x2deull << 20, + 0x2dfull << 20, + + 0x300ull << 20, + 0x301ull << 20, + 0x302ull << 20, + 0x303ull << 20, + 0x304ull << 20, + 0x305ull << 20, + 0x306ull << 20, + 0x307ull << 20, + 0x308ull << 20, + 0x309ull << 20, + + 0x310ull << 20, + 0x311ull << 20, + 0x312ull << 20, + 0x313ull << 20, + 0x314ull << 20, + 0x315ull << 20, + 0x316ull << 20, + 0x317ull << 20, + 0x318ull << 20, + 0x319ull << 20, + + 0x320ull << 20, + 0x321ull << 20, + 0x322ull << 20, + 0x323ull << 20, + 0x324ull << 20, + 0x325ull << 20, + 0x326ull << 20, + 0x327ull << 20, + 0x328ull << 20, + 0x329ull << 20, + + 0x330ull << 20, + 0x331ull << 20, + 0x332ull << 20, + 0x333ull << 20, + 0x334ull << 20, + 0x335ull << 20, + 0x336ull << 20, + 0x337ull << 20, + 0x338ull << 20, + 0x339ull << 20, + + 0x340ull << 20, + 0x341ull << 20, + 0x342ull << 20, + 0x343ull << 20, + 0x344ull << 20, + 0x345ull << 20, + 0x346ull << 20, + 0x347ull << 20, + 0x348ull << 20, + 0x349ull << 20, + + 0x350ull << 20, + 0x351ull << 20, + 0x352ull << 20, + 0x353ull << 20, + 0x354ull << 20, + 0x355ull << 20, + 0x356ull << 20, + 0x357ull << 20, + 0x358ull << 20, + 0x359ull << 20, + + 0x360ull << 20, + 0x361ull << 20, + 0x362ull << 20, + 0x363ull << 20, + 0x364ull << 20, + 0x365ull << 20, + 0x366ull << 20, + 0x367ull << 20, + 0x368ull << 20, + 0x369ull << 20, + + 0x370ull << 20, + 0x371ull << 20, + 0x372ull << 20, + 0x373ull << 20, + 0x374ull << 20, + 0x375ull << 20, + 0x376ull << 20, + 0x377ull << 20, + 0x378ull << 20, + 0x379ull << 20, + + 0x30aull << 20, + 0x30bull << 20, + 0x32aull << 20, + 0x32bull << 20, + 0x34aull << 20, + 0x34bull << 20, + 0x36aull << 20, + 0x36bull << 20, + 0x34eull << 20, + 0x34full << 20, + + 0x31aull << 20, + 0x31bull << 20, + 0x33aull << 20, + 0x33bull << 20, + 0x35aull << 20, + 0x35bull << 20, + 0x37aull << 20, + 0x37bull << 20, + 0x35eull << 20, + 0x35full << 20, + + 0x380ull << 20, + 0x381ull << 20, + 0x382ull << 20, + 0x383ull << 20, + 0x384ull << 20, + 0x385ull << 20, + 0x386ull << 20, + 0x387ull << 20, + 0x388ull << 20, + 0x389ull << 20, + + 0x390ull << 20, + 0x391ull << 20, + 0x392ull << 20, + 0x393ull << 20, + 0x394ull << 20, + 0x395ull << 20, + 0x396ull << 20, + 0x397ull << 20, + 0x398ull << 20, + 0x399ull << 20, + + 0x3a0ull << 20, + 0x3a1ull << 20, + 0x3a2ull << 20, + 0x3a3ull << 20, + 0x3a4ull << 20, + 0x3a5ull << 20, + 0x3a6ull << 20, + 0x3a7ull << 20, + 0x3a8ull << 20, + 0x3a9ull << 20, + + 0x3b0ull << 20, + 0x3b1ull << 20, + 0x3b2ull << 20, + 0x3b3ull << 20, + 0x3b4ull << 20, + 0x3b5ull << 20, + 0x3b6ull << 20, + 0x3b7ull << 20, + 0x3b8ull << 20, + 0x3b9ull << 20, + + 0x3c0ull << 20, + 0x3c1ull << 20, + 0x3c2ull << 20, + 0x3c3ull << 20, + 0x3c4ull << 20, + 0x3c5ull << 20, + 0x3c6ull << 20, + 0x3c7ull << 20, + 0x3c8ull << 20, + 0x3c9ull << 20, + + 0x3d0ull << 20, + 0x3d1ull << 20, + 0x3d2ull << 20, + 0x3d3ull << 20, + 0x3d4ull << 20, + 0x3d5ull << 20, + 0x3d6ull << 20, + 0x3d7ull << 20, + 0x3d8ull << 20, + 0x3d9ull << 20, + + 0x3e0ull << 20, + 0x3e1ull << 20, + 0x3e2ull << 20, + 0x3e3ull << 20, + 0x3e4ull << 20, + 0x3e5ull << 20, + 0x3e6ull << 20, + 0x3e7ull << 20, + 0x3e8ull << 20, + 0x3e9ull << 20, + + 0x3f0ull << 20, + 0x3f1ull << 20, + 0x3f2ull << 20, + 0x3f3ull << 20, + 0x3f4ull << 20, + 0x3f5ull << 20, + 0x3f6ull << 20, + 0x3f7ull << 20, + 0x3f8ull << 20, + 0x3f9ull << 20, + + 0x38aull << 20, + 0x38bull << 20, + 0x3aaull << 20, + 0x3abull << 20, + 0x3caull << 20, + 0x3cbull << 20, + 0x3eaull << 20, + 0x3ebull << 20, + 0x3ceull << 20, + 0x3cfull << 20, + + 0x39aull << 20, + 0x39bull << 20, + 0x3baull << 20, + 0x3bbull << 20, + 0x3daull << 20, + 0x3dbull << 20, + 0x3faull << 20, + 0x3fbull << 20, + 0x3deull << 20, + 0x3dfull << 20, + + 0x00cull << 20, + 0x00dull << 20, + 0x10cull << 20, + 0x10dull << 20, + 0x20cull << 20, + 0x20dull << 20, + 0x30cull << 20, + 0x30dull << 20, + 0x02eull << 20, + 0x02full << 20, + + 0x01cull << 20, + 0x01dull << 20, + 0x11cull << 20, + 0x11dull << 20, + 0x21cull << 20, + 0x21dull << 20, + 0x31cull << 20, + 0x31dull << 20, + 0x03eull << 20, + 0x03full << 20, + + 0x02cull << 20, + 0x02dull << 20, + 0x12cull << 20, + 0x12dull << 20, + 0x22cull << 20, + 0x22dull << 20, + 0x32cull << 20, + 0x32dull << 20, + 0x12eull << 20, + 0x12full << 20, + + 0x03cull << 20, + 0x03dull << 20, + 0x13cull << 20, + 0x13dull << 20, + 0x23cull << 20, + 0x23dull << 20, + 0x33cull << 20, + 0x33dull << 20, + 0x13eull << 20, + 0x13full << 20, + + 0x04cull << 20, + 0x04dull << 20, + 0x14cull << 20, + 0x14dull << 20, + 0x24cull << 20, + 0x24dull << 20, + 0x34cull << 20, + 0x34dull << 20, + 0x22eull << 20, + 0x22full << 20, + + 0x05cull << 20, + 0x05dull << 20, + 0x15cull << 20, + 0x15dull << 20, + 0x25cull << 20, + 0x25dull << 20, + 0x35cull << 20, + 0x35dull << 20, + 0x23eull << 20, + 0x23full << 20, + + 0x06cull << 20, + 0x06dull << 20, + 0x16cull << 20, + 0x16dull << 20, + 0x26cull << 20, + 0x26dull << 20, + 0x36cull << 20, + 0x36dull << 20, + 0x32eull << 20, + 0x32full << 20, + + 0x07cull << 20, + 0x07dull << 20, + 0x17cull << 20, + 0x17dull << 20, + 0x27cull << 20, + 0x27dull << 20, + 0x37cull << 20, + 0x37dull << 20, + 0x33eull << 20, + 0x33full << 20, + + 0x00eull << 20, + 0x00full << 20, + 0x10eull << 20, + 0x10full << 20, + 0x20eull << 20, + 0x20full << 20, + 0x30eull << 20, + 0x30full << 20, + 0x06eull << 20, + 0x06full << 20, + + 0x01eull << 20, + 0x01full << 20, + 0x11eull << 20, + 0x11full << 20, + 0x21eull << 20, + 0x21full << 20, + 0x31eull << 20, + 0x31full << 20, + 0x07eull << 20, + 0x07full << 20, + + 0x08cull << 20, + 0x08dull << 20, + 0x18cull << 20, + 0x18dull << 20, + 0x28cull << 20, + 0x28dull << 20, + 0x38cull << 20, + 0x38dull << 20, + 0x0aeull << 20, + 0x0afull << 20, + + 0x09cull << 20, + 0x09dull << 20, + 0x19cull << 20, + 0x19dull << 20, + 0x29cull << 20, + 0x29dull << 20, + 0x39cull << 20, + 0x39dull << 20, + 0x0beull << 20, + 0x0bfull << 20, + + 0x0acull << 20, + 0x0adull << 20, + 0x1acull << 20, + 0x1adull << 20, + 0x2acull << 20, + 0x2adull << 20, + 0x3acull << 20, + 0x3adull << 20, + 0x1aeull << 20, + 0x1afull << 20, + + 0x0bcull << 20, + 0x0bdull << 20, + 0x1bcull << 20, + 0x1bdull << 20, + 0x2bcull << 20, + 0x2bdull << 20, + 0x3bcull << 20, + 0x3bdull << 20, + 0x1beull << 20, + 0x1bfull << 20, + + 0x0ccull << 20, + 0x0cdull << 20, + 0x1ccull << 20, + 0x1cdull << 20, + 0x2ccull << 20, + 0x2cdull << 20, + 0x3ccull << 20, + 0x3cdull << 20, + 0x2aeull << 20, + 0x2afull << 20, + + 0x0dcull << 20, + 0x0ddull << 20, + 0x1dcull << 20, + 0x1ddull << 20, + 0x2dcull << 20, + 0x2ddull << 20, + 0x3dcull << 20, + 0x3ddull << 20, + 0x2beull << 20, + 0x2bfull << 20, + + 0x0ecull << 20, + 0x0edull << 20, + 0x1ecull << 20, + 0x1edull << 20, + 0x2ecull << 20, + 0x2edull << 20, + 0x3ecull << 20, + 0x3edull << 20, + 0x3aeull << 20, + 0x3afull << 20, + + 0x0fcull << 20, + 0x0fdull << 20, + 0x1fcull << 20, + 0x1fdull << 20, + 0x2fcull << 20, + 0x2fdull << 20, + 0x3fcull << 20, + 0x3fdull << 20, + 0x3beull << 20, + 0x3bfull << 20, + + 0x08eull << 20, + 0x08full << 20, + 0x18eull << 20, + 0x18full << 20, + 0x28eull << 20, + 0x28full << 20, + 0x38eull << 20, + 0x38full << 20, + 0x0eeull << 20, + 0x0efull << 20, + + 0x09eull << 20, + 0x09full << 20, + 0x19eull << 20, + 0x19full << 20, + 0x29eull << 20, + 0x29full << 20, + 0x39eull << 20, + 0x39full << 20, + 0x0feull << 20, + 0x0ffull << 20 +}; + +static const UINT64 b2d4[] = { + 0x000ull << 30, + 0x001ull << 30, + 0x002ull << 30, + 0x003ull << 30, + 0x004ull << 30, + 0x005ull << 30, + 0x006ull << 30, + 0x007ull << 30, + 0x008ull << 30, + 0x009ull << 30, + + 0x010ull << 30, + 0x011ull << 30, + 0x012ull << 30, + 0x013ull << 30, + 0x014ull << 30, + 0x015ull << 30, + 0x016ull << 30, + 0x017ull << 30, + 0x018ull << 30, + 0x019ull << 30, + + 0x020ull << 30, + 0x021ull << 30, + 0x022ull << 30, + 0x023ull << 30, + 0x024ull << 30, + 0x025ull << 30, + 0x026ull << 30, + 0x027ull << 30, + 0x028ull << 30, + 0x029ull << 30, + + 0x030ull << 30, + 0x031ull << 30, + 0x032ull << 30, + 0x033ull << 30, + 0x034ull << 30, + 0x035ull << 30, + 0x036ull << 30, + 0x037ull << 30, + 0x038ull << 30, + 0x039ull << 30, + + 0x040ull << 30, + 0x041ull << 30, + 0x042ull << 30, + 0x043ull << 30, + 0x044ull << 30, + 0x045ull << 30, + 0x046ull << 30, + 0x047ull << 30, + 0x048ull << 30, + 0x049ull << 30, + + 0x050ull << 30, + 0x051ull << 30, + 0x052ull << 30, + 0x053ull << 30, + 0x054ull << 30, + 0x055ull << 30, + 0x056ull << 30, + 0x057ull << 30, + 0x058ull << 30, + 0x059ull << 30, + + 0x060ull << 30, + 0x061ull << 30, + 0x062ull << 30, + 0x063ull << 30, + 0x064ull << 30, + 0x065ull << 30, + 0x066ull << 30, + 0x067ull << 30, + 0x068ull << 30, + 0x069ull << 30, + + 0x070ull << 30, + 0x071ull << 30, + 0x072ull << 30, + 0x073ull << 30, + 0x074ull << 30, + 0x075ull << 30, + 0x076ull << 30, + 0x077ull << 30, + 0x078ull << 30, + 0x079ull << 30, + + 0x00aull << 30, + 0x00bull << 30, + 0x02aull << 30, + 0x02bull << 30, + 0x04aull << 30, + 0x04bull << 30, + 0x06aull << 30, + 0x06bull << 30, + 0x04eull << 30, + 0x04full << 30, + + 0x01aull << 30, + 0x01bull << 30, + 0x03aull << 30, + 0x03bull << 30, + 0x05aull << 30, + 0x05bull << 30, + 0x07aull << 30, + 0x07bull << 30, + 0x05eull << 30, + 0x05full << 30, + + 0x080ull << 30, + 0x081ull << 30, + 0x082ull << 30, + 0x083ull << 30, + 0x084ull << 30, + 0x085ull << 30, + 0x086ull << 30, + 0x087ull << 30, + 0x088ull << 30, + 0x089ull << 30, + + 0x090ull << 30, + 0x091ull << 30, + 0x092ull << 30, + 0x093ull << 30, + 0x094ull << 30, + 0x095ull << 30, + 0x096ull << 30, + 0x097ull << 30, + 0x098ull << 30, + 0x099ull << 30, + + 0x0a0ull << 30, + 0x0a1ull << 30, + 0x0a2ull << 30, + 0x0a3ull << 30, + 0x0a4ull << 30, + 0x0a5ull << 30, + 0x0a6ull << 30, + 0x0a7ull << 30, + 0x0a8ull << 30, + 0x0a9ull << 30, + + 0x0b0ull << 30, + 0x0b1ull << 30, + 0x0b2ull << 30, + 0x0b3ull << 30, + 0x0b4ull << 30, + 0x0b5ull << 30, + 0x0b6ull << 30, + 0x0b7ull << 30, + 0x0b8ull << 30, + 0x0b9ull << 30, + + 0x0c0ull << 30, + 0x0c1ull << 30, + 0x0c2ull << 30, + 0x0c3ull << 30, + 0x0c4ull << 30, + 0x0c5ull << 30, + 0x0c6ull << 30, + 0x0c7ull << 30, + 0x0c8ull << 30, + 0x0c9ull << 30, + + 0x0d0ull << 30, + 0x0d1ull << 30, + 0x0d2ull << 30, + 0x0d3ull << 30, + 0x0d4ull << 30, + 0x0d5ull << 30, + 0x0d6ull << 30, + 0x0d7ull << 30, + 0x0d8ull << 30, + 0x0d9ull << 30, + + 0x0e0ull << 30, + 0x0e1ull << 30, + 0x0e2ull << 30, + 0x0e3ull << 30, + 0x0e4ull << 30, + 0x0e5ull << 30, + 0x0e6ull << 30, + 0x0e7ull << 30, + 0x0e8ull << 30, + 0x0e9ull << 30, + + 0x0f0ull << 30, + 0x0f1ull << 30, + 0x0f2ull << 30, + 0x0f3ull << 30, + 0x0f4ull << 30, + 0x0f5ull << 30, + 0x0f6ull << 30, + 0x0f7ull << 30, + 0x0f8ull << 30, + 0x0f9ull << 30, + + 0x08aull << 30, + 0x08bull << 30, + 0x0aaull << 30, + 0x0abull << 30, + 0x0caull << 30, + 0x0cbull << 30, + 0x0eaull << 30, + 0x0ebull << 30, + 0x0ceull << 30, + 0x0cfull << 30, + + 0x09aull << 30, + 0x09bull << 30, + 0x0baull << 30, + 0x0bbull << 30, + 0x0daull << 30, + 0x0dbull << 30, + 0x0faull << 30, + 0x0fbull << 30, + 0x0deull << 30, + 0x0dfull << 30, + + 0x100ull << 30, + 0x101ull << 30, + 0x102ull << 30, + 0x103ull << 30, + 0x104ull << 30, + 0x105ull << 30, + 0x106ull << 30, + 0x107ull << 30, + 0x108ull << 30, + 0x109ull << 30, + + 0x110ull << 30, + 0x111ull << 30, + 0x112ull << 30, + 0x113ull << 30, + 0x114ull << 30, + 0x115ull << 30, + 0x116ull << 30, + 0x117ull << 30, + 0x118ull << 30, + 0x119ull << 30, + + 0x120ull << 30, + 0x121ull << 30, + 0x122ull << 30, + 0x123ull << 30, + 0x124ull << 30, + 0x125ull << 30, + 0x126ull << 30, + 0x127ull << 30, + 0x128ull << 30, + 0x129ull << 30, + + 0x130ull << 30, + 0x131ull << 30, + 0x132ull << 30, + 0x133ull << 30, + 0x134ull << 30, + 0x135ull << 30, + 0x136ull << 30, + 0x137ull << 30, + 0x138ull << 30, + 0x139ull << 30, + + 0x140ull << 30, + 0x141ull << 30, + 0x142ull << 30, + 0x143ull << 30, + 0x144ull << 30, + 0x145ull << 30, + 0x146ull << 30, + 0x147ull << 30, + 0x148ull << 30, + 0x149ull << 30, + + 0x150ull << 30, + 0x151ull << 30, + 0x152ull << 30, + 0x153ull << 30, + 0x154ull << 30, + 0x155ull << 30, + 0x156ull << 30, + 0x157ull << 30, + 0x158ull << 30, + 0x159ull << 30, + + 0x160ull << 30, + 0x161ull << 30, + 0x162ull << 30, + 0x163ull << 30, + 0x164ull << 30, + 0x165ull << 30, + 0x166ull << 30, + 0x167ull << 30, + 0x168ull << 30, + 0x169ull << 30, + + 0x170ull << 30, + 0x171ull << 30, + 0x172ull << 30, + 0x173ull << 30, + 0x174ull << 30, + 0x175ull << 30, + 0x176ull << 30, + 0x177ull << 30, + 0x178ull << 30, + 0x179ull << 30, + + 0x10aull << 30, + 0x10bull << 30, + 0x12aull << 30, + 0x12bull << 30, + 0x14aull << 30, + 0x14bull << 30, + 0x16aull << 30, + 0x16bull << 30, + 0x14eull << 30, + 0x14full << 30, + + 0x11aull << 30, + 0x11bull << 30, + 0x13aull << 30, + 0x13bull << 30, + 0x15aull << 30, + 0x15bull << 30, + 0x17aull << 30, + 0x17bull << 30, + 0x15eull << 30, + 0x15full << 30, + + 0x180ull << 30, + 0x181ull << 30, + 0x182ull << 30, + 0x183ull << 30, + 0x184ull << 30, + 0x185ull << 30, + 0x186ull << 30, + 0x187ull << 30, + 0x188ull << 30, + 0x189ull << 30, + + 0x190ull << 30, + 0x191ull << 30, + 0x192ull << 30, + 0x193ull << 30, + 0x194ull << 30, + 0x195ull << 30, + 0x196ull << 30, + 0x197ull << 30, + 0x198ull << 30, + 0x199ull << 30, + + 0x1a0ull << 30, + 0x1a1ull << 30, + 0x1a2ull << 30, + 0x1a3ull << 30, + 0x1a4ull << 30, + 0x1a5ull << 30, + 0x1a6ull << 30, + 0x1a7ull << 30, + 0x1a8ull << 30, + 0x1a9ull << 30, + + 0x1b0ull << 30, + 0x1b1ull << 30, + 0x1b2ull << 30, + 0x1b3ull << 30, + 0x1b4ull << 30, + 0x1b5ull << 30, + 0x1b6ull << 30, + 0x1b7ull << 30, + 0x1b8ull << 30, + 0x1b9ull << 30, + + 0x1c0ull << 30, + 0x1c1ull << 30, + 0x1c2ull << 30, + 0x1c3ull << 30, + 0x1c4ull << 30, + 0x1c5ull << 30, + 0x1c6ull << 30, + 0x1c7ull << 30, + 0x1c8ull << 30, + 0x1c9ull << 30, + + 0x1d0ull << 30, + 0x1d1ull << 30, + 0x1d2ull << 30, + 0x1d3ull << 30, + 0x1d4ull << 30, + 0x1d5ull << 30, + 0x1d6ull << 30, + 0x1d7ull << 30, + 0x1d8ull << 30, + 0x1d9ull << 30, + + 0x1e0ull << 30, + 0x1e1ull << 30, + 0x1e2ull << 30, + 0x1e3ull << 30, + 0x1e4ull << 30, + 0x1e5ull << 30, + 0x1e6ull << 30, + 0x1e7ull << 30, + 0x1e8ull << 30, + 0x1e9ull << 30, + + 0x1f0ull << 30, + 0x1f1ull << 30, + 0x1f2ull << 30, + 0x1f3ull << 30, + 0x1f4ull << 30, + 0x1f5ull << 30, + 0x1f6ull << 30, + 0x1f7ull << 30, + 0x1f8ull << 30, + 0x1f9ull << 30, + + 0x18aull << 30, + 0x18bull << 30, + 0x1aaull << 30, + 0x1abull << 30, + 0x1caull << 30, + 0x1cbull << 30, + 0x1eaull << 30, + 0x1ebull << 30, + 0x1ceull << 30, + 0x1cfull << 30, + + 0x19aull << 30, + 0x19bull << 30, + 0x1baull << 30, + 0x1bbull << 30, + 0x1daull << 30, + 0x1dbull << 30, + 0x1faull << 30, + 0x1fbull << 30, + 0x1deull << 30, + 0x1dfull << 30, + + 0x200ull << 30, + 0x201ull << 30, + 0x202ull << 30, + 0x203ull << 30, + 0x204ull << 30, + 0x205ull << 30, + 0x206ull << 30, + 0x207ull << 30, + 0x208ull << 30, + 0x209ull << 30, + + 0x210ull << 30, + 0x211ull << 30, + 0x212ull << 30, + 0x213ull << 30, + 0x214ull << 30, + 0x215ull << 30, + 0x216ull << 30, + 0x217ull << 30, + 0x218ull << 30, + 0x219ull << 30, + + 0x220ull << 30, + 0x221ull << 30, + 0x222ull << 30, + 0x223ull << 30, + 0x224ull << 30, + 0x225ull << 30, + 0x226ull << 30, + 0x227ull << 30, + 0x228ull << 30, + 0x229ull << 30, + + 0x230ull << 30, + 0x231ull << 30, + 0x232ull << 30, + 0x233ull << 30, + 0x234ull << 30, + 0x235ull << 30, + 0x236ull << 30, + 0x237ull << 30, + 0x238ull << 30, + 0x239ull << 30, + + 0x240ull << 30, + 0x241ull << 30, + 0x242ull << 30, + 0x243ull << 30, + 0x244ull << 30, + 0x245ull << 30, + 0x246ull << 30, + 0x247ull << 30, + 0x248ull << 30, + 0x249ull << 30, + + 0x250ull << 30, + 0x251ull << 30, + 0x252ull << 30, + 0x253ull << 30, + 0x254ull << 30, + 0x255ull << 30, + 0x256ull << 30, + 0x257ull << 30, + 0x258ull << 30, + 0x259ull << 30, + + 0x260ull << 30, + 0x261ull << 30, + 0x262ull << 30, + 0x263ull << 30, + 0x264ull << 30, + 0x265ull << 30, + 0x266ull << 30, + 0x267ull << 30, + 0x268ull << 30, + 0x269ull << 30, + + 0x270ull << 30, + 0x271ull << 30, + 0x272ull << 30, + 0x273ull << 30, + 0x274ull << 30, + 0x275ull << 30, + 0x276ull << 30, + 0x277ull << 30, + 0x278ull << 30, + 0x279ull << 30, + + 0x20aull << 30, + 0x20bull << 30, + 0x22aull << 30, + 0x22bull << 30, + 0x24aull << 30, + 0x24bull << 30, + 0x26aull << 30, + 0x26bull << 30, + 0x24eull << 30, + 0x24full << 30, + + 0x21aull << 30, + 0x21bull << 30, + 0x23aull << 30, + 0x23bull << 30, + 0x25aull << 30, + 0x25bull << 30, + 0x27aull << 30, + 0x27bull << 30, + 0x25eull << 30, + 0x25full << 30, + + 0x280ull << 30, + 0x281ull << 30, + 0x282ull << 30, + 0x283ull << 30, + 0x284ull << 30, + 0x285ull << 30, + 0x286ull << 30, + 0x287ull << 30, + 0x288ull << 30, + 0x289ull << 30, + + 0x290ull << 30, + 0x291ull << 30, + 0x292ull << 30, + 0x293ull << 30, + 0x294ull << 30, + 0x295ull << 30, + 0x296ull << 30, + 0x297ull << 30, + 0x298ull << 30, + 0x299ull << 30, + + 0x2a0ull << 30, + 0x2a1ull << 30, + 0x2a2ull << 30, + 0x2a3ull << 30, + 0x2a4ull << 30, + 0x2a5ull << 30, + 0x2a6ull << 30, + 0x2a7ull << 30, + 0x2a8ull << 30, + 0x2a9ull << 30, + + 0x2b0ull << 30, + 0x2b1ull << 30, + 0x2b2ull << 30, + 0x2b3ull << 30, + 0x2b4ull << 30, + 0x2b5ull << 30, + 0x2b6ull << 30, + 0x2b7ull << 30, + 0x2b8ull << 30, + 0x2b9ull << 30, + + 0x2c0ull << 30, + 0x2c1ull << 30, + 0x2c2ull << 30, + 0x2c3ull << 30, + 0x2c4ull << 30, + 0x2c5ull << 30, + 0x2c6ull << 30, + 0x2c7ull << 30, + 0x2c8ull << 30, + 0x2c9ull << 30, + + 0x2d0ull << 30, + 0x2d1ull << 30, + 0x2d2ull << 30, + 0x2d3ull << 30, + 0x2d4ull << 30, + 0x2d5ull << 30, + 0x2d6ull << 30, + 0x2d7ull << 30, + 0x2d8ull << 30, + 0x2d9ull << 30, + + 0x2e0ull << 30, + 0x2e1ull << 30, + 0x2e2ull << 30, + 0x2e3ull << 30, + 0x2e4ull << 30, + 0x2e5ull << 30, + 0x2e6ull << 30, + 0x2e7ull << 30, + 0x2e8ull << 30, + 0x2e9ull << 30, + + 0x2f0ull << 30, + 0x2f1ull << 30, + 0x2f2ull << 30, + 0x2f3ull << 30, + 0x2f4ull << 30, + 0x2f5ull << 30, + 0x2f6ull << 30, + 0x2f7ull << 30, + 0x2f8ull << 30, + 0x2f9ull << 30, + + 0x28aull << 30, + 0x28bull << 30, + 0x2aaull << 30, + 0x2abull << 30, + 0x2caull << 30, + 0x2cbull << 30, + 0x2eaull << 30, + 0x2ebull << 30, + 0x2ceull << 30, + 0x2cfull << 30, + + 0x29aull << 30, + 0x29bull << 30, + 0x2baull << 30, + 0x2bbull << 30, + 0x2daull << 30, + 0x2dbull << 30, + 0x2faull << 30, + 0x2fbull << 30, + 0x2deull << 30, + 0x2dfull << 30, + + 0x300ull << 30, + 0x301ull << 30, + 0x302ull << 30, + 0x303ull << 30, + 0x304ull << 30, + 0x305ull << 30, + 0x306ull << 30, + 0x307ull << 30, + 0x308ull << 30, + 0x309ull << 30, + + 0x310ull << 30, + 0x311ull << 30, + 0x312ull << 30, + 0x313ull << 30, + 0x314ull << 30, + 0x315ull << 30, + 0x316ull << 30, + 0x317ull << 30, + 0x318ull << 30, + 0x319ull << 30, + + 0x320ull << 30, + 0x321ull << 30, + 0x322ull << 30, + 0x323ull << 30, + 0x324ull << 30, + 0x325ull << 30, + 0x326ull << 30, + 0x327ull << 30, + 0x328ull << 30, + 0x329ull << 30, + + 0x330ull << 30, + 0x331ull << 30, + 0x332ull << 30, + 0x333ull << 30, + 0x334ull << 30, + 0x335ull << 30, + 0x336ull << 30, + 0x337ull << 30, + 0x338ull << 30, + 0x339ull << 30, + + 0x340ull << 30, + 0x341ull << 30, + 0x342ull << 30, + 0x343ull << 30, + 0x344ull << 30, + 0x345ull << 30, + 0x346ull << 30, + 0x347ull << 30, + 0x348ull << 30, + 0x349ull << 30, + + 0x350ull << 30, + 0x351ull << 30, + 0x352ull << 30, + 0x353ull << 30, + 0x354ull << 30, + 0x355ull << 30, + 0x356ull << 30, + 0x357ull << 30, + 0x358ull << 30, + 0x359ull << 30, + + 0x360ull << 30, + 0x361ull << 30, + 0x362ull << 30, + 0x363ull << 30, + 0x364ull << 30, + 0x365ull << 30, + 0x366ull << 30, + 0x367ull << 30, + 0x368ull << 30, + 0x369ull << 30, + + 0x370ull << 30, + 0x371ull << 30, + 0x372ull << 30, + 0x373ull << 30, + 0x374ull << 30, + 0x375ull << 30, + 0x376ull << 30, + 0x377ull << 30, + 0x378ull << 30, + 0x379ull << 30, + + 0x30aull << 30, + 0x30bull << 30, + 0x32aull << 30, + 0x32bull << 30, + 0x34aull << 30, + 0x34bull << 30, + 0x36aull << 30, + 0x36bull << 30, + 0x34eull << 30, + 0x34full << 30, + + 0x31aull << 30, + 0x31bull << 30, + 0x33aull << 30, + 0x33bull << 30, + 0x35aull << 30, + 0x35bull << 30, + 0x37aull << 30, + 0x37bull << 30, + 0x35eull << 30, + 0x35full << 30, + + 0x380ull << 30, + 0x381ull << 30, + 0x382ull << 30, + 0x383ull << 30, + 0x384ull << 30, + 0x385ull << 30, + 0x386ull << 30, + 0x387ull << 30, + 0x388ull << 30, + 0x389ull << 30, + + 0x390ull << 30, + 0x391ull << 30, + 0x392ull << 30, + 0x393ull << 30, + 0x394ull << 30, + 0x395ull << 30, + 0x396ull << 30, + 0x397ull << 30, + 0x398ull << 30, + 0x399ull << 30, + + 0x3a0ull << 30, + 0x3a1ull << 30, + 0x3a2ull << 30, + 0x3a3ull << 30, + 0x3a4ull << 30, + 0x3a5ull << 30, + 0x3a6ull << 30, + 0x3a7ull << 30, + 0x3a8ull << 30, + 0x3a9ull << 30, + + 0x3b0ull << 30, + 0x3b1ull << 30, + 0x3b2ull << 30, + 0x3b3ull << 30, + 0x3b4ull << 30, + 0x3b5ull << 30, + 0x3b6ull << 30, + 0x3b7ull << 30, + 0x3b8ull << 30, + 0x3b9ull << 30, + + 0x3c0ull << 30, + 0x3c1ull << 30, + 0x3c2ull << 30, + 0x3c3ull << 30, + 0x3c4ull << 30, + 0x3c5ull << 30, + 0x3c6ull << 30, + 0x3c7ull << 30, + 0x3c8ull << 30, + 0x3c9ull << 30, + + 0x3d0ull << 30, + 0x3d1ull << 30, + 0x3d2ull << 30, + 0x3d3ull << 30, + 0x3d4ull << 30, + 0x3d5ull << 30, + 0x3d6ull << 30, + 0x3d7ull << 30, + 0x3d8ull << 30, + 0x3d9ull << 30, + + 0x3e0ull << 30, + 0x3e1ull << 30, + 0x3e2ull << 30, + 0x3e3ull << 30, + 0x3e4ull << 30, + 0x3e5ull << 30, + 0x3e6ull << 30, + 0x3e7ull << 30, + 0x3e8ull << 30, + 0x3e9ull << 30, + + 0x3f0ull << 30, + 0x3f1ull << 30, + 0x3f2ull << 30, + 0x3f3ull << 30, + 0x3f4ull << 30, + 0x3f5ull << 30, + 0x3f6ull << 30, + 0x3f7ull << 30, + 0x3f8ull << 30, + 0x3f9ull << 30, + + 0x38aull << 30, + 0x38bull << 30, + 0x3aaull << 30, + 0x3abull << 30, + 0x3caull << 30, + 0x3cbull << 30, + 0x3eaull << 30, + 0x3ebull << 30, + 0x3ceull << 30, + 0x3cfull << 30, + + 0x39aull << 30, + 0x39bull << 30, + 0x3baull << 30, + 0x3bbull << 30, + 0x3daull << 30, + 0x3dbull << 30, + 0x3faull << 30, + 0x3fbull << 30, + 0x3deull << 30, + 0x3dfull << 30, + + 0x00cull << 30, + 0x00dull << 30, + 0x10cull << 30, + 0x10dull << 30, + 0x20cull << 30, + 0x20dull << 30, + 0x30cull << 30, + 0x30dull << 30, + 0x02eull << 30, + 0x02full << 30, + + 0x01cull << 30, + 0x01dull << 30, + 0x11cull << 30, + 0x11dull << 30, + 0x21cull << 30, + 0x21dull << 30, + 0x31cull << 30, + 0x31dull << 30, + 0x03eull << 30, + 0x03full << 30, + + 0x02cull << 30, + 0x02dull << 30, + 0x12cull << 30, + 0x12dull << 30, + 0x22cull << 30, + 0x22dull << 30, + 0x32cull << 30, + 0x32dull << 30, + 0x12eull << 30, + 0x12full << 30, + + 0x03cull << 30, + 0x03dull << 30, + 0x13cull << 30, + 0x13dull << 30, + 0x23cull << 30, + 0x23dull << 30, + 0x33cull << 30, + 0x33dull << 30, + 0x13eull << 30, + 0x13full << 30, + + 0x04cull << 30, + 0x04dull << 30, + 0x14cull << 30, + 0x14dull << 30, + 0x24cull << 30, + 0x24dull << 30, + 0x34cull << 30, + 0x34dull << 30, + 0x22eull << 30, + 0x22full << 30, + + 0x05cull << 30, + 0x05dull << 30, + 0x15cull << 30, + 0x15dull << 30, + 0x25cull << 30, + 0x25dull << 30, + 0x35cull << 30, + 0x35dull << 30, + 0x23eull << 30, + 0x23full << 30, + + 0x06cull << 30, + 0x06dull << 30, + 0x16cull << 30, + 0x16dull << 30, + 0x26cull << 30, + 0x26dull << 30, + 0x36cull << 30, + 0x36dull << 30, + 0x32eull << 30, + 0x32full << 30, + + 0x07cull << 30, + 0x07dull << 30, + 0x17cull << 30, + 0x17dull << 30, + 0x27cull << 30, + 0x27dull << 30, + 0x37cull << 30, + 0x37dull << 30, + 0x33eull << 30, + 0x33full << 30, + + 0x00eull << 30, + 0x00full << 30, + 0x10eull << 30, + 0x10full << 30, + 0x20eull << 30, + 0x20full << 30, + 0x30eull << 30, + 0x30full << 30, + 0x06eull << 30, + 0x06full << 30, + + 0x01eull << 30, + 0x01full << 30, + 0x11eull << 30, + 0x11full << 30, + 0x21eull << 30, + 0x21full << 30, + 0x31eull << 30, + 0x31full << 30, + 0x07eull << 30, + 0x07full << 30, + + 0x08cull << 30, + 0x08dull << 30, + 0x18cull << 30, + 0x18dull << 30, + 0x28cull << 30, + 0x28dull << 30, + 0x38cull << 30, + 0x38dull << 30, + 0x0aeull << 30, + 0x0afull << 30, + + 0x09cull << 30, + 0x09dull << 30, + 0x19cull << 30, + 0x19dull << 30, + 0x29cull << 30, + 0x29dull << 30, + 0x39cull << 30, + 0x39dull << 30, + 0x0beull << 30, + 0x0bfull << 30, + + 0x0acull << 30, + 0x0adull << 30, + 0x1acull << 30, + 0x1adull << 30, + 0x2acull << 30, + 0x2adull << 30, + 0x3acull << 30, + 0x3adull << 30, + 0x1aeull << 30, + 0x1afull << 30, + + 0x0bcull << 30, + 0x0bdull << 30, + 0x1bcull << 30, + 0x1bdull << 30, + 0x2bcull << 30, + 0x2bdull << 30, + 0x3bcull << 30, + 0x3bdull << 30, + 0x1beull << 30, + 0x1bfull << 30, + + 0x0ccull << 30, + 0x0cdull << 30, + 0x1ccull << 30, + 0x1cdull << 30, + 0x2ccull << 30, + 0x2cdull << 30, + 0x3ccull << 30, + 0x3cdull << 30, + 0x2aeull << 30, + 0x2afull << 30, + + 0x0dcull << 30, + 0x0ddull << 30, + 0x1dcull << 30, + 0x1ddull << 30, + 0x2dcull << 30, + 0x2ddull << 30, + 0x3dcull << 30, + 0x3ddull << 30, + 0x2beull << 30, + 0x2bfull << 30, + + 0x0ecull << 30, + 0x0edull << 30, + 0x1ecull << 30, + 0x1edull << 30, + 0x2ecull << 30, + 0x2edull << 30, + 0x3ecull << 30, + 0x3edull << 30, + 0x3aeull << 30, + 0x3afull << 30, + + 0x0fcull << 30, + 0x0fdull << 30, + 0x1fcull << 30, + 0x1fdull << 30, + 0x2fcull << 30, + 0x2fdull << 30, + 0x3fcull << 30, + 0x3fdull << 30, + 0x3beull << 30, + 0x3bfull << 30, + + 0x08eull << 30, + 0x08full << 30, + 0x18eull << 30, + 0x18full << 30, + 0x28eull << 30, + 0x28full << 30, + 0x38eull << 30, + 0x38full << 30, + 0x0eeull << 30, + 0x0efull << 30, + + 0x09eull << 30, + 0x09full << 30, + 0x19eull << 30, + 0x19full << 30, + 0x29eull << 30, + 0x29full << 30, + 0x39eull << 30, + 0x39full << 30, + 0x0feull << 30, + 0x0ffull << 30 +}; + +static const UINT64 b2d5[] = { + 0x000ull << 40, + 0x001ull << 40, + 0x002ull << 40, + 0x003ull << 40, + 0x004ull << 40, + 0x005ull << 40, + 0x006ull << 40, + 0x007ull << 40, + 0x008ull << 40, + 0x009ull << 40, + + 0x010ull << 40, + 0x011ull << 40, + 0x012ull << 40, + 0x013ull << 40, + 0x014ull << 40, + 0x015ull << 40, + 0x016ull << 40, + 0x017ull << 40, + 0x018ull << 40, + 0x019ull << 40, + + 0x020ull << 40, + 0x021ull << 40, + 0x022ull << 40, + 0x023ull << 40, + 0x024ull << 40, + 0x025ull << 40, + 0x026ull << 40, + 0x027ull << 40, + 0x028ull << 40, + 0x029ull << 40, + + 0x030ull << 40, + 0x031ull << 40, + 0x032ull << 40, + 0x033ull << 40, + 0x034ull << 40, + 0x035ull << 40, + 0x036ull << 40, + 0x037ull << 40, + 0x038ull << 40, + 0x039ull << 40, + + 0x040ull << 40, + 0x041ull << 40, + 0x042ull << 40, + 0x043ull << 40, + 0x044ull << 40, + 0x045ull << 40, + 0x046ull << 40, + 0x047ull << 40, + 0x048ull << 40, + 0x049ull << 40, + + 0x050ull << 40, + 0x051ull << 40, + 0x052ull << 40, + 0x053ull << 40, + 0x054ull << 40, + 0x055ull << 40, + 0x056ull << 40, + 0x057ull << 40, + 0x058ull << 40, + 0x059ull << 40, + + 0x060ull << 40, + 0x061ull << 40, + 0x062ull << 40, + 0x063ull << 40, + 0x064ull << 40, + 0x065ull << 40, + 0x066ull << 40, + 0x067ull << 40, + 0x068ull << 40, + 0x069ull << 40, + + 0x070ull << 40, + 0x071ull << 40, + 0x072ull << 40, + 0x073ull << 40, + 0x074ull << 40, + 0x075ull << 40, + 0x076ull << 40, + 0x077ull << 40, + 0x078ull << 40, + 0x079ull << 40, + + 0x00aull << 40, + 0x00bull << 40, + 0x02aull << 40, + 0x02bull << 40, + 0x04aull << 40, + 0x04bull << 40, + 0x06aull << 40, + 0x06bull << 40, + 0x04eull << 40, + 0x04full << 40, + + 0x01aull << 40, + 0x01bull << 40, + 0x03aull << 40, + 0x03bull << 40, + 0x05aull << 40, + 0x05bull << 40, + 0x07aull << 40, + 0x07bull << 40, + 0x05eull << 40, + 0x05full << 40, + + 0x080ull << 40, + 0x081ull << 40, + 0x082ull << 40, + 0x083ull << 40, + 0x084ull << 40, + 0x085ull << 40, + 0x086ull << 40, + 0x087ull << 40, + 0x088ull << 40, + 0x089ull << 40, + + 0x090ull << 40, + 0x091ull << 40, + 0x092ull << 40, + 0x093ull << 40, + 0x094ull << 40, + 0x095ull << 40, + 0x096ull << 40, + 0x097ull << 40, + 0x098ull << 40, + 0x099ull << 40, + + 0x0a0ull << 40, + 0x0a1ull << 40, + 0x0a2ull << 40, + 0x0a3ull << 40, + 0x0a4ull << 40, + 0x0a5ull << 40, + 0x0a6ull << 40, + 0x0a7ull << 40, + 0x0a8ull << 40, + 0x0a9ull << 40, + + 0x0b0ull << 40, + 0x0b1ull << 40, + 0x0b2ull << 40, + 0x0b3ull << 40, + 0x0b4ull << 40, + 0x0b5ull << 40, + 0x0b6ull << 40, + 0x0b7ull << 40, + 0x0b8ull << 40, + 0x0b9ull << 40, + + 0x0c0ull << 40, + 0x0c1ull << 40, + 0x0c2ull << 40, + 0x0c3ull << 40, + 0x0c4ull << 40, + 0x0c5ull << 40, + 0x0c6ull << 40, + 0x0c7ull << 40, + 0x0c8ull << 40, + 0x0c9ull << 40, + + 0x0d0ull << 40, + 0x0d1ull << 40, + 0x0d2ull << 40, + 0x0d3ull << 40, + 0x0d4ull << 40, + 0x0d5ull << 40, + 0x0d6ull << 40, + 0x0d7ull << 40, + 0x0d8ull << 40, + 0x0d9ull << 40, + + 0x0e0ull << 40, + 0x0e1ull << 40, + 0x0e2ull << 40, + 0x0e3ull << 40, + 0x0e4ull << 40, + 0x0e5ull << 40, + 0x0e6ull << 40, + 0x0e7ull << 40, + 0x0e8ull << 40, + 0x0e9ull << 40, + + 0x0f0ull << 40, + 0x0f1ull << 40, + 0x0f2ull << 40, + 0x0f3ull << 40, + 0x0f4ull << 40, + 0x0f5ull << 40, + 0x0f6ull << 40, + 0x0f7ull << 40, + 0x0f8ull << 40, + 0x0f9ull << 40, + + 0x08aull << 40, + 0x08bull << 40, + 0x0aaull << 40, + 0x0abull << 40, + 0x0caull << 40, + 0x0cbull << 40, + 0x0eaull << 40, + 0x0ebull << 40, + 0x0ceull << 40, + 0x0cfull << 40, + + 0x09aull << 40, + 0x09bull << 40, + 0x0baull << 40, + 0x0bbull << 40, + 0x0daull << 40, + 0x0dbull << 40, + 0x0faull << 40, + 0x0fbull << 40, + 0x0deull << 40, + 0x0dfull << 40, + + 0x100ull << 40, + 0x101ull << 40, + 0x102ull << 40, + 0x103ull << 40, + 0x104ull << 40, + 0x105ull << 40, + 0x106ull << 40, + 0x107ull << 40, + 0x108ull << 40, + 0x109ull << 40, + + 0x110ull << 40, + 0x111ull << 40, + 0x112ull << 40, + 0x113ull << 40, + 0x114ull << 40, + 0x115ull << 40, + 0x116ull << 40, + 0x117ull << 40, + 0x118ull << 40, + 0x119ull << 40, + + 0x120ull << 40, + 0x121ull << 40, + 0x122ull << 40, + 0x123ull << 40, + 0x124ull << 40, + 0x125ull << 40, + 0x126ull << 40, + 0x127ull << 40, + 0x128ull << 40, + 0x129ull << 40, + + 0x130ull << 40, + 0x131ull << 40, + 0x132ull << 40, + 0x133ull << 40, + 0x134ull << 40, + 0x135ull << 40, + 0x136ull << 40, + 0x137ull << 40, + 0x138ull << 40, + 0x139ull << 40, + + 0x140ull << 40, + 0x141ull << 40, + 0x142ull << 40, + 0x143ull << 40, + 0x144ull << 40, + 0x145ull << 40, + 0x146ull << 40, + 0x147ull << 40, + 0x148ull << 40, + 0x149ull << 40, + + 0x150ull << 40, + 0x151ull << 40, + 0x152ull << 40, + 0x153ull << 40, + 0x154ull << 40, + 0x155ull << 40, + 0x156ull << 40, + 0x157ull << 40, + 0x158ull << 40, + 0x159ull << 40, + + 0x160ull << 40, + 0x161ull << 40, + 0x162ull << 40, + 0x163ull << 40, + 0x164ull << 40, + 0x165ull << 40, + 0x166ull << 40, + 0x167ull << 40, + 0x168ull << 40, + 0x169ull << 40, + + 0x170ull << 40, + 0x171ull << 40, + 0x172ull << 40, + 0x173ull << 40, + 0x174ull << 40, + 0x175ull << 40, + 0x176ull << 40, + 0x177ull << 40, + 0x178ull << 40, + 0x179ull << 40, + + 0x10aull << 40, + 0x10bull << 40, + 0x12aull << 40, + 0x12bull << 40, + 0x14aull << 40, + 0x14bull << 40, + 0x16aull << 40, + 0x16bull << 40, + 0x14eull << 40, + 0x14full << 40, + + 0x11aull << 40, + 0x11bull << 40, + 0x13aull << 40, + 0x13bull << 40, + 0x15aull << 40, + 0x15bull << 40, + 0x17aull << 40, + 0x17bull << 40, + 0x15eull << 40, + 0x15full << 40, + + 0x180ull << 40, + 0x181ull << 40, + 0x182ull << 40, + 0x183ull << 40, + 0x184ull << 40, + 0x185ull << 40, + 0x186ull << 40, + 0x187ull << 40, + 0x188ull << 40, + 0x189ull << 40, + + 0x190ull << 40, + 0x191ull << 40, + 0x192ull << 40, + 0x193ull << 40, + 0x194ull << 40, + 0x195ull << 40, + 0x196ull << 40, + 0x197ull << 40, + 0x198ull << 40, + 0x199ull << 40, + + 0x1a0ull << 40, + 0x1a1ull << 40, + 0x1a2ull << 40, + 0x1a3ull << 40, + 0x1a4ull << 40, + 0x1a5ull << 40, + 0x1a6ull << 40, + 0x1a7ull << 40, + 0x1a8ull << 40, + 0x1a9ull << 40, + + 0x1b0ull << 40, + 0x1b1ull << 40, + 0x1b2ull << 40, + 0x1b3ull << 40, + 0x1b4ull << 40, + 0x1b5ull << 40, + 0x1b6ull << 40, + 0x1b7ull << 40, + 0x1b8ull << 40, + 0x1b9ull << 40, + + 0x1c0ull << 40, + 0x1c1ull << 40, + 0x1c2ull << 40, + 0x1c3ull << 40, + 0x1c4ull << 40, + 0x1c5ull << 40, + 0x1c6ull << 40, + 0x1c7ull << 40, + 0x1c8ull << 40, + 0x1c9ull << 40, + + 0x1d0ull << 40, + 0x1d1ull << 40, + 0x1d2ull << 40, + 0x1d3ull << 40, + 0x1d4ull << 40, + 0x1d5ull << 40, + 0x1d6ull << 40, + 0x1d7ull << 40, + 0x1d8ull << 40, + 0x1d9ull << 40, + + 0x1e0ull << 40, + 0x1e1ull << 40, + 0x1e2ull << 40, + 0x1e3ull << 40, + 0x1e4ull << 40, + 0x1e5ull << 40, + 0x1e6ull << 40, + 0x1e7ull << 40, + 0x1e8ull << 40, + 0x1e9ull << 40, + + 0x1f0ull << 40, + 0x1f1ull << 40, + 0x1f2ull << 40, + 0x1f3ull << 40, + 0x1f4ull << 40, + 0x1f5ull << 40, + 0x1f6ull << 40, + 0x1f7ull << 40, + 0x1f8ull << 40, + 0x1f9ull << 40, + + 0x18aull << 40, + 0x18bull << 40, + 0x1aaull << 40, + 0x1abull << 40, + 0x1caull << 40, + 0x1cbull << 40, + 0x1eaull << 40, + 0x1ebull << 40, + 0x1ceull << 40, + 0x1cfull << 40, + + 0x19aull << 40, + 0x19bull << 40, + 0x1baull << 40, + 0x1bbull << 40, + 0x1daull << 40, + 0x1dbull << 40, + 0x1faull << 40, + 0x1fbull << 40, + 0x1deull << 40, + 0x1dfull << 40, + + 0x200ull << 40, + 0x201ull << 40, + 0x202ull << 40, + 0x203ull << 40, + 0x204ull << 40, + 0x205ull << 40, + 0x206ull << 40, + 0x207ull << 40, + 0x208ull << 40, + 0x209ull << 40, + + 0x210ull << 40, + 0x211ull << 40, + 0x212ull << 40, + 0x213ull << 40, + 0x214ull << 40, + 0x215ull << 40, + 0x216ull << 40, + 0x217ull << 40, + 0x218ull << 40, + 0x219ull << 40, + + 0x220ull << 40, + 0x221ull << 40, + 0x222ull << 40, + 0x223ull << 40, + 0x224ull << 40, + 0x225ull << 40, + 0x226ull << 40, + 0x227ull << 40, + 0x228ull << 40, + 0x229ull << 40, + + 0x230ull << 40, + 0x231ull << 40, + 0x232ull << 40, + 0x233ull << 40, + 0x234ull << 40, + 0x235ull << 40, + 0x236ull << 40, + 0x237ull << 40, + 0x238ull << 40, + 0x239ull << 40, + + 0x240ull << 40, + 0x241ull << 40, + 0x242ull << 40, + 0x243ull << 40, + 0x244ull << 40, + 0x245ull << 40, + 0x246ull << 40, + 0x247ull << 40, + 0x248ull << 40, + 0x249ull << 40, + + 0x250ull << 40, + 0x251ull << 40, + 0x252ull << 40, + 0x253ull << 40, + 0x254ull << 40, + 0x255ull << 40, + 0x256ull << 40, + 0x257ull << 40, + 0x258ull << 40, + 0x259ull << 40, + + 0x260ull << 40, + 0x261ull << 40, + 0x262ull << 40, + 0x263ull << 40, + 0x264ull << 40, + 0x265ull << 40, + 0x266ull << 40, + 0x267ull << 40, + 0x268ull << 40, + 0x269ull << 40, + + 0x270ull << 40, + 0x271ull << 40, + 0x272ull << 40, + 0x273ull << 40, + 0x274ull << 40, + 0x275ull << 40, + 0x276ull << 40, + 0x277ull << 40, + 0x278ull << 40, + 0x279ull << 40, + + 0x20aull << 40, + 0x20bull << 40, + 0x22aull << 40, + 0x22bull << 40, + 0x24aull << 40, + 0x24bull << 40, + 0x26aull << 40, + 0x26bull << 40, + 0x24eull << 40, + 0x24full << 40, + + 0x21aull << 40, + 0x21bull << 40, + 0x23aull << 40, + 0x23bull << 40, + 0x25aull << 40, + 0x25bull << 40, + 0x27aull << 40, + 0x27bull << 40, + 0x25eull << 40, + 0x25full << 40, + + 0x280ull << 40, + 0x281ull << 40, + 0x282ull << 40, + 0x283ull << 40, + 0x284ull << 40, + 0x285ull << 40, + 0x286ull << 40, + 0x287ull << 40, + 0x288ull << 40, + 0x289ull << 40, + + 0x290ull << 40, + 0x291ull << 40, + 0x292ull << 40, + 0x293ull << 40, + 0x294ull << 40, + 0x295ull << 40, + 0x296ull << 40, + 0x297ull << 40, + 0x298ull << 40, + 0x299ull << 40, + + 0x2a0ull << 40, + 0x2a1ull << 40, + 0x2a2ull << 40, + 0x2a3ull << 40, + 0x2a4ull << 40, + 0x2a5ull << 40, + 0x2a6ull << 40, + 0x2a7ull << 40, + 0x2a8ull << 40, + 0x2a9ull << 40, + + 0x2b0ull << 40, + 0x2b1ull << 40, + 0x2b2ull << 40, + 0x2b3ull << 40, + 0x2b4ull << 40, + 0x2b5ull << 40, + 0x2b6ull << 40, + 0x2b7ull << 40, + 0x2b8ull << 40, + 0x2b9ull << 40, + + 0x2c0ull << 40, + 0x2c1ull << 40, + 0x2c2ull << 40, + 0x2c3ull << 40, + 0x2c4ull << 40, + 0x2c5ull << 40, + 0x2c6ull << 40, + 0x2c7ull << 40, + 0x2c8ull << 40, + 0x2c9ull << 40, + + 0x2d0ull << 40, + 0x2d1ull << 40, + 0x2d2ull << 40, + 0x2d3ull << 40, + 0x2d4ull << 40, + 0x2d5ull << 40, + 0x2d6ull << 40, + 0x2d7ull << 40, + 0x2d8ull << 40, + 0x2d9ull << 40, + + 0x2e0ull << 40, + 0x2e1ull << 40, + 0x2e2ull << 40, + 0x2e3ull << 40, + 0x2e4ull << 40, + 0x2e5ull << 40, + 0x2e6ull << 40, + 0x2e7ull << 40, + 0x2e8ull << 40, + 0x2e9ull << 40, + + 0x2f0ull << 40, + 0x2f1ull << 40, + 0x2f2ull << 40, + 0x2f3ull << 40, + 0x2f4ull << 40, + 0x2f5ull << 40, + 0x2f6ull << 40, + 0x2f7ull << 40, + 0x2f8ull << 40, + 0x2f9ull << 40, + + 0x28aull << 40, + 0x28bull << 40, + 0x2aaull << 40, + 0x2abull << 40, + 0x2caull << 40, + 0x2cbull << 40, + 0x2eaull << 40, + 0x2ebull << 40, + 0x2ceull << 40, + 0x2cfull << 40, + + 0x29aull << 40, + 0x29bull << 40, + 0x2baull << 40, + 0x2bbull << 40, + 0x2daull << 40, + 0x2dbull << 40, + 0x2faull << 40, + 0x2fbull << 40, + 0x2deull << 40, + 0x2dfull << 40, + + 0x300ull << 40, + 0x301ull << 40, + 0x302ull << 40, + 0x303ull << 40, + 0x304ull << 40, + 0x305ull << 40, + 0x306ull << 40, + 0x307ull << 40, + 0x308ull << 40, + 0x309ull << 40, + + 0x310ull << 40, + 0x311ull << 40, + 0x312ull << 40, + 0x313ull << 40, + 0x314ull << 40, + 0x315ull << 40, + 0x316ull << 40, + 0x317ull << 40, + 0x318ull << 40, + 0x319ull << 40, + + 0x320ull << 40, + 0x321ull << 40, + 0x322ull << 40, + 0x323ull << 40, + 0x324ull << 40, + 0x325ull << 40, + 0x326ull << 40, + 0x327ull << 40, + 0x328ull << 40, + 0x329ull << 40, + + 0x330ull << 40, + 0x331ull << 40, + 0x332ull << 40, + 0x333ull << 40, + 0x334ull << 40, + 0x335ull << 40, + 0x336ull << 40, + 0x337ull << 40, + 0x338ull << 40, + 0x339ull << 40, + + 0x340ull << 40, + 0x341ull << 40, + 0x342ull << 40, + 0x343ull << 40, + 0x344ull << 40, + 0x345ull << 40, + 0x346ull << 40, + 0x347ull << 40, + 0x348ull << 40, + 0x349ull << 40, + + 0x350ull << 40, + 0x351ull << 40, + 0x352ull << 40, + 0x353ull << 40, + 0x354ull << 40, + 0x355ull << 40, + 0x356ull << 40, + 0x357ull << 40, + 0x358ull << 40, + 0x359ull << 40, + + 0x360ull << 40, + 0x361ull << 40, + 0x362ull << 40, + 0x363ull << 40, + 0x364ull << 40, + 0x365ull << 40, + 0x366ull << 40, + 0x367ull << 40, + 0x368ull << 40, + 0x369ull << 40, + + 0x370ull << 40, + 0x371ull << 40, + 0x372ull << 40, + 0x373ull << 40, + 0x374ull << 40, + 0x375ull << 40, + 0x376ull << 40, + 0x377ull << 40, + 0x378ull << 40, + 0x379ull << 40, + + 0x30aull << 40, + 0x30bull << 40, + 0x32aull << 40, + 0x32bull << 40, + 0x34aull << 40, + 0x34bull << 40, + 0x36aull << 40, + 0x36bull << 40, + 0x34eull << 40, + 0x34full << 40, + + 0x31aull << 40, + 0x31bull << 40, + 0x33aull << 40, + 0x33bull << 40, + 0x35aull << 40, + 0x35bull << 40, + 0x37aull << 40, + 0x37bull << 40, + 0x35eull << 40, + 0x35full << 40, + + 0x380ull << 40, + 0x381ull << 40, + 0x382ull << 40, + 0x383ull << 40, + 0x384ull << 40, + 0x385ull << 40, + 0x386ull << 40, + 0x387ull << 40, + 0x388ull << 40, + 0x389ull << 40, + + 0x390ull << 40, + 0x391ull << 40, + 0x392ull << 40, + 0x393ull << 40, + 0x394ull << 40, + 0x395ull << 40, + 0x396ull << 40, + 0x397ull << 40, + 0x398ull << 40, + 0x399ull << 40, + + 0x3a0ull << 40, + 0x3a1ull << 40, + 0x3a2ull << 40, + 0x3a3ull << 40, + 0x3a4ull << 40, + 0x3a5ull << 40, + 0x3a6ull << 40, + 0x3a7ull << 40, + 0x3a8ull << 40, + 0x3a9ull << 40, + + 0x3b0ull << 40, + 0x3b1ull << 40, + 0x3b2ull << 40, + 0x3b3ull << 40, + 0x3b4ull << 40, + 0x3b5ull << 40, + 0x3b6ull << 40, + 0x3b7ull << 40, + 0x3b8ull << 40, + 0x3b9ull << 40, + + 0x3c0ull << 40, + 0x3c1ull << 40, + 0x3c2ull << 40, + 0x3c3ull << 40, + 0x3c4ull << 40, + 0x3c5ull << 40, + 0x3c6ull << 40, + 0x3c7ull << 40, + 0x3c8ull << 40, + 0x3c9ull << 40, + + 0x3d0ull << 40, + 0x3d1ull << 40, + 0x3d2ull << 40, + 0x3d3ull << 40, + 0x3d4ull << 40, + 0x3d5ull << 40, + 0x3d6ull << 40, + 0x3d7ull << 40, + 0x3d8ull << 40, + 0x3d9ull << 40, + + 0x3e0ull << 40, + 0x3e1ull << 40, + 0x3e2ull << 40, + 0x3e3ull << 40, + 0x3e4ull << 40, + 0x3e5ull << 40, + 0x3e6ull << 40, + 0x3e7ull << 40, + 0x3e8ull << 40, + 0x3e9ull << 40, + + 0x3f0ull << 40, + 0x3f1ull << 40, + 0x3f2ull << 40, + 0x3f3ull << 40, + 0x3f4ull << 40, + 0x3f5ull << 40, + 0x3f6ull << 40, + 0x3f7ull << 40, + 0x3f8ull << 40, + 0x3f9ull << 40, + + 0x38aull << 40, + 0x38bull << 40, + 0x3aaull << 40, + 0x3abull << 40, + 0x3caull << 40, + 0x3cbull << 40, + 0x3eaull << 40, + 0x3ebull << 40, + 0x3ceull << 40, + 0x3cfull << 40, + + 0x39aull << 40, + 0x39bull << 40, + 0x3baull << 40, + 0x3bbull << 40, + 0x3daull << 40, + 0x3dbull << 40, + 0x3faull << 40, + 0x3fbull << 40, + 0x3deull << 40, + 0x3dfull << 40, + + 0x00cull << 40, + 0x00dull << 40, + 0x10cull << 40, + 0x10dull << 40, + 0x20cull << 40, + 0x20dull << 40, + 0x30cull << 40, + 0x30dull << 40, + 0x02eull << 40, + 0x02full << 40, + + 0x01cull << 40, + 0x01dull << 40, + 0x11cull << 40, + 0x11dull << 40, + 0x21cull << 40, + 0x21dull << 40, + 0x31cull << 40, + 0x31dull << 40, + 0x03eull << 40, + 0x03full << 40, + + 0x02cull << 40, + 0x02dull << 40, + 0x12cull << 40, + 0x12dull << 40, + 0x22cull << 40, + 0x22dull << 40, + 0x32cull << 40, + 0x32dull << 40, + 0x12eull << 40, + 0x12full << 40, + + 0x03cull << 40, + 0x03dull << 40, + 0x13cull << 40, + 0x13dull << 40, + 0x23cull << 40, + 0x23dull << 40, + 0x33cull << 40, + 0x33dull << 40, + 0x13eull << 40, + 0x13full << 40, + + 0x04cull << 40, + 0x04dull << 40, + 0x14cull << 40, + 0x14dull << 40, + 0x24cull << 40, + 0x24dull << 40, + 0x34cull << 40, + 0x34dull << 40, + 0x22eull << 40, + 0x22full << 40, + + 0x05cull << 40, + 0x05dull << 40, + 0x15cull << 40, + 0x15dull << 40, + 0x25cull << 40, + 0x25dull << 40, + 0x35cull << 40, + 0x35dull << 40, + 0x23eull << 40, + 0x23full << 40, + + 0x06cull << 40, + 0x06dull << 40, + 0x16cull << 40, + 0x16dull << 40, + 0x26cull << 40, + 0x26dull << 40, + 0x36cull << 40, + 0x36dull << 40, + 0x32eull << 40, + 0x32full << 40, + + 0x07cull << 40, + 0x07dull << 40, + 0x17cull << 40, + 0x17dull << 40, + 0x27cull << 40, + 0x27dull << 40, + 0x37cull << 40, + 0x37dull << 40, + 0x33eull << 40, + 0x33full << 40, + + 0x00eull << 40, + 0x00full << 40, + 0x10eull << 40, + 0x10full << 40, + 0x20eull << 40, + 0x20full << 40, + 0x30eull << 40, + 0x30full << 40, + 0x06eull << 40, + 0x06full << 40, + + 0x01eull << 40, + 0x01full << 40, + 0x11eull << 40, + 0x11full << 40, + 0x21eull << 40, + 0x21full << 40, + 0x31eull << 40, + 0x31full << 40, + 0x07eull << 40, + 0x07full << 40, + + 0x08cull << 40, + 0x08dull << 40, + 0x18cull << 40, + 0x18dull << 40, + 0x28cull << 40, + 0x28dull << 40, + 0x38cull << 40, + 0x38dull << 40, + 0x0aeull << 40, + 0x0afull << 40, + + 0x09cull << 40, + 0x09dull << 40, + 0x19cull << 40, + 0x19dull << 40, + 0x29cull << 40, + 0x29dull << 40, + 0x39cull << 40, + 0x39dull << 40, + 0x0beull << 40, + 0x0bfull << 40, + + 0x0acull << 40, + 0x0adull << 40, + 0x1acull << 40, + 0x1adull << 40, + 0x2acull << 40, + 0x2adull << 40, + 0x3acull << 40, + 0x3adull << 40, + 0x1aeull << 40, + 0x1afull << 40, + + 0x0bcull << 40, + 0x0bdull << 40, + 0x1bcull << 40, + 0x1bdull << 40, + 0x2bcull << 40, + 0x2bdull << 40, + 0x3bcull << 40, + 0x3bdull << 40, + 0x1beull << 40, + 0x1bfull << 40, + + 0x0ccull << 40, + 0x0cdull << 40, + 0x1ccull << 40, + 0x1cdull << 40, + 0x2ccull << 40, + 0x2cdull << 40, + 0x3ccull << 40, + 0x3cdull << 40, + 0x2aeull << 40, + 0x2afull << 40, + + 0x0dcull << 40, + 0x0ddull << 40, + 0x1dcull << 40, + 0x1ddull << 40, + 0x2dcull << 40, + 0x2ddull << 40, + 0x3dcull << 40, + 0x3ddull << 40, + 0x2beull << 40, + 0x2bfull << 40, + + 0x0ecull << 40, + 0x0edull << 40, + 0x1ecull << 40, + 0x1edull << 40, + 0x2ecull << 40, + 0x2edull << 40, + 0x3ecull << 40, + 0x3edull << 40, + 0x3aeull << 40, + 0x3afull << 40, + + 0x0fcull << 40, + 0x0fdull << 40, + 0x1fcull << 40, + 0x1fdull << 40, + 0x2fcull << 40, + 0x2fdull << 40, + 0x3fcull << 40, + 0x3fdull << 40, + 0x3beull << 40, + 0x3bfull << 40, + + 0x08eull << 40, + 0x08full << 40, + 0x18eull << 40, + 0x18full << 40, + 0x28eull << 40, + 0x28full << 40, + 0x38eull << 40, + 0x38full << 40, + 0x0eeull << 40, + 0x0efull << 40, + + 0x09eull << 40, + 0x09full << 40, + 0x19eull << 40, + 0x19full << 40, + 0x29eull << 40, + 0x29full << 40, + 0x39eull << 40, + 0x39full << 40, + 0x0feull << 40, + 0x0ffull << 40 +}; + diff --git a/gcc-4.7/libdecnumber/bid/decimal128.c b/gcc-4.7/libdecnumber/bid/decimal128.c new file mode 100644 index 000000000..db30bd39d --- /dev/null +++ b/gcc-4.7/libdecnumber/bid/decimal128.c @@ -0,0 +1,145 @@ +/* Copyright (C) 2007, 2009 + 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 3, 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. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +<http://www.gnu.org/licenses/>. */ + +#define decimal128FromString __dpd128FromString +#define decimal128ToString __dpd128ToString +#define decimal128ToEngString __dpd128ToEngString +#define decimal128FromNumber __dpd128FromNumber +#define decimal128ToNumber __dpd128ToNumber + +#include "dpd/decimal128.c" + +#undef decimal128FromString +#undef decimal128ToString +#undef decimal128ToEngString +#undef decimal128FromNumber +#undef decimal128ToNumber + +#include "bid-dpd.h" + +#ifdef IN_LIBGCC2 +#define decimal128FromString __decimal128FromString +#define decimal128ToString __decimal128ToString +#define decimal128ToEngString __decimal128ToEngString +#define decimal128FromNumber __decimal128FromNumber +#define decimal128ToNumber __decimal128ToNumber +#endif + +decimal128 *decimal128FromString (decimal128 *, const char *, decContext *); +char *decimal128ToString (const decimal128 *, char *); +char *decimal128ToEngString (const decimal128 *, char *); +decimal128 *decimal128FromNumber (decimal128 *, const decNumber *, decContext *); +decNumber *decimal128ToNumber (const decimal128 *, decNumber *); + +void __host_to_ieee_128 (_Decimal128 in, decimal128 *out); +void __ieee_to_host_128 (decimal128 in, _Decimal128 *out); + +decimal128 * +decimal128FromNumber (decimal128 *d128, const decNumber *dn, + decContext *set) +{ + /* decimal128 and _Decimal128 are different types. */ + union + { + _Decimal128 _Dec; + decimal128 dec; + } u; + + __dpd128FromNumber (d128, dn, set); + + /* __dpd128FromNumber returns in big endian. But _dpd_to_bid128 takes + host endian. */ + __ieee_to_host_128 (*d128, &u._Dec); + + /* Convert DPD to BID. */ + _dpd_to_bid128 (&u._Dec, &u._Dec); + + /* dfp.c is in bid endian. */ + __host_to_ieee_128 (u._Dec, &u.dec); + + /* d128 is returned as a pointer to _Decimal128 here. */ + *d128 = u.dec; + + return d128; +} + +decNumber * +decimal128ToNumber (const decimal128 *bid128, decNumber *dn) +{ + /* decimal128 and _Decimal128 are different types. */ + union + { + _Decimal128 _Dec; + decimal128 dec; + } u; + + /* bid128 is a pointer to _Decimal128 in bid endian. But _bid_to_dpd128 + takes host endian. */ + __ieee_to_host_128 (*bid128, &u._Dec); + + /* Convert BID to DPD. */ + _bid_to_dpd128 (&u._Dec, &u._Dec); + + /* __dpd128ToNumber is in bid endian. */ + __host_to_ieee_128 (u._Dec, &u.dec); + + return __dpd128ToNumber (&u.dec, dn); +} + +char * +decimal128ToString (const decimal128 *d128, char *string) +{ + decNumber dn; /* work */ + decimal128ToNumber (d128, &dn); + decNumberToString (&dn, string); + return string; +} + +char * +decimal128ToEngString (const decimal128 *d128, char *string) +{ + decNumber dn; /* work */ + decimal128ToNumber (d128, &dn); + decNumberToEngString (&dn, string); + return string; +} + +decimal128 * +decimal128FromString (decimal128 *result, const char *string, + decContext *set) +{ + decContext dc; /* work */ + decNumber dn; /* .. */ + + decContextDefault (&dc, DEC_INIT_DECIMAL128); /* no traps, please */ + dc.round = set->round; /* use supplied rounding */ + + decNumberFromString (&dn, string, &dc); /* will round if needed */ + decimal128FromNumber (result, &dn, &dc); + if (dc.status != 0) + { /* something happened */ + decContextSetStatus (set, dc.status); /* .. pass it on */ + } + return result; +} diff --git a/gcc-4.7/libdecnumber/bid/decimal128.h b/gcc-4.7/libdecnumber/bid/decimal128.h new file mode 100644 index 000000000..138735280 --- /dev/null +++ b/gcc-4.7/libdecnumber/bid/decimal128.h @@ -0,0 +1 @@ +#include "dpd/decimal128.h" diff --git a/gcc-4.7/libdecnumber/bid/decimal128Local.h b/gcc-4.7/libdecnumber/bid/decimal128Local.h new file mode 100644 index 000000000..e499d73bf --- /dev/null +++ b/gcc-4.7/libdecnumber/bid/decimal128Local.h @@ -0,0 +1 @@ +#include "dpd/decimal128Local.h" diff --git a/gcc-4.7/libdecnumber/bid/decimal128Symbols.h b/gcc-4.7/libdecnumber/bid/decimal128Symbols.h new file mode 100644 index 000000000..17757114a --- /dev/null +++ b/gcc-4.7/libdecnumber/bid/decimal128Symbols.h @@ -0,0 +1 @@ +#include "dpd/decimal128Symbols.h" diff --git a/gcc-4.7/libdecnumber/bid/decimal32.c b/gcc-4.7/libdecnumber/bid/decimal32.c new file mode 100644 index 000000000..1cd760759 --- /dev/null +++ b/gcc-4.7/libdecnumber/bid/decimal32.c @@ -0,0 +1,145 @@ +/* Copyright (C) 2007, 2009 + 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 3, 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. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +<http://www.gnu.org/licenses/>. */ + +#define decimal32FromString __dpd32FromString +#define decimal32ToString __dpd32ToString +#define decimal32ToEngString __dpd32ToEngString +#define decimal32FromNumber __dpd32FromNumber +#define decimal32ToNumber __dpd32ToNumber + +#include "dpd/decimal32.c" + +#undef decimal32FromString +#undef decimal32ToString +#undef decimal32ToEngString +#undef decimal32FromNumber +#undef decimal32ToNumber + +#include "bid-dpd.h" + +#ifdef IN_LIBGCC2 +#define decimal32FromString __decimal32FromString +#define decimal32ToString __decimal32ToString +#define decimal32ToEngString __decimal32ToEngString +#define decimal32FromNumber __decimal32FromNumber +#define decimal32ToNumber __decimal32ToNumber +#endif + +decimal32 *decimal32FromString (decimal32 *, const char *, decContext *); +char *decimal32ToString (const decimal32 *, char *); +char *decimal32ToEngString (const decimal32 *, char *); +decimal32 *decimal32FromNumber (decimal32 *, const decNumber *, decContext *); +decNumber *decimal32ToNumber (const decimal32 *, decNumber *); + +void __host_to_ieee_32 (_Decimal32 in, decimal32 *out); +void __ieee_to_host_32 (decimal32 in, _Decimal32 *out); + +decimal32 * +decimal32FromNumber (decimal32 *d32, const decNumber *dn, + decContext *set) +{ + /* decimal32 and _Decimal32 are different types. */ + union + { + _Decimal32 _Dec; + decimal32 dec; + } u; + + __dpd32FromNumber (d32, dn, set); + + /* __dpd32FromNumber returns in big endian. But _dpd_to_bid32 takes + host endian. */ + __ieee_to_host_32 (*d32, &u._Dec); + + /* Convert DPD to BID. */ + _dpd_to_bid32 (&u._Dec, &u._Dec); + + /* dfp.c is in bid endian. */ + __host_to_ieee_32 (u._Dec, &u.dec); + + /* d32 is returned as a pointer to _Decimal32 here. */ + *d32 = u.dec; + + return d32; +} + +decNumber * +decimal32ToNumber (const decimal32 *bid32, decNumber *dn) +{ + /* decimal32 and _Decimal32 are different types. */ + union + { + _Decimal32 _Dec; + decimal32 dec; + } u; + + /* bid32 is a pointer to _Decimal32 in bid endian. But _bid_to_dpd32 + takes host endian. */ + __ieee_to_host_32 (*bid32, &u._Dec); + + /* Convert BID to DPD. */ + _bid_to_dpd32 (&u._Dec, &u._Dec); + + /* __dpd32ToNumber is in bid endian. */ + __host_to_ieee_32 (u._Dec, &u.dec); + + return __dpd32ToNumber (&u.dec, dn); +} + +char * +decimal32ToString (const decimal32 *d32, char *string) +{ + decNumber dn; /* work */ + decimal32ToNumber (d32, &dn); + decNumberToString (&dn, string); + return string; +} + +char * +decimal32ToEngString (const decimal32 *d32, char *string) +{ + decNumber dn; /* work */ + decimal32ToNumber (d32, &dn); + decNumberToEngString (&dn, string); + return string; +} + +decimal32 * +decimal32FromString (decimal32 *result, const char *string, + decContext *set) +{ + decContext dc; /* work */ + decNumber dn; /* .. */ + + decContextDefault (&dc, DEC_INIT_DECIMAL32); /* no traps, please */ + dc.round = set->round; /* use supplied rounding */ + + decNumberFromString (&dn, string, &dc); /* will round if needed */ + decimal32FromNumber (result, &dn, &dc); + if (dc.status != 0) + { /* something happened */ + decContextSetStatus (set, dc.status); /* .. pass it on */ + } + return result; +} diff --git a/gcc-4.7/libdecnumber/bid/decimal32.h b/gcc-4.7/libdecnumber/bid/decimal32.h new file mode 100644 index 000000000..e12e3b1c3 --- /dev/null +++ b/gcc-4.7/libdecnumber/bid/decimal32.h @@ -0,0 +1 @@ +#include "dpd/decimal32.h" diff --git a/gcc-4.7/libdecnumber/bid/decimal32Symbols.h b/gcc-4.7/libdecnumber/bid/decimal32Symbols.h new file mode 100644 index 000000000..a0c4bf8cd --- /dev/null +++ b/gcc-4.7/libdecnumber/bid/decimal32Symbols.h @@ -0,0 +1 @@ +#include "dpd/decimal32Symbols.h" diff --git a/gcc-4.7/libdecnumber/bid/decimal64.c b/gcc-4.7/libdecnumber/bid/decimal64.c new file mode 100644 index 000000000..fd637388a --- /dev/null +++ b/gcc-4.7/libdecnumber/bid/decimal64.c @@ -0,0 +1,145 @@ +/* Copyright (C) 2007, 2009 + 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 3, 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. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +<http://www.gnu.org/licenses/>. */ + +#define decimal64FromString __dpd64FromString +#define decimal64ToString __dpd64ToString +#define decimal64ToEngString __dpd64ToEngString +#define decimal64FromNumber __dpd64FromNumber +#define decimal64ToNumber __dpd64ToNumber + +#include "dpd/decimal64.c" + +#undef decimal64FromString +#undef decimal64ToString +#undef decimal64ToEngString +#undef decimal64FromNumber +#undef decimal64ToNumber + +#include "bid-dpd.h" + +#ifdef IN_LIBGCC2 +#define decimal64FromString __decimal64FromString +#define decimal64ToString __decimal64ToString +#define decimal64ToEngString __decimal64ToEngString +#define decimal64FromNumber __decimal64FromNumber +#define decimal64ToNumber __decimal64ToNumber +#endif + +decimal64 *decimal64FromString (decimal64 *, const char *, decContext *); +char *decimal64ToString (const decimal64 *, char *); +char *decimal64ToEngString (const decimal64 *, char *); +decimal64 *decimal64FromNumber (decimal64 *, const decNumber *, decContext *); +decNumber *decimal64ToNumber (const decimal64 *, decNumber *); + +void __host_to_ieee_64 (_Decimal64 in, decimal64 *out); +void __ieee_to_host_64 (decimal64 in, _Decimal64 *out); + +decimal64 * +decimal64FromNumber (decimal64 *d64, const decNumber *dn, + decContext *set) +{ + /* decimal64 and _Decimal64 are different types. */ + union + { + _Decimal64 _Dec; + decimal64 dec; + } u; + + __dpd64FromNumber (d64, dn, set); + + /* __dpd64FromNumber returns in big endian. But _dpd_to_bid64 takes + host endian. */ + __ieee_to_host_64 (*d64, &u._Dec); + + /* Convert DPD to BID. */ + _dpd_to_bid64 (&u._Dec, &u._Dec); + + /* dfp.c is in bid endian. */ + __host_to_ieee_64 (u._Dec, &u.dec); + + /* d64 is returned as a pointer to _Decimal64 here. */ + *d64 = u.dec; + + return d64; +} + +decNumber * +decimal64ToNumber (const decimal64 *bid64, decNumber *dn) +{ + /* decimal64 and _Decimal64 are different types. */ + union + { + _Decimal64 _Dec; + decimal64 dec; + } u; + + /* bid64 is a pointer to _Decimal64 in bid endian. But _bid_to_dpd64 + takes host endian. */ + __ieee_to_host_64 (*bid64, &u._Dec); + + /* Convert BID to DPD. */ + _bid_to_dpd64 (&u._Dec, &u._Dec); + + /* __dpd64ToNumber is in bid endian. */ + __host_to_ieee_64 (u._Dec, &u.dec); + + return __dpd64ToNumber (&u.dec, dn); +} + +char * +decimal64ToString (const decimal64 *d64, char *string) +{ + decNumber dn; /* work */ + decimal64ToNumber (d64, &dn); + decNumberToString (&dn, string); + return string; +} + +char * +decimal64ToEngString (const decimal64 *d64, char *string) +{ + decNumber dn; /* work */ + decimal64ToNumber (d64, &dn); + decNumberToEngString (&dn, string); + return string; +} + +decimal64 * +decimal64FromString (decimal64 *result, const char *string, + decContext *set) +{ + decContext dc; /* work */ + decNumber dn; /* .. */ + + decContextDefault (&dc, DEC_INIT_DECIMAL64); /* no traps, please */ + dc.round = set->round; /* use supplied rounding */ + + decNumberFromString (&dn, string, &dc); /* will round if needed */ + decimal64FromNumber (result, &dn, &dc); + if (dc.status != 0) + { /* something happened */ + decContextSetStatus (set, dc.status); /* .. pass it on */ + } + return result; +} diff --git a/gcc-4.7/libdecnumber/bid/decimal64.h b/gcc-4.7/libdecnumber/bid/decimal64.h new file mode 100644 index 000000000..94d4d0c58 --- /dev/null +++ b/gcc-4.7/libdecnumber/bid/decimal64.h @@ -0,0 +1 @@ +#include "dpd/decimal64.h" diff --git a/gcc-4.7/libdecnumber/bid/decimal64Symbols.h b/gcc-4.7/libdecnumber/bid/decimal64Symbols.h new file mode 100644 index 000000000..5f3069cd6 --- /dev/null +++ b/gcc-4.7/libdecnumber/bid/decimal64Symbols.h @@ -0,0 +1 @@ +#include "dpd/decimal64Symbols.h" diff --git a/gcc-4.7/libdecnumber/bid/host-ieee128.c b/gcc-4.7/libdecnumber/bid/host-ieee128.c new file mode 100644 index 000000000..9e2d005cd --- /dev/null +++ b/gcc-4.7/libdecnumber/bid/host-ieee128.c @@ -0,0 +1,58 @@ +/* This is a software decimal floating point library. + Copyright (C) 2007, 2009 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 3, 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. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +<http://www.gnu.org/licenses/>. */ + +#include <string.h> + +#include "dconfig.h" +#include "bid-dpd.h" +#include "decimal128.h" + +void __host_to_ieee_128 (_Decimal128 in, decimal128 *out); +void __ieee_to_host_128 (decimal128 in, _Decimal128 *out); + +/* The code for converting 128-bit values between DPD and BID presumes + that the 64-bit halves of the 128-bit value are in little-endian + order, so they need swapping on big-endian hosts. */ + +void +__host_to_ieee_128 (_Decimal128 in, decimal128 *out) +{ +#if WORDS_BIGENDIAN + memcpy ((char *) out, (char *) &in + 8, 8); + memcpy ((char *) out + 8, (char *) &in, 8); +#else + memcpy ((char *) out, (char *) &in, 16); +#endif +} + +void +__ieee_to_host_128 (decimal128 in, _Decimal128 *out) +{ +#if WORDS_BIGENDIAN + memcpy ((char *) out, (char *) &in + 8, 8); + memcpy ((char *) out + 8, (char *) &in, 8); +#else + memcpy ((char *) out, (char *) &in, 16); +#endif +} diff --git a/gcc-4.7/libdecnumber/bid/host-ieee32.c b/gcc-4.7/libdecnumber/bid/host-ieee32.c new file mode 100644 index 000000000..1de6dc2ec --- /dev/null +++ b/gcc-4.7/libdecnumber/bid/host-ieee32.c @@ -0,0 +1,52 @@ +/* This is a software decimal floating point library. + Copyright (C) 2007, 2009 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 3, 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. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +<http://www.gnu.org/licenses/>. */ + +/* This implements IEEE 754R decimal floating point arithmetic, but + does not provide a mechanism for setting the rounding mode, or for + generating or handling exceptions. Conversions between decimal + floating point types and other types depend on C library functions. + + Contributed by Ben Elliston <bje@au.ibm.com>. */ + +/* The intended way to use this file is to make two copies, add `#define ' + to one copy, then compile both copies and add them to libgcc.a. */ + +#include <string.h> +#include "bid-dpd.h" +#include "decimal32.h" + +void __host_to_ieee_32 (_Decimal32 in, decimal32 *out); +void __ieee_to_host_32 (decimal32 in, _Decimal32 *out); + +void +__host_to_ieee_32 (_Decimal32 in, decimal32 *out) +{ + memcpy ((char *) out, (char *) &in, 4); +} + +void +__ieee_to_host_32 (decimal32 in, _Decimal32 *out) +{ + memcpy ((char *) out, (char *) &in, 4); +} diff --git a/gcc-4.7/libdecnumber/bid/host-ieee64.c b/gcc-4.7/libdecnumber/bid/host-ieee64.c new file mode 100644 index 000000000..825eb0ab1 --- /dev/null +++ b/gcc-4.7/libdecnumber/bid/host-ieee64.c @@ -0,0 +1,52 @@ +/* This is a software decimal floating point library. + Copyright (C) 2007, 2009 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 3, 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. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +<http://www.gnu.org/licenses/>. */ + +/* This implements IEEE 754R decimal floating point arithmetic, but + does not provide a mechanism for setting the rounding mode, or for + generating or handling exceptions. Conversions between decimal + floating point types and other types depend on C library functions. + + Contributed by Ben Elliston <bje@au.ibm.com>. */ + +/* The intended way to use this file is to make two copies, add `#define ' + to one copy, then compile both copies and add them to libgcc.a. */ + +#include <string.h> +#include "bid-dpd.h" +#include "decimal64.h" + +void __host_to_ieee_64 (_Decimal64 in, decimal64 *out); +void __ieee_to_host_64 (decimal64 in, _Decimal64 *out); + +void +__host_to_ieee_64 (_Decimal64 in, decimal64 *out) +{ + memcpy ((char *) out, (char *) &in, 8); +} + +void +__ieee_to_host_64 (decimal64 in, _Decimal64 *out) +{ + memcpy ((char *) out, (char *) &in, 8); +} diff --git a/gcc-4.7/libdecnumber/config.in b/gcc-4.7/libdecnumber/config.in new file mode 100644 index 000000000..98dc67d7f --- /dev/null +++ b/gcc-4.7/libdecnumber/config.in @@ -0,0 +1,94 @@ +/* config.in. Generated from configure.ac by autoheader. */ + +/* Define if building universal (internal helper macro) */ +#undef AC_APPLE_UNIVERSAL_BUILD + +/* Define to 1 if you have the <ctype.h> header file. */ +#undef HAVE_CTYPE_H + +/* Define to 1 if you have the <inttypes.h> header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the <memory.h> header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the <stddef.h> header file. */ +#undef HAVE_STDDEF_H + +/* Define to 1 if you have the <stdint.h> header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the <stdio.h> header file. */ +#undef HAVE_STDIO_H + +/* Define to 1 if you have the <stdlib.h> header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the <strings.h> header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the <string.h> header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the <sys/stat.h> header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the <sys/types.h> header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the <unistd.h> header file. */ +#undef HAVE_UNISTD_H + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the home page for this package. */ +#undef PACKAGE_URL + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* The size of `char', as computed by sizeof. */ +#undef SIZEOF_CHAR + +/* The size of `int', as computed by sizeof. */ +#undef SIZEOF_INT + +/* The size of `long', as computed by sizeof. */ +#undef SIZEOF_LONG + +/* The size of `short', as computed by sizeof. */ +#undef SIZEOF_SHORT + +/* The size of `void *', as computed by sizeof. */ +#undef SIZEOF_VOID_P + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +#if defined AC_APPLE_UNIVERSAL_BUILD +# if defined __BIG_ENDIAN__ +# define WORDS_BIGENDIAN 1 +# endif +#else +# ifndef WORDS_BIGENDIAN +# undef WORDS_BIGENDIAN +# endif +#endif + +/* Define to empty if `const' does not conform to ANSI C. */ +#undef const + +/* Define to `long int' if <sys/types.h> does not define. */ +#undef off_t diff --git a/gcc-4.7/libdecnumber/configure b/gcc-4.7/libdecnumber/configure new file mode 100755 index 000000000..2b5868485 --- /dev/null +++ b/gcc-4.7/libdecnumber/configure @@ -0,0 +1,6554 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.64 for libdecnumber . +# +# Report bugs to <gcc-bugs@gcc.gnu.org>. +# +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software +# Foundation, Inc. +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + # We cannot yet assume a decent shell, so we have to provide a + # neutralization value for shells without unset; and this also + # works around shells that cannot unset nonexistent variables. + BASH_ENV=/dev/null + ENV=/dev/null + (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org and +$0: gcc-bugs@gcc.gnu.org about your system, including any +$0: error possibly output before this message. Then install +$0: a modern shell, or manually run the script under such a +$0: shell if you do have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error ERROR [LINENO LOG_FD] +# --------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with status $?, using 1 if that was 0. +as_fn_error () +{ + as_status=$?; test $as_status -eq 0 && as_status=1 + if test "$3"; then + as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3 + fi + $as_echo "$as_me: error: $1" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in #( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 7<&0 </dev/null 6>&1 + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='libdecnumber' +PACKAGE_TARNAME='libdecnumber' +PACKAGE_VERSION=' ' +PACKAGE_STRING='libdecnumber ' +PACKAGE_BUGREPORT='gcc-bugs@gcc.gnu.org' +PACKAGE_URL='' + +ac_unique_file="decNumber.h" +# Factoring default headers for most tests. +ac_includes_default="\ +#include <stdio.h> +#ifdef HAVE_SYS_TYPES_H +# include <sys/types.h> +#endif +#ifdef HAVE_SYS_STAT_H +# include <sys/stat.h> +#endif +#ifdef STDC_HEADERS +# include <stdlib.h> +# include <stddef.h> +#else +# ifdef HAVE_STDLIB_H +# include <stdlib.h> +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include <memory.h> +# endif +# include <string.h> +#endif +#ifdef HAVE_STRINGS_H +# include <strings.h> +#endif +#ifdef HAVE_INTTYPES_H +# include <inttypes.h> +#endif +#ifdef HAVE_STDINT_H +# include <stdint.h> +#endif +#ifdef HAVE_UNISTD_H +# include <unistd.h> +#endif" + +ac_subst_vars='LTLIBOBJS +LIBOBJS +ADDITIONAL_OBJS +enable_decimal_float +target_os +target_vendor +target_cpu +target +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +MAINT +EGREP +GREP +CPP +WERROR +WARN_PEDANTIC +WARN_CFLAGS +AUTOHEADER +AUTOCONF +ACLOCAL +RANLIB +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +SET_MAKE +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_werror_always +enable_maintainer_mode +enable_decimal_float +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information." + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures libdecnumber to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/libdecnumber] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] + --target=TARGET configure for building compilers for TARGET [HOST] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of libdecnumber :";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-werror-always enable -Werror despite compiler version + --enable-maintainer-mode enable rules only needed by maintainers + --enable-decimal-float={no,yes,bid,dpd} + enable decimal float extension to C. Selecting 'bid' + or 'dpd' choses which decimal floating point format + to use + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a + nonstandard directory <lib dir> + LIBS libraries to pass to the linker, e.g. -l<library> + CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if + you have headers in a nonstandard directory <include dir> + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to <gcc-bugs@gcc.gnu.org>. +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +libdecnumber configure +generated by GNU Autoconf 2.64 + +Copyright (C) 2009 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + return $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + return $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists, giving a warning if it cannot be compiled using +# the include files in INCLUDES and setting the cache variable VAR +# accordingly. +ac_fn_c_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$2> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} +( cat <<\_ASBOX +## ----------------------------------- ## +## Report this to gcc-bugs@gcc.gnu.org ## +## ----------------------------------- ## +_ASBOX + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + +} # ac_fn_c_check_header_mongrel + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + return $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + +} # ac_fn_c_check_header_compile + +# ac_fn_c_check_type LINENO TYPE VAR INCLUDES +# ------------------------------------------- +# Tests whether TYPE exists after having included INCLUDES, setting cache +# variable VAR accordingly. +ac_fn_c_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + eval "$3=yes" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + +} # ac_fn_c_check_type + +# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES +# -------------------------------------------- +# Tries to find the compile-time value of EXPR in a program that includes +# INCLUDES, setting VAR accordingly. Returns whether the value could be +# computed +ac_fn_c_compute_int () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_lo=0 ac_mid=0 + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_hi=$ac_mid; break +else + as_fn_arith $ac_mid + 1 && ac_lo=$as_val + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_hi=-1 ac_mid=-1 + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_lo=$ac_mid; break +else + as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + ac_lo= ac_hi= +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_hi=$ac_mid +else + as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in #(( +?*) eval "$3=\$ac_lo"; ac_retval=0 ;; +'') ac_retval=1 ;; +esac + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +static long int longval () { return $2; } +static unsigned long int ulongval () { return $2; } +#include <stdio.h> +#include <stdlib.h> +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + return 1; + if (($2) < 0) + { + long int i = longval (); + if (i != ($2)) + return 1; + fprintf (f, "%ld", i); + } + else + { + unsigned long int i = ulongval (); + if (i != ($2)) + return 1; + fprintf (f, "%lu", i); + } + /* Do not output a trailing newline, as this causes \r\n confusion + on some platforms. */ + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + echo >>conftest.val; read $3 <conftest.val; ac_retval=0 +else + ac_retval=1 +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f conftest.val + + fi + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + return $ac_retval + +} # ac_fn_c_compute_int +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by libdecnumber $as_me , which was +generated by GNU Autoconf 2.64. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------------- ## +## File substitutions. ## +## ------------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + ac_site_file1=$CONFIG_SITE +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + + + +# Checks for programs. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + SET_MAKE= +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "no acceptable C compiler found in \$PATH +See \`config.log' for more details." "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + rm -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out conftest.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +if test -z "$ac_file"; then : + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ as_fn_set_status 77 +as_fn_error "C compiler cannot create executables +See \`config.log' for more details." "$LINENO" 5; }; } +fi +ac_exeext=$ac_cv_exeext + +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out conftest.out +ac_clean_files=$ac_clean_files_save +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." "$LINENO" 5; } +fi +rm -f conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if test "${ac_cv_objext+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "cannot compute suffix of object files: cannot compile +See \`config.log' for more details." "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if test "${ac_cv_c_compiler_gnu+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if test "${ac_cv_prog_cc_g+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if test "${ac_cv_prog_cc_c89+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdarg.h> +#include <stdio.h> +#include <sys/types.h> +#include <sys/stat.h> +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_RANLIB+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + + +MISSING=`cd $ac_aux_dir && ${PWDCMD-pwd}`/missing +for ac_prog in aclocal +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ACLOCAL+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ACLOCAL"; then + ac_cv_prog_ACLOCAL="$ACLOCAL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ACLOCAL="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ACLOCAL=$ac_cv_prog_ACLOCAL +if test -n "$ACLOCAL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ACLOCAL" >&5 +$as_echo "$ACLOCAL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ACLOCAL" && break +done +test -n "$ACLOCAL" || ACLOCAL="$MISSING aclocal" + +for ac_prog in autoconf +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_AUTOCONF+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AUTOCONF"; then + ac_cv_prog_AUTOCONF="$AUTOCONF" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AUTOCONF="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AUTOCONF=$ac_cv_prog_AUTOCONF +if test -n "$AUTOCONF"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AUTOCONF" >&5 +$as_echo "$AUTOCONF" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AUTOCONF" && break +done +test -n "$AUTOCONF" || AUTOCONF="$MISSING autoconf" + +for ac_prog in autoheader +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_AUTOHEADER+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AUTOHEADER"; then + ac_cv_prog_AUTOHEADER="$AUTOHEADER" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AUTOHEADER="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AUTOHEADER=$ac_cv_prog_AUTOHEADER +if test -n "$AUTOHEADER"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AUTOHEADER" >&5 +$as_echo "$AUTOHEADER" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AUTOHEADER" && break +done +test -n "$AUTOHEADER" || AUTOHEADER="$MISSING autoheader" + + +# Figure out what compiler warnings we can enable. +# See config/warnings.m4 for details. + + +WARN_CFLAGS= +save_CFLAGS="$CFLAGS" +for real_option in -W -Wall -Wwrite-strings -Wstrict-prototypes \ + -Wmissing-prototypes -Wold-style-definition \ + -Wmissing-format-attribute -Wcast-qual; do + # Do the check with the no- prefix removed since gcc silently + # accepts any -Wno-* option on purpose + case $real_option in + -Wno-*) option=-W`expr x$real_option : 'x-Wno-\(.*\)'` ;; + *) option=$real_option ;; + esac + as_acx_Woption=`$as_echo "acx_cv_prog_cc_warning_$option" | $as_tr_sh` + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports $option" >&5 +$as_echo_n "checking whether $CC supports $option... " >&6; } +if { as_var=$as_acx_Woption; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 +else + CFLAGS="$option" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_acx_Woption=yes" +else + eval "$as_acx_Woption=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +eval ac_res=\$$as_acx_Woption + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + if test `eval 'as_val=${'$as_acx_Woption'};$as_echo "$as_val"'` = yes; then : + WARN_CFLAGS="$WARN_CFLAGS${WARN_CFLAGS:+ }$real_option" +fi + done +CFLAGS="$save_CFLAGS" + +WARN_PEDANTIC= +# Do the check with the no- prefix removed from the warning options +# since gcc silently accepts any -Wno-* option on purpose +if test "$GCC" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -pedantic -Wlong-long" >&5 +$as_echo_n "checking whether $CC supports -pedantic -Wlong-long... " >&6; } +if test "${acx_cv_prog_cc_pedantic__Wlong_long+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + save_CFLAGS="$CFLAGS" +CFLAGS="-pedantic -Wlong-long" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + acx_cv_prog_cc_pedantic__Wlong_long=yes +else + acx_cv_prog_cc_pedantic__Wlong_long=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +CFLAGS="$save_CFLAGS" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_cv_prog_cc_pedantic__Wlong_long" >&5 +$as_echo "$acx_cv_prog_cc_pedantic__Wlong_long" >&6; } +if test $acx_cv_prog_cc_pedantic__Wlong_long = yes; then : + WARN_PEDANTIC="$WARN_PEDANTIC${WARN_PEDANTIC:+ }-pedantic -Wno-long-long" +fi + +fi + + +# Only enable with --enable-werror-always until existing warnings are +# corrected. +WERROR= +# Check whether --enable-werror-always was given. +if test "${enable_werror_always+set}" = set; then : + enableval=$enable_werror_always; +else + enable_werror_always=no +fi + +if test $enable_werror_always = yes; then : + WERROR="$WERROR${WERROR:+ }-Werror" +fi + + + +# Checks for header files. +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + # <limits.h> exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <ac_nonexistent.h> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + # <limits.h> exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <ac_nonexistent.h> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if test "${ac_cv_path_GREP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if test "${ac_cv_path_EGREP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if test "${ac_cv_header_stdc+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdlib.h> +#include <stdarg.h> +#include <string.h> +#include <float.h> + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <string.h> + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdlib.h> + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <ctype.h> +#include <stdlib.h> +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +eval as_val=\$$as_ac_Header + if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in ctype.h stddef.h string.h stdio.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +eval as_val=\$$as_ac_Header + if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + +inttype_headers=`echo inttypes.h sys/inttypes.h | sed -e 's/,/ /g'` + +acx_cv_header_stdint=stddef.h +acx_cv_header_stdint_kind="(already complete)" +for i in stdint.h $inttype_headers; do + unset ac_cv_type_uintptr_t + unset ac_cv_type_uintmax_t + unset ac_cv_type_int_least32_t + unset ac_cv_type_int_fast32_t + unset ac_cv_type_uint64_t + $as_echo_n "looking for a compliant stdint.h in $i, " >&6 + ac_fn_c_check_type "$LINENO" "uintmax_t" "ac_cv_type_uintmax_t" "#include <sys/types.h> +#include <$i> +" +if test "x$ac_cv_type_uintmax_t" = x""yes; then : + acx_cv_header_stdint=$i +else + continue +fi + + ac_fn_c_check_type "$LINENO" "uintptr_t" "ac_cv_type_uintptr_t" "#include <sys/types.h> +#include <$i> +" +if test "x$ac_cv_type_uintptr_t" = x""yes; then : + +else + acx_cv_header_stdint_kind="(mostly complete)" +fi + + ac_fn_c_check_type "$LINENO" "int_least32_t" "ac_cv_type_int_least32_t" "#include <sys/types.h> +#include <$i> +" +if test "x$ac_cv_type_int_least32_t" = x""yes; then : + +else + acx_cv_header_stdint_kind="(mostly complete)" +fi + + ac_fn_c_check_type "$LINENO" "int_fast32_t" "ac_cv_type_int_fast32_t" "#include <sys/types.h> +#include <$i> +" +if test "x$ac_cv_type_int_fast32_t" = x""yes; then : + +else + acx_cv_header_stdint_kind="(mostly complete)" +fi + + ac_fn_c_check_type "$LINENO" "uint64_t" "ac_cv_type_uint64_t" "#include <sys/types.h> +#include <$i> +" +if test "x$ac_cv_type_uint64_t" = x""yes; then : + +else + acx_cv_header_stdint_kind="(lacks uint64_t)" +fi + + break +done +if test "$acx_cv_header_stdint" = stddef.h; then + acx_cv_header_stdint_kind="(lacks uintmax_t)" + for i in stdint.h $inttype_headers; do + unset ac_cv_type_uintptr_t + unset ac_cv_type_uint32_t + unset ac_cv_type_uint64_t + $as_echo_n "looking for an incomplete stdint.h in $i, " >&6 + ac_fn_c_check_type "$LINENO" "uint32_t" "ac_cv_type_uint32_t" "#include <sys/types.h> +#include <$i> +" +if test "x$ac_cv_type_uint32_t" = x""yes; then : + acx_cv_header_stdint=$i +else + continue +fi + + ac_fn_c_check_type "$LINENO" "uint64_t" "ac_cv_type_uint64_t" "#include <sys/types.h> +#include <$i> +" +if test "x$ac_cv_type_uint64_t" = x""yes; then : + +fi + + ac_fn_c_check_type "$LINENO" "uintptr_t" "ac_cv_type_uintptr_t" "#include <sys/types.h> +#include <$i> +" +if test "x$ac_cv_type_uintptr_t" = x""yes; then : + +fi + + break + done +fi +if test "$acx_cv_header_stdint" = stddef.h; then + acx_cv_header_stdint_kind="(u_intXX_t style)" + for i in sys/types.h $inttype_headers; do + unset ac_cv_type_u_int32_t + unset ac_cv_type_u_int64_t + $as_echo_n "looking for u_intXX_t types in $i, " >&6 + ac_fn_c_check_type "$LINENO" "u_int32_t" "ac_cv_type_u_int32_t" "#include <sys/types.h> +#include <$i> +" +if test "x$ac_cv_type_u_int32_t" = x""yes; then : + acx_cv_header_stdint=$i +else + continue +fi + + ac_fn_c_check_type "$LINENO" "u_int64_t" "ac_cv_type_u_int64_t" "#include <sys/types.h> +#include <$i> +" +if test "x$ac_cv_type_u_int64_t" = x""yes; then : + +fi + + break + done +fi +if test "$acx_cv_header_stdint" = stddef.h; then + acx_cv_header_stdint_kind="(using manual detection)" +fi + +test -z "$ac_cv_type_uintptr_t" && ac_cv_type_uintptr_t=no +test -z "$ac_cv_type_uint64_t" && ac_cv_type_uint64_t=no +test -z "$ac_cv_type_u_int64_t" && ac_cv_type_u_int64_t=no +test -z "$ac_cv_type_int_least32_t" && ac_cv_type_int_least32_t=no +test -z "$ac_cv_type_int_fast32_t" && ac_cv_type_int_fast32_t=no + +# ----------------- Summarize what we found so far + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking what to include in gstdint.h" >&5 +$as_echo_n "checking what to include in gstdint.h... " >&6; } + +case `$as_basename -- gstdint.h || +$as_expr X/gstdint.h : '.*/\([^/][^/]*\)/*$' \| \ + Xgstdint.h : 'X\(//\)$' \| \ + Xgstdint.h : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/gstdint.h | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` in + stdint.h) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: are you sure you want it there?" >&5 +$as_echo "$as_me: WARNING: are you sure you want it there?" >&2;} ;; + inttypes.h) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: are you sure you want it there?" >&5 +$as_echo "$as_me: WARNING: are you sure you want it there?" >&2;} ;; + *) ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_cv_header_stdint $acx_cv_header_stdint_kind" >&5 +$as_echo "$acx_cv_header_stdint $acx_cv_header_stdint_kind" >&6; } + +# ----------------- done included file, check C basic types -------- + +# Lacking an uintptr_t? Test size of void * +case "$acx_cv_header_stdint:$ac_cv_type_uintptr_t" in + stddef.h:* | *:no) # The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of void *" >&5 +$as_echo_n "checking size of void *... " >&6; } +if test "${ac_cv_sizeof_void_p+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (void *))" "ac_cv_sizeof_void_p" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_void_p" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ as_fn_set_status 77 +as_fn_error "cannot compute sizeof (void *) +See \`config.log' for more details." "$LINENO" 5; }; } + else + ac_cv_sizeof_void_p=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_void_p" >&5 +$as_echo "$ac_cv_sizeof_void_p" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_VOID_P $ac_cv_sizeof_void_p +_ACEOF + + ;; +esac + +# Lacking an uint64_t? Test size of long +case "$acx_cv_header_stdint:$ac_cv_type_uint64_t:$ac_cv_type_u_int64_t" in + stddef.h:*:* | *:no:no) # The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 +$as_echo_n "checking size of long... " >&6; } +if test "${ac_cv_sizeof_long+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_long" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ as_fn_set_status 77 +as_fn_error "cannot compute sizeof (long) +See \`config.log' for more details." "$LINENO" 5; }; } + else + ac_cv_sizeof_long=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 +$as_echo "$ac_cv_sizeof_long" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_LONG $ac_cv_sizeof_long +_ACEOF + + ;; +esac + +if test $acx_cv_header_stdint = stddef.h; then + # Lacking a good header? Test size of everything and deduce all types. + # The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int" >&5 +$as_echo_n "checking size of int... " >&6; } +if test "${ac_cv_sizeof_int+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_int" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ as_fn_set_status 77 +as_fn_error "cannot compute sizeof (int) +See \`config.log' for more details." "$LINENO" 5; }; } + else + ac_cv_sizeof_int=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5 +$as_echo "$ac_cv_sizeof_int" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_INT $ac_cv_sizeof_int +_ACEOF + + + # The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of short" >&5 +$as_echo_n "checking size of short... " >&6; } +if test "${ac_cv_sizeof_short+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_short" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ as_fn_set_status 77 +as_fn_error "cannot compute sizeof (short) +See \`config.log' for more details." "$LINENO" 5; }; } + else + ac_cv_sizeof_short=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5 +$as_echo "$ac_cv_sizeof_short" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_SHORT $ac_cv_sizeof_short +_ACEOF + + + # The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of char" >&5 +$as_echo_n "checking size of char... " >&6; } +if test "${ac_cv_sizeof_char+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (char))" "ac_cv_sizeof_char" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_char" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ as_fn_set_status 77 +as_fn_error "cannot compute sizeof (char) +See \`config.log' for more details." "$LINENO" 5; }; } + else + ac_cv_sizeof_char=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_char" >&5 +$as_echo "$ac_cv_sizeof_char" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_CHAR $ac_cv_sizeof_char +_ACEOF + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for type equivalent to int8_t" >&5 +$as_echo_n "checking for type equivalent to int8_t... " >&6; } + case "$ac_cv_sizeof_char" in + 1) acx_cv_type_int8_t=char ;; + *) as_fn_error "no 8-bit type, please report a bug" "$LINENO" 5 + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_cv_type_int8_t" >&5 +$as_echo "$acx_cv_type_int8_t" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for type equivalent to int16_t" >&5 +$as_echo_n "checking for type equivalent to int16_t... " >&6; } + case "$ac_cv_sizeof_int:$ac_cv_sizeof_short" in + 2:*) acx_cv_type_int16_t=int ;; + *:2) acx_cv_type_int16_t=short ;; + *) as_fn_error "no 16-bit type, please report a bug" "$LINENO" 5 + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_cv_type_int16_t" >&5 +$as_echo "$acx_cv_type_int16_t" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for type equivalent to int32_t" >&5 +$as_echo_n "checking for type equivalent to int32_t... " >&6; } + case "$ac_cv_sizeof_int:$ac_cv_sizeof_long" in + 4:*) acx_cv_type_int32_t=int ;; + *:4) acx_cv_type_int32_t=long ;; + *) as_fn_error "no 32-bit type, please report a bug" "$LINENO" 5 + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_cv_type_int32_t" >&5 +$as_echo "$acx_cv_type_int32_t" >&6; } +fi + +# These tests are here to make the output prettier + +if test "$ac_cv_type_uint64_t" != yes && test "$ac_cv_type_u_int64_t" != yes; then + case "$ac_cv_sizeof_long" in + 8) acx_cv_type_int64_t=long ;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for type equivalent to int64_t" >&5 +$as_echo_n "checking for type equivalent to int64_t... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${acx_cv_type_int64_t-'using preprocessor symbols'}" >&5 +$as_echo "${acx_cv_type_int64_t-'using preprocessor symbols'}" >&6; } +fi + +# Now we can use the above types + +if test "$ac_cv_type_uintptr_t" != yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for type equivalent to intptr_t" >&5 +$as_echo_n "checking for type equivalent to intptr_t... " >&6; } + case $ac_cv_sizeof_void_p in + 2) acx_cv_type_intptr_t=int16_t ;; + 4) acx_cv_type_intptr_t=int32_t ;; + 8) acx_cv_type_intptr_t=int64_t ;; + *) as_fn_error "no equivalent for intptr_t, please report a bug" "$LINENO" 5 + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_cv_type_intptr_t" >&5 +$as_echo "$acx_cv_type_intptr_t" >&6; } +fi + +# ----------------- done all checks, emit header ------------- +ac_config_commands="$ac_config_commands gstdint.h" + + + + +# Checks for typedefs, structures, and compiler characteristics. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 +$as_echo_n "checking for an ANSI C-conforming const... " >&6; } +if test "${ac_cv_c_const+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +/* FIXME: Include the comments suggested by Paul. */ +#ifndef __cplusplus + /* Ultrix mips cc rejects this. */ + typedef int charset[2]; + const charset cs; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *pcpcc; + char **ppc; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* AIX XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++pcpcc; + ppc = (char**) pcpcc; + pcpcc = (char const *const *) ppc; + { /* SCO 3.2v4 cc rejects this. */ + char *t; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + if (s) return 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; + } + { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; + } + { /* AIX XL C 1.02.0.0 rejects this saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; }; + struct s *b; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + if (!foo) return 0; + } + return !cs[0] && !zero.x; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_const=yes +else + ac_cv_c_const=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 +$as_echo "$ac_cv_c_const" >&6; } +if test $ac_cv_c_const = no; then + +$as_echo "#define const /**/" >>confdefs.h + +fi + +ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" +if test "x$ac_cv_type_off_t" = x""yes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define off_t long int +_ACEOF + +fi + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int" >&5 +$as_echo_n "checking size of int... " >&6; } +if test "${ac_cv_sizeof_int+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_int" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ as_fn_set_status 77 +as_fn_error "cannot compute sizeof (int) +See \`config.log' for more details." "$LINENO" 5; }; } + else + ac_cv_sizeof_int=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5 +$as_echo "$ac_cv_sizeof_int" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_INT $ac_cv_sizeof_int +_ACEOF + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 +$as_echo_n "checking size of long... " >&6; } +if test "${ac_cv_sizeof_long+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_long" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ as_fn_set_status 77 +as_fn_error "cannot compute sizeof (long) +See \`config.log' for more details." "$LINENO" 5; }; } + else + ac_cv_sizeof_long=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 +$as_echo "$ac_cv_sizeof_long" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_LONG $ac_cv_sizeof_long +_ACEOF + + + +# Checks for library functions. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if test "${ac_cv_header_stdc+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdlib.h> +#include <stdarg.h> +#include <string.h> +#include <float.h> + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <string.h> + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdlib.h> + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <ctype.h> +#include <stdlib.h> +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + + +# Check whether --enable-maintainer-mode was given. +if test "${enable_maintainer_mode+set}" = set; then : + enableval=$enable_maintainer_mode; +else + enable_maintainer_mode=no +fi + + +if test "x$enable_maintainer_mode" = xno; then + MAINT='#' +else + MAINT= +fi + + +ac_aux_dir= +for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do + for ac_t in install-sh install.sh shtool; do + if test -f "$ac_dir/$ac_t"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/$ac_t -c" + break 2 + fi + done +done +if test -z "$ac_aux_dir"; then + as_fn_error "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + as_fn_error "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if test "${ac_cv_build+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + as_fn_error "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + as_fn_error "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if test "${ac_cv_host+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + as_fn_error "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 +$as_echo_n "checking target system type... " >&6; } +if test "${ac_cv_target+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test "x$target_alias" = x; then + ac_cv_target=$ac_cv_host +else + ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || + as_fn_error "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 +$as_echo "$ac_cv_target" >&6; } +case $ac_cv_target in +*-*-*) ;; +*) as_fn_error "invalid value of canonical target" "$LINENO" 5;; +esac +target=$ac_cv_target +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_target +shift +target_cpu=$1 +target_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +target_os=$* +IFS=$ac_save_IFS +case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac + + +# The aliases save the names the user supplied, while $host etc. +# will get canonicalized. +test -n "$target_alias" && + test "$program_prefix$program_suffix$program_transform_name" = \ + NONENONEs,x,x, && + program_prefix=${target_alias}- + +# Default decimal format +# If you change the defaults here, be sure to change them in the GCC directory also +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for decimal floating point" >&5 +$as_echo_n "checking for decimal floating point... " >&6; } + + +# Check whether --enable-decimal-float was given. +if test "${enable_decimal_float+set}" = set; then : + enableval=$enable_decimal_float; + case $enable_decimal_float in + yes | no | bid | dpd) default_decimal_float=$enable_decimal_float ;; + *) as_fn_error "'$enable_decimal_float' is an invalid value for --enable-decimal-float. +Valid choices are 'yes', 'bid', 'dpd', and 'no'." "$LINENO" 5 ;; + esac + +else + + case $target in + powerpc*-*-linux* | i?86*-*-linux* | x86_64*-*-linux* | s390*-*-linux* | \ + i?86*-*-mingw* | x86_64*-*-mingw* | \ + i?86*-*-cygwin*) + enable_decimal_float=yes + ;; + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: decimal float is not supported for this target, ignored" >&5 +$as_echo "$as_me: WARNING: decimal float is not supported for this target, ignored" >&2;} + enable_decimal_float=no + ;; + esac + +fi + + +# x86's use BID format instead of DPD +case x$enable_decimal_float in + xyes) + case $target in + i?86*-*-* | x86_64*-*-*) + enable_decimal_float=bid + ;; + *) + enable_decimal_float=dpd + ;; + esac + default_decimal_float=$enable_decimal_float + ;; + xno) + # ENABLE_DECIMAL_FLOAT is set to 0. But we have to have proper + # dependency on libdecnumber. + default_decimal_float=dpd + ;; +esac + + + + +# Use default_decimal_float for dependency. +enable_decimal_float=$default_decimal_float + +# If BID is being used, additional objects should be linked in. +if test x$enable_decimal_float = xbid; then + ADDITIONAL_OBJS="$ADDITIONAL_OBJS \$(bid_OBJS)" +else + ADDITIONAL_OBJS= +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_decimal_float" >&5 +$as_echo "$enable_decimal_float" >&6; } + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 +$as_echo_n "checking whether byte ordering is bigendian... " >&6; } +if test "${ac_cv_c_bigendian+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_bigendian=unknown + # See if we're dealing with a universal compiler. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __APPLE_CC__ + not a universal capable compiler + #endif + typedef int dummy; + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + # Check for potential -arch flags. It is not universal unless + # there are at least two -arch flags with different values. + ac_arch= + ac_prev= + for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do + if test -n "$ac_prev"; then + case $ac_word in + i?86 | x86_64 | ppc | ppc64) + if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then + ac_arch=$ac_word + else + ac_cv_c_bigendian=universal + break + fi + ;; + esac + ac_prev= + elif test "x$ac_word" = "x-arch"; then + ac_prev=arch + fi + done +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + if test $ac_cv_c_bigendian = unknown; then + # See if sys/param.h defines the BYTE_ORDER macro. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <sys/types.h> + #include <sys/param.h> + +int +main () +{ +#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ + && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ + && LITTLE_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + # It does; now see whether it defined to BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <sys/types.h> + #include <sys/param.h> + +int +main () +{ +#if BYTE_ORDER != BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_bigendian=yes +else + ac_cv_c_bigendian=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <limits.h> + +int +main () +{ +#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + # It does; now see whether it defined to _BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <limits.h> + +int +main () +{ +#ifndef _BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_bigendian=yes +else + ac_cv_c_bigendian=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # Compile a test program. + if test "$cross_compiling" = yes; then : + # Try to guess by grepping values from an object file. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +short int ascii_mm[] = + { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; + short int ascii_ii[] = + { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; + int use_ascii (int i) { + return ascii_mm[i] + ascii_ii[i]; + } + short int ebcdic_ii[] = + { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; + short int ebcdic_mm[] = + { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; + int use_ebcdic (int i) { + return ebcdic_mm[i] + ebcdic_ii[i]; + } + extern int foo; + +int +main () +{ +return use_ascii (foo) == use_ebcdic (foo); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then + ac_cv_c_bigendian=yes + fi + if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then + if test "$ac_cv_c_bigendian" = unknown; then + ac_cv_c_bigendian=no + else + # finding both strings is unlikely to happen, but who knows? + ac_cv_c_bigendian=unknown + fi + fi +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ + + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long int l; + char c[sizeof (long int)]; + } u; + u.l = 1; + return u.c[sizeof (long int) - 1] == 1; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_c_bigendian=no +else + ac_cv_c_bigendian=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 +$as_echo "$ac_cv_c_bigendian" >&6; } + case $ac_cv_c_bigendian in #( + yes) + $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h +;; #( + no) + ;; #( + universal) + +$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h + + ;; #( + *) + as_fn_error "unknown endianness + presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; + esac + + +# Output. + +ac_config_headers="$ac_config_headers config.h:config.in" + +ac_config_files="$ac_config_files Makefile" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + test "x$cache_file" != "x/dev/null" && + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + cat confcache >$cache_file + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + + +: ${CONFIG_STATUS=./config.status} +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error ERROR [LINENO LOG_FD] +# --------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with status $?, using 1 if that was 0. +as_fn_error () +{ + as_status=$?; test $as_status -eq 0 && as_status=1 + if test "$3"; then + as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3 + fi + $as_echo "$as_me: error: $1" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in #( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by libdecnumber $as_me , which was +generated by GNU Autoconf 2.64. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to <gcc-bugs@gcc.gnu.org>." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_version="\\ +libdecnumber config.status +configured by $0, generated by GNU Autoconf 2.64, + with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" + +Copyright (C) 2009 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# + +GCC="$GCC" +CC="$CC" +acx_cv_header_stdint="$acx_cv_header_stdint" +acx_cv_type_int8_t="$acx_cv_type_int8_t" +acx_cv_type_int16_t="$acx_cv_type_int16_t" +acx_cv_type_int32_t="$acx_cv_type_int32_t" +acx_cv_type_int64_t="$acx_cv_type_int64_t" +acx_cv_type_intptr_t="$acx_cv_type_intptr_t" +ac_cv_type_uintmax_t="$ac_cv_type_uintmax_t" +ac_cv_type_uintptr_t="$ac_cv_type_uintptr_t" +ac_cv_type_uint64_t="$ac_cv_type_uint64_t" +ac_cv_type_u_int64_t="$ac_cv_type_u_int64_t" +ac_cv_type_u_int32_t="$ac_cv_type_u_int32_t" +ac_cv_type_int_least32_t="$ac_cv_type_int_least32_t" +ac_cv_type_int_fast32_t="$ac_cv_type_int_fast32_t" +ac_cv_sizeof_void_p="$ac_cv_sizeof_void_p" + + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "gstdint.h") CONFIG_COMMANDS="$CONFIG_COMMANDS gstdint.h" ;; + "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h:config.in" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + + *) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= + trap 'exit_status=$? + { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error "cannot create a temporary directory in ." "$LINENO" 5 + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\).*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\).*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' <conf$$subs.awk | sed ' +/^[^""]/{ + N + s/\n// +} +' >>$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ + || as_fn_error "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/ +s/:*\${srcdir}:*/:/ +s/:*@srcdir@:*/:/ +s/^\([^=]*=[ ]*\):*/\1/ +s/:*$// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_t=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_t"; then + break + elif $ac_last_try; then + as_fn_error "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' <confdefs.h | sed ' +s/'"$ac_delim"'/"\\\ +"/g' >>$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$tmp/stdin" \ + || as_fn_error "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ + || as_fn_error "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&2;} + + rm -f "$tmp/stdin" + case $ac_file in + -) cat "$tmp/out" && rm -f "$tmp/out";; + *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; + esac \ + || as_fn_error "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" + } >"$tmp/config.h" \ + || as_fn_error "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$tmp/config.h" "$ac_file" \ + || as_fn_error "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error "could not create -" "$LINENO" 5 + fi + ;; + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "gstdint.h":C) +if test "$GCC" = yes; then + echo "/* generated for " `$CC --version | sed 1q` "*/" > tmp-stdint.h +else + echo "/* generated for $CC */" > tmp-stdint.h +fi + +sed 's/^ *//' >> tmp-stdint.h <<EOF + + #ifndef GCC_GENERATED_STDINT_H + #define GCC_GENERATED_STDINT_H 1 + + #include <sys/types.h> +EOF + +if test "$acx_cv_header_stdint" != stdint.h; then + echo "#include <stddef.h>" >> tmp-stdint.h +fi +if test "$acx_cv_header_stdint" != stddef.h; then + echo "#include <$acx_cv_header_stdint>" >> tmp-stdint.h +fi + +sed 's/^ *//' >> tmp-stdint.h <<EOF + /* glibc uses these symbols as guards to prevent redefinitions. */ + #ifdef __int8_t_defined + #define _INT8_T + #define _INT16_T + #define _INT32_T + #endif + #ifdef __uint32_t_defined + #define _UINT32_T + #endif + +EOF + +# ----------------- done header, emit basic int types ------------- +if test "$acx_cv_header_stdint" = stddef.h; then + sed 's/^ *//' >> tmp-stdint.h <<EOF + + #ifndef _UINT8_T + #define _UINT8_T + #ifndef __uint8_t_defined + #define __uint8_t_defined + #ifndef uint8_t + typedef unsigned $acx_cv_type_int8_t uint8_t; + #endif + #endif + #endif + + #ifndef _UINT16_T + #define _UINT16_T + #ifndef __uint16_t_defined + #define __uint16_t_defined + #ifndef uint16_t + typedef unsigned $acx_cv_type_int16_t uint16_t; + #endif + #endif + #endif + + #ifndef _UINT32_T + #define _UINT32_T + #ifndef __uint32_t_defined + #define __uint32_t_defined + #ifndef uint32_t + typedef unsigned $acx_cv_type_int32_t uint32_t; + #endif + #endif + #endif + + #ifndef _INT8_T + #define _INT8_T + #ifndef __int8_t_defined + #define __int8_t_defined + #ifndef int8_t + typedef $acx_cv_type_int8_t int8_t; + #endif + #endif + #endif + + #ifndef _INT16_T + #define _INT16_T + #ifndef __int16_t_defined + #define __int16_t_defined + #ifndef int16_t + typedef $acx_cv_type_int16_t int16_t; + #endif + #endif + #endif + + #ifndef _INT32_T + #define _INT32_T + #ifndef __int32_t_defined + #define __int32_t_defined + #ifndef int32_t + typedef $acx_cv_type_int32_t int32_t; + #endif + #endif + #endif +EOF +elif test "$ac_cv_type_u_int32_t" = yes; then + sed 's/^ *//' >> tmp-stdint.h <<EOF + + /* int8_t int16_t int32_t defined by inet code, we do the u_intXX types */ + #ifndef _INT8_T + #define _INT8_T + #endif + #ifndef _INT16_T + #define _INT16_T + #endif + #ifndef _INT32_T + #define _INT32_T + #endif + + #ifndef _UINT8_T + #define _UINT8_T + #ifndef __uint8_t_defined + #define __uint8_t_defined + #ifndef uint8_t + typedef u_int8_t uint8_t; + #endif + #endif + #endif + + #ifndef _UINT16_T + #define _UINT16_T + #ifndef __uint16_t_defined + #define __uint16_t_defined + #ifndef uint16_t + typedef u_int16_t uint16_t; + #endif + #endif + #endif + + #ifndef _UINT32_T + #define _UINT32_T + #ifndef __uint32_t_defined + #define __uint32_t_defined + #ifndef uint32_t + typedef u_int32_t uint32_t; + #endif + #endif + #endif +EOF +else + sed 's/^ *//' >> tmp-stdint.h <<EOF + + /* Some systems have guard macros to prevent redefinitions, define them. */ + #ifndef _INT8_T + #define _INT8_T + #endif + #ifndef _INT16_T + #define _INT16_T + #endif + #ifndef _INT32_T + #define _INT32_T + #endif + #ifndef _UINT8_T + #define _UINT8_T + #endif + #ifndef _UINT16_T + #define _UINT16_T + #endif + #ifndef _UINT32_T + #define _UINT32_T + #endif +EOF +fi + +# ------------- done basic int types, emit int64_t types ------------ +if test "$ac_cv_type_uint64_t" = yes; then + sed 's/^ *//' >> tmp-stdint.h <<EOF + + /* system headers have good uint64_t and int64_t */ + #ifndef _INT64_T + #define _INT64_T + #endif + #ifndef _UINT64_T + #define _UINT64_T + #endif +EOF +elif test "$ac_cv_type_u_int64_t" = yes; then + sed 's/^ *//' >> tmp-stdint.h <<EOF + + /* system headers have an u_int64_t (and int64_t) */ + #ifndef _INT64_T + #define _INT64_T + #endif + #ifndef _UINT64_T + #define _UINT64_T + #ifndef __uint64_t_defined + #define __uint64_t_defined + #ifndef uint64_t + typedef u_int64_t uint64_t; + #endif + #endif + #endif +EOF +elif test -n "$acx_cv_type_int64_t"; then + sed 's/^ *//' >> tmp-stdint.h <<EOF + + /* architecture has a 64-bit type, $acx_cv_type_int64_t */ + #ifndef _INT64_T + #define _INT64_T + #ifndef int64_t + typedef $acx_cv_type_int64_t int64_t; + #endif + #endif + #ifndef _UINT64_T + #define _UINT64_T + #ifndef __uint64_t_defined + #define __uint64_t_defined + #ifndef uint64_t + typedef unsigned $acx_cv_type_int64_t uint64_t; + #endif + #endif + #endif +EOF +else + sed 's/^ *//' >> tmp-stdint.h <<EOF + + /* some common heuristics for int64_t, using compiler-specific tests */ + #if defined __STDC_VERSION__ && (__STDC_VERSION__-0) >= 199901L + #ifndef _INT64_T + #define _INT64_T + #ifndef __int64_t_defined + #ifndef int64_t + typedef long long int64_t; + #endif + #endif + #endif + #ifndef _UINT64_T + #define _UINT64_T + #ifndef uint64_t + typedef unsigned long long uint64_t; + #endif + #endif + + #elif defined __GNUC__ && defined (__STDC__) && __STDC__-0 + /* NextStep 2.0 cc is really gcc 1.93 but it defines __GNUC__ = 2 and + does not implement __extension__. But that compiler doesn't define + __GNUC_MINOR__. */ + # if __GNUC__ < 2 || (__NeXT__ && !__GNUC_MINOR__) + # define __extension__ + # endif + + # ifndef _INT64_T + # define _INT64_T + # ifndef int64_t + __extension__ typedef long long int64_t; + # endif + # endif + # ifndef _UINT64_T + # define _UINT64_T + # ifndef uint64_t + __extension__ typedef unsigned long long uint64_t; + # endif + # endif + + #elif !defined __STRICT_ANSI__ + # if defined _MSC_VER || defined __WATCOMC__ || defined __BORLANDC__ + + # ifndef _INT64_T + # define _INT64_T + # ifndef int64_t + typedef __int64 int64_t; + # endif + # endif + # ifndef _UINT64_T + # define _UINT64_T + # ifndef uint64_t + typedef unsigned __int64 uint64_t; + # endif + # endif + # endif /* compiler */ + + #endif /* ANSI version */ +EOF +fi + +# ------------- done int64_t types, emit intptr types ------------ +if test "$ac_cv_type_uintptr_t" != yes; then + sed 's/^ *//' >> tmp-stdint.h <<EOF + + /* Define intptr_t based on sizeof(void*) = $ac_cv_sizeof_void_p */ + #ifndef __uintptr_t_defined + #ifndef uintptr_t + typedef u$acx_cv_type_intptr_t uintptr_t; + #endif + #endif + #ifndef __intptr_t_defined + #ifndef intptr_t + typedef $acx_cv_type_intptr_t intptr_t; + #endif + #endif +EOF +fi + +# ------------- done intptr types, emit int_least types ------------ +if test "$ac_cv_type_int_least32_t" != yes; then + sed 's/^ *//' >> tmp-stdint.h <<EOF + + /* Define int_least types */ + typedef int8_t int_least8_t; + typedef int16_t int_least16_t; + typedef int32_t int_least32_t; + #ifdef _INT64_T + typedef int64_t int_least64_t; + #endif + + typedef uint8_t uint_least8_t; + typedef uint16_t uint_least16_t; + typedef uint32_t uint_least32_t; + #ifdef _UINT64_T + typedef uint64_t uint_least64_t; + #endif +EOF +fi + +# ------------- done intptr types, emit int_fast types ------------ +if test "$ac_cv_type_int_fast32_t" != yes; then + sed 's/^ *//' >> tmp-stdint.h <<EOF + + /* Define int_fast types. short is often slow */ + typedef int8_t int_fast8_t; + typedef int int_fast16_t; + typedef int32_t int_fast32_t; + #ifdef _INT64_T + typedef int64_t int_fast64_t; + #endif + + typedef uint8_t uint_fast8_t; + typedef unsigned int uint_fast16_t; + typedef uint32_t uint_fast32_t; + #ifdef _UINT64_T + typedef uint64_t uint_fast64_t; + #endif +EOF +fi + +if test "$ac_cv_type_uintmax_t" != yes; then + sed 's/^ *//' >> tmp-stdint.h <<EOF + + /* Define intmax based on what we found */ + #ifndef intmax_t + #ifdef _INT64_T + typedef int64_t intmax_t; + #else + typedef long intmax_t; + #endif + #endif + #ifndef uintmax_t + #ifdef _UINT64_T + typedef uint64_t uintmax_t; + #else + typedef unsigned long uintmax_t; + #endif + #endif +EOF +fi + +sed 's/^ *//' >> tmp-stdint.h <<EOF + + #endif /* GCC_GENERATED_STDINT_H */ +EOF + +if test -r gstdint.h && cmp -s tmp-stdint.h gstdint.h; then + rm -f tmp-stdint.h +else + mv -f tmp-stdint.h gstdint.h +fi + + ;; + "config.h":H) echo timestamp > stamp-h1 ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit $? +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + diff --git a/gcc-4.7/libdecnumber/configure.ac b/gcc-4.7/libdecnumber/configure.ac new file mode 100644 index 000000000..87820bf22 --- /dev/null +++ b/gcc-4.7/libdecnumber/configure.ac @@ -0,0 +1,101 @@ +# configure.ac for libdecnumber -*- Autoconf -*- +# Process this file with autoconf to generate a configuration script. + +# Copyright 2005, 2006, 2009 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 3, 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 COPYING3. If not see +# <http://www.gnu.org/licenses/>. + +AC_PREREQ(2.64) +AC_INIT(libdecnumber, [ ], gcc-bugs@gcc.gnu.org, libdecnumber) +AC_CONFIG_SRCDIR(decNumber.h) +AC_CONFIG_MACRO_DIR(../config) + +# Checks for programs. +AC_PROG_MAKE_SET +AC_PROG_CC +AC_PROG_RANLIB + +MISSING=`cd $ac_aux_dir && ${PWDCMD-pwd}`/missing +AC_CHECK_PROGS([ACLOCAL], [aclocal], [$MISSING aclocal]) +AC_CHECK_PROGS([AUTOCONF], [autoconf], [$MISSING autoconf]) +AC_CHECK_PROGS([AUTOHEADER], [autoheader], [$MISSING autoheader]) + +# Figure out what compiler warnings we can enable. +# See config/warnings.m4 for details. + +ACX_PROG_CC_WARNING_OPTS([-W -Wall -Wwrite-strings -Wstrict-prototypes \ + -Wmissing-prototypes -Wold-style-definition \ + -Wmissing-format-attribute -Wcast-qual]) +ACX_PROG_CC_WARNING_ALMOST_PEDANTIC([-Wno-long-long]) + +# Only enable with --enable-werror-always until existing warnings are +# corrected. +ACX_PROG_CC_WARNINGS_ARE_ERRORS([manual]) + +# Checks for header files. +AC_CHECK_HEADERS(ctype.h stddef.h string.h stdio.h) +GCC_HEADER_STDINT(gstdint.h) + +# Checks for typedefs, structures, and compiler characteristics. +AC_C_CONST +AC_TYPE_OFF_T +AC_CHECK_SIZEOF(int) +AC_CHECK_SIZEOF(long) + +# Checks for library functions. +AC_HEADER_STDC + +AC_ARG_ENABLE(maintainer-mode, +[ --enable-maintainer-mode enable rules only needed by maintainers],, +enable_maintainer_mode=no) + +if test "x$enable_maintainer_mode" = xno; then + MAINT='#' +else + MAINT= +fi +AC_SUBST(MAINT) + +AC_CANONICAL_TARGET + +# Default decimal format +# If you change the defaults here, be sure to change them in the GCC directory also +AC_MSG_CHECKING([for decimal floating point]) + +GCC_AC_ENABLE_DECIMAL_FLOAT([$target]) + +# Use default_decimal_float for dependency. +enable_decimal_float=$default_decimal_float + +# If BID is being used, additional objects should be linked in. +if test x$enable_decimal_float = xbid; then + ADDITIONAL_OBJS="$ADDITIONAL_OBJS \$(bid_OBJS)" +else + ADDITIONAL_OBJS= +fi + +AC_MSG_RESULT($enable_decimal_float) +AC_SUBST(enable_decimal_float) +AC_SUBST(ADDITIONAL_OBJS) + +AC_C_BIGENDIAN + +# Output. + +AC_CONFIG_HEADERS(config.h:config.in, [echo timestamp > stamp-h1]) +AC_CONFIG_FILES(Makefile) +AC_OUTPUT diff --git a/gcc-4.7/libdecnumber/dconfig.h b/gcc-4.7/libdecnumber/dconfig.h new file mode 100644 index 000000000..975f9a1c8 --- /dev/null +++ b/gcc-4.7/libdecnumber/dconfig.h @@ -0,0 +1,39 @@ +/* Configure decNumber for either host or target. + Copyright (C) 2008, 2009, 2010 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 3, 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. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +<http://www.gnu.org/licenses/>. */ + +#ifdef IN_LIBGCC2 + +#include "tconfig.h" +#include "coretypes.h" +#include "tm.h" + +#if __FLOAT_WORD_ORDER__ == __ORDER_BIG_ENDIAN__ +#define WORDS_BIGENDIAN 1 +#endif + +#else + +#include "config.h" + +#endif diff --git a/gcc-4.7/libdecnumber/decBasic.c b/gcc-4.7/libdecnumber/decBasic.c new file mode 100644 index 000000000..75ce17bce --- /dev/null +++ b/gcc-4.7/libdecnumber/decBasic.c @@ -0,0 +1,3909 @@ +/* Common base code for the decNumber C Library. + Copyright (C) 2007, 2009 Free Software Foundation, Inc. + Contributed by IBM Corporation. Author Mike Cowlishaw. + + 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 3, 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. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +<http://www.gnu.org/licenses/>. */ + +/* ------------------------------------------------------------------ */ +/* decBasic.c -- common base code for Basic decimal types */ +/* ------------------------------------------------------------------ */ +/* This module comprises code that is shared between decDouble and */ +/* decQuad (but not decSingle). The main arithmetic operations are */ +/* here (Add, Subtract, Multiply, FMA, and Division operators). */ +/* */ +/* Unlike decNumber, parameterization takes place at compile time */ +/* rather than at runtime. The parameters are set in the decDouble.c */ +/* (etc.) files, which then include this one to produce the compiled */ +/* code. The functions here, therefore, are code shared between */ +/* multiple formats. */ +/* */ +/* This must be included after decCommon.c. */ +/* ------------------------------------------------------------------ */ +/* Names here refer to decFloat rather than to decDouble, etc., and */ +/* the functions are in strict alphabetical order. */ + +/* The compile-time flags SINGLE, DOUBLE, and QUAD are set up in */ +/* decCommon.c */ +#if !defined(QUAD) + #error decBasic.c must be included after decCommon.c +#endif +#if SINGLE + #error Routines in decBasic.c are for decDouble and decQuad only +#endif + +/* Private constants */ +#define DIVIDE 0x80000000 /* Divide operations [as flags] */ +#define REMAINDER 0x40000000 /* .. */ +#define DIVIDEINT 0x20000000 /* .. */ +#define REMNEAR 0x10000000 /* .. */ + +/* Private functions (local, used only by routines in this module) */ +static decFloat *decDivide(decFloat *, const decFloat *, + const decFloat *, decContext *, uInt); +static decFloat *decCanonical(decFloat *, const decFloat *); +static void decFiniteMultiply(bcdnum *, uByte *, const decFloat *, + const decFloat *); +static decFloat *decInfinity(decFloat *, const decFloat *); +static decFloat *decInvalid(decFloat *, decContext *); +static decFloat *decNaNs(decFloat *, const decFloat *, const decFloat *, + decContext *); +static Int decNumCompare(const decFloat *, const decFloat *, Flag); +static decFloat *decToIntegral(decFloat *, const decFloat *, decContext *, + enum rounding, Flag); +static uInt decToInt32(const decFloat *, decContext *, enum rounding, + Flag, Flag); + +/* ------------------------------------------------------------------ */ +/* decCanonical -- copy a decFloat, making canonical */ +/* */ +/* result gets the canonicalized df */ +/* df is the decFloat to copy and make canonical */ +/* returns result */ +/* */ +/* This is exposed via decFloatCanonical for Double and Quad only. */ +/* This works on specials, too; no error or exception is possible. */ +/* ------------------------------------------------------------------ */ +static decFloat * decCanonical(decFloat *result, const decFloat *df) { + uInt encode, precode, dpd; /* work */ + uInt inword, uoff, canon; /* .. */ + Int n; /* counter (down) */ + if (df!=result) *result=*df; /* effect copy if needed */ + if (DFISSPECIAL(result)) { + if (DFISINF(result)) return decInfinity(result, df); /* clean Infinity */ + /* is a NaN */ + DFWORD(result, 0)&=~ECONNANMASK; /* clear ECON except selector */ + if (DFISCCZERO(df)) return result; /* coefficient continuation is 0 */ + /* drop through to check payload */ + } + /* return quickly if the coefficient continuation is canonical */ + { /* declare block */ + #if DOUBLE + uInt sourhi=DFWORD(df, 0); + uInt sourlo=DFWORD(df, 1); + if (CANONDPDOFF(sourhi, 8) + && CANONDPDTWO(sourhi, sourlo, 30) + && CANONDPDOFF(sourlo, 20) + && CANONDPDOFF(sourlo, 10) + && CANONDPDOFF(sourlo, 0)) return result; + #elif QUAD + uInt sourhi=DFWORD(df, 0); + uInt sourmh=DFWORD(df, 1); + uInt sourml=DFWORD(df, 2); + uInt sourlo=DFWORD(df, 3); + if (CANONDPDOFF(sourhi, 4) + && CANONDPDTWO(sourhi, sourmh, 26) + && CANONDPDOFF(sourmh, 16) + && CANONDPDOFF(sourmh, 6) + && CANONDPDTWO(sourmh, sourml, 28) + && CANONDPDOFF(sourml, 18) + && CANONDPDOFF(sourml, 8) + && CANONDPDTWO(sourml, sourlo, 30) + && CANONDPDOFF(sourlo, 20) + && CANONDPDOFF(sourlo, 10) + && CANONDPDOFF(sourlo, 0)) return result; + #endif + } /* block */ + + /* Loop to repair a non-canonical coefficent, as needed */ + inword=DECWORDS-1; /* current input word */ + uoff=0; /* bit offset of declet */ + encode=DFWORD(result, inword); + for (n=DECLETS-1; n>=0; n--) { /* count down declets of 10 bits */ + dpd=encode>>uoff; + uoff+=10; + if (uoff>32) { /* crossed uInt boundary */ + inword--; + encode=DFWORD(result, inword); + uoff-=32; + dpd|=encode<<(10-uoff); /* get pending bits */ + } + dpd&=0x3ff; /* clear uninteresting bits */ + if (dpd<0x16e) continue; /* must be canonical */ + canon=BIN2DPD[DPD2BIN[dpd]]; /* determine canonical declet */ + if (canon==dpd) continue; /* have canonical declet */ + /* need to replace declet */ + if (uoff>=10) { /* all within current word */ + encode&=~(0x3ff<<(uoff-10)); /* clear the 10 bits ready for replace */ + encode|=canon<<(uoff-10); /* insert the canonical form */ + DFWORD(result, inword)=encode; /* .. and save */ + continue; + } + /* straddled words */ + precode=DFWORD(result, inword+1); /* get previous */ + precode&=0xffffffff>>(10-uoff); /* clear top bits */ + DFWORD(result, inword+1)=precode|(canon<<(32-(10-uoff))); + encode&=0xffffffff<<uoff; /* clear bottom bits */ + encode|=canon>>(10-uoff); /* insert canonical */ + DFWORD(result, inword)=encode; /* .. and save */ + } /* n */ + return result; + } /* decCanonical */ + +/* ------------------------------------------------------------------ */ +/* decDivide -- divide operations */ +/* */ +/* result gets the result of dividing dfl by dfr: */ +/* dfl is the first decFloat (lhs) */ +/* dfr is the second decFloat (rhs) */ +/* set is the context */ +/* op is the operation selector */ +/* returns result */ +/* */ +/* op is one of DIVIDE, REMAINDER, DIVIDEINT, or REMNEAR. */ +/* ------------------------------------------------------------------ */ +#define DIVCOUNT 0 /* 1 to instrument subtractions counter */ +#define DIVBASE ((uInt)BILLION) /* the base used for divide */ +#define DIVOPLEN DECPMAX9 /* operand length ('digits' base 10**9) */ +#define DIVACCLEN (DIVOPLEN*3) /* accumulator length (ditto) */ +static decFloat * decDivide(decFloat *result, const decFloat *dfl, + const decFloat *dfr, decContext *set, uInt op) { + decFloat quotient; /* for remainders */ + bcdnum num; /* for final conversion */ + uInt acc[DIVACCLEN]; /* coefficent in base-billion .. */ + uInt div[DIVOPLEN]; /* divisor in base-billion .. */ + uInt quo[DIVOPLEN+1]; /* quotient in base-billion .. */ + uByte bcdacc[(DIVOPLEN+1)*9+2]; /* for quotient in BCD, +1, +1 */ + uInt *msua, *msud, *msuq; /* -> msu of acc, div, and quo */ + Int divunits, accunits; /* lengths */ + Int quodigits; /* digits in quotient */ + uInt *lsua, *lsuq; /* -> current acc and quo lsus */ + Int length, multiplier; /* work */ + uInt carry, sign; /* .. */ + uInt *ua, *ud, *uq; /* .. */ + uByte *ub; /* .. */ + uInt uiwork; /* for macros */ + uInt divtop; /* top unit of div adjusted for estimating */ + #if DIVCOUNT + static uInt maxcount=0; /* worst-seen subtractions count */ + uInt divcount=0; /* subtractions count [this divide] */ + #endif + + /* calculate sign */ + num.sign=(DFWORD(dfl, 0)^DFWORD(dfr, 0)) & DECFLOAT_Sign; + + if (DFISSPECIAL(dfl) || DFISSPECIAL(dfr)) { /* either is special? */ + /* NaNs are handled as usual */ + if (DFISNAN(dfl) || DFISNAN(dfr)) return decNaNs(result, dfl, dfr, set); + /* one or two infinities */ + if (DFISINF(dfl)) { + if (DFISINF(dfr)) return decInvalid(result, set); /* Two infinities bad */ + if (op&(REMAINDER|REMNEAR)) return decInvalid(result, set); /* as is rem */ + /* Infinity/x is infinite and quiet, even if x=0 */ + DFWORD(result, 0)=num.sign; + return decInfinity(result, result); + } + /* must be x/Infinity -- remainders are lhs */ + if (op&(REMAINDER|REMNEAR)) return decCanonical(result, dfl); + /* divides: return zero with correct sign and exponent depending */ + /* on op (Etiny for divide, 0 for divideInt) */ + decFloatZero(result); + if (op==DIVIDEINT) DFWORD(result, 0)|=num.sign; /* add sign */ + else DFWORD(result, 0)=num.sign; /* zeros the exponent, too */ + return result; + } + /* next, handle zero operands (x/0 and 0/x) */ + if (DFISZERO(dfr)) { /* x/0 */ + if (DFISZERO(dfl)) { /* 0/0 is undefined */ + decFloatZero(result); + DFWORD(result, 0)=DECFLOAT_qNaN; + set->status|=DEC_Division_undefined; + return result; + } + if (op&(REMAINDER|REMNEAR)) return decInvalid(result, set); /* bad rem */ + set->status|=DEC_Division_by_zero; + DFWORD(result, 0)=num.sign; + return decInfinity(result, result); /* x/0 -> signed Infinity */ + } + num.exponent=GETEXPUN(dfl)-GETEXPUN(dfr); /* ideal exponent */ + if (DFISZERO(dfl)) { /* 0/x (x!=0) */ + /* if divide, result is 0 with ideal exponent; divideInt has */ + /* exponent=0, remainders give zero with lower exponent */ + if (op&DIVIDEINT) { + decFloatZero(result); + DFWORD(result, 0)|=num.sign; /* add sign */ + return result; + } + if (!(op&DIVIDE)) { /* a remainder */ + /* exponent is the minimum of the operands */ + num.exponent=MINI(GETEXPUN(dfl), GETEXPUN(dfr)); + /* if the result is zero the sign shall be sign of dfl */ + num.sign=DFWORD(dfl, 0)&DECFLOAT_Sign; + } + bcdacc[0]=0; + num.msd=bcdacc; /* -> 0 */ + num.lsd=bcdacc; /* .. */ + return decFinalize(result, &num, set); /* [divide may clamp exponent] */ + } /* 0/x */ + /* [here, both operands are known to be finite and non-zero] */ + + /* extract the operand coefficents into 'units' which are */ + /* base-billion; the lhs is high-aligned in acc and the msu of both */ + /* acc and div is at the right-hand end of array (offset length-1); */ + /* the quotient can need one more unit than the operands as digits */ + /* in it are not necessarily aligned neatly; further, the quotient */ + /* may not start accumulating until after the end of the initial */ + /* operand in acc if that is small (e.g., 1) so the accumulator */ + /* must have at least that number of units extra (at the ls end) */ + GETCOEFFBILL(dfl, acc+DIVACCLEN-DIVOPLEN); + GETCOEFFBILL(dfr, div); + /* zero the low uInts of acc */ + acc[0]=0; + acc[1]=0; + acc[2]=0; + acc[3]=0; + #if DOUBLE + #if DIVOPLEN!=2 + #error Unexpected Double DIVOPLEN + #endif + #elif QUAD + acc[4]=0; + acc[5]=0; + acc[6]=0; + acc[7]=0; + #if DIVOPLEN!=4 + #error Unexpected Quad DIVOPLEN + #endif + #endif + + /* set msu and lsu pointers */ + msua=acc+DIVACCLEN-1; /* [leading zeros removed below] */ + msuq=quo+DIVOPLEN; + /*[loop for div will terminate because operands are non-zero] */ + for (msud=div+DIVOPLEN-1; *msud==0;) msud--; + /* the initial least-significant unit of acc is set so acc appears */ + /* to have the same length as div. */ + /* This moves one position towards the least possible for each */ + /* iteration */ + divunits=(Int)(msud-div+1); /* precalculate */ + lsua=msua-divunits+1; /* initial working lsu of acc */ + lsuq=msuq; /* and of quo */ + + /* set up the estimator for the multiplier; this is the msu of div, */ + /* plus two bits from the unit below (if any) rounded up by one if */ + /* there are any non-zero bits or units below that [the extra two */ + /* bits makes for a much better estimate when the top unit is small] */ + divtop=*msud<<2; + if (divunits>1) { + uInt *um=msud-1; + uInt d=*um; + if (d>=750000000) {divtop+=3; d-=750000000;} + else if (d>=500000000) {divtop+=2; d-=500000000;} + else if (d>=250000000) {divtop++; d-=250000000;} + if (d) divtop++; + else for (um--; um>=div; um--) if (*um) { + divtop++; + break; + } + } /* >1 unit */ + + #if DECTRACE + {Int i; + printf("----- div="); + for (i=divunits-1; i>=0; i--) printf("%09ld ", (LI)div[i]); + printf("\n");} + #endif + + /* now collect up to DECPMAX+1 digits in the quotient (this may */ + /* need OPLEN+1 uInts if unaligned) */ + quodigits=0; /* no digits yet */ + for (;; lsua--) { /* outer loop -- each input position */ + #if DECCHECK + if (lsua<acc) { + printf("Acc underrun...\n"); + break; + } + #endif + #if DECTRACE + printf("Outer: quodigits=%ld acc=", (LI)quodigits); + for (ua=msua; ua>=lsua; ua--) printf("%09ld ", (LI)*ua); + printf("\n"); + #endif + *lsuq=0; /* default unit result is 0 */ + for (;;) { /* inner loop -- calculate quotient unit */ + /* strip leading zero units from acc (either there initially or */ + /* from subtraction below); this may strip all if exactly 0 */ + for (; *msua==0 && msua>=lsua;) msua--; + accunits=(Int)(msua-lsua+1); /* [maybe 0] */ + /* subtraction is only necessary and possible if there are as */ + /* least as many units remaining in acc for this iteration as */ + /* there are in div */ + if (accunits<divunits) { + if (accunits==0) msua++; /* restore */ + break; + } + + /* If acc is longer than div then subtraction is definitely */ + /* possible (as msu of both is non-zero), but if they are the */ + /* same length a comparison is needed. */ + /* If a subtraction is needed then a good estimate of the */ + /* multiplier for the subtraction is also needed in order to */ + /* minimise the iterations of this inner loop because the */ + /* subtractions needed dominate division performance. */ + if (accunits==divunits) { + /* compare the high divunits of acc and div: */ + /* acc<div: this quotient unit is unchanged; subtraction */ + /* will be possible on the next iteration */ + /* acc==div: quotient gains 1, set acc=0 */ + /* acc>div: subtraction necessary at this position */ + for (ud=msud, ua=msua; ud>div; ud--, ua--) if (*ud!=*ua) break; + /* [now at first mismatch or lsu] */ + if (*ud>*ua) break; /* next time... */ + if (*ud==*ua) { /* all compared equal */ + *lsuq+=1; /* increment result */ + msua=lsua; /* collapse acc units */ + *msua=0; /* .. to a zero */ + break; + } + + /* subtraction necessary; estimate multiplier [see above] */ + /* if both *msud and *msua are small it is cost-effective to */ + /* bring in part of the following units (if any) to get a */ + /* better estimate (assume some other non-zero in div) */ + #define DIVLO 1000000U + #define DIVHI (DIVBASE/DIVLO) + #if DECUSE64 + if (divunits>1) { + /* there cannot be a *(msud-2) for DECDOUBLE so next is */ + /* an exact calculation unless DECQUAD (which needs to */ + /* assume bits out there if divunits>2) */ + uLong mul=(uLong)*msua * DIVBASE + *(msua-1); + uLong div=(uLong)*msud * DIVBASE + *(msud-1); + #if QUAD + if (divunits>2) div++; + #endif + mul/=div; + multiplier=(Int)mul; + } + else multiplier=*msua/(*msud); + #else + if (divunits>1 && *msua<DIVLO && *msud<DIVLO) { + multiplier=(*msua*DIVHI + *(msua-1)/DIVLO) + /(*msud*DIVHI + *(msud-1)/DIVLO +1); + } + else multiplier=(*msua<<2)/divtop; + #endif + } + else { /* accunits>divunits */ + /* msud is one unit 'lower' than msua, so estimate differently */ + #if DECUSE64 + uLong mul; + /* as before, bring in extra digits if possible */ + if (divunits>1 && *msua<DIVLO && *msud<DIVLO) { + mul=((uLong)*msua * DIVHI * DIVBASE) + *(msua-1) * DIVHI + + *(msua-2)/DIVLO; + mul/=(*msud*DIVHI + *(msud-1)/DIVLO +1); + } + else if (divunits==1) { + mul=(uLong)*msua * DIVBASE + *(msua-1); + mul/=*msud; /* no more to the right */ + } + else { + mul=(uLong)(*msua) * (uInt)(DIVBASE<<2) + + (*(msua-1)<<2); + mul/=divtop; /* [divtop already allows for sticky bits] */ + } + multiplier=(Int)mul; + #else + multiplier=*msua * ((DIVBASE<<2)/divtop); + #endif + } + if (multiplier==0) multiplier=1; /* marginal case */ + *lsuq+=multiplier; + + #if DIVCOUNT + /* printf("Multiplier: %ld\n", (LI)multiplier); */ + divcount++; + #endif + + /* Carry out the subtraction acc-(div*multiplier); for each */ + /* unit in div, do the multiply, split to units (see */ + /* decFloatMultiply for the algorithm), and subtract from acc */ + #define DIVMAGIC 2305843009U /* 2**61/10**9 */ + #define DIVSHIFTA 29 + #define DIVSHIFTB 32 + carry=0; + for (ud=div, ua=lsua; ud<=msud; ud++, ua++) { + uInt lo, hop; + #if DECUSE64 + uLong sub=(uLong)multiplier*(*ud)+carry; + if (sub<DIVBASE) { + carry=0; + lo=(uInt)sub; + } + else { + hop=(uInt)(sub>>DIVSHIFTA); + carry=(uInt)(((uLong)hop*DIVMAGIC)>>DIVSHIFTB); + /* the estimate is now in hi; now calculate sub-hi*10**9 */ + /* to get the remainder (which will be <DIVBASE)) */ + lo=(uInt)sub; + lo-=carry*DIVBASE; /* low word of result */ + if (lo>=DIVBASE) { + lo-=DIVBASE; /* correct by +1 */ + carry++; + } + } + #else /* 32-bit */ + uInt hi; + /* calculate multiplier*(*ud) into hi and lo */ + LONGMUL32HI(hi, *ud, multiplier); /* get the high word */ + lo=multiplier*(*ud); /* .. and the low */ + lo+=carry; /* add the old hi */ + carry=hi+(lo<carry); /* .. with any carry */ + if (carry || lo>=DIVBASE) { /* split is needed */ + hop=(carry<<3)+(lo>>DIVSHIFTA); /* hi:lo/2**29 */ + LONGMUL32HI(carry, hop, DIVMAGIC); /* only need the high word */ + /* [DIVSHIFTB is 32, so carry can be used directly] */ + /* the estimate is now in carry; now calculate hi:lo-est*10**9; */ + /* happily the top word of the result is irrelevant because it */ + /* will always be zero so this needs only one multiplication */ + lo-=(carry*DIVBASE); + /* the correction here will be at most +1; do it */ + if (lo>=DIVBASE) { + lo-=DIVBASE; + carry++; + } + } + #endif + if (lo>*ua) { /* borrow needed */ + *ua+=DIVBASE; + carry++; + } + *ua-=lo; + } /* ud loop */ + if (carry) *ua-=carry; /* accdigits>divdigits [cannot borrow] */ + } /* inner loop */ + + /* the outer loop terminates when there is either an exact result */ + /* or enough digits; first update the quotient digit count and */ + /* pointer (if any significant digits) */ + #if DECTRACE + if (*lsuq || quodigits) printf("*lsuq=%09ld\n", (LI)*lsuq); + #endif + if (quodigits) { + quodigits+=9; /* had leading unit earlier */ + lsuq--; + if (quodigits>DECPMAX+1) break; /* have enough */ + } + else if (*lsuq) { /* first quotient digits */ + const uInt *pow; + for (pow=DECPOWERS; *lsuq>=*pow; pow++) quodigits++; + lsuq--; + /* [cannot have >DECPMAX+1 on first unit] */ + } + + if (*msua!=0) continue; /* not an exact result */ + /* acc is zero iff used all of original units and zero down to lsua */ + /* (must also continue to original lsu for correct quotient length) */ + if (lsua>acc+DIVACCLEN-DIVOPLEN) continue; + for (; msua>lsua && *msua==0;) msua--; + if (*msua==0 && msua==lsua) break; + } /* outer loop */ + + /* all of the original operand in acc has been covered at this point */ + /* quotient now has at least DECPMAX+2 digits */ + /* *msua is now non-0 if inexact and sticky bits */ + /* lsuq is one below the last uint of the quotient */ + lsuq++; /* set -> true lsu of quo */ + if (*msua) *lsuq|=1; /* apply sticky bit */ + + /* quo now holds the (unrounded) quotient in base-billion; one */ + /* base-billion 'digit' per uInt. */ + #if DECTRACE + printf("DivQuo:"); + for (uq=msuq; uq>=lsuq; uq--) printf(" %09ld", (LI)*uq); + printf("\n"); + #endif + + /* Now convert to BCD for rounding and cleanup, starting from the */ + /* most significant end [offset by one into bcdacc to leave room */ + /* for a possible carry digit if rounding for REMNEAR is needed] */ + for (uq=msuq, ub=bcdacc+1; uq>=lsuq; uq--, ub+=9) { + uInt top, mid, rem; /* work */ + if (*uq==0) { /* no split needed */ + UBFROMUI(ub, 0); /* clear 9 BCD8s */ + UBFROMUI(ub+4, 0); /* .. */ + *(ub+8)=0; /* .. */ + continue; + } + /* *uq is non-zero -- split the base-billion digit into */ + /* hi, mid, and low three-digits */ + #define divsplit9 1000000 /* divisor */ + #define divsplit6 1000 /* divisor */ + /* The splitting is done by simple divides and remainders, */ + /* assuming the compiler will optimize these [GCC does] */ + top=*uq/divsplit9; + rem=*uq%divsplit9; + mid=rem/divsplit6; + rem=rem%divsplit6; + /* lay out the nine BCD digits (plus one unwanted byte) */ + UBFROMUI(ub, UBTOUI(&BIN2BCD8[top*4])); + UBFROMUI(ub+3, UBTOUI(&BIN2BCD8[mid*4])); + UBFROMUI(ub+6, UBTOUI(&BIN2BCD8[rem*4])); + } /* BCD conversion loop */ + ub--; /* -> lsu */ + + /* complete the bcdnum; quodigits is correct, so the position of */ + /* the first non-zero is known */ + num.msd=bcdacc+1+(msuq-lsuq+1)*9-quodigits; + num.lsd=ub; + + /* make exponent adjustments, etc */ + if (lsua<acc+DIVACCLEN-DIVOPLEN) { /* used extra digits */ + num.exponent-=(Int)((acc+DIVACCLEN-DIVOPLEN-lsua)*9); + /* if the result was exact then there may be up to 8 extra */ + /* trailing zeros in the overflowed quotient final unit */ + if (*msua==0) { + for (; *ub==0;) ub--; /* drop zeros */ + num.exponent+=(Int)(num.lsd-ub); /* and adjust exponent */ + num.lsd=ub; + } + } /* adjustment needed */ + + #if DIVCOUNT + if (divcount>maxcount) { /* new high-water nark */ + maxcount=divcount; + printf("DivNewMaxCount: %ld\n", (LI)maxcount); + } + #endif + + if (op&DIVIDE) return decFinalize(result, &num, set); /* all done */ + + /* Is DIVIDEINT or a remainder; there is more to do -- first form */ + /* the integer (this is done 'after the fact', unlike as in */ + /* decNumber, so as not to tax DIVIDE) */ + + /* The first non-zero digit will be in the first 9 digits, known */ + /* from quodigits and num.msd, so there is always space for DECPMAX */ + /* digits */ + + length=(Int)(num.lsd-num.msd+1); + /*printf("Length exp: %ld %ld\n", (LI)length, (LI)num.exponent); */ + + if (length+num.exponent>DECPMAX) { /* cannot fit */ + decFloatZero(result); + DFWORD(result, 0)=DECFLOAT_qNaN; + set->status|=DEC_Division_impossible; + return result; + } + + if (num.exponent>=0) { /* already an int, or need pad zeros */ + for (ub=num.lsd+1; ub<=num.lsd+num.exponent; ub++) *ub=0; + num.lsd+=num.exponent; + } + else { /* too long: round or truncate needed */ + Int drop=-num.exponent; + if (!(op&REMNEAR)) { /* simple truncate */ + num.lsd-=drop; + if (num.lsd<num.msd) { /* truncated all */ + num.lsd=num.msd; /* make 0 */ + *num.lsd=0; /* .. [sign still relevant] */ + } + } + else { /* round to nearest even [sigh] */ + /* round-to-nearest, in-place; msd is at or to right of bcdacc+1 */ + /* (this is a special case of Quantize -- q.v. for commentary) */ + uByte *roundat; /* -> re-round digit */ + uByte reround; /* reround value */ + *(num.msd-1)=0; /* in case of left carry, or make 0 */ + if (drop<length) roundat=num.lsd-drop+1; + else if (drop==length) roundat=num.msd; + else roundat=num.msd-1; /* [-> 0] */ + reround=*roundat; + for (ub=roundat+1; ub<=num.lsd; ub++) { + if (*ub!=0) { + reround=DECSTICKYTAB[reround]; + break; + } + } /* check stickies */ + if (roundat>num.msd) num.lsd=roundat-1; + else { + num.msd--; /* use the 0 .. */ + num.lsd=num.msd; /* .. at the new MSD place */ + } + if (reround!=0) { /* discarding non-zero */ + uInt bump=0; + /* rounding is DEC_ROUND_HALF_EVEN always */ + if (reround>5) bump=1; /* >0.5 goes up */ + else if (reround==5) /* exactly 0.5000 .. */ + bump=*(num.lsd) & 0x01; /* .. up iff [new] lsd is odd */ + if (bump!=0) { /* need increment */ + /* increment the coefficient; this might end up with 1000... */ + ub=num.lsd; + for (; UBTOUI(ub-3)==0x09090909; ub-=4) UBFROMUI(ub-3, 0); + for (; *ub==9; ub--) *ub=0; /* at most 3 more */ + *ub+=1; + if (ub<num.msd) num.msd--; /* carried */ + } /* bump needed */ + } /* reround!=0 */ + } /* remnear */ + } /* round or truncate needed */ + num.exponent=0; /* all paths */ + /*decShowNum(&num, "int"); */ + + if (op&DIVIDEINT) return decFinalize(result, &num, set); /* all done */ + + /* Have a remainder to calculate */ + decFinalize("ient, &num, set); /* lay out the integer so far */ + DFWORD("ient, 0)^=DECFLOAT_Sign; /* negate it */ + sign=DFWORD(dfl, 0); /* save sign of dfl */ + decFloatFMA(result, "ient, dfr, dfl, set); + if (!DFISZERO(result)) return result; + /* if the result is zero the sign shall be sign of dfl */ + DFWORD("ient, 0)=sign; /* construct decFloat of sign */ + return decFloatCopySign(result, result, "ient); + } /* decDivide */ + +/* ------------------------------------------------------------------ */ +/* decFiniteMultiply -- multiply two finite decFloats */ +/* */ +/* num gets the result of multiplying dfl and dfr */ +/* bcdacc .. with the coefficient in this array */ +/* dfl is the first decFloat (lhs) */ +/* dfr is the second decFloat (rhs) */ +/* */ +/* This effects the multiplication of two decFloats, both known to be */ +/* finite, leaving the result in a bcdnum ready for decFinalize (for */ +/* use in Multiply) or in a following addition (FMA). */ +/* */ +/* bcdacc must have space for at least DECPMAX9*18+1 bytes. */ +/* No error is possible and no status is set. */ +/* ------------------------------------------------------------------ */ +/* This routine has two separate implementations of the core */ +/* multiplication; both using base-billion. One uses only 32-bit */ +/* variables (Ints and uInts) or smaller; the other uses uLongs (for */ +/* multiplication and addition only). Both implementations cover */ +/* both arithmetic sizes (DOUBLE and QUAD) in order to allow timing */ +/* comparisons. In any one compilation only one implementation for */ +/* each size can be used, and if DECUSE64 is 0 then use of the 32-bit */ +/* version is forced. */ +/* */ +/* Historical note: an earlier version of this code also supported the */ +/* 256-bit format and has been preserved. That is somewhat trickier */ +/* during lazy carry splitting because the initial quotient estimate */ +/* (est) can exceed 32 bits. */ + +#define MULTBASE ((uInt)BILLION) /* the base used for multiply */ +#define MULOPLEN DECPMAX9 /* operand length ('digits' base 10**9) */ +#define MULACCLEN (MULOPLEN*2) /* accumulator length (ditto) */ +#define LEADZEROS (MULACCLEN*9 - DECPMAX*2) /* leading zeros always */ + +/* Assertions: exponent not too large and MULACCLEN is a multiple of 4 */ +#if DECEMAXD>9 + #error Exponent may overflow when doubled for Multiply +#endif +#if MULACCLEN!=(MULACCLEN/4)*4 + /* This assumption is used below only for initialization */ + #error MULACCLEN is not a multiple of 4 +#endif + +static void decFiniteMultiply(bcdnum *num, uByte *bcdacc, + const decFloat *dfl, const decFloat *dfr) { + uInt bufl[MULOPLEN]; /* left coefficient (base-billion) */ + uInt bufr[MULOPLEN]; /* right coefficient (base-billion) */ + uInt *ui, *uj; /* work */ + uByte *ub; /* .. */ + uInt uiwork; /* for macros */ + + #if DECUSE64 + uLong accl[MULACCLEN]; /* lazy accumulator (base-billion+) */ + uLong *pl; /* work -> lazy accumulator */ + uInt acc[MULACCLEN]; /* coefficent in base-billion .. */ + #else + uInt acc[MULACCLEN*2]; /* accumulator in base-billion .. */ + #endif + uInt *pa; /* work -> accumulator */ + /*printf("Base10**9: OpLen=%d MulAcclen=%d\n", OPLEN, MULACCLEN); */ + + /* Calculate sign and exponent */ + num->sign=(DFWORD(dfl, 0)^DFWORD(dfr, 0)) & DECFLOAT_Sign; + num->exponent=GETEXPUN(dfl)+GETEXPUN(dfr); /* [see assertion above] */ + + /* Extract the coefficients and prepare the accumulator */ + /* the coefficients of the operands are decoded into base-billion */ + /* numbers in uInt arrays (bufl and bufr, LSD at offset 0) of the */ + /* appropriate size. */ + GETCOEFFBILL(dfl, bufl); + GETCOEFFBILL(dfr, bufr); + #if DECTRACE && 0 + printf("CoeffbL:"); + for (ui=bufl+MULOPLEN-1; ui>=bufl; ui--) printf(" %08lx", (LI)*ui); + printf("\n"); + printf("CoeffbR:"); + for (uj=bufr+MULOPLEN-1; uj>=bufr; uj--) printf(" %08lx", (LI)*uj); + printf("\n"); + #endif + + /* start the 64-bit/32-bit differing paths... */ +#if DECUSE64 + + /* zero the accumulator */ + #if MULACCLEN==4 + accl[0]=0; accl[1]=0; accl[2]=0; accl[3]=0; + #else /* use a loop */ + /* MULACCLEN is a multiple of four, asserted above */ + for (pl=accl; pl<accl+MULACCLEN; pl+=4) { + *pl=0; *(pl+1)=0; *(pl+2)=0; *(pl+3)=0;/* [reduce overhead] */ + } /* pl */ + #endif + + /* Effect the multiplication */ + /* The multiplcation proceeds using MFC's lazy-carry resolution */ + /* algorithm from decNumber. First, the multiplication is */ + /* effected, allowing accumulation of the partial products (which */ + /* are in base-billion at each column position) into 64 bits */ + /* without resolving back to base=billion after each addition. */ + /* These 64-bit numbers (which may contain up to 19 decimal digits) */ + /* are then split using the Clark & Cowlishaw algorithm (see below). */ + /* [Testing for 0 in the inner loop is not really a 'win'] */ + for (ui=bufr; ui<bufr+MULOPLEN; ui++) { /* over each item in rhs */ + if (*ui==0) continue; /* product cannot affect result */ + pl=accl+(ui-bufr); /* where to add the lhs */ + for (uj=bufl; uj<bufl+MULOPLEN; uj++, pl++) { /* over each item in lhs */ + /* if (*uj==0) continue; // product cannot affect result */ + *pl+=((uLong)*ui)*(*uj); + } /* uj */ + } /* ui */ + + /* The 64-bit carries must now be resolved; this means that a */ + /* quotient/remainder has to be calculated for base-billion (1E+9). */ + /* For this, Clark & Cowlishaw's quotient estimation approach (also */ + /* used in decNumber) is needed, because 64-bit divide is generally */ + /* extremely slow on 32-bit machines, and may be slower than this */ + /* approach even on 64-bit machines. This algorithm splits X */ + /* using: */ + /* */ + /* magic=2**(A+B)/1E+9; // 'magic number' */ + /* hop=X/2**A; // high order part of X (by shift) */ + /* est=magic*hop/2**B // quotient estimate (may be low by 1) */ + /* */ + /* A and B are quite constrained; hop and magic must fit in 32 bits, */ + /* and 2**(A+B) must be as large as possible (which is 2**61 if */ + /* magic is to fit). Further, maxX increases with the length of */ + /* the operands (and hence the number of partial products */ + /* accumulated); maxX is OPLEN*(10**18), which is up to 19 digits. */ + /* */ + /* It can be shown that when OPLEN is 2 then the maximum error in */ + /* the estimated quotient is <1, but for larger maximum x the */ + /* maximum error is above 1 so a correction that is >1 may be */ + /* needed. Values of A and B are chosen to satisfy the constraints */ + /* just mentioned while minimizing the maximum error (and hence the */ + /* maximum correction), as shown in the following table: */ + /* */ + /* Type OPLEN A B maxX maxError maxCorrection */ + /* --------------------------------------------------------- */ + /* DOUBLE 2 29 32 <2*10**18 0.63 1 */ + /* QUAD 4 30 31 <4*10**18 1.17 2 */ + /* */ + /* In the OPLEN==2 case there is most choice, but the value for B */ + /* of 32 has a big advantage as then the calculation of the */ + /* estimate requires no shifting; the compiler can extract the high */ + /* word directly after multiplying magic*hop. */ + #define MULMAGIC 2305843009U /* 2**61/10**9 [both cases] */ + #if DOUBLE + #define MULSHIFTA 29 + #define MULSHIFTB 32 + #elif QUAD + #define MULSHIFTA 30 + #define MULSHIFTB 31 + #else + #error Unexpected type + #endif + + #if DECTRACE + printf("MulAccl:"); + for (pl=accl+MULACCLEN-1; pl>=accl; pl--) + printf(" %08lx:%08lx", (LI)(*pl>>32), (LI)(*pl&0xffffffff)); + printf("\n"); + #endif + + for (pl=accl, pa=acc; pl<accl+MULACCLEN; pl++, pa++) { /* each column position */ + uInt lo, hop; /* work */ + uInt est; /* cannot exceed 4E+9 */ + if (*pl>=MULTBASE) { + /* *pl holds a binary number which needs to be split */ + hop=(uInt)(*pl>>MULSHIFTA); + est=(uInt)(((uLong)hop*MULMAGIC)>>MULSHIFTB); + /* the estimate is now in est; now calculate hi:lo-est*10**9; */ + /* happily the top word of the result is irrelevant because it */ + /* will always be zero so this needs only one multiplication */ + lo=(uInt)(*pl-((uLong)est*MULTBASE)); /* low word of result */ + /* If QUAD, the correction here could be +2 */ + if (lo>=MULTBASE) { + lo-=MULTBASE; /* correct by +1 */ + est++; + #if QUAD + /* may need to correct by +2 */ + if (lo>=MULTBASE) { + lo-=MULTBASE; + est++; + } + #endif + } + /* finally place lo as the new coefficient 'digit' and add est to */ + /* the next place up [this is safe because this path is never */ + /* taken on the final iteration as *pl will fit] */ + *pa=lo; + *(pl+1)+=est; + } /* *pl needed split */ + else { /* *pl<MULTBASE */ + *pa=(uInt)*pl; /* just copy across */ + } + } /* pl loop */ + +#else /* 32-bit */ + for (pa=acc;; pa+=4) { /* zero the accumulator */ + *pa=0; *(pa+1)=0; *(pa+2)=0; *(pa+3)=0; /* [reduce overhead] */ + if (pa==acc+MULACCLEN*2-4) break; /* multiple of 4 asserted */ + } /* pa */ + + /* Effect the multiplication */ + /* uLongs are not available (and in particular, there is no uLong */ + /* divide) but it is still possible to use MFC's lazy-carry */ + /* resolution algorithm from decNumber. First, the multiplication */ + /* is effected, allowing accumulation of the partial products */ + /* (which are in base-billion at each column position) into 64 bits */ + /* [with the high-order 32 bits in each position being held at */ + /* offset +ACCLEN from the low-order 32 bits in the accumulator]. */ + /* These 64-bit numbers (which may contain up to 19 decimal digits) */ + /* are then split using the Clark & Cowlishaw algorithm (see */ + /* below). */ + for (ui=bufr;; ui++) { /* over each item in rhs */ + uInt hi, lo; /* words of exact multiply result */ + pa=acc+(ui-bufr); /* where to add the lhs */ + for (uj=bufl;; uj++, pa++) { /* over each item in lhs */ + LONGMUL32HI(hi, *ui, *uj); /* calculate product of digits */ + lo=(*ui)*(*uj); /* .. */ + *pa+=lo; /* accumulate low bits and .. */ + *(pa+MULACCLEN)+=hi+(*pa<lo); /* .. high bits with any carry */ + if (uj==bufl+MULOPLEN-1) break; + } + if (ui==bufr+MULOPLEN-1) break; + } + + /* The 64-bit carries must now be resolved; this means that a */ + /* quotient/remainder has to be calculated for base-billion (1E+9). */ + /* For this, Clark & Cowlishaw's quotient estimation approach (also */ + /* used in decNumber) is needed, because 64-bit divide is generally */ + /* extremely slow on 32-bit machines. This algorithm splits X */ + /* using: */ + /* */ + /* magic=2**(A+B)/1E+9; // 'magic number' */ + /* hop=X/2**A; // high order part of X (by shift) */ + /* est=magic*hop/2**B // quotient estimate (may be low by 1) */ + /* */ + /* A and B are quite constrained; hop and magic must fit in 32 bits, */ + /* and 2**(A+B) must be as large as possible (which is 2**61 if */ + /* magic is to fit). Further, maxX increases with the length of */ + /* the operands (and hence the number of partial products */ + /* accumulated); maxX is OPLEN*(10**18), which is up to 19 digits. */ + /* */ + /* It can be shown that when OPLEN is 2 then the maximum error in */ + /* the estimated quotient is <1, but for larger maximum x the */ + /* maximum error is above 1 so a correction that is >1 may be */ + /* needed. Values of A and B are chosen to satisfy the constraints */ + /* just mentioned while minimizing the maximum error (and hence the */ + /* maximum correction), as shown in the following table: */ + /* */ + /* Type OPLEN A B maxX maxError maxCorrection */ + /* --------------------------------------------------------- */ + /* DOUBLE 2 29 32 <2*10**18 0.63 1 */ + /* QUAD 4 30 31 <4*10**18 1.17 2 */ + /* */ + /* In the OPLEN==2 case there is most choice, but the value for B */ + /* of 32 has a big advantage as then the calculation of the */ + /* estimate requires no shifting; the high word is simply */ + /* calculated from multiplying magic*hop. */ + #define MULMAGIC 2305843009U /* 2**61/10**9 [both cases] */ + #if DOUBLE + #define MULSHIFTA 29 + #define MULSHIFTB 32 + #elif QUAD + #define MULSHIFTA 30 + #define MULSHIFTB 31 + #else + #error Unexpected type + #endif + + #if DECTRACE + printf("MulHiLo:"); + for (pa=acc+MULACCLEN-1; pa>=acc; pa--) + printf(" %08lx:%08lx", (LI)*(pa+MULACCLEN), (LI)*pa); + printf("\n"); + #endif + + for (pa=acc;; pa++) { /* each low uInt */ + uInt hi, lo; /* words of exact multiply result */ + uInt hop, estlo; /* work */ + #if QUAD + uInt esthi; /* .. */ + #endif + + lo=*pa; + hi=*(pa+MULACCLEN); /* top 32 bits */ + /* hi and lo now hold a binary number which needs to be split */ + + #if DOUBLE + hop=(hi<<3)+(lo>>MULSHIFTA); /* hi:lo/2**29 */ + LONGMUL32HI(estlo, hop, MULMAGIC);/* only need the high word */ + /* [MULSHIFTB is 32, so estlo can be used directly] */ + /* the estimate is now in estlo; now calculate hi:lo-est*10**9; */ + /* happily the top word of the result is irrelevant because it */ + /* will always be zero so this needs only one multiplication */ + lo-=(estlo*MULTBASE); + /* esthi=0; // high word is ignored below */ + /* the correction here will be at most +1; do it */ + if (lo>=MULTBASE) { + lo-=MULTBASE; + estlo++; + } + #elif QUAD + hop=(hi<<2)+(lo>>MULSHIFTA); /* hi:lo/2**30 */ + LONGMUL32HI(esthi, hop, MULMAGIC);/* shift will be 31 .. */ + estlo=hop*MULMAGIC; /* .. so low word needed */ + estlo=(esthi<<1)+(estlo>>MULSHIFTB); /* [just the top bit] */ + /* esthi=0; // high word is ignored below */ + lo-=(estlo*MULTBASE); /* as above */ + /* the correction here could be +1 or +2 */ + if (lo>=MULTBASE) { + lo-=MULTBASE; + estlo++; + } + if (lo>=MULTBASE) { + lo-=MULTBASE; + estlo++; + } + #else + #error Unexpected type + #endif + + /* finally place lo as the new accumulator digit and add est to */ + /* the next place up; this latter add could cause a carry of 1 */ + /* to the high word of the next place */ + *pa=lo; + *(pa+1)+=estlo; + /* esthi is always 0 for DOUBLE and QUAD so this is skipped */ + /* *(pa+1+MULACCLEN)+=esthi; */ + if (*(pa+1)<estlo) *(pa+1+MULACCLEN)+=1; /* carry */ + if (pa==acc+MULACCLEN-2) break; /* [MULACCLEN-1 will never need split] */ + } /* pa loop */ +#endif + + /* At this point, whether using the 64-bit or the 32-bit paths, the */ + /* accumulator now holds the (unrounded) result in base-billion; */ + /* one base-billion 'digit' per uInt. */ + #if DECTRACE + printf("MultAcc:"); + for (pa=acc+MULACCLEN-1; pa>=acc; pa--) printf(" %09ld", (LI)*pa); + printf("\n"); + #endif + + /* Now convert to BCD for rounding and cleanup, starting from the */ + /* most significant end */ + pa=acc+MULACCLEN-1; + if (*pa!=0) num->msd=bcdacc+LEADZEROS;/* drop known lead zeros */ + else { /* >=1 word of leading zeros */ + num->msd=bcdacc; |